culprit report 77f60c9fccf8Everything Culprit does is recorded in the ledger, a SQLite file at .culprit/ledger.sqlite:
each run's settings, every agent run with its result, cost and latency, every step's decision, model
calls, and the culprit's intent and diff. The commands on this page only read it, so they're free and
need no network.
Report#
Writes report-<run_id>.md and report-<run_id>.html to .culprit/reports/ (or --out DIR):
- the verdict and its confidence,
- both baselines and the regression gate,
- the bisect timeline, with each commit's pass count, Wilson interval and threshold,
- skipped commits and why,
- the culprit's intent and diff,
- the agent runs and cost of localising and fixing, when you've run them,
- costs, and where any reused baseline results came from,
- neatlogs trace IDs, when tracing was on.
The HTML page is self-contained, so you can attach it to an issue or open it in a browser. The responsible hunks and the verified patch are in the PR comment.
PR comment#
culprit comment <run_id> # print it
culprit comment <run_id> --out pr.md # or write it to a fileThe same comment culprit ci posts, for any finished run. See CI and pull requests.
Exit code 2 if the run doesn't exist.
Costs#
culprit export-costs --out costs.csvOne row per run in the ledger:
| Columns | Meaning |
|---|---|
run_id, repo, good_ref, bad_ref, status |
Which run, and how it ended. |
victim_provider, victim_model, k |
The settings it ran with. |
victim_runs, reused_runs |
Agent runs executed, and results copied from earlier runs. |
baseline_runs, bisect_runs, localise_runs, fix_runs, other_runs |
Where those agent runs went. |
baseline_cost_usd, bisect_cost_usd, localise_cost_usd, fix_cost_usd, other_cost_usd |
Cost by stage. |
victim_cost_usd, llm_cost_usd, cost_usd |
Your agent's cost, Culprit's own model calls, and the total. |
cost_per_victim_run_usd, wall_time_s, started_at, finished_at |
Unit cost and timing. |
culprit_sha |
The culprit, when one was found. |
Leave out --out to print to standard output.
Keeping or sharing the ledger#
The ledger is a plain file. Copy it to keep a record, or back it up with your CI artifacts to make baseline reuse work across jobs. It contains your eval results and the culprit's diffs and intent, but no API keys.