bug
forget` runs during dry runs, deleting index entries even though `dry_run=true` promises not to modify the store
services/proxy/src/sweep.rs:140
Evidence quote
Not recorded
Suggested fix
Not recorded
afi / afi · cli reviewed proxy at 9b51f95e with Default profile / OpenAI · gpt 5.6 sol high on afi 0.30.0
Unavailable values retain their exported state and reason
Lifecycle, reviewer, build, settings, and normalized execution limits
89cd13e3b4e0config-323a87a9eb99b1e3b0f313c0b59a66ecc7612396dc8db0ea5da13a7acomparison-004ca4a8ec71f5cdbuild-13a6e5be87bc4a53cohort-fdab2adfb8a4bd39348a7e367b8c52f1ce72828ed09c15b0e9fac38b dirtysha256:a1a935298956020ee6d767a756847abb4c00694c88c2eb80d454886ebc4acf8cNormalized reviewer-tool usage projection
Normalized assessment summary
Review text is escaped; normalized decisions follow each finding
forget` runs during dry runs, deleting index entries even though `dry_run=true` promises not to modify the store
services/proxy/src/sweep.rs:140
Evidence quote
Not recorded
Suggested fix
Not recorded
Clearing every `incoming` file can unlink active blob or index writes, causing concurrent fetches to fail when they commit or link
services/proxy/src/sweep.rs:232
Evidence quote
Not recorded
Suggested fix
Not recorded
A committed blob remains unindexed during registry registration, so a concurrent sweep treats it as orphaned and deletes an in-flight successful fetch
services/proxy/src/sweep.rs:119
Evidence quote
Not recorded
Suggested fix
Not recorded
fs::metadata` follows directory symlinks, allowing recursive collection and deletion of files outside the blob root through a symlinked directory
services/proxy/src/sweep.rs:164
Evidence quote
Not recorded
Suggested fix
Not recorded
The admin route calls `sweep` directly instead of locked `run`, so concurrent manual and scheduled sweeps bypass the one-at-a-time guarantee and can over-evict
services/proxy/src/routes/admin.rs:76
Evidence quote
Not recorded
Suggested fix
Not recorded
A failed blob deletion is still counted as removed and added to `gone`, so `forget` can delete index entries for a blob that remains present
services/proxy/src/sweep.rs:126
Evidence quote
Not recorded
Suggested fix
Not recorded
Sorting age ascending processes the newest eligible blobs first, evicting recent entries instead of the oldest ones
services/proxy/src/sweep.rs:102
Evidence quote
Not recorded
Suggested fix
Not recorded
Sweep metric values are reversed relative to `COUNTERS`, exposing reclaimed bytes as blob count and blob count as reclaimed bytes
services/proxy/src/metrics.rs:94
Evidence quote
Not recorded
Suggested fix
Not recorded
The complete synchronous filesystem walk runs on a Tokio worker thread, blocking request processing for the duration of large sweeps, especially on single-vCPU deployments
services/proxy/src/sweep.rs:84
Evidence quote
Not recorded
Suggested fix
Not recorded
tokio::time::interval` has an immediately-ready first tick, so the proxy sweeps at startup rather than after the configured interval
services/proxy/src/main.rs:108
Evidence quote
Not recorded
Suggested fix
Not recorded
Using `remaining >= max_bytes` evicts a blob when the store is exactly at its permitted ceiling, unnecessarily taking it below the configured limit
services/proxy/src/sweep.rs:120
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