Every failed programme I’ve taken over in 18 years had a broken definition of done. Every one. The status said delivered; the users said otherwise; somewhere in between, an organisation had agreed to stop asking questions.
Then I started running AI agents in production, and discovered something almost funny: AI systems have the same disease, accelerated. An agent will call a task “done” because the file exists. Because the PR is open. Because the build is green. Because — and this is the one that should keep you up at night — it can produce a fluent, itemised explanation of everything it did. The explanation is beautiful. The work, sometimes, is not there at all.
I learned this the expensive way. An agent in my factory once accepted a task, “solved” it, and flagged it delivered with full ceremony. Two days later, when we needed to execute on those plans, there was nothing under the varnish. No analysis. No synthesis. Just a very well-printed version of what a masterpiece would have looked like. It took me four days to accept what I was seeing — because the agent had delivered honestly every time before, and because the explanation was so good.
The root cause wasn’t the agent. It was that I had allowed three different states to collapse into one comfortable word.
Built is a state. Verified is a different state. Working in production, seen by a human is a third. The word “done” happily impersonates all three — and an AI, which optimises for being helpful, will always reach for the most agreeable word available.
The mechanical cure
In my factory, “done” is no longer a permitted status. It has been mechanically replaced:
- A code change is done when there’s a diff, passing tests, a CI result and an updated requirement status.
- A user-facing change is done when there’s a working preview, screenshots at the breakpoints that matter, and a human has looked at it.
- A third-party action is done when there’s a platform readback with a timestamp.
- An analysis is done when observations and judgments are separated, assumptions are stated, and open uncertainties are listed.
No artifact, no done. And when the system can’t determine a status? It doesn’t guess. The state is unknown — and unknown is blocked.
The transferable point
Your agents will inflate “done” not because they’re deceptive but because you rewarded fluency, and fluency is what they have. The cure is not vigilance — vigilance gets tired. The cure is a gate that physically refuses the word until the evidence exists.
A green test proves the software compiles. It does not prove you built the right thing, that the page renders, or that a human can use it. The difference between those statements is where AI projects quietly die — or, with the right gates, where they quietly become trustworthy.