Session summary

default

scored

afi / afi · cli reviewed proxy at 9b51f95e with Default profile / xAI · grok 4.5 high on afi 0.30.0

Measurements

Unavailable values retain their exported state and reason

Quality

Recall 45%
Model-judged precision N/A
F1 N/A
Tier 1 recall 66.7%
Tier 2 recall 42.9%
Tier 3 recall 50%
Tier 4 recall 25%
Security recall 0%
Defect recall 53.8%
Maintainability recall 0%
Performance recall 66.7%
Median anchor distance 0
Worst anchor distance 3
Refusals a judge overturned Not recorded

Review outcomes

Distinct matched defects 9
Defects missed 11
Findings 9
Unkeyed findings 0
Intended findings 0
Carried findings Not recorded

Cost, usage, and speed

Total bill $0.2505
Review bill $0.2505
Judge bill N/A
Tokens 80473
Duration 3m 7s

Execution and identity

Lifecycle, reviewer, build, settings, and normalized execution limits

Lifecycle
completed
Lifecycle reason
Not recorded
Started
Finished
Reviewer
afi
Reviewer tool
afi · cli
Configuration
default / 1a9fd43b245e
Configuration ID
config-e42343de8516eb8c
Build
afi 0.30.0 / b0f313c0b59a66ecc7612396dc8db0ea5da13a7a
Comparison
comparison-041168a6e4dbca97
Build ID
build-4ceb7cbd44e9619b
Cohort ID
cohort-fdab2adfb8a4bd39
Harness
bench 1 / 10b3b2068100b7ba429855e062500eaf83b90120 dirty
Adapter
afi 1 / sha256:a1a935298956020ee6d767a756847abb4c00694c88c2eb80d454886ebc4acf8c
Exit code
0
Wall time
187
Deadline exceeded
No
Budget
$2.00
Billing limit
$2.00

Usage

Normalized reviewer-tool usage projection

Input tokens
79348
Output tokens
1125
Cached input
111616
Reasoning tokens
8597
Requests
6
Models counted
Not recorded

Judge

Normalized assessment summary

Judge data is N/A for this run

Findings

Review text is escaped; normalized decisions follow each finding

Finding f1

bug

forget` always deletes index entries after the candidate loop, including when `dry_run` is true, so `POST .../sweep?dry_run=true` still unlinks index files and breaks the “without removing anything”… forget` always deletes index entries after the candidate loop, including when `dry_run` is true, so `POST .../sweep?dry_run=true` still unlinks index files and breaks the “without removing anything” contract.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:140

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 12 (locality)
Finding f2

bug

sort_by_key(|c| c.age)` orders ascending duration-since-mtime, so newest blobs are considered first; over-ceiling eviction deletes recent packages and keeps the oldest ones.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:102

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 1 (locality)
Finding f3

bug

values()` emits `sweep_bytes_reclaimed` then `sweep_blobs_removed`, but `COUNTERS` names them in the opposite order, so Prometheus scrapes swap blob-count and byte-total.

bug
Category: bug Confidence: Not recorded

services/proxy/src/metrics.rs:94

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 13 (locality)
Finding f4

bug

clear_partials` unlinks every file under `incoming`, including live `BlobWriter` temps still being fetched, so an in-flight miss can lose its temp mid-write.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:224

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 17 (locality)
Finding f5

bug

the admin path calls `sweeper.sweep` and never takes `running`, so it can run concurrently with `run()` and double-count/over-delete against the one-sweep-at-a-time guarantee.

bug
Category: bug Confidence: Not recorded

services/proxy/src/routes/admin.rs:76

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 6 (locality)
Finding f6

bug

sweep` does blocking recursive FS I/O on the async worker (via `run` and the admin handler) with no `spawn_blocking`, so a large store stalls the proxy event loop.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:90

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 11 (locality)
Finding f7

bug

tokio::time::interval` fires its first tick immediately, so the process sweeps on startup despite the comment that the first pass waits one full interval.

bug
Category: bug Confidence: Not recorded

services/proxy/src/main.rs:115

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 8 (locality)
Finding f8

bug

a failed `remove_file` still increments `removed`/`bytes` and adds the digest to `gone`, so metrics over-report and `forget` drops index entries for blobs that are still on disk.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:126

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 2 (locality)
Finding f9

bug

eviction age uses `modified()` only; cache hits never refresh mtime, so frequently served old blobs look cold and are preferred for removal once the store is over ceiling.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:185

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 5 (locality)

Source artifacts

Open a row to inspect or download evidence from this atomically published local run

findings present

Open verified source artifact

Open this path at the exported commit

The artifact is present; its content is available through the verified source link

meta present

Open verified source artifact

Open this path at the exported commit

The artifact is present; its content is available through the verified source link

record present

Open verified source artifact

Open this path at the exported commit

The artifact is present; its content is available through the verified source link

result present

Open verified source artifact

Open this path at the exported commit

The artifact is present; its content is available through the verified source link

spend present

Open verified source artifact

Open this path at the exported commit

The artifact is present; its content is available through the verified source link

stderr present

Open verified source artifact

Open this path at the exported commit

The artifact is present; its content is available through the verified source link

summary present

Open verified source artifact

Open this path at the exported commit

The artifact is present; its content is available through the verified source link

traffic present

Open verified source artifact

Open this path at the exported commit

The artifact is present; its content is available through the verified source link

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