An agent can write a good patch and still be wrong about whether the job is done. The missing piece is usually not more code. It is the receipt.
A receipt is a short record of the work. It says what changed, what checks ran, what the review found, and whether the change can ship. Without it, I must find the answer myself. I have to rely on memory, terminal output, and a confident summary from the agent.
That is not delegation. It moves the tracking work into my head.
A green check answers one question
I used to think a passing test run meant the job was done. CI, or continuous integration, is an automated process that tests a code change. A green result is useful. It means the tests that ran passed.
But it does not show that the right files changed. It does not show that someone reviewed the work. It does not show that an open decision was resolved. It also does not show that the change can merge.
I have written about the next problem before: green CI can still leave the bug live, and merging is a separate control boundary. A check can be true and still not tell the whole story.
The problem is worse with agents because they write good summaries. A summary can sound complete while missing the one fact I need. “Tests passed” does not mean “this is ready.”
The receipt is smaller than the transcript
I do not need every command or every line the agent read. I need the evidence behind the decision:
changed: src/content/blog/ai-code-needs-a-receipt.mdx
checked: source validation, tests, build, link check
review: complete
decision: ready for human merge
The exact fields depend on the work. The format matters less than the basic shape. Each claim should link to something I can check.
This difference matters in a healthcare business. A copy change on a public page is not as risky as a change to a patient-facing workflow. The receipt should show that difference. It should say what area changed, which checks apply, and who still needs to decide.
This is also why I keep review silence separate from approval. No comment is not a receipt. A green check is not a receipt. A receipt is evidence tied to a decision.
What I ask the system to prove
Before I call agent work done, I want four answers:
- What changed?
- What checks actually ran?
- What did the review find, and is anything still open?
- Is this ready to merge, or does a person still need to decide?
Firstmate is useful to me because it adds clear ownership and status to agent work. The worker gets a limited job. The work stays on its own branch. The result returns as a pull request with checks and review. It does not disappear into a session transcript.
That record does not replace judgment. It shows me where judgment is still needed.
The rule is simple: if an agent says “done,” ask for the evidence that proves it. Fast code without a receipt creates more work later. Fast code with a receipt gives me a safe way to let the agent do more.