Definition of Done vs Acceptance Criteria
- Contributor
- Mar 17
- 5 min read
Definition of Done (DoD) and acceptance criteria are both about completion, but they apply at different levels. Confusing them creates duplication (the same check appears in every story's criteria) or gaps (something important isn't anywhere). Used cleanly, they cover completion comprehensively without redundancy.
The Distinction
Definition of Done is team-wide and story-agnostic. It defines the baseline every story must meet. "Tested. Reviewed. Deployed. Documented." Same for every story.
Acceptance criteria are story-specific. They define when this particular story's intent is met. "Workspace switcher shows all workspaces the user has access to."
A story is done when both are satisfied. The DoD applies to all stories; the criteria apply to this one.
What Goes in Definition of Done
The DoD typically covers:
Code committed and merged
Code reviewed
Unit tests written and passing
Integration tests passing
Documentation updated where relevant
Deployed to the appropriate environment
Acceptance criteria verified
No new accessibility regressions
No new security vulnerabilities introduced
Metrics or analytics added if relevant
Monitoring/alerting updated if relevant
The specifics depend on the team. The principle: things that should be true for every story.
What Goes in Acceptance Criteria
Acceptance criteria cover:
The specific behaviors this story should produce
The specific conditions and outcomes
Edge cases relevant to this story
Acceptance criteria don't repeat DoD items. "Tests written" isn't an acceptance criterion (it's in DoD). "User can switch workspaces" is.
Why Mixing Them Creates Problems
When teams put DoD-style items in every story's acceptance criteria:
Stories are cluttered with the same boilerplate
Important DoD items vary across stories (some have "tests written," some don't)
The DoD baseline isn't really enforced
Story refinement takes longer than needed
When teams omit a DoD entirely and put everything in acceptance criteria:
Inconsistency across stories
Story authors decide what's required, not the team
No baseline guarantee
The separation is what produces consistent quality.
Building the Definition of Done
The DoD is a team agreement. Build it explicitly:
The team discusses what should be true for every story
Each item is debated: is this really baseline?
The list is agreed upon
The DoD is visible (on the wiki, in the team channel, on a wall)
Update the DoD when the team's standards change. New testing requirements. New compliance needs. Tooling improvements.
DoD Levels
Different scopes can have different DoDs:
Story-level DoD: what's true when a story is done
Sprint-level DoD: what's true when the sprint is over
Release-level DoD: what's true when the release ships
Story-level is the most common and most important. The others appear in mature teams that ship in larger batches.
Common DoD Items
A working DoD for a typical web product team:
Code merged to main
At least one reviewer approved
Unit tests added/updated; full suite passing
Integration tests passing
No new linter or type errors
Accessibility check passing
Documentation updated (README, API docs, internal wiki)
Feature flag or rollout plan documented if applicable
Deployed to staging
PM acceptance test signed off
About 10 items. Specific to the team's process.
Avoid Over-Including
Tempting items that shouldn't be in DoD:
"User testing completed." Doesn't apply to every story.
"Performance validated." Doesn't apply to every story.
"Compliance review." Only for stories that need it.
"Stakeholder presented." Not appropriate baseline.
If something doesn't apply universally, it's not DoD; it's a per-story acceptance criterion.
Updating the DoD
The DoD should evolve. Triggers:
New testing capability (add to DoD)
Recurring quality issue (add a check)
New compliance requirement (add it)
Process change (modify accordingly)
A DoD that hasn't changed in two years probably isn't reflecting current practice.
Verifying Both
For a story to be done:
The acceptance criteria are verified
The DoD items are verified
The verification happens at PR review and merge time, not at sprint end. By the time the story is closed, both are met.
Some teams use checklists (in PR templates, in story tickets) to make verification explicit. Others rely on culture and process.
When DoD Becomes Theater
A DoD that's not actually enforced becomes theater. Patterns:
Stories closed without all DoD items met
DoD items that nobody checks
DoD items that conflict with how the team actually works
The DoD is only as strong as enforcement. If items are routinely skipped, either the DoD needs adjustment or enforcement needs strengthening.
Acceptance Criteria as Conversation Starter
Acceptance criteria aren't the full spec. They're the test of completion. The conversation around the story produces the rest of the design.
Criteria that try to be complete specs balloon to dozens of bullets. Better: 3-7 criteria capturing the essence; conversation captures the rest.
A Worked Example
For a story: "User can switch between workspaces."
Acceptance criteria (story-specific):
Workspace switcher visible to users with 2+ workspaces
Switching to a different workspace preserves URL context where possible
Current workspace clearly indicated
Switcher is keyboard accessible
Users with 1 workspace don't see the switcher
DoD (every story):
Code reviewed
Unit tests added
Integration tests pass
No accessibility regressions
Documentation updated
Deployed to staging
PM accepted
For this story to be done, both lists need to be satisfied. The criteria are unique to switching workspaces; the DoD is the team's baseline.
When Acceptance Criteria Cross into DoD Territory
Sometimes a story-specific criterion is actually a DoD-applicable check. Examples:
"No new accessibility violations" — DoD
"Performance under 500ms" — sometimes DoD, sometimes story-specific
"Feature flag in place" — DoD if all features go behind flags
When in doubt: if this check applies to similar stories in the future, it's probably DoD. If it's unique to this story, it's a criterion.
Acceptance Tests
Closely related: acceptance tests are the executable form of acceptance criteria. Each criterion becomes a test that passes when the criterion is met.
For automated tests, criteria + tests + DoD are three layers:
Criteria: what should be true
Tests: how we verify
DoD: includes "tests are written and passing"
The cleanest version: criteria specify behavior; tests verify; DoD requires tests; both are met for done.
Anti-Patterns
Criteria duplicate DoD. "Tests are written" in every story's criteria. Move to DoD.
No DoD. Everything in criteria; inconsistent across stories.
Stale DoD. Items that no longer apply or that don't match practice.
DoD as wishlist. Items that aspirationally should happen but rarely do. Either enforce or remove.
Criteria that aren't criteria. "Story is complete." Tautological.
Key Takeaway
Definition of Done is team-wide and applies to every story. Acceptance criteria are story-specific. The DoD covers baseline quality (tests, reviews, documentation, deployment) consistently across stories. The criteria capture what the specific story should accomplish. Both must be satisfied for a story to be done. Don't duplicate DoD items in criteria; don't omit a DoD and put everything in criteria. Update the DoD as the team's practices evolve.
Related reading
Keep learning. This article is part of the Software Testing Foundations path in the ShiftQuality Learning Center. Learn to design tests that catch real bugs.


