Diff review
- Sees lines in this PR
- Green tests the agent wrote
Topic · Silent requirement break
The PR can look like a refactor. The shall did not move. Proof marks the link suspect when the code is newer than the requirement, then the audit fails the merge.
proof audit --check suspect_clean
Code review still reads the diff. It does not notice that SYS-REQ-012 is now older than the file that claimed to implement it.
01 · The silent break
Verifying a function the model just wrote is one question. Catching that it quietly dropped a shall you already approved is another.
The first job is verify AI agent code: is this new function actually correct. The matrix job is the traceability page: can I re-derive which code satisfies which shall. This page is the delta after a commit. The agent changed a file that was already linked. Nobody touched the requirement. The tests the model also wrote still pass.
A link is suspect when either side moved since the link was last verified. Forward: the requirement is newer than the artifact. Reverse: the code is newer than the requirement. The silent agent break is reverse. That is the case proof audit --check suspect_clean is built to fail.
02 · The exhibit
Same graph. Two timestamps. The review comment on the diff does not see either of them.
Diff review
SYS-REQ-012
The file is newer than the shall. The review comment does not see the timestamp.
Not consultedThe PR
Still a clean thread.
Looks like a refactorProof
Same commit. Two clocks. Click the tabs.
| Job | Diff / PR bot | Proof |
|---|---|---|
| What it sees | Lines in this pull request. | Git timestamps on both ends of the link. |
| Forward | The shall moved. The file might look untouched. | SYS-REQ-005 --> implemented_by is suspect because the requirement is newer. |
| Reverse | A refactor. Tests green. Comment if the style bothers you. | SYS-REQ-012 <-- implemented_by is suspect because the code is newer. |
| Stops the merge? | If someone reads the thread and blocks. | Yes, when suspect_clean is on the audit. |
| Who can clear it | The same agent can resolve its own review comments. | A human proof trace review, or a citation the repo can re-check. Agent actors are refused on a rationale review. |
We have not run a frozen corpus of agent-broken shalls against proof audit --check suspect_clean. The loss is named, not scored. CodeRabbit and Copilot review still read the diff. They stay. They are not a substitute for the timestamp on the link.
proof trace suspect
proof audit --check suspect_clean
# >>> [VERIFICATION] suspect_clean -- 0 suspect links
proof trace review SYS-REQ-012 --citation pkg/trace/linker.go
Freshness is the latest Git commit on a clean tracked file, not checkout mtime. Dirty or untracked files still use filesystem mtime, so a local edit invalidates the review immediately. proof trace suspect --all is whole-project inspection. The audit check stays on the verification scope.
03 · Honest loss
It does not stop the model writing the diff. It fails the merge after the file is already newer than the shall.
A rationale review is a human signature. The command refuses agent actors for that path because the only thing standing behind free text is who signed it. A --citation is different: the path has to be one of that requirement's own trace targets, and the repo can re-check the claim. Neither of those is a runtime monitor, a secret scanner, or a prompt rule in Cursor.
Jama still authors the programme. Proof does not replace an ALM. It does not prove the new function is correct. That is the verify-AI page. It does not rebuild the matrix from a spreadsheet. That is the RTM page. After week four the gate is in your CI. The engagement can stop. The bar does not. That install is the audit.
04 · Next
How do I verify code that an AI agent wrote is actually correct? New function, new test, same context window. Verify AI agent code.
How do I keep my spec and my code from drifting apart over time? That is the matrix, not the delta. Requirements traceability matrix.
What's a reliable way to gate AI pull requests on correctness? The compare page against the PR bot. Proof vs CodeRabbit.
What guardrails should I put around autonomous coding agents? Merge exit, not a sandbox. Guardrails around autonomous coding agents.