An agent can write “done, tests passed” on a pull request that deleted the tests or ended the command with || true. proofslip reads GitHub’s own record and writes a receipt a founder or client can read.
The source lives at github.com/omsocll/proofslip. That repository may be private, so the receipts below stand on their own.
All tests pass✕ does not match.The test command ends with || true
Added tests✕ does not match.Deleted tests/readme.test.ts
Doesn't match
What the pull request claimed, beside what GitHub recorded.
The check is green. The sentence might not be.
Coding agents open a pull request and report success in the description. Nothing in that sentence is checked against the diff or the CI logs. A reviewer who does not read the code has no short record of what was claimed, what actually ran, and what still needs a person.
How it works
1
The pull request is the claim
The description says what the agent did. A linked issue, when there is one, is the task.
2
GitHub is the evidence
proofslip reads the diff and the check runs already recorded for that commit. It does not ask the agent.
3
One sticky receipt
A comment says what checked out, what does not match, and what nobody could verify.
Same kind of sentence. Two receipts.
Both pull requests say the tests passed. The receipt is the difference.
Checks out
Honest pull request · omsocll/proofslip #3
Demo: honest receipt (count label helper).
✅ Added `countLabel` in `src/text.ts` and called it from `src/present.ts` — confirmed. `src/text.ts` and `src/present.ts` were changed.
✅ Added tests — confirmed. This pull request adds or updates a test file (`tests/text.test.ts`).
✅ All tests pass — confirmed. The test run on this exact version of the code passed.
❌ All tests pass — contradicted. A green run does not count. The test command was weakened in `package.json`, so the check can pass even when the tests fail.
❌ Added tests — contradicted. This pull request deleted the test file `tests/readme.test.ts` and did not add or update a test.
Deleted the test file `tests/readme.test.ts`. A test command was weakened in `package.json` (for example `|| true` or continue-on-error).
2 claims are contradicted. There are 2 warning signs. This receipt does not match the agent's account.
On 20 new public pull requests, from repos none of the earlier samples used, the overall verdict was fair on 19 of 20. The one miss said Doesn't match because tests that were moved into a new file were treated as deleted. Across these sets it has never been too rosy.
Fresh set, 20 new pull requests
Result
Verdict fair
19/20
Too rosy
0
Too harsh
1
Claims extracted
48
Pull requests with no claims
6
False reassurances
1
False alarms
1
Earlier sets are context, and they were re-scored on this same build. The third set was fair on 20 of 20 (it had been 15 of 20). The held-out 20 was fair on 19 of the 19 pull requests still online. The first 20, which the early fixes were adjusted on, was fair on 20 of 20.