cd /news/ai-agents/acceptance-criteria-must-be-provable · home › topics › ai-agents › article
[ARTICLE · art-168411] src=matthewboston.com ↗ pub= topic=ai-agents verified=true sentiment=· neutral

Acceptance Criteria Must Be Provable

A blog post argues that acceptance criteria for software tickets, including work delegated to AI coding agents, are only useful when each one can be proven true or false, and recommends rewriting vague criteria into runnable checks. The post's stated rule is "If you can't prove a criterion false, it isn't an acceptance criterion," and it illustrates the point by replacing "cancellation works correctly" with two testable criteria: stop future renewal charges, and keep access until the end of the paid period. It also advises giving the implementing agent read-only access to criteria and requiring it to report the exact command, test name, measurement, or screenshot behind each criterion before claiming the work done.

read4 min views2 publishedNov 12, 2026
Acceptance Criteria Must Be Provable
Image: Matthewboston (auto-discovered)

tl;dr #

Acceptance criteria only help if each one can be proven true or false. “Works well” and “is fast” can’t. Rewrite them into a check you can run: a test, a command, a measurement, or a screenshot. Don’t let an agent claim done on a criterion it hasn’t proven. Ask for the evidence, one criterion at a time.

Key takeaway: If you can’t prove a criterion false, it isn’t an acceptance criterion.

A criterion you can’t check is a wish #

In Let Agents Review Behavior and Intent Too, I said to give a reviewing agent the issue and its acceptance criteria, then have it report which requirements the change satisfies and which it misses.

That only works if the criteria can be checked. “The cancellation flow works well” has no yes or no. A reviewer who tries to verify it ends up guessing what “well” meant. An agent will guess too, and it will sound sure about it.

Whether You Think AI Can or Can’t, You’re Right says a missing definition of done is a setup failure. A vague definition is the same failure with more words. You gave the agent a target it can’t miss, because it can’t be measured.

Rewrite until a check can fail #

Take the cancellation example from Behavior Tests Tell You Why the Code Exists. A ticket that says “cancellation works correctly” can’t be proven. These can:

  • Stop future renewal charges.
  • Keep access until the end of the paid period.

Each one has a check. Create a subscription that would renew on October 1, cancel it, and assert that no charge is due that day. Create one paid through September 30, cancel it, and assert that access still holds on September 15. If those fail, the criterion is false. If you can’t write a check like that, the criterion is still a wish.

Vague words on tickets need the same treatment. Rewrite “The checkout is fast” to “A checkout of 10 line items finishes in under 200ms when you run the repo’s checkout benchmark.” Someone can run the command and get a yes or no. Rewrite “The settings page looks good” to “The save button stays disabled until every required field is valid.” A screenshot of the form with the email field empty and the button disabled backs it up.

If a criterion still says “well,” “fast,” “intuitive,” or “polished,” it isn’t done being written.

Don’t claim done without evidence #

An agent will often call the work finished as soon as the file is written. A green test suite isn’t enough either, because green tests don’t prove the agent built what you asked for. The tests can encode the same misunderstanding as the code. That’s why Review the Outcome, Not the Output asks whether the tests check what matters, not whether the agent wrote tests.

So write the criteria before the work starts, and keep them out of the worker’s write path. That’s the same rule as Describe the What, Delegate the How. The agent doing the work shouldn’t get to edit the definition of done. It gets read access only. The check has to live outside the agent that did the work.

When you ask an agent to implement a ticket, ask it to prove each criterion. This is an example to try, not a report of a workflow I’ve already run.

Implement this ticket against the acceptance criteria below.
Do not edit the criteria or the tests that encode them.

For each criterion, report:
- The check you ran: the exact command, test name, measurement, or screenshot
- The result
- If you could not prove it, say so and stop short of claiming done

A passing suite is not evidence for a criterion that has no check.
Reading a test is not a passing test run.
Do not claim done until every criterion has evidence or an explicit gap.

A human still has to look at that evidence. If the criterion was “keep access until the end of the paid period” and the only test asserts that a cancel method was called, that isn’t proof. Send it back.

Acceptance criteria are how you and the agent agree what done means. If a line can’t be proven, it isn’t a criterion yet. Rewrite it before the work starts.

── more in #ai-agents 4 stories · sorted by recency
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/acceptance-criteria-…] indexed:0 read:4min 2026-11-12 · —