bug
the on-demand sweep calls `app.sweeper.sweep(dry_run)` directly instead of the locking `run()`, so an admin-triggered sweep runs concurrently with the background sweep. `Sweeper::sweep` (sweep.rs:90) takes no lock while `run` (sweep.rs:82-84) holds `running`; both walks compute `held` from the same files and each independently removes down to `cache_max_bytes`, so together they reclaim roughly twice the excess — exactly the "far below the ceiling" case the module doc at sweep.rs:10-12 says the mutex exists to prevent.
services/proxy/src/routes/admin.rs:76
Evidence quote
Not recorded
Suggested fix
Not recorded