Session summary

default

scored

afi / afi · cli reviewed proxy at 9b51f95e with Default profile / Google · gemini 3.7 flash high on afi 0.30.0

Measurements

Unavailable values retain their exported state and reason

Quality

Recall 35%
Model-judged precision N/A
F1 N/A
Tier 1 recall 33.3%
Tier 2 recall 28.6%
Tier 3 recall 33.3%
Tier 4 recall 50%
Security recall 0%
Defect recall 46.2%
Maintainability recall 0%
Performance recall 33.3%
Median anchor distance 0
Worst anchor distance 0
Refusals a judge overturned Not recorded

Review outcomes

Distinct matched defects 7
Defects missed 13
Findings 7
Unkeyed findings 0
Intended findings 0
Carried findings Not recorded

Cost, usage, and speed

Total bill $0.3445
Review bill $0.3445
Judge bill N/A
Tokens 116835
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 / ccf2033be64f
Configuration ID
config-962dd9893b4bf224
Build
afi 0.30.0 / b0f313c0b59a66ecc7612396dc8db0ea5da13a7a
Comparison
comparison-99aa0f2063f28380
Build ID
build-5c6619f952748951
Cohort ID
cohort-fdab2adfb8a4bd39
Harness
bench 1 / c4bc25bc962489fe5de7f71b59f19b2f426564c0 dirty
Adapter
afi 1 / sha256:a1a935298956020ee6d767a756847abb4c00694c88c2eb80d454886ebc4acf8c
Exit code
0
Wall time
187
Deadline exceeded
No
Budget
$4.00
Billing limit
$4.00

Usage

Normalized reviewer-tool usage projection

Input tokens
115708
Output tokens
1127
Cached input
375109
Reasoning tokens
60084
Requests
16
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

values()` returns `sweep_bytes_reclaimed` at index 4 and `sweep_blobs_removed` at index 5, which inverts the order in `COUNTERS` and renders reclaimed bytes under the blob count metric and removed… values()` returns `sweep_bytes_reclaimed` at index 4 and `sweep_blobs_removed` at index 5, which inverts the order in `COUNTERS` and renders reclaimed bytes under the blob count metric and removed blobs under the bytes metric.

bug
Category: bug Confidence: Not recorded

services/proxy/src/metrics.rs:94

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 13 (locality)
Finding f2

bug

sort_by_key` orders `candidates` in ascending order of elapsed `age`, which places the newest blobs first and causes cache eviction to delete the newest blobs while retaining the oldest.

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

forget(&index, &gone)` is called unconditionally without checking `dry_run`, causing dry-run sweeps (`?dry_run=true`) to delete index files from disk.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:140

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 12 (locality)
Finding f4

bug

!index.contains_key(hex)` evicts unindexed blobs without checking `candidate.age >= self.min_age`, racing with `fetch` during the window between committing a blob and writing its index entry and… !index.contains_key(hex)` evicts unindexed blobs without checking `candidate.age >= self.min_age`, racing with `fetch` during the window between committing a blob and writing its index entry and causing in-flight requests to fail.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:119

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 18 (locality)
Finding f5

bug

clear_partials` deletes all files in `incoming/` without checking file age, deleting in-progress writes for active fetches and causing `BlobWriter::commit` to fail on rename.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:231

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 17 (locality)
Finding f6

bug

reclaim` calls `app.sweeper.sweep(dry_run)` directly instead of locking `app.sweeper.running`, allowing manual sweep requests to run concurrently with the background sweep task.

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 f7

bug

tokio::time::interval` yields immediately on its first tick, causing `spawn_sweeps` to run a sweep immediately at startup rather than waiting for the configured sweep interval.

bug
Category: bug Confidence: Not recorded

services/proxy/src/main.rs:108

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 7 (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 ·