GitScrum / Docs
All Best Practices

Definition of Done | Shared Quality Standards

Create a shared understanding of what complete means for your team. GitScrum's Definition of Done ensures consistency, prevents rework, and aligns expectations.

6 min read

Definition of Done (DoD) is the shared understanding of what "complete" means. Without it, "done" means different things to different peopleβ€”leading to incomplete work, quality issues, and confusion. A good DoD creates clarity and consistency.

DoD vs Acceptance Criteria

AspectDefinition of DoneAcceptance Criteria
ScopeAll workOne story
Who definesTeamProduct Owner + Team
ContentQuality standardsFeature requirements
When reviewedEvery storyPer story

Creating DoD

Building Your Definition

CREATING DEFINITION OF DONE
═══════════════════════════

START WITH BASICS:
─────────────────────────────────────
Minimum viable DoD:
β”œβ”€β”€ Code is written
β”œβ”€β”€ Code is reviewed
β”œβ”€β”€ Tests pass
β”œβ”€β”€ Merged to main
β”œβ”€β”€ Deployable
└── Baseline quality

ADD QUALITY ITEMS:
─────────────────────────────────────
β”œβ”€β”€ Unit tests written
β”œβ”€β”€ Integration tests (if applicable)
β”œβ”€β”€ Code coverage maintained
β”œβ”€β”€ No new warnings
β”œβ”€β”€ Documentation updated
β”œβ”€β”€ Security scan passed
└── Quality gates

ADD PROCESS ITEMS:
─────────────────────────────────────
β”œβ”€β”€ PR reviewed by 2 developers
β”œβ”€β”€ Acceptance criteria verified
β”œβ”€β”€ Product Owner approved
β”œβ”€β”€ Deployed to staging
β”œβ”€β”€ Smoke tested
└── Process compliance

TEAM DISCUSSION:
─────────────────────────────────────
Questions to ask:
β”œβ”€β”€ "What does done mean to us?"
β”œβ”€β”€ "What have we shipped that wasn't ready?"
β”œβ”€β”€ "What quality issues do we see?"
β”œβ”€β”€ "What would catch problems earlier?"
β”œβ”€β”€ Collaborative definition
└── Team ownership

Example DoD

Complete Definition

EXAMPLE DEFINITION OF DONE
══════════════════════════

CODE COMPLETE:
─────────────────────────────────────
☐ Feature implemented as specified
☐ Code follows team standards
☐ No commented-out code
☐ No console.log/print debugging
☐ Self-documenting code (clear names)

TESTED:
─────────────────────────────────────
☐ Unit tests written and passing
☐ Integration tests (if applicable)
☐ Manual testing completed
☐ Edge cases considered
☐ No known bugs

REVIEWED:
─────────────────────────────────────
☐ Code review by 2 team members
☐ Review feedback addressed
☐ No unresolved comments

MERGED:
─────────────────────────────────────
☐ PR merged to main branch
☐ CI pipeline passing
☐ No merge conflicts

DOCUMENTED:
─────────────────────────────────────
☐ API documentation updated
☐ README updated if needed
☐ Significant decisions documented

DEPLOYED:
─────────────────────────────────────
☐ Deployed to staging environment
☐ Smoke tested in staging
☐ Ready for production deploy

ACCEPTANCE:
─────────────────────────────────────
☐ Acceptance criteria verified
☐ Product Owner reviewed
☐ Demo-ready

DoD Levels

Multiple Definitions

DOD LEVELS
══════════

STORY LEVEL:
─────────────────────────────────────
For each user story:
β”œβ”€β”€ Code complete
β”œβ”€β”€ Tests pass
β”œβ”€β”€ Code reviewed
β”œβ”€β”€ Merged
β”œβ”€β”€ Documentation updated
β”œβ”€β”€ Acceptance criteria met
└── Story complete

SPRINT LEVEL:
─────────────────────────────────────
For sprint to be complete:
β”œβ”€β”€ All stories meet story DoD
β”œβ”€β”€ Sprint goal achieved
β”œβ”€β”€ Increment is releasable
β”œβ”€β”€ No critical bugs
β”œβ”€β”€ Demo completed
β”œβ”€β”€ Retrospective held
└── Sprint complete

RELEASE LEVEL:
─────────────────────────────────────
For release to be complete:
β”œβ”€β”€ All sprint DoDs met
β”œβ”€β”€ Release testing passed
β”œβ”€β”€ Performance validated
β”œβ”€β”€ Security reviewed
β”œβ”€β”€ Documentation complete
β”œβ”€β”€ Release notes written
β”œβ”€β”€ Stakeholder sign-off
└── Ready to ship

Evolving DoD

Improving Over Time

EVOLVING DEFINITION OF DONE
═══════════════════════════

REGULAR REVIEW:
─────────────────────────────────────
In retrospectives:
β”œβ”€β”€ "Are we meeting our DoD?"
β”œβ”€β”€ "What slips through?"
β”œβ”€β”€ "What should we add?"
β”œβ”€β”€ "What's unnecessary?"
β”œβ”€β”€ Continuous improvement
└── Living document

ADDING ITEMS:
─────────────────────────────────────
Add when:
β”œβ”€β”€ Quality issues repeat
β”œβ”€β”€ Same problem multiple times
β”œβ”€β”€ Team capacity increases
β”œβ”€β”€ New requirements emerge
β”œβ”€β”€ Gradual improvement
└── Don't overload initially

REMOVING ITEMS:
─────────────────────────────────────
Remove when:
β”œβ”€β”€ Automated elsewhere
β”œβ”€β”€ No longer relevant
β”œβ”€β”€ Causing unnecessary delay
β”œβ”€β”€ Team has internalized it
β”œβ”€β”€ Keep lean
└── Value-focused

MATURITY PROGRESSION:
─────────────────────────────────────
New team:
β”œβ”€β”€ Basic DoD
β”œβ”€β”€ Code works and tested
β”œβ”€β”€ Reviewed and merged
└── Simple start

Mature team:
β”œβ”€β”€ Comprehensive DoD
β”œβ”€β”€ Automated checks
β”œβ”€β”€ High quality standards
β”œβ”€β”€ Security included
β”œβ”€β”€ Performance verified
└── Built over time

Enforcement

Making It Stick

ENFORCING DOD
═════════════

AUTOMATION:
─────────────────────────────────────
Automate where possible:
β”œβ”€β”€ CI checks tests pass
β”œβ”€β”€ Linter checks code style
β”œβ”€β”€ Coverage threshold
β”œβ”€β”€ Security scans
β”œβ”€β”€ PR template with checklist
└── Automated enforcement

PR TEMPLATE:
─────────────────────────────────────
## Definition of Done Checklist

- [ ] Code follows team standards
- [ ] Unit tests written and passing
- [ ] Code reviewed by 2 developers
- [ ] Documentation updated
- [ ] No known bugs
- [ ] Acceptance criteria verified

CULTURE:
─────────────────────────────────────
β”œβ”€β”€ Team holds each other accountable
β”œβ”€β”€ Review DoD in sprint review
β”œβ”€β”€ Celebrate quality
β”œβ”€β”€ Don't accept "almost done"
β”œβ”€β”€ Done means DONE
└── Team agreement

TRANSPARENCY:
─────────────────────────────────────
β”œβ”€β”€ DoD visible to all
β”œβ”€β”€ Posted in team space
β”œβ”€β”€ Referenced in meetings
β”œβ”€β”€ Known by everyone
└── Shared understanding

GitScrum Integration

DoD in GitScrum

GITSCRUM FOR DOD
════════════════

TASK CHECKLIST:
─────────────────────────────────────
β”œβ”€β”€ DoD items as checklist
β”œβ”€β”€ Check off as completed
β”œβ”€β”€ Visual progress
β”œβ”€β”€ Nothing forgotten
└── Consistent verification

TASK TEMPLATES:
─────────────────────────────────────
β”œβ”€β”€ Create task type with DoD built in
β”œβ”€β”€ Automatic checklist
β”œβ”€β”€ Every task has DoD
└── Enforced by structure

DOCUMENTATION:
─────────────────────────────────────
NoteVault:
β”œβ”€β”€ Team DoD documented
β”œβ”€β”€ Version history
β”œβ”€β”€ Easily referenced
β”œβ”€β”€ Central location
└── Living document

WORKFLOW:
─────────────────────────────────────
β”œβ”€β”€ Can't move to Done without checklist
β”œβ”€β”€ Workflow enforcement
β”œβ”€β”€ Quality gate
└── Automated compliance

Best Practices

For Definition of Done

  • Team-owned β€” Created together
  • Visible β€” Posted and referenced
  • Evolved β€” Improved regularly
  • Enforced β€” Actually followed
  • Automated β€” Where possible
  • Anti-Patterns

    DOD MISTAKES:
    βœ— No DoD at all
    βœ— Imposed by management
    βœ— Too long/complex
    βœ— Never updated
    βœ— Ignored in practice
    βœ— Different per person
    βœ— Not visible
    βœ— No enforcement
    

    Related Solutions