GitScrum / Docs
All Best Practices

Definition of Done Checklist | Quality Criteria

Know when work is truly complete, not just coded. GitScrum's task checklists and workflow rules ensure consistent quality and prevent incomplete work.

8 min read

"Done" means more than "code complete." GitScrum helps teams define and track completion criteria so work is truly finished.

Definition of Done

Standard Checklist

TEAM DEFINITION OF DONE:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ A STORY IS DONE WHEN:                                       β”‚
β”‚                                                             β”‚
β”‚ CODE:                                                       β”‚
β”‚ ☐ Code written and self-reviewed                          β”‚
β”‚ ☐ Code follows team style guide                           β”‚
β”‚ ☐ No known tech debt introduced                           β”‚
β”‚ ☐ No hard-coded values or secrets                         β”‚
β”‚                                                             β”‚
β”‚ TESTING:                                                    β”‚
β”‚ ☐ Unit tests written and passing                          β”‚
β”‚ ☐ Integration tests passing                               β”‚
β”‚ ☐ Manual testing completed                                β”‚
β”‚ ☐ Edge cases covered                                       β”‚
β”‚ ☐ No regression in existing features                      β”‚
β”‚                                                             β”‚
β”‚ REVIEW:                                                     β”‚
β”‚ ☐ Code review completed (at least 1 reviewer)             β”‚
β”‚ ☐ Review comments addressed                               β”‚
β”‚ ☐ Reviewer approved                                        β”‚
β”‚                                                             β”‚
β”‚ DOCUMENTATION:                                              β”‚
β”‚ ☐ Code comments where needed                              β”‚
β”‚ ☐ API documentation updated (if applicable)              β”‚
β”‚ ☐ User documentation updated (if user-facing)            β”‚
β”‚ ☐ README updated (if setup changes)                       β”‚
β”‚                                                             β”‚
β”‚ DEPLOYMENT:                                                 β”‚
β”‚ ☐ Merged to main branch                                   β”‚
β”‚ ☐ CI/CD pipeline passing                                  β”‚
β”‚ ☐ Deployed to staging                                      β”‚
β”‚ ☐ Verified working in staging                             β”‚
β”‚                                                             β”‚
β”‚ ACCEPTANCE:                                                 β”‚
β”‚ ☐ Acceptance criteria met                                 β”‚
β”‚ ☐ PO reviewed and approved                                β”‚
β”‚                                                             β”‚
β”‚ ALL ITEMS MUST BE CHECKED FOR "DONE"                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Levels of Done

DONE AT DIFFERENT LEVELS:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ TASK DONE:                                                  β”‚
β”‚ ─────────                                                   β”‚
β”‚ Individual task completed within a story                  β”‚
β”‚ ☐ Task work completed                                     β”‚
β”‚ ☐ Committed to feature branch                             β”‚
β”‚                                                             β”‚
β”‚ STORY DONE:                                                 β”‚
β”‚ ──────────                                                  β”‚
β”‚ User story fully implemented                              β”‚
β”‚ ☐ All tasks complete                                      β”‚
β”‚ ☐ Full DoD checklist met                                  β”‚
β”‚ ☐ Acceptance criteria verified                            β”‚
β”‚ ☐ Ready for demo                                          β”‚
β”‚                                                             β”‚
β”‚ SPRINT DONE:                                                β”‚
β”‚ ───────────                                                 β”‚
β”‚ Sprint increment potentially shippable                    β”‚
β”‚ ☐ All committed stories done                              β”‚
β”‚ ☐ No critical bugs                                         β”‚
β”‚ ☐ Release notes updated                                   β”‚
β”‚ ☐ Demo ready                                               β”‚
β”‚                                                             β”‚
β”‚ RELEASE DONE:                                               β”‚
β”‚ ────────────                                                β”‚
β”‚ Ready for production                                      β”‚
β”‚ ☐ All features done                                        β”‚
β”‚ ☐ Performance tested                                       β”‚
β”‚ ☐ Security reviewed                                        β”‚
β”‚ ☐ Documentation complete                                  β”‚
β”‚ ☐ Stakeholder sign-off                                    β”‚
β”‚ ☐ Deployment plan ready                                   β”‚
β”‚                                                             β”‚
β”‚ EACH LEVEL BUILDS ON PREVIOUS                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Task Checklists

Embedded Checklists

TASK WITH DOD CHECKLIST:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ STORY-123: Add password reset functionality                β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ ACCEPTANCE CRITERIA:                                    β”‚β”‚
β”‚ β”‚ β˜‘ User can request reset from login page               β”‚β”‚
β”‚ β”‚ β˜‘ Email sent with reset link                           β”‚β”‚
β”‚ β”‚ β˜‘ Link expires after 24 hours                          β”‚β”‚
β”‚ β”‚ β˜‘ User can set new password                            β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ DEFINITION OF DONE:                                      β”‚β”‚
β”‚ β”‚ β˜‘ Code reviewed by @senior-dev                         β”‚β”‚
β”‚ β”‚ β˜‘ Unit tests (coverage: 85%)                           β”‚β”‚
β”‚ β”‚ β˜‘ Integration tests passing                            β”‚β”‚
β”‚ β”‚ β˜‘ Manual testing completed                             β”‚β”‚
β”‚ β”‚ ☐ Deployed to staging                                  β”‚β”‚
β”‚ β”‚ ☐ Verified on staging                                  β”‚β”‚
β”‚ β”‚ ☐ PO approved                                          β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ STATUS: In Review (5/7 done)                           β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                             β”‚
β”‚ CANNOT MOVE TO "DONE" UNTIL ALL CHECKED                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Type-Specific DoD

DOD BY WORK TYPE:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ FEATURE DoD:                                                β”‚
β”‚ Standard DoD + :                                           β”‚
β”‚ ☐ Feature flag created (if applicable)                   β”‚
β”‚ ☐ Analytics events added                                  β”‚
β”‚ ☐ Accessibility verified                                  β”‚
β”‚ ☐ Mobile responsive                                        β”‚
β”‚                                                             β”‚
β”‚ ─────────────────────────────────────────────────────────── β”‚
β”‚                                                             β”‚
β”‚ BUG FIX DoD:                                                β”‚
β”‚ Standard DoD + :                                           β”‚
β”‚ ☐ Root cause identified and documented                   β”‚
β”‚ ☐ Test added to prevent regression                       β”‚
β”‚ ☐ Original reporter notified                             β”‚
β”‚                                                             β”‚
β”‚ ─────────────────────────────────────────────────────────── β”‚
β”‚                                                             β”‚
β”‚ API CHANGE DoD:                                             β”‚
β”‚ Standard DoD + :                                           β”‚
β”‚ ☐ API documentation updated                              β”‚
β”‚ ☐ Changelog entry added                                   β”‚
β”‚ ☐ Backward compatibility verified (or breaking noted)    β”‚
β”‚ ☐ Client teams notified if breaking                      β”‚
β”‚                                                             β”‚
β”‚ ─────────────────────────────────────────────────────────── β”‚
β”‚                                                             β”‚
β”‚ INFRASTRUCTURE DoD:                                         β”‚
β”‚ Standard DoD + :                                           β”‚
β”‚ ☐ Runbook updated                                         β”‚
β”‚ ☐ Monitoring/alerting configured                         β”‚
β”‚ ☐ Rollback plan documented                               β”‚
β”‚ ☐ Cost impact reviewed                                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Evolving DoD

Improving Definition

DOD EVOLUTION:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ DoD SHOULD EVOLVE WITH TEAM:                               β”‚
β”‚                                                             β”‚
β”‚ STARTING TEAM (Minimal):                                   β”‚
β”‚ ☐ Code written                                            β”‚
β”‚ ☐ Tested manually                                         β”‚
β”‚ ☐ Code reviewed                                           β”‚
β”‚ ☐ Merged                                                   β”‚
β”‚                                                             β”‚
β”‚ ↓ After 3 months, add:                                     β”‚
β”‚                                                             β”‚
β”‚ MATURING TEAM:                                              β”‚
β”‚ ☐ Code written                                            β”‚
β”‚ ☐ Unit tests passing                                      β”‚
β”‚ ☐ Code reviewed                                           β”‚
β”‚ ☐ Merged                                                   β”‚
β”‚ ☐ Deployed to staging                                     β”‚
β”‚ ☐ QA verified                                              β”‚
β”‚                                                             β”‚
β”‚ ↓ After 6 months, add:                                     β”‚
β”‚                                                             β”‚
β”‚ MATURE TEAM:                                                β”‚
β”‚ ☐ Code written (style guide followed)                    β”‚
β”‚ ☐ Unit + integration tests passing                       β”‚
β”‚ ☐ Code review approved                                    β”‚
β”‚ ☐ Merged to main                                          β”‚
β”‚ ☐ CI/CD pipeline green                                    β”‚
β”‚ ☐ Deployed to staging                                     β”‚
β”‚ ☐ QA verified                                              β”‚
β”‚ ☐ Documentation updated                                   β”‚
β”‚ ☐ PO accepted                                              β”‚
β”‚                                                             β”‚
β”‚ ─────────────────────────────────────────────────────────── β”‚
β”‚                                                             β”‚
β”‚ RETRO QUESTION:                                             β”‚
β”‚ "Is our DoD catching issues before production?"           β”‚
β”‚ "What should we add or remove?"                           β”‚
β”‚                                                             β”‚
β”‚ DON'T: Add everything at once                             β”‚
β”‚ DO: Incrementally add as team capacity grows              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Common Gaps

What Gets Missed

DOD ANTI-PATTERNS:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ "ALMOST DONE":                                              β”‚
β”‚ ─────────────                                               β”‚
β”‚ "Code is done, just needs testing"                        β”‚
β”‚ "Done except for code review"                             β”‚
β”‚ "Merged, but not deployed yet"                            β”‚
β”‚                                                             β”‚
β”‚ FIX: None of these are done                               β”‚
β”‚ All DoD items must be complete                            β”‚
β”‚                                                             β”‚
β”‚ ─────────────────────────────────────────────────────────── β”‚
β”‚                                                             β”‚
β”‚ "DONE BUT...":                                              β”‚
β”‚ ──────────────                                              β”‚
β”‚ "Done but there's a small bug"                            β”‚
β”‚ "Done but tests are flaky"                                β”‚
β”‚ "Done but docs aren't updated"                            β”‚
β”‚                                                             β”‚
β”‚ FIX: Not done, move back to In Progress                   β”‚
β”‚                                                             β”‚
β”‚ ─────────────────────────────────────────────────────────── β”‚
β”‚                                                             β”‚
β”‚ DOD SHORTCUTS:                                              β”‚
β”‚ ─────────────                                               β”‚
β”‚ "Let's skip code review for this one"                    β”‚
β”‚ "We'll add tests later"                                   β”‚
β”‚ "Docs can wait until next sprint"                        β”‚
β”‚                                                             β”‚
β”‚ FIX: DoD is non-negotiable                                β”‚
β”‚ If can't meet DoD, don't commit to story                 β”‚
β”‚                                                             β”‚
β”‚ ─────────────────────────────────────────────────────────── β”‚
β”‚                                                             β”‚
β”‚ INVISIBLE WORK:                                             β”‚
β”‚ ──────────────                                              β”‚
β”‚ Work not on the board                                     β”‚
β”‚ "Just a quick fix"                                        β”‚
β”‚ "It's too small to track"                                 β”‚
β”‚                                                             β”‚
β”‚ FIX: All work on board, all work meets DoD               β”‚
β”‚ No invisible work                                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Enforcing DoD

DOD ENFORCEMENT:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                             β”‚
β”‚ WORKFLOW RULES:                                             β”‚
β”‚                                                             β”‚
β”‚ GitScrum can enforce:                                      β”‚
β”‚ β€’ Can't move to Done without checklist complete           β”‚
β”‚ β€’ Required fields before status change                    β”‚
β”‚ β€’ Automated checks (CI passing, approvals)                β”‚
β”‚                                                             β”‚
β”‚ ─────────────────────────────────────────────────────────── β”‚
β”‚                                                             β”‚
β”‚ PEER ACCOUNTABILITY:                                        β”‚
β”‚                                                             β”‚
β”‚ In standup:                                                 β”‚
β”‚ "Is STORY-123 actually done?"                             β”‚
β”‚ "Did we complete all DoD items?"                          β”‚
β”‚                                                             β”‚
β”‚ In demo:                                                    β”‚
β”‚ "All stories shown meet our DoD"                          β”‚
β”‚ "Deployed to staging and verified"                        β”‚
β”‚                                                             β”‚
β”‚ ─────────────────────────────────────────────────────────── β”‚
β”‚                                                             β”‚
β”‚ DOD AUDIT (Monthly):                                        β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ DOD-AUDIT: January Compliance Review                   β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ Stories completed: 24                                   β”‚β”‚
β”‚ β”‚ Full DoD compliance: 22 (92%)                          β”‚β”‚
β”‚ β”‚ Partial compliance: 2 (8%)                             β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ GAPS FOUND:                                              β”‚β”‚
β”‚ β”‚ β€’ STORY-145: Missing integration tests                β”‚β”‚
β”‚ β”‚ β€’ STORY-152: Docs not updated                         β”‚β”‚
β”‚ β”‚                                                         β”‚β”‚
β”‚ β”‚ ACTION:                                                  β”‚β”‚
β”‚ β”‚ β€’ Discuss in retro                                     β”‚β”‚
β”‚ β”‚ β€’ Add missing items                                    β”‚β”‚
β”‚ β”‚ β€’ Remind team of importance                            β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Related Solutions