mirror of
https://relay.ngit.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp.git
synced 2026-10-05 15:08:24 +00:00
Repeated purgatory passes retried every unadvertised OID even after an unchanged remote had already rejected it, leaving market-shaped state events costly despite isolating each failure. Memoize confirmed object-missing results per clone URL and a stable fingerprint of its advertised OID set. Ref changes invalidate the memo; genuine remote failures are never recorded. Expire entries after the purgatory lifetime and cap the map at 1,024 URLs to bound hostile announcement growth. Extend the end-to-end fetch scenario to trigger a second immediate sync pass and prove an unchanged advertisement adds no failed upload-pack exchanges. Add helper coverage for stable hashing, invalidation, expiry, and capacity. Validation: nix develop -c cargo test --test sync purgatory_fetch_batches_available_tips_and_isolates_missing_oids -- --nocapture; nix develop -c cargo test fetch_helper_tests --lib.