R91A — Ratify μ Scope — Audit (Step 1 of 5)
Scope. Inventory the μ Phase 4 surface in
docs/guides/implementation/task-breakdown.mdat main HEAD332feb62. R91A ratifies the 2 → 10 expansion that the R91 staging packet (PR #249, separate branch) ships at prompt-file granularity. Nosrc/mutation. Onlytask-breakdown.md+ the four chain docs land in R91A.
1. Base and scope
| Field | Value |
|---|---|
| Base branch | main |
| Base SHA | 332feb62 (post-#248 R90 hygiene seal) |
| Feature branch | feature/r91a-ratify-mu-scope |
| Worktree | .worktrees/claude/r91a-ratify-mu-scope |
| Round | R91A (predecessor to R91; isolated scope = task-breakdown.md μ reconcile) |
| Effort | S (1–2h, docs only) |
2. Source documents read
| # | File | Reason |
|---|---|---|
| 1 | docs/guides/implementation/task-breakdown.md (full, but mostly §Phase 4 + §Task Summary + §Mermaid graph) |
The OUTPUT being ratified |
| 2 | .worktrees/claude/r91-mu-phase-4-staging/docs/packets/r91-mu-phase-4-staging-packet.md |
The 10-slice canonical source-of-truth (R91 packet §3 + §4) |
| 3 | .worktrees/claude/r91-mu-phase-4-staging/docs/audits/r91-mu-phase-4-staging-audit.md |
R91 audit §6 (Q1–Q7) resolves spec-divergences; cite resolutions verbatim |
| 4 | docs/3-world/physics/enforcement/integrity.md (canonical concept doc, 2026-04-16) |
Authoritative spec per CLAUDE.md §9.4 when newer-than-s14; used for acceptance criteria wording |
| 5 | docs/spec/s14-integrity-monitor.md |
Authoritative spec (older); cite Q1–Q7 wins via integrity.md |
| 6 | Live task-breakdown.md §P1, §P2, §P3 (P1.1.1 @ L466, P1.2.1 @ L509, P1.2.4 @ L556) |
Template format reference for entry shape |
3. Current state at L971–996 (the 2-entry block being replaced)
## Phase 4: μ Integrity Monitor
#### P4.1.1 — Coercion Trap Detection
- **Depends on:** P1.3.1, P2.1.2
- **Input:** docs/concepts/μ-integrity-monitor.md
- **Output:** `src/domains/integrity/coercion-detection.ts`, `tests/domains/integrity/coercion-detection.test.ts`
- **Acceptance criteria:**
- [ ] Enumerate all legal actions for a participant given current state
- [ ] For each action, compute outcome via rule engine
- [ ] Flag if: all outcomes negative, or action space is empty
- [ ] Severity levels: INFO, WARNING, CRITICAL
- [ ] Advisory output: `{check, result, severity, details, evidence, reasoning_trace}`
- [ ] No veto power: detection is advisory only, cannot block actions
- **Effort:** L
#### P4.2.1 — Three Advisory Roles
- **Depends on:** P4.1.1
- **Input:** μ-integrity-monitor.md (advisory roles section)
- **Output:** `src/domains/integrity/advisory-roles.ts`, `tests/domains/integrity/advisory-roles.test.ts`
- **Acceptance criteria:**
- [ ] Translator: sanitize natural language → structured commands
- [ ] Sentinel: scan events for injection, coercion, axiom drift
- [ ] Guide: explain reputation scores, available actions, consequences
- [ ] All three are strictly read-only
- [ ] Standard output format across all roles
- **Effort:** L
3.1 Issues with the current block (driving the replacement)
| Drift | Effect on R91A |
|---|---|
Old P4.1.1 acceptance criterion “Severity levels: INFO, WARNING, CRITICAL” diverges from integrity.md L138 (LOW \| MED \| HIGH) and from λ severity bands. |
Replace via R91 audit Q6 resolution: adopt LOW \| MED \| HIGH. |
Old P4.1.1 acceptance criterion details + evidence + reasoning_trace envelope diverges from integrity.md L130–143 envelope (role + check + result + severity + evidence + recommendation + decision_hash + timestamp_logical). |
Replace via R91 audit Q1 resolution: adopt integrity.md schema (canonical, 2026-04-16). |
| Old P4.2.1 acceptance criterion “Translator: sanitize natural language → structured commands” diverges from integrity.md L123 (“Summarize advisory reports for a human operator”). | Replace via R91 audit Q3 resolution: adopt integrity.md’s role descriptions. |
Old Input field cites docs/concepts/μ-integrity-monitor.md — that legacy path is non-existent in the current tree. Actual path is docs/3-world/physics/enforcement/integrity.md + docs/spec/s14-integrity-monitor.md. |
Replace via R91 audit Q2 resolution. |
Phase 4 only carries 2 sub-tasks; the R91 packet (§3 of r91-mu-phase-4-staging-packet.md) carries 10. Roadmap precedent: κ 10 → 20 (R76), θ 7 → 13 (R89.C). |
R91A ratifies the 10-slice expansion. |
4. Every P4 reference in task-breakdown.md at 332feb62
Verified via grep -n "P4\." docs/guides/implementation/task-breakdown.md:
| Line | Context | R91A action |
|---|---|---|
| L973 | #### P4.1.1 — Coercion Trap Detection (block L973–984) |
REPLACE — new P4.1.1 is “Advisory Record Schema + Envelope” per R91 packet §3 |
| L986 | #### P4.2.1 — Three Advisory Roles (block L986–996) |
REPLACE — new P4.2.1 is “Circular Logic Detector (DFS)”; the old “Three Advisory Roles” moves to P4.3.1 per R91 packet §3 |
| L987 | - **Depends on:** P4.1.1 (inside P4.2.1’s block) |
Subsumed by the L971–996 block replacement above. |
| L1068 | - **Depends on:** P6.1.1, P4.1.1 (inside P6.3.1 Axiom Enforcement) |
UPDATE — semantic target shifts. Old P4.1.1 (“Coercion Trap Detection”) was the integrator. New P4.1.1 (“Advisory Record Schema + Envelope”) is a data-only slice and is the wrong dep target. New canonical integrator is P4.4.1 (Escalation FSM) which collects detector outputs into the 4-result + 3-invariant-mapping output that axiom enforcement consumes. Change P4.1.1 → P4.4.1. |
| L1138 | \| P4 μ Integrity \| 2 tasks \| 2 weeks \| P1, P2, P3 \| (Task Summary table) |
UPDATE — 2 tasks → 10 tasks; 2 weeks → 3-4 weeks (matches κ’s 20-task 3-4 weeks cell; μ slices are a mix of S/M/L per R91 packet §3 effort labels). |
| L1142 | \| **Total** \| **63 tasks** \| **25-32 weeks** \| \| |
UPDATE — 63 tasks → 71 tasks (+8 net new μ); 25-32 weeks → 26-34 weeks (+1-2 spread). |
| L1180 | P1.3.1 --> P4.1.1[P4.1.1 Coercion] (mermaid) |
REPLACE — the 3-edge μ block at L1180–L1182 → 10-slice DAG matching R91 packet §4 wave structure (Wave 1 solo → Wave 2 3-way fan-out → Wave 3 3-way → Wave 4 3-way). |
| L1181 | P2.1.2 --> P4.1.1 |
Subsumed by L1180 mermaid replacement. |
| L1182 | P4.1.1 --> P4.2.1[P4.2.1 Advisory Roles] |
Subsumed by L1180 mermaid replacement. |
| L1195 | P4.1.1 --> P6.3.1 |
UPDATE — replace with P4.4.1 --> P6.3.1 to match the L1068 dep-target shift. (Same rationale: P4.1.1 is now data-only; P4.4.1 is the integrator.) |
No other P4 references exist outside Phase 4 §971–996, P6.3.1 (L1068), the Task Summary block (L1138/L1142), and the mermaid graph (L1180–L1195). The audit covers every site that must mutate.
5. The 10-slice canonical roadmap (source: R91 packet §3)
| ID | Title | Effort | Wave | Depends on (per R91 packet §3) | Output |
|---|---|---|---|---|---|
| P4.1.1 | Advisory Record Schema + Envelope | S | 1 | κ P1.5.4 (canonical), κ P1.5.1 (hash) | src/domains/integrity/schema.ts + tests |
| P4.2.1 | Circular Logic Detector (DFS) | M | 2 | P4.1.1, ζ P0.7.1, κ P1.2.4 | src/domains/integrity/detectors/circular.ts + tests |
| P4.2.2 | Coercion Trap Detector (option-set) | M | 2 | P4.1.1, κ P1.4.1, κ P1.3.1, λ P2.1.2 | src/domains/integrity/detectors/coercion.ts + tests |
| P4.2.3 | Axiom Drift Tracker (sliding window) | L | 2 | P4.1.1, λ P2.2.2, κ P1.1.1 | src/domains/integrity/detectors/drift.ts + tests |
| P4.3.1 | Three Advisory Roles (Translator/Sentinel/Guide) | M | 3 | P4.1.1 | src/domains/integrity/roles.ts + tests |
| P4.4.1 | Escalation FSM (4-result + 3 invariant mappings) | M | 3 | P4.1.1, P4.2.1, P4.2.2, P4.2.3, κ P1.4.1, κ P1.2.4 | src/domains/integrity/escalation.ts + tests |
| P4.5.1 | Advisory Persistence (mcp_advisories migration) |
S | 3 | P4.1.1, P0.2.2 | src/db/migrations/*-advisories.sql + src/domains/integrity/repository.ts + tests |
| P4.6.1 | μ MCP Tool Surface (≥4 tools) | M | 4 | P4.3.1, P4.4.1, P4.5.1 | src/tools/integrity.ts + tests |
| P4.7.1 | Test Corpus + Parity Harness | L | 4 | P4.2.1, P4.2.2, P4.2.3, P4.4.1, P4.5.1 | src/__tests__/integrity/parity.test.ts |
| P4.8.1 | Fork Hook Subscriber (post-fork invariant sweep) | S | 4 | P4.2.3, θ P3.9.1 | src/domains/integrity/fork-hook-subscriber.ts + tests |
5.1 Acceptance criteria sources (per slice)
The R91 audit §6 (Q1–Q7) resolves canonical wording: integrity.md (2026-04-16) wins over s14 wherever they differ. Specific reuse for the two retained slices:
| Slice | Acceptance criteria source |
|---|---|
| P4.1.1 (Advisory Record Schema + Envelope) | integrity.md §Advisory record schema (L129–146) — 8-field envelope; decision_hash = SHA-256(role \|\| check \|\| canonical(input) \|\| result) per Q1, Q7; severity LOW \| MED \| HIGH per Q6; timestamp_logical: uint64 (Lamport) per Q1 |
| P4.2.1 (Circular Logic Detector) | integrity.md §1 Circular logic (L22–55) — DFS cycle detection; severity=HIGH on cycle hit; <1% measured FP rate on existing spec-phase corpus |
| P4.2.2 (Coercion Trap Detector) | integrity.md §2 Coercion trap (L57–85) — option-set enumeration; negative == available OR obligates == available → emit severity=HIGH. Note: REUSES the old P4.1.1’s “enumerate all legal actions” + “compute outcome via rule engine” + “flag if all outcomes negative or empty” criteria, with severity bands corrected to LOW/MED/HIGH per Q6. |
| P4.2.3 (Axiom Drift Tracker) | integrity.md §3 Axiom drift (L87–115) — sliding-window over 6-month periods; cumulative delta_bps per domain; 8% WARN (800 bps) / 10% HARD BLOCK (1000 bps); AX-01..AX-07 regression check pre-ENACTED |
| P4.3.1 (Three Advisory Roles) | integrity.md §Three advisory roles (L117–127) — Translator/Sentinel/Guide all read-only. REUSES the old P4.2.1’s role-list scaffolding from L990–995, with Translator/Sentinel/Guide descriptions corrected per Q3 (integrity.md L123–125 wording). |
| P4.4.1 (Escalation FSM) | integrity.md §Escalation mapping (L148–157) — 4 results (PASS/WARN/BLOCK/HARD BLOCK); 3 enforcement-surface mappings (κ rule loader for circular-logic-in-rule-update, κ admission for coercion-in-admission, π intake for axiom-drift). Per Q5: π hooks RECORD the event into ζ at thought_type=advisory (π integration out of scope for Phase 4). |
| P4.5.1 (Advisory Persistence) | integrity.md §Phase 0 posture (L165–170) names the mcp_advisories table stub; Phase 4 activates it. SQLite migration; decision_hash is unique-key for dedup. |
| P4.6.1 (μ MCP Tool Surface) | integrity.md §Phase 4 scope L174–178 names “Three detection jobs… writing to integrity_advisories table” + new colibri-integrity-monitor skill. Slice ships ≥4 MCP tools (one per detector + one for query); MCP surface 23 → 27+. |
| P4.7.1 (Test Corpus + Parity Harness) | Precedent: κ P1.5.5 (src/domains/rules/__tests__/parity-harness.test.ts, R87 #214) and θ P3.8.1 (4-scenario multi-arbiter harness, R89 Phase B #246). |
| P4.8.1 (Fork Hook Subscriber) | integrity.md §Phase 4 scope L177 hints at fork-hook awareness; θ P3.9.1 (ForkHookRegistry, R89 Phase B #245) provides the subscription surface. |
5.2 R91 audit §6 spec-divergence resolutions (Q1–Q7)
Reproduced verbatim for traceability. All resolutions follow CLAUDE.md §9.4 (newer doc wins):
| Q | Issue | Resolution |
|---|---|---|
| Q1 | s14 vs integrity.md envelope shape diverges. | Adopt integrity.md’s schema (newer, 2026-04-16). |
| Q2 | task-breakdown.md §P4.1.1 cites legacy docs/concepts/μ-integrity-monitor.md. |
Cite the live path docs/3-world/physics/enforcement/integrity.md + docs/spec/s14-integrity-monitor.md. |
| Q3 | task-breakdown.md §P4.2.1 Translator role wording diverges. | Use integrity.md’s role descriptions (L123–125). |
| Q4 | task-breakdown.md lists 2 sub-tasks; roadmap implies 15 files. | Stage 10 slices (R91 packet §3). |
| Q5 | μ → π BLOCK target: π Phase 6 not yet shipped. | Document: BLOCK events RECORD into ζ at thought_type=advisory; π integration is out of scope for Phase 4. |
| Q6 | Severity bands diverge. | Adopt LOW \| MED \| HIGH (matches λ; minimizes drift). |
| Q7 | decision_hash formula diverges. |
Use integrity.md’s SHA-256(role \|\| check \|\| canonical(input) \|\| result). |
6. Adjacent updates inside task-breakdown.md (all in R91A scope)
| # | Site | Current | New |
|---|---|---|---|
| 1 | Task Summary row L1138 | \| P4 μ Integrity \| 2 tasks \| 2 weeks \| P1, P2, P3 \| |
\| P4 μ Integrity \| 10 tasks \| 3-4 weeks \| P1, P2, P3 \| |
| 2 | Total row L1142 | \| **Total** \| **63 tasks** \| **25-32 weeks** \| \| |
\| **Total** \| **71 tasks** \| **26-34 weeks** \| \| |
| 3 | P6.3.1 dep L1068 | - **Depends on:** P6.1.1, P4.1.1 |
- **Depends on:** P6.1.1, P4.4.1 |
| 4 | Mermaid μ block L1180–L1182 | 3 edges (P1.3.1 --> P4.1.1, P2.1.2 --> P4.1.1, P4.1.1 --> P4.2.1) |
10-slice DAG matching R91 packet §4 wave structure |
| 5 | Mermaid downstream L1195 | P4.1.1 --> P6.3.1 |
P4.4.1 --> P6.3.1 |
7. Forbiddens for R91A (re-asserted from dispatch packet)
- No
src/mutation — R91A is meta-only. - Only
task-breakdown.md+ 4 chain docs (audit, contract, packet, verification) ship in R91A. - No mutation of the R91 worktree at
.worktrees/claude/r91-mu-phase-4-staging(separate branch; R91 staging file ships in PR #249). - No κ/λ/θ/ι/π/ξ frontmatter touched.
- No μ frontmatter graduation (μ stays
colibri_code: noneuntil Phase 4 close PR). - No new ADRs; ADR-002/003/005/006 statuses unchanged.
- No mutation of
roadmap.md,integrity.md, ors14-integrity-monitor.md— they are the INPUT, not the OUTPUT. --no-verify/--amend/--force-pushforbidden.
8. Test budget
npm run build && npm run lint && npm test must pass against main baseline. Docs-only round; expected: 3102/3102 unchanged (per CLAUDE.md §5, anchored at 3ba5b5ac R89 Phase B seal across 69 suites). Any regression means the worktree drifted relative to 332feb62.
9. Conclusion
The current 2-entry μ Phase 4 block in task-breakdown.md is undersized relative to the canonical surface in integrity.md (3 detectors, 3 roles, 1 envelope, 1 escalation FSM, 1 persistence schema, 1 MCP tool surface, 1 parity harness, 1 fork-hook subscriber = 10 distinct concerns). The R91 staging packet (PR #249) provides the canonical 10-slice mapping at prompt-file granularity. R91A ratifies that mapping in the roadmap.
Five sites in task-breakdown.md must mutate: §Phase 4 block (L971–996, full replacement), §Task Summary row (L1138), §Total row (L1142), §P6.3.1 dep (L1068), and the §Mermaid graph (L1180–1182 + L1195). No site outside those five is affected. Step 2 (contract) will lock the behavioral invariants.
Audit closed 2026-05-13. Base SHA at audit: 332feb62 (post-#248 R90 hygiene). Next: Step 2 contract.