Get ThruLine

Specimen 03

A file changed after the run.

The tests passed, and the agent said so. Then checkout/api.py changed at step 56 (16:04) — after the run, and after the claim.

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 through ③ and stops at ④.

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?

    4 passed, 0 failed step 46 cited by the agent

  3. ③ Ran on

    Which version did that actually run on?

    version 9f2ad3e 1 version older

  4. ④ Since

    Did anything it depends on change after it?

    checkout/api.py changed · step 56 after the run

  5. ⑤ Re-checked

    Has anything checked it since?

    nothing on e71c5b0 with checkout/api.py in scope

  6. ⑥ So
    Not proven

    So what do we actually know?

    version e71c5b0 the claim may be entirely true.

④ Since · where proof stops

Did anything it depends on change after it?

Yes. checkout/api.py changed at step 56 (16:04), after the run and after the claim. The code is now e71c5b0.

  1. 4b19a0c run 26
  2. 9f2ad3e run 46, needs a re-check
  3. e71c5b0 · now edit · step 56
Read it left to right, oldest first. Run 46 sits left of the edit at step 56, so what it proved belongs to 9f2ad3e — not to e71c5b0, the code you are about to approve.

Proof stops here

Nothing on e71c5b0 has run with checkout/api.py in scope.

What was looked at · 2 finished runs, 1 step with no result
Step Ran on Result Why it doesn’t count here
step 26 4b19a0c 1 failed, 3 passed An older version, and it failed.
step 46 9f2ad3e 4 passed, 0 failed It ran before the edit at step 56.
step 60 No result yet A step with no result never counts. Specimen 05 shows why.
Check it again

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

The re-run

One press of Check it again runs the check again, 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 …. Here it ran as step 62 and ended with exit 0, the code a command returns when it succeeds.

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

Passed

step 62 · exit 0 · on e71c5b0 3 passed, 0 failed

3 · ⑥ So

Proven · version e71c5b0 · tests/test_totals.py, checkout/

“Tests pass.” now rests on a run on this version.

  1. ① Said
  2. ② Rests on
  3. ③ Ran on
  4. ④ Since
  5. ⑤ Re-checked

    re-run · step 62 exit 0

  6. ⑥ So
    Proven

    version e71c5b0

What to notice: the proof is a new record — step 62, on e71c5b0 — not step 46 carried forward.

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 · step 62 · exit 0 · 3 passed, 0 failed · version e71c5b0

command
pytest -q tests/test_totals.py checkout/
scope
tests/test_totals.py, checkout/
outcome
Passed
record
checkout-web · demo record
sha256
[receipt sha256]

This is the checkout-web demo record, so its hash stays a placeholder. A real receipt is on the home page: ThruLine’s qualification run on a synthetic Python test project, signed with a sample key that is not a production identity.

What this shows

Proof belongs to a version. A later edit un-proves nothing — it just means nothing has checked the new version yet. Until something does, ThruLine says “Not proven”, and the claim may be entirely true.