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
-
① Said
What did the agent claim?
"Tests pass." Claude Code · 16:03 step 52
-
② Rests on
What is that claim based on?
4 passed, 0 failed step 46 cited by the agent
-
③ Ran on
Which version did that actually run on?
version 9f2ad3e 1 version older
-
④ Since
Did anything it depends on change after it?
checkout/api.py changed · step 56 after the run
-
⑤ Re-checked
Has anything checked it since?
nothing on e71c5b0 with checkout/api.py in scope
-
⑥ SoNot 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.
- 4b19a0c run 26
- 9f2ad3e run 46
- e71c5b0 · now edit · step 56
Proof stops here
Nothing on e71c5b0 has run with checkout/api.py in scope.
| 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. | |
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.
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.
- Product · the marks Thirteen marks, one encoding Every state is a word, a glyph and a line style, so the page still reads with the colour off.
- FAQ What does “Not proven” mean — is my code broken? No. Nothing in the record establishes the claim on this version. The claim may be entirely true.
- Security What leaves your machine Nothing from the record. Check it again installs nothing and does not touch the network.