feat(proxy): reclaim space from the blob store

Eviction leaves `versions.cached_at` set, so the dashboard lies

Defect 20 / Tier 4 / issue

services/proxy/src/sweep.rs:125-137docs/operations.md:53

Expected review

have the sweep tell the registry what it removed, so `cached_at` is cleared for those versions - or stop treating that column as ground truth for the pill.

Discovery difficulty

the evidence that this was known is in a sentence this diff deletes. The manual procedure in `docs/operations.md` ended with "Set `cached_at` to null for the rows you removed so the dashboard stops claiming they are cached", and the change removes that line while automating the deletion it belonged to. Finding it means noticing the removed step, or knowing the dashboard well enough to ask what renders the pill. Nothing in the Rust hints at it, since the proxy has no database connection by design and the registry client has no call for this.

Trigger

any sweep that evicts anything, then loading the artifact page for one of those versions. The registry sets `cached_at = now()` on re-registration - `services/registry/internal/store/artifacts.go:219`, `DO UPDATE SET cached_at = now()` - so the drift heals for anything somebody fetches again, and persists forever for everything nobody asks for again. That second group is exactly the population a sweep creates, since it evicts what has been sitting longest.

Severity

issue

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