Learn

/

Definition of Done

Definition of Done

5 patterns

The shared bar a story has to clear before it leaves a sprint. Verified by someone other than the implementer, tests at the right level, deployed and observable, ticket closed with what actually shipped.

Avoid
Story
AUTH-482
3 pts
Done
Users stay signed in across tab reloads
Closed by author. Code merged.

Prefer
Story
AUTH-482
3 pts
Done
Users stay signed in across tab reloads
Verified by Priya on staging across Chrome and Safari. Merged to main, deployed to prod 2026-04-23. Sentry session-drop rate: 12% → 0.6% over 24h.
Why avoid

Author-self-closes plus 'code merged' is the minimum bar that lets work skip QA, deploy verification, and the metric check. Two of those three will go wrong if nobody checks them.

Why prefer

Done means verified by someone other than the implementer, deployed, and observable. The closing comment names the verifier, the environments, the deploy, and a real metric the work moved.

Scrum.org: Definition of Done
Avoid
Story
FEED-22
3 pts
Done
Activity feed prepends new items in real time
Tests: existing snapshot tests still pass. Closed.

Prefer
Story
FEED-22
3 pts
Done
Activity feed prepends new items in real time
Tests: integration test for WS prepend + scroll-position regression test. Existing snapshot tests still pass.
Why avoid

Snapshot tests passing only means the rendered HTML did not change. They do not exercise the WebSocket path or the scroll-position rule the story committed to. The next refactor will silently regress.

Why prefer

Tests at the appropriate level for what shipped. The next person who touches the prepend logic will know if they broke the scroll-position behavior, which was the actual user-facing concern.

Scrum.org: Definition of Done
Avoid
Story
BIL-44
5 pts
Done
Customer downloads invoice as PDF
Merged.

Prefer
Story
BIL-44
5 pts
Done
Customer downloads invoice as PDF
Deployed to prod 2026-04-22. Dashboard /metrics/billing shows 142 PDF downloads in the first 24 hours.
Why avoid

Closing on merge alone hides the deploy gap. If the change sat in a branch waiting on a release window, or rolled out only to a staging tier, nobody on the board can tell. Production reality and the board diverge silently.

Why prefer

'Merged' is a halfway point. Done means deployed to the target environment and observable in metrics. The dashboard line confirms the feature is reaching users and the path the change took through the system actually works.

Scrum.org: Definition of Done
Avoid
Story
API-12
5 pts
Done
API supports filtering by created-after timestamp
Shipped. Will write up the docs change later this sprint or next.

Prefer
Story
API-12
5 pts
Done
API supports filtering by created-after timestamp
Shipped, deployed, OpenAPI spec updated, partner-portal docs published. SDK changelog entry added.
Why avoid

'Will write up the docs later' is a debt that grows. The next change will compound it; the team that depends on the API will keep filing 'how do I use this?' tickets; eventually someone has to spend a sprint catching docs up.

Why prefer

Done includes the documentation that consumers depend on. For an API change, the OpenAPI spec, the partner portal, and the SDK changelog are part of the contract. Without them, the work landed but partners still cannot use it.

Scrum.org: Definition of Done
Avoid
Story
RPT-31
5 pts
Done
Managers export team reports as CSV
Done.

Prefer
Story
RPT-31
5 pts
Done
Managers export team reports as CSV
Shipped CSV export for the throughput report. PDF export descoped during the sprint, captured as RPT-32. Date-range picker also descoped, captured as RPT-33. Verified by Lin in staging.
Why avoid

'Done' alone tells you nothing when scope changed mid-sprint. The next sprint planning will rediscover the descoped pieces from scratch, possibly twice.

Why prefer

Stories drift. The right closing comment names what shipped, what was descoped, and where the descoped work lives now. Anyone reading the ticket later can reconstruct the decision without asking the team.

Scrum.org: Definition of Done