A dry run leaves the blobs and deletes their index entries
Defect 12 / Tier 3 / blocking
services/proxy/src/sweep.rs:125services/proxy/src/sweep.rs:140services/proxy/src/sweep.rs:249Expected review
pass `dry_run` into `forget` and return early, or move the index pruning inside the branch that actually removed the blob.
Discovery difficulty
the flag is threaded through and honoured in two of the three places that delete something, so a reader checking that dry run is wired up finds it wired up. `forget`'s own doc comment is a well-argued justification for pruning index entries, and it is correct - about the non-dry-run case, which is the only one it discusses.
Trigger
`POST /v1/admin/cache/sweep?dry_run=true` against a store over its ceiling. Verified: the blobs all survive and the index entry naming the evicted digest is gone. The cache then misses on coordinates whose bytes it is holding, and every one of those misses is a fetch from an upstream, so a caller trying a low ceiling drops most of the index and sends the proxy's whole fetch volume upstream - which is the amplification `admin.rs` opens by naming as the reason these routes need a credential.
Severity
blocking