Skip to content
matthewcm.dev

    ↑ ↓ move · ↵ open · tab scopeopen graph →

    Definition of Done

    What 'finished' means for every ticket: acceptance criteria demonstrated, tests passing in CI, contracts respected, reviewed in small PRs, observable in production, nothing left for 'someone'. AI-written code meets exactly the same bar. Best when the pipeline enforces it rather than memory.

    Seedtended planted 1 min read

    🌱 A rough idea, planted recently. Expect rough edges — it will grow.

    On this page

    Done means the same bar for every ticket, ideally enforced by the pipeline rather than by memory.

    The checklist

    • Acceptance criteria met and demonstrated, not just claimed.
    • Tests at the right levels, passing in CI (Shift Left Testing).
    • Contracts respected: unchanged, or changed with the consumers’ agreement.
    • Reviewed in PRs small enough to review properly (Slicing Pull Requests).
    • Observable in production: errors are captured, and so is the metric that shows it’s working.
    • Nothing left for “someone”: docs, feature flags, migrations and clean-up handled.

    AI-assisted work

    AI-written code is reviewed and tested exactly like human code, and no new dependency comes in without a person approving it (AI-Era Supply Chain: What to Trust When Anything Can Be Generated). How deeply to review depends on what the change touches (Review Depth Follows Blast Radius).

    Make it executable

    A definition of done written in a document is a suggestion. One the pipeline enforces is a standard. Fail the build on missing tests, broken contracts and lint errors, and the conversation about whether something is done mostly takes care of itself.

    Its counterpart at the start of a ticket is Definition of Ready.

    • #definition-of-done
    • #agile
    • #quality
    • #ci
    • #ways-of-working
    • #ai-coding

    ↪ Links to (5)