“Done” is a claim until there is evidence

· Harish Ganapathi · 2 min read

In short

An agent's 'done' is generated by the same process that made the mistake. Treat completion as a claim, require independent evidence tied to the exact commit and requirement, and let that evidence expire the moment either changes.

Every coding agent ends its run the same way: a confident paragraph explaining what it built, what it tested, and why you should merge it. That paragraph is the least reliable artefact in the whole pipeline, and most tooling treats it as the finish line.

The completion message is not evidence

The message is produced by the same model, in the same context, with the same blind spots as the code it describes. If the agent misread the requirement, its summary will misread it identically. If it wrote a test that asserts the wrong thing, the summary will proudly report that the test passes.

This is not an argument that agents are bad. Humans do exactly the same thing in pull request descriptions. It is an argument that self-report is a different category of thing from verification, and that a pipeline should never let the first substitute for the second.

What counts as evidence

Evidence has three properties that a completion message lacks:

  1. It is produced independently. A separate run, ideally a separate role with read-only tools, exercises the behaviour rather than describing it.
  2. It is tied to a specific revision. The evidence names the commit it was produced against and the requirement revision it was checking. “Tests pass” is a claim. “Tests pass on a41c9e against REQ-invite-02 revision 3” is evidence.
  3. It expires. Push a new commit or edit the requirement, and the evidence is stale. It has to be regenerated. There is no flag to override this, because an override flag is just a completion message with extra steps.

Gate completion on it

In AgentCrew, a mission cannot be marked complete until every current requirement has fresh verified evidence and no blocking findings remain. The command that closes a mission is refused otherwise. We chose refusal over a warning deliberately: a warning is something you learn to click through by the third day.

The interesting consequence is what happens when requirements change mid-mission, which they always do. The PRD gets a new revision, every piece of evidence recorded against the old revision goes stale, and the gate closes. The verifier has to run again, but only against what changed. That is exactly the behaviour you want, and it is almost impossible to get from a human process under deadline pressure.

What this costs

Verification runs consume model quota. A mission that took four implementation tasks might spend a fifth task’s worth of usage on evidence. We think that ratio is cheap compared with the alternative, which is you reading every diff as if it were a junior’s first week, or worse, not reading it.

Start small

You do not need AgentCrew to adopt the principle. Next time an agent tells you it is done, ask it for the exact command it ran and run it yourself on a clean checkout. Note how often the answer changes. That gap is what evidence-gated completion closes.

Keep reading

One email a month

Engineering notes on running agents like a team. No launch spam.