mirror of
https://github.com/norandom/OpenUltraSAST.git
synced 2026-10-16 03:49:26 +00:00
The harvester cloned --filter=blob:none --no-checkout, then blame/log/diff triggered the promisor to fetch each needed blob ON DEMAND -- hundreds of round-trips per repo, the dominant cost that made the draw unable to converge. The blobless clone was a premature optimization that backfired. Drop --filter=blob:none from the clone and the two commit fetches. A full-objects --no-checkout clone brings the whole commit graph AND every blob in one pack, so blame/log/diff read locally; --no-checkout still skips the working tree so disk stays bounded (plus the existing 500 MiB clone_size_cap and the disk guard). With no promisor remote, a genuinely missing object now errors loudly instead of silently round-tripping -- the instrument guarantee that the bulk fetch was complete. Extraction semantics are unchanged (same SZZ introducing-commit positive, same stratified ordinary negatives, byte-identical entries); only the object-transfer strategy changes. Test inverted to assert no blob:none filter on the clone; README updated. 145 unseen tests pass, ruff clean. Co-Authored-By: Claude Opus 4.8 <[email protected]>