RUL-034 — Every spec packet's Definition of Done is five items
Ruling
Mohamed, 2026-10-06, during SPEC-110 packet S1, verbatim: "do not forget annotations, rtm, documentation, wiki update and 90% code coverage", then, same session: "it should br the definition of done for all specs".
A packet that implements any part of any spec is DONE only when all five hold, in the same ship as the code:
- Annotations — every added or changed function, class and test carries
@traces("REQ-…")citing only ids the spec defines (RUL-013). Working code with no citation is a traceability defect the packet closes. - RTM — the evidence-graded requirements traceability matrix is
regenerated after the code lands (
scripts/generate_rtm_evidence.py;scripts/trace_intel.py untraced-reqsscoped to the spec), the packet's ids move to an implemented-and-tested proof class, and the before/after untraced count is reported. - Documentation — the spec's
checklists/requirements.mdrows flip in the same commit as the code (with the test module path); the affecteddocs/page and anyplans/design document whose status the packet changes (DESIGNED → BUILT) are updated. - Wiki update — the knowledge-wiki project page for the subsystem gains
the packet summary (what changed, where, test module, commit sha) and is
shipped through the wiki's own
shipgate. - Coverage — ≥90% line coverage for every source file the packet
creates or modifies, real tests only, residuals quantified when a file
legitimately cannot reach it (the pre-existing
AGENTS.mdrule).
Builder briefs list the five under DONE WHEN; a reviewer verdict of GO
requires evidence for each; a packet plan's ship log carries them as columns.
Evidence
Measured in SPEC-110 on 2026-10-06 (plans/spec-110-completion-plan.md §0,
orchestrata-ultimate 5ced47c7e): REQ-110-006 and REQ-110-011 have working
code with no @traces citation; code cites REQ-110-050 and REQ-110-085, ids
the spec does not define; REQ-110-140 was marked [x] COMPLETE while
scripts/codemod.py never reads --auto-start and never constructs
CodemodClient; the §15 observability design was built in parts and never
documented as wired. Each is a packet that was called done with one of the
five missing. The written DoD (AGENTS.md) named only coverage.
Enforcement
- none (judgment)
Mechanism (RUL-014)
Judgment-only at recording time. Candidate gates, each a follow-up packet:
scripts/trace_intel.py untraced-reqs scoped to the packet's spec as a
ship-time check (items 1–2); scripts/coverage_ratchet.py (item 5, exists
today); a ship-time check that the spec checklist and the wiki project page
changed in the same ship (items 3–4). When one lands, its row in the index
moves from none (judgment) to the gate and this section names the commit.
Verification
AGENTS.md§ "Definition of Done: five items, every spec packet" lists the five with the ruling quoted.docs/adr/0069-definition-of-done-for-every-spec-traces-rtm-docs-wiki-90-coverage.md(Accepted) is the decision record;scripts/check_adr_graph_sync.pyreports ADR-0069OK in sync.plans/spec-110-completion-plan.md§2 carries the five as packet DoD and its ship log has the five columns.