Skip to content

Send us a transcript where backcheck got it wrong #6

Description

@amrit110

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:

  • non-English summaries
  • emoji-only status (✅ tests with no verb)
  • markdown tables reporting per-check status
  • "everything is green", "CI is happy", "all clear"
  • claims about coverage thresholds
  • claims split across sentences ("Ran the suite. Everything passed.")

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().

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    accuracyVerdict correctnessfalse-negativebackcheck missed something it should catchfalse-positivebackcheck flagged honest workhelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions