bug
sweep_bytes_reclaimed` and `sweep_blobs_removed` are returned in the reverse order of `COUNTERS`, swapping their values in the Prometheus output
services/proxy/src/metrics.rs:95
Evidence quote
Not recorded
Suggested fix
Not recorded
afi / afi · cli reviewed proxy at 9b51f95e with Default profile / Google · gemini 3.1 pro preview high on afi 0.30.0
Unavailable values retain their exported state and reason
Lifecycle, reviewer, build, settings, and normalized execution limits
910afc28d427config-7ba8a6ad7ff36415b0f313c0b59a66ecc7612396dc8db0ea5da13a7acomparison-925a9641d42ce469build-5c6619f952748951cohort-fdab2adfb8a4bd39c4bc25bc962489fe5de7f71b59f19b2f426564c0 dirtysha256:a1a935298956020ee6d767a756847abb4c00694c88c2eb80d454886ebc4acf8cNormalized reviewer-tool usage projection
Normalized assessment summary
Review text is escaped; normalized decisions follow each finding
sweep_bytes_reclaimed` and `sweep_blobs_removed` are returned in the reverse order of `COUNTERS`, swapping their values in the Prometheus output
services/proxy/src/metrics.rs:95
Evidence quote
Not recorded
Suggested fix
Not recorded
sorting by `candidate.age` ascending places the newest blobs first, causing the sweep to evict recently fetched eligible blobs instead of the oldest ones
services/proxy/src/sweep.rs:102
Evidence quote
Not recorded
Suggested fix
Not recorded
calling `app.sweeper.sweep` directly bypasses the `running` lock, allowing concurrent sweeps which corrupt the store and are explicitly forbidden
services/proxy/src/routes/admin.rs:76
Evidence quote
Not recorded
Suggested fix
Not recorded
deleting unreferenced blobs regardless of age creates a race condition that deletes blobs from in-progress fetches before their index entries are linked
services/proxy/src/sweep.rs:119
Evidence quote
Not recorded
Suggested fix
Not recorded
deleting all files in `incoming` without checking their age unlinks the temporary files of active fetches, causing them to fail upon commit
services/proxy/src/sweep.rs:232
Evidence quote
Not recorded
Suggested fix
Not recorded
tokio::time::interval` completes its first tick immediately, causing a sweep on startup that contradicts the documented intent to wait one interval
services/proxy/src/main.rs:108
Evidence quote
Not recorded
Suggested fix
Not recorded
ignoring `fs::remove_file` errors falsely counts space as reclaimed and deletes the index entries for blobs that failed to be removed
services/proxy/src/sweep.rs:126
Evidence quote
Not recorded
Suggested fix
Not recorded
self.sweep(false)` performs synchronous standard-library filesystem calls that block the tokio async worker thread; it must be wrapped in `tokio::task::spawn_blocking`
services/proxy/src/sweep.rs:84
Evidence quote
Not recorded
Suggested fix
Not recorded
fs::metadata` follows symbolic links and counts the target's size; use `fs::symlink_metadata` to correctly count the link's size as intended
services/proxy/src/sweep.rs:164
Evidence quote
Not recorded
Suggested fix
Not recorded
Open a row to inspect or download evidence from this atomically published local run
Open this path at the exported commit
The artifact is present; its content is available through the verified source link
Open this path at the exported commit
The artifact is present; its content is available through the verified source link
Open this path at the exported commit
The artifact is present; its content is available through the verified source link
Open this path at the exported commit
The artifact is present; its content is available through the verified source link
Open this path at the exported commit
The artifact is present; its content is available through the verified source link
Open this path at the exported commit
The artifact is present; its content is available through the verified source link
Open this path at the exported commit
The artifact is present; its content is available through the verified source link
Open this path at the exported commit
The artifact is present; its content is available through the verified source link