cd /news/developer-tools/delivered-accepted-merged-deployed-f… · home topics developer-tools article
[ARTICLE · art-111402] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Delivered, accepted, merged, deployed: four facts your tracker calls Done

A developer at Wagglet argues that issue trackers' 'Done' status conflates four distinct facts: delivery, acceptance, merge, and deploy, which can each be true or false independently. The post emphasizes that with AI coding agents, which always produce confident reports, separating delivery from acceptance is critical, and suggests defining stop conditions and making 'what I could not verify' mandatory. The author describes Wagglet's five-stage task lifecycle as an implementation of this separation.

read3 min views3 publishedAug 26, 2026

Most issue trackers have a column called "Done." It is doing far too much work.

"Done" is quietly standing in for at least four separate facts, each with a different owner, a different moment, and a different failure mode:

When a workflow collapses these into one status, it doesn't make the process simpler. It makes the process unable to describe what actually happened. And you notice the missing vocabulary at the worst possible moment, usually in an incident channel at 6pm.

Each of the four facts can be true while the others are false. All of these are real states:

main

. main

last shipped on Thursday. It is Tuesday.A single "Done" column cannot express any of these. So teams invent shadow vocabulary to compensate - "done done", "really done", "done but not shipped", a comment thread, a Slack message that scrolls away. That shadow vocabulary is a symptom. The status model is missing states the work actually has.

Everything above predates AI tooling. But handing work to a coding agent sharpens it considerably, for one specific reason: an agent will always produce a confident report.

A human who half-finished a task tends to leak signal. They hedge. They say "I think it works but I couldn't test the mobile case." An agent, asked to summarize what it did, generally returns a clean, plausible, well-structured account of having succeeded. That report is a genuinely useful artifact - but it is evidence, not a verdict.

If your workflow treats "the agent reported completion" as equivalent to "the task is complete," you have wired a system where the party doing the work also certifies the work, and the certifying party is the one component in the loop that is structurally incapable of expressing doubt about its own output. That is not an argument against agent-run tasks. It is an argument for keeping delivery and acceptance as two separate events with two different owners.

The practical version is not heavy. It's mostly about naming the transitions honestly:

Delivery is a report, not a verdict. Whoever performed the work - human, agent, or the pair - reports what happened, what evidence exists, and what they could not verify. Ideally the "what I could not verify" section is mandatory, because it is the section that actually carries information.

Acceptance is a decision by someone accountable for the outcome. They can accept, send it back to the runner, or reopen it. Crucially they must be able to judge the work. If nobody in the loop can distinguish correct output from confidently wrong output, acceptance is theater, and you've distributed risk rather than work.

Merge and deploy stay their own facts. They're usually visible in tooling already; the mistake is letting either one imply acceptance. A revert is a normal event, and a status model where "deployed" is terminal makes reverting feel like failure rather than routine.

Stop conditions are defined up front. The task should say what to do when authority or evidence is missing. Both a human and an agent should be able to stop and escalate rather than guess. An agent that hits an ambiguous requirement and picks an interpretation has made a product decision nobody delegated to it.

You don't need new tooling to get most of the value. Try this on your next handed-off task:

That last one is the whole thing, really. Everything else is elaboration.

I work on Wagglet, where this separation is built into the task lifecycle - the participant who ran the task reports it, which moves the task to Delivered, and an authorized reviewer separately accepts it, sends it back, or reopens it. The full five-stage model is written up at how it works, and the handoff mechanics are in the task handoff docs.

Curious how others handle this: does your tracker distinguish delivered from accepted, or did your team also end up inventing "done done"?

── more in #developer-tools 4 stories · sorted by recency
── more on @wagglet 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/delivered-accepted-m…] indexed:0 read:3min 2026-08-26 ·