diff --git a/canon/constraints/definition-of-done.md b/canon/constraints/definition-of-done.md index 49a559c..6c1ca78 100644 --- a/canon/constraints/definition-of-done.md +++ b/canon/constraints/definition-of-done.md @@ -47,6 +47,8 @@ This policy is a specific application of the foundational axiom that every claim - MUST NOT claim "done" without evidence; the correct response is "This is not complete yet" - MUST label partial completion explicitly with what was verified and what remains - MUST validate document deliverables against the Writing Canon checklist (`canon/meta/writing-canon.md`) before claiming completion +- MUST NOT mark a claim as verified without at least one artifact that demonstrates the claimed outcome +- MUST return `NEEDS_ARTIFACTS` (not `PASS`) when a completion claim exists but the supporting evidence is absent --- @@ -68,6 +70,7 @@ This policy is a specific application of the foundational axiom that every claim - **"I reviewed the code"**: Treating inspection as observation of behavior - **"I didn't have time to test"**: Treating explanation as exemption from evidence - **"The document exists"**: Treating file creation as completion without validating progressive disclosure structure +- **"Unverified Completion"**: Accepting a "done" / "finished" / "shipped" claim without corresponding artifacts (screenshots, logs, links, command output). The validation pathway MUST return `NEEDS_ARTIFACTS`, not `PASS` --- diff --git a/docs/promotions/P0001-completion-requires-artifacts.md b/docs/promotions/P0001-completion-requires-artifacts.md index d7180dc..4f4cdab 100644 --- a/docs/promotions/P0001-completion-requires-artifacts.md +++ b/docs/promotions/P0001-completion-requires-artifacts.md @@ -6,8 +6,8 @@ exposure: nav tier: 3 voice: neutral stability: evolving -tags: ["promotions", "proposed", "validation", "evidence"] -promotion_status: proposed +tags: ["promotions", "accepted", "validation", "evidence"] +promotion_status: accepted --- # P0001: Completion Claims Require Artifacts @@ -85,16 +85,14 @@ Add to Failure Modes: ## Status -`proposed` +`accepted` (2026-05-05) ## Review Notes -(To be filled during review) - -- **Reviewer**: -- **Decision**: -- **Date**: -- **Notes**: +- **Reviewer**: klappy (operator) +- **Decision**: `accepted` +- **Date**: 2026-05-05 +- **Notes**: Oldest backlog item in the `proposed` queue. The Validation Agent (`infra/orchestrator/services/validation.js`) already enforces this at code level via `determineVerdict()` — this canon edit aligns the written constraint with the enforced behavior. Accepted as drafted; execution committed in the same PR appends two MUST bullets to `## Operating Constraints` and one new entry to `## Failure Modes` of `canon/constraints/definition-of-done.md`. ## Execution Record