Get ThruLine

Specimen 01

Ran, checked nothing.

“Ran, checked nothing. This is not a pass.” A run that exits 0 — the code for success — having checked nothing. Here, the agent cited one as proof that “Tests pass.”

Recorded on ThruLine’s checkout-web demo record. No customer data. [swap in a corpus chain before launch]

The chain

Six questions, asked in order. Each answer is a line from the record of what the agent said and what actually ran, numbered step by step. A version is one exact commit of the code, like e71c5b0. Proof holds at ① and stops at ②, so ③ to ⑤ are never reached.

Claude Code said “Checkout total fixed.” “Tests pass.” · step 52 · demo record

Before the re-run

  1. ① Said

    What did the agent claim?

    "Tests pass." Claude Code · 16:03 step 52

  2. ② Rests on

    What is that claim based on?

    [n] skipped, 0 ran exit 0 step [step] cited by the agent

  3. ③ Ran on

    Which version did that actually run on?

    not reached

  4. ④ Since

    Did anything it depends on change after it?

    not reached

  5. ⑤ Re-checked

    Has anything checked it since?

    not reached

  6. ⑥ So
    Not proven

    So what do we actually know?

    version e71c5b0 the claim may be entirely true.

Proof stops here

“Tests pass.” rests on a run that checked nothing.

How the cited run ended · one of six outcomes

  1. Passed
  2. Failed
  3. Ran, checked nothing (not a pass), how the cited run ended
  4. Cancelled by you
  5. Interrupted
  6. Tool not found

Only a pass reads as a pass. This run is named for what it did.

Check it again

pytest -q tests/test_totals.py checkout/ on e71c5b0 · asks once for this project

② Rests on · where proof stops

What is that claim based on?

On a run that checked nothing. It exited 0 — the code a command returns when it ends without an error — and its own counts say nothing ran.

exit code
0
step
[step]
counted
[n] skipped, 0 ran
The exit code says the command ended. Only the counts say what was checked — here, nothing. Specimen 04 shows why a count must say which way it counts.

The re-run

One press of Check it again runs the check on the version you are about to approve. It asks once per project, installs nothing and does not touch the network. In v0.2.0 the button runs cargo test; a pytest check like this one is re-run from a terminal with thruline check -- pytest ….

thruline ui · Change · Fix double-applied discount on checkout total After the re-run

1 · You press

Check it again

pytest -q tests/test_totals.py checkout/ on e71c5b0 · asks once for this project

2 · It runs

[re-run outcome from the corpus chain]

on e71c5b0

Named as one of the six outcomes, the same way the cited run was.

3 · ⑥ So

[⑥ after the re-run]

It follows the outcome, and nothing else:

If it passed
⑥ can read Proven, on e71c5b0 only.
Anything else
⑥ stays Not proven — including a re-run that checks nothing.
What to notice: the re-run is judged by the same six outcomes. A second run that checks nothing is named the same way — never as a pass.

The receipt

A receipt is the record of exactly what ran: the command, the version it ran on, the exit code and the counts. A sha256 fingerprint covers the whole, so one changed byte no longer matches. “Proven” always points at a receipt: a recorded run, not a re-read.

Receipt · re-run · version e71c5b0

command
pytest -q tests/test_totals.py checkout/
scope
tests/test_totals.py, checkout/
outcome
[re-run outcome from the corpus chain]
record
checkout-web · demo record
sha256
[receipt sha256]

This is the checkout-web demo record, so its outcome and hash stay placeholders. ThruLine’s real receipt — from its qualification run on a synthetic Python test project, signed with a sample key that is not a production identity — gives skipped its own count: passed 2 · failed 0 · skipped 0 · total 2. It is on the home page.

What this shows

Exit 0 says a command ended without an error. It does not say anything was checked. ThruLine names a run that checked nothing as exactly that, and a claim resting on it stays “Not proven” — the claim may be entirely true.

Why it matters · skips that read as passes

A Cursor Bugbot check ends neutral — neither a pass nor a fail — both when it has findings and when no review ran, and neutral passes a required check (one a pull request must pass before it can merge). In coincube #496, pull-request descriptions claimed a Bugbot review on 20 of 20 heads (a head is a pull request’s latest commit); 19 had none, and 16 merged.

cursor.com · docs/bugbot · coincube #496 · fetched 25 Sep 2026

ThruLine’s answer: a skip is named as a skip, never shown as a pass.