Definition of Done

This is the project's authoritative completion contract for a feature, bug fix, refactor, documentation change, or tooling change. Applicable specifications and acceptance criteria define what a particular change must deliver; this document defines the quality and evidence required to call it complete. It does not expand the agreed scope.

A change is done when every mandatory requirement and every applicable context-dependent requirement below is satisfied, with evidence for the version being delivered, and no known unresolved blocking issue remains.

Mandatory requirements for every change

Context-dependent requirements

These requirements become mandatory when their trigger applies. Select tests by changed behavior and dependency impact, rather than by the number of files. Use the lowest practical level, adding higher levels to prove interactions that lower levels cannot. Do not repeat the same assertions at every level.

Unit tests

Component/module tests

Integration tests

API-level tests

E2E tests

Production build

Docker validation

Coverage validation

Documentation and contract details

Deployment/release acceptance

Applicable specifications may add feature-specific acceptance criteria, required artifacts, environments, or validation beyond this baseline. Record which specifications apply and provide evidence for their requirements. Resolve conflicts between a specification and the current project quality contracts explicitly; outdated or temporary allowances do not silently waive mandatory gates. Future functionality and infrastructure are required only when explicitly in scope for the change.

Proportional local validation

Every change goes through the existing full CI gate. Developers do not need to reproduce that pipeline manually before each review. Choose local checks that provide useful feedback for the affected behavior; passing CI can supply the remaining automated evidence. The AI-agent local pnpm quality requirement still applies.

Prose-only documentation correction

Isolated logic or component fix

Repository/query/schema change

Complete database-backed user feature

CI/artifact or docs-site tooling change

pnpm validate:docker already runs integration tests and pnpm e2e:docker; do not separately repeat those suites after it passes without a new change or unresolved concern. Dev-mode pnpm e2e is optional inner-loop feedback, not an additional completion gate. The coverage run deliberately reruns instrumented tests to enforce the existing coverage contract; this does not require another manual repetition. No blanket no-cache rebuild, screenshot collection, artifact download, or interactive smoke test is required for every change. Add such verification only for acceptance criteria or behavior not covered automatically.

Docker validation deletes only its own isolated Compose project state and publishes separate ports; the development database is never touched. Run two validation instances serially. Use the documented local/test configuration; never point reset or Docker validation at staging or production. Prerequisites and commands remain owned by the development guide, testing strategy, and Docker guide.

Recording the decision

Use this short record in the PR/change report; an equivalent repository template is sufficient. Record a reason for each context-dependent item marked not applicable, and distinguish that from required checks not yet verified.

Scope and delivered revision:
Applicable specifications and acceptance criteria -> result and evidence:
Architecture/scope review:
Applicable test levels -> tests and results (or N/A with reason):
Local commands -> pass/fail/not executed:
CI -> run/revision and required job conclusions:
Artifacts -> producing run and required outputs:
Documentation/handover updates (or N/A with reason):
Blocking issues: none / details
Non-blocking limitations and follow-up:
Decision: Done / Ready for CI / Blocked
Next action:

Ready for CI means the local work and applicable local validation are finished but required hosted results are pending or unavailable. It is not a claim that the final Definition of Done is satisfied. Blocked means a required criterion or check is failing or cannot be verified. State the missing evidence and next action rather than claiming success. Done requires all mandatory and applicable requirements to pass; an old green run or a green run for a different revision is insufficient. After further edits, rerun affected local checks and obtain CI evidence for the delivered revision.