backcheck is only worth installing if you trust its verdicts. A hook that fires on honest work
gets uninstalled within a day, and then it protects nobody.
So the most valuable thing you can contribute is a case where it was wrong.
Two kinds of wrong
False positive — it flagged work that was fine. This is the expensive kind. Examples we
already fixed this way:
- runners invoked through a virtualenv path (
.venv/bin/python -m pytest) were invisible, so
genuine runs looked like no run at all
- the shell builtin
test -f was counted as a test run, which could hide a missing suite
- "Ruff passes with no warnings" was read as a negated sentence and skipped
False negative — an agent claimed something it had not done and backcheck stayed quiet.
Usually an unrecognised runner (#3) or a claim phrasing the patterns miss.
How to report one
Please do not attach a raw transcript. They contain your source, your paths, and sometimes
your credentials.
Send the smallest JSONL that reproduces it, with everything sensitive replaced. Three lines is
usually enough, and it can go straight into tests/fixtures/ as a regression test:
{"type":"assistant","message":{"content":[{"type":"tool_use","id":"t1","name":"Bash","input":{"command":"<command>"}}]}}
{"type":"user","toolUseResult":{"stdout":"<output>","stderr":"","interrupted":false},"message":{"content":[{"type":"tool_result","tool_use_id":"t1","content":"<output>"}]}}
{"type":"assistant","message":{"content":[{"type":"text","text":"<what the agent claimed>"}]}}
Then run backcheck -f your-fixture.jsonl --json and paste the output along with what you
expected instead.
There is an issue template for this: 🎯 Wrong verdict.
Claim phrasings we know are missed
Patterns live in src/claims.rs. Known gaps:
Each of those is a pattern plus a test, and the guard against over-matching is the interesting
part — see is_hedged() and is_negated().
backcheckis only worth installing if you trust its verdicts. A hook that fires on honest workgets uninstalled within a day, and then it protects nobody.
So the most valuable thing you can contribute is a case where it was wrong.
Two kinds of wrong
False positive — it flagged work that was fine. This is the expensive kind. Examples we
already fixed this way:
.venv/bin/python -m pytest) were invisible, sogenuine runs looked like no run at all
test -fwas counted as a test run, which could hide a missing suiteFalse negative — an agent claimed something it had not done and
backcheckstayed quiet.Usually an unrecognised runner (#3) or a claim phrasing the patterns miss.
How to report one
Please do not attach a raw transcript. They contain your source, your paths, and sometimes
your credentials.
Send the smallest JSONL that reproduces it, with everything sensitive replaced. Three lines is
usually enough, and it can go straight into
tests/fixtures/as a regression test:{"type":"assistant","message":{"content":[{"type":"tool_use","id":"t1","name":"Bash","input":{"command":"<command>"}}]}} {"type":"user","toolUseResult":{"stdout":"<output>","stderr":"","interrupted":false},"message":{"content":[{"type":"tool_result","tool_use_id":"t1","content":"<output>"}]}} {"type":"assistant","message":{"content":[{"type":"text","text":"<what the agent claimed>"}]}}Then run
backcheck -f your-fixture.jsonl --jsonand paste the output along with what youexpected instead.
There is an issue template for this: 🎯 Wrong verdict.
Claim phrasings we know are missed
Patterns live in
src/claims.rs. Known gaps:✅ testswith no verb)Each of those is a pattern plus a test, and the guard against over-matching is the interesting
part — see
is_hedged()andis_negated().