feat(proxy): reclaim space from the blob store

Every blob in the store is materialised into one `Vec` before any deletion

Defect 9 / Tier 2 / suggestion

services/proxy/src/sweep.rs:94-102services/proxy/src/sweep.rs:153

Expected review

bound it - keep only the oldest N candidates in a heap, or sweep one `blobs/sha256` shard at a time.

Discovery difficulty

it is a scaling defect with no wrong output, it only shows up on a store far larger than any test would build, and materialising does look necessary because the candidates have to be sorted.

Trigger

a store at the 32 GiB default ceiling full of small npm tarballs - on the order of several hundred thousand blobs, so roughly a hundred megabytes of paths and metadata, plus the index map beside it. The service is careful about exactly this elsewhere: the fetch path streams in 64 KiB chunks and `store.rs` says why, so that a hundred concurrent downloads do not each hold a megabyte.

Severity

suggestion

benchee benchee-dashboard-1 built from 10f4ec58 Static benchmark evidence ·