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.
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.
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.
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.
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.
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.