Session summary

default

scored

afi / afi · cli reviewed proxy at 9b51f95e with Default profile / OpenAI · gpt 5.6 luna high on afi 0.30.0

Measurements

Unavailable values retain their exported state and reason

Quality

Recall 40%
Model-judged precision N/A
F1 N/A
Tier 1 recall 33.3%
Tier 2 recall 42.9%
Tier 3 recall 50%
Tier 4 recall 25%
Security recall 0%
Defect recall 46.2%
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 8
Defects missed 12
Findings 8
Unkeyed findings 0
Intended findings 0
Carried findings Not recorded

Cost, usage, and speed

Total bill $0.0580
Review bill $0.0580
Judge bill N/A
Tokens 1701
Duration 6m 19s

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 / 8c8c79c46163
Configuration ID
config-657388b88e14616d
Build
afi 0.30.0 / b0f313c0b59a66ecc7612396dc8db0ea5da13a7a
Comparison
comparison-2f7717ed5785716d
Build ID
build-33906dcd701a0660
Cohort ID
cohort-fdab2adfb8a4bd39
Harness
bench 1 / 631c4107752a97104719622800c9815e030613cf dirty
Adapter
afi 1 / sha256:a1a935298956020ee6d767a756847abb4c00694c88c2eb80d454886ebc4acf8c
Exit code
0
Wall time
379
Deadline exceeded
No
Budget
$2.00
Billing limit
$2.00

Usage

Normalized reviewer-tool usage projection

Input tokens
27
Output tokens
1674
Cached input
261602
Reasoning tokens
31436
Requests
9
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

clear_partials` deletes every file in `incoming` without coordinating with active writers, so a live fetch can lose its temporary path and fail when `BlobWriter::commit` renames it.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:91

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 9 (locality)
Finding f2

bug

The index snapshot is not synchronized with fetch commits; a sweep can see a newly committed but not-yet-linked blob as unreferenced, delete it, and leave the subsequent index entry pointing to a… The index snapshot is not synchronized with fetch commits; a sweep can see a newly committed but not-yet-linked blob as unreferenced, delete it, and leave the subsequent index entry pointing to a missing blob.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:119

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 18 (locality)
Finding f3

bug

On-demand sweeps bypass the `running` mutex used by periodic sweeps, allowing concurrent sweeps to race while collecting, unlinking blobs, and removing index entries.

bug
Category: bug Confidence: Not recorded

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

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 11 (locality)
Finding f4

performance

The handler performs a potentially huge recursive filesystem walk synchronously on a Tokio worker, which can block cache requests and health probes while sweeping a large store.

performance
Category: performance Confidence: Not recorded

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

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 6 (locality)
Finding f5

bug

forget` runs during dry runs even though selected blobs are not removed, so `?dry_run=true` deletes their index entries and can cause a later sweep to delete those still-present blobs.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:140

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 12 (locality)
Finding f6

bug

When `remove_file` fails, execution still counts the candidate as removed and adds it to `gone`, so the response and metrics report reclaimed bytes while the blob remains and its index entries are… When `remove_file` fails, execution still counts the candidate as removed and adds it to `gone`, so the response and metrics report reclaimed bytes while the blob remains and its index entries are then deleted.

bug
Category: bug Confidence: Not recorded

services/proxy/src/sweep.rs:126

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 2 (locality)
Finding f7

bug

values()` supplies reclaimed bytes in the slot declared for removed blobs and blobs in the slot declared for bytes, so Prometheus exposes both sweep counters under the wrong names.

bug
Category: bug Confidence: Not recorded

services/proxy/src/metrics.rs:94

Evidence quote

Not recorded

Suggested fix

Not recorded

matchedDefect 13 (locality)
Finding f8

bug

tokio::time::interval` fires its first tick immediately, contrary to the stated one-interval delay, so every restart sweeps the cache immediately instead of waiting for `CAIRN_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 ·