R91A — Ratify μ Scope — Contract (Step 2 of 5)

Purpose. Lock the behavioral invariants for the R91A mutation of docs/guides/implementation/task-breakdown.md. The contract is the gate between Step 1 (audit; what is) and Step 4 (implement; what will be). Every invariant below is verifiable; Step 5 verification checks each one.

1. Invariants

1.1 File-scope invariants

# Invariant Verification
INV-1 git diff --stat origin/main..HEAD shows ONLY 5 files: docs/audits/r91a-ratify-mu-scope-audit.md, docs/contracts/r91a-ratify-mu-scope-contract.md, docs/packets/r91a-ratify-mu-scope-packet.md, docs/guides/implementation/task-breakdown.md, docs/verification/r91a-ratify-mu-scope-verification.md. git diff --stat origin/main..HEAD \| wc -l returns 5+ (the 5 files + summary line).
INV-2 Zero src/*, tests/*, .agents/*, .claude/*, .github/*, data/*, docs/spec/*, docs/3-world/*, docs/architecture/*, docs/5-time/* file touched. git diff --name-only origin/main..HEAD \| grep -Ev "^docs/(audits/r91a-|contracts/r91a-|packets/r91a-|verification/r91a-\|guides/implementation/task-breakdown.md$)" returns empty.
INV-3 The R91 staging worktree .worktrees/claude/r91-mu-phase-4-staging is not touched. git status in this worktree shows no modifications outside the 5 files in INV-1.

1.2 task-breakdown.md content invariants

# Invariant Verification
INV-4 The 2-entry μ block at L971–996 is fully replaced; no remnants of the old P4.1.1 — Coercion Trap Detection or P4.2.1 — Three Advisory Roles headings remain. grep -c "Coercion Trap Detection" docs/guides/implementation/task-breakdown.md = 0; grep -c "^#### P4\.2\.1 — Three Advisory Roles" docs/guides/implementation/task-breakdown.md = 0.
INV-5 grep -c "^#### P4\." docs/guides/implementation/task-breakdown.md = 10. Direct grep.
INV-6 The 10 new headings, in order, match R91 packet §3 exactly: P4.1.1 Advisory Record Schema + Envelope · P4.2.1 Circular Logic Detector (DFS) · P4.2.2 Coercion Trap Detector (option-set) · P4.2.3 Axiom Drift Tracker (sliding window) · P4.3.1 Three Advisory Roles (Translator/Sentinel/Guide) · P4.4.1 Escalation FSM (4-result + 3 invariant mappings) · P4.5.1 Advisory Persistence (mcp_advisories migration) · P4.6.1 μ MCP Tool Surface (≥4 tools) · P4.7.1 Test Corpus + Parity Harness · P4.8.1 Fork Hook Subscriber (post-fork invariant sweep). grep "^#### P4\." docs/guides/implementation/task-breakdown.md matches the ordered title list verbatim.
INV-7 Every new entry uses the same format as P1.* / P2.* / P3.* entries: #### Pn.X.Y — Title + - **Depends on:** + - **Input:** + - **Output:** + - **Acceptance criteria:** (bulleted checkboxes) + - **Effort:**. Visual inspection in verification doc.
INV-8 Each entry’s **Depends on:** field matches R91 packet §3 columns verbatim. Verification doc enumerates dep lines per slice.
INV-9 Each entry’s **Effort:** field matches R91 packet §3 column (S/M/L). Verification doc enumerates effort lines per slice.
INV-10 Each entry cites docs/3-world/physics/enforcement/integrity.md as primary spec source in **Input:** (plus docs/spec/s14-integrity-monitor.md where relevant). No legacy docs/concepts/μ-integrity-monitor.md path appears anywhere. grep -c "docs/concepts/μ-integrity-monitor.md" docs/guides/implementation/task-breakdown.md = 0; grep -c "3-world/physics/enforcement/integrity.md" docs/guides/implementation/task-breakdown.md ≥ 10.
INV-11 Task Summary row at the updated location matches \| P4 μ Integrity \| 10 tasks \| 3-4 weeks \| P1, P2, P3 \|. Direct grep.
INV-12 Total row at the updated location matches \| **Total** \| **71 tasks** \| **26-34 weeks** \| \|. Direct grep.
INV-13 P6.3.1 (Axiom Enforcement) **Depends on:** field is P6.1.1, P4.4.1 (no P4.1.1 reference). grep -A1 "^#### P6\.3\.1" docs/guides/implementation/task-breakdown.md shows P6.1.1, P4.4.1.
INV-14 The mermaid μ block at L1180-L1182 is replaced with a 10-slice DAG mirroring R91 packet §4 wave structure (Wave 1: P4.1.1 solo, Wave 2: P4.2.1/P4.2.2/P4.2.3 fan-out from P4.1.1, Wave 3: P4.3.1/P4.4.1/P4.5.1, Wave 4: P4.6.1/P4.7.1/P4.8.1). Every node line uses Pn.X.Y[short-label] format. Verification doc enumerates every P4 mermaid line.
INV-15 The downstream mermaid edge L1195 is P4.4.1 --> P6.3.1 (not P4.1.1 --> P6.3.1). Direct grep.
INV-16 All other mermaid edges (P1, P2, P3, P5, P6 non-μ-related) preserved byte-for-byte. git diff shows the mermaid graph diff is contained to the μ block + the P4.1.1→P6.3.1 edge swap.

1.3 Cross-consistency invariants

# Invariant Verification
INV-17 The total task count in the Task Summary footer equals the sum of phase rows: 28 + 10 + 7 + 7 + 10 + 3 + 3 + 3 = 71 tasks. Manual arithmetic in verification doc.
INV-18 The week-count total (26-34 weeks) is consistent: 4-6 + 3-4 + 2-3 + 5-6 + 3-4 + 3-4 + 3-4 + 3-4 = 26-35 weeks lower + upper. The chosen range (26-34) reflects the lower bound and slight upper compression to match the prior “32” range adjustment. Arithmetic check in verification doc.
INV-19 μ frontmatter in docs/3-world/physics/enforcement/integrity.md is NOT touched (colibri_code: none preserved). git diff docs/3-world/physics/enforcement/integrity.md is empty.
INV-20 docs/spec/s14-integrity-monitor.md is NOT touched. git diff docs/spec/s14-integrity-monitor.md is empty.
INV-21 docs/5-time/roadmap.md is NOT touched. git diff docs/5-time/roadmap.md is empty.
INV-22 CLAUDE.md is NOT touched. git diff CLAUDE.md is empty.
INV-23 No ADR (docs/architecture/decisions/ADR-*.md) is touched. git diff docs/architecture/decisions/ is empty.

1.4 Test gate invariants

# Invariant Verification
INV-24 npm run build exits 0. tsc output
INV-25 npm run lint exits 0. ESLint output
INV-26 npm test exits 0; 3102/3102 tests pass across 69 suites. Jest output tail captured in verification doc.
INV-27 No new test files added; no test files modified. git diff --name-only origin/main..HEAD \| grep -E "(__tests__\|\.test\.)" returns empty.

2. Pre-conditions

  • Worktree E:/AMS/.worktrees/claude/r91a-ratify-mu-scope created from origin/main at 332feb62.
  • The R91 packet (.worktrees/claude/r91-mu-phase-4-staging/docs/packets/r91-mu-phase-4-staging-packet.md) is available locally as the canonical 10-slice source.
  • The R91 audit (.worktrees/claude/r91-mu-phase-4-staging/docs/audits/r91-mu-phase-4-staging-audit.md) §6 Q1–Q7 resolves spec-divergences (adopted verbatim).
  • Current task-breakdown.md HEAD content at L971–996 = 2-entry block (audited in Step 1).
  • Test baseline at 332feb62 is 3102/3102 passing across 69 suites (per CLAUDE.md §5 anchor at 3ba5b5ac).

3. Post-conditions

  • L971–996 replaced with 10-entry block (P4.1.1 through P4.8.1) per R91 packet §3.
  • Task Summary row L1138 updated to 10 tasks · 3-4 weeks.
  • Total row L1142 updated to 71 tasks · 26-34 weeks.
  • P6.3.1 dep L1068 updated to P6.1.1, P4.4.1.
  • Mermaid μ block (L1180–L1182) replaced with 10-slice DAG.
  • Mermaid downstream edge L1195 updated to P4.4.1 --> P6.3.1.
  • All test gates pass (3102/3102).
  • 5 git commits: audit, contract, packet, implement, verify.
  • 1 PR opened with comprehensive writeback in body.

4. Forbiddens (re-asserted; subset of audit §7)

# Forbidden Why
F-1 Touching src/* R91A is meta-only.
F-2 Touching docs/3-world/physics/enforcement/integrity.md or docs/spec/s14-integrity-monitor.md They are INPUT to R91A, not OUTPUT.
F-3 Touching docs/5-time/roadmap.md Out of R91A scope (separate hygiene round, per R91 packet §7 + §12).
F-4 Touching CLAUDE.md, AGENTS.md, README.md None of them carry the μ task-list claim being ratified.
F-5 Touching the R91 staging worktree R91A is a sibling branch; R91 (PR #249) ships the staging file separately.
F-6 Graduating μ frontmatter to colibri_code: partial That lands with Phase 4 close PR, not R91A.
F-7 Adding or modifying ADRs ADR-002/003/005/006 unchanged.
F-8 Inventing new spec resolutions outside the R91 audit §6 Q1–Q7 set R91A is a ratification; spec-source decisions are pre-resolved.
F-9 --no-verify, --amend, --force-push Standard CLAUDE.md §3 forbiddens.
F-10 Pushing to main Standard CLAUDE.md §3 forbidden.

5. Risk register

Risk Probability Mitigation
Editing the wrong line range and accidentally deleting other Phase 5/6/7 content Low Use precise old-string→new-string Edit calls with sufficient surrounding context; verify with grep -c "^#### P[0-9]\." after.
Mermaid graph syntax error introduces parse failure on GitHub Pages Low Lint the graph manually by visual inspection; the existing μ edges are simple line additions/swaps — no new node syntax.
Test gate flakes on the pre-existing startup — subprocess smoke test (per memory’s “Pre-existing flaky” entry) Medium If the gate fails on that specific suite, re-run once. Repeat the gate run output in verification doc.
Test count drift: CLAUDE.md says 3102 but local install or env differ Low Capture actual count in verification doc; if substantially different (e.g., <3000), abort.
Total row arithmetic miscalculation (e.g., wrong “71” or wrong week range) Low Verify in INV-17 / INV-18 with explicit arithmetic in verification doc.
P6.3.1 dep change to P4.4.1 might break other graph references Low grep’d in audit §4: only L1068 + L1195 carry the old P4.1.1 ref in P6.3.1 context.

6. Cross-PR coordination

R91A is a predecessor PR to R91 (PR #249). The PRs are independent and can land in either order:

  • If R91A lands first: the canonical roadmap shows 10 P4.* sub-tasks. When R91 (#249) lands the staging file p4.1-mu-integrity.md, the staging file’s 10 slices match the roadmap’s 10 entries → fully consistent.
  • If R91 lands first (#249): the canonical roadmap still shows 2 P4.* sub-tasks. R91A then ratifies the roadmap to 10. Both branches are based on 332feb62 and touch disjoint files, so merge order is irrelevant.

No coordination required; both branches will merge cleanly.

7. Conclusion

R91A is a surgical, docs-only ratification of the μ Phase 4 sub-task expansion from 2 → 10 in the canonical roadmap. The 27 invariants above (INV-1 through INV-27) fully constrain the implementation. Step 3 (packet) sequences the edits; Step 4 (implement) executes them; Step 5 (verification) checks each invariant.


Contract closed 2026-05-13. Base SHA: 332feb62. Next: Step 3 packet.


Back to top

Colibri — documentation-first MCP runtime. Apache 2.0 + Commons Clause.

This site uses Just the Docs, a documentation theme for Jekyll.