R82.G — spec/ + world-schema.md drift audit
0. Manifest-path reconciliation
The R82 manifest (.agents/spawns/r82-phase-0-1-stabilization/manifest.md §Group 3 and §Slices Row G) lists the spec targets as docs/spec/s03-task-pipeline.md and docs/spec/s05-decision-trail.md. Neither file exists. docs/spec/ currently contains:
index.md
s01-constitution.md s02-event-taxonomy.md s03-state-model.md
s04-reputation.md s05-experience-tokens.md s06-consensus.md
s07-fork-protocol.md s08-gossip.md s09-arbitration.md
s10-admission.md s11-rule-engine.md s12-dsl.md
s13-hardening.md s14-integrity-monitor.md s15-gsd-contract.md
s16-skill-taxonomy.md s17-mcp-surface.md s18-identity.md
s19-governance.md
The β Task Pipeline is documented in docs/3-world/execution/ and docs/reference/mcp-tools-phase-0.md, not in docs/spec/. The ζ Decision Trail likewise. The actual drift lives in s17-mcp-surface (the Phase 0 tool-surface spec), s12-dsl (one stale sentence), index.md (3 hits across the hub doc), and world-schema.md (both tool-count and Session 7 status).
R82.G therefore targets:
docs/spec/s17-mcp-surface.md— the dominant source of 19-tool + phantom languagedocs/spec/index.md— 3 hits in the spec-index hubdocs/spec/s12-dsl.md— 1 stale sentencedocs/world-schema.md— 1 “19 tools” hit in Phase Roadmap + S7 ACTIVE in session table
The manifest path is treated as a transcription error in R82 Phase A. This is flagged here and in verification so Sigma Phase B gate-check is not surprised (precedent: R82.F docs/2-plugin/deploy.md → actual docs/guides/deploy.md).
1. Target surface
| File | Zone | Role | Size (lines) | 19-tool hits | Phantom-tool hits | Session-7 hits |
|---|---|---|---|---|---|---|
docs/spec/s17-mcp-surface.md |
CANON (spec) | Phase 0 MCP tool-surface contract — the ADR-004 target | 122 | 4 | 6 (task_delete, task_link, task_assign, thought_list, unified_init, unified_vitals, unified_set_project, unified_mode) |
— |
docs/spec/index.md |
CANON (spec hub) | Law library index + reading paths + phase posture | 172 | 3 | 0 | — |
docs/spec/s12-dsl.md |
CANON (spec) | DSL grammar + WASM target spec | 250 | 1 | 0 | — |
docs/world-schema.md |
CANON (hub) | World Schema v3 organizational spine | 450+ | 1 | 0 (already carries 14-tool table L204–L221) | 1 (L291 S7 ACTIVE) |
2. Live 14-tool surface (ground truth)
Source: src/server.ts bootstrap() L538–L576 in the main checkout; matches wording in R82.F audit + R82.E rewrite of docs/reference/mcp-tools-phase-0.md.
server_ping— α system (L538registerColibriTool)server_health— α system (L555registerHealthTool)thought_record— ζ trail (L559registerThoughtTools)thought_record_list— ζ trail (same)audit_verify_chain— ζ trail (L563registerVerifyChainTool)skill_list— ε (L567registerSkillTools)task_create— β (L570registerTaskTools)task_get— β (same)task_update— β (same; acceptsstatus, routes throughstate-machine.ts)task_list— β (same)task_next_actions— β (same)audit_session_start— η proof (L575registerMerkleTools)merkle_finalize— η proof (same)merkle_root— η proof (same)
Phantoms (never registered): task_delete, task_link, task_assign, thought_list (merged into thought_record_list), unified_init, unified_vitals, unified_set_project, unified_mode, server_info, server_shutdown, task_transition (merged into task_update), audit_session_end, task_depends_on.
The ADR-004 R75 Wave H amendment consolidated the plan from 19 → 14 by:
- Dropping
task_delete,task_link,task_assign(β) — out of Phase 0 scope - Merging
task_transitionintotask_updatestatus routing - Merging
thought_list→thought_record_listname - Dropping the 4
unified_*system tools — replaced withserver_ping+server_healthonly - Dropping
audit_session_end— η proof sessions close implicitly onmerkle_finalize
3. File 1 — docs/spec/s17-mcp-surface.md drift
3.1 Line-by-line findings
| Line | Current text (excerpt) | Classification | Correct replacement (packet-confirmed) |
|---|---|---|---|
| 5 | status: spec-ready |
KEEP | (no change — document is still a spec with amended target) |
| 6 | colibri_code: none |
FIX (heritage-bearing) | colibri_code: partial — s17’s target domain (α + β + γ + ε + ζ + η) ships at Phase 0. Per ADR-006, a spec whose Phase 0 slice has merged qualifies for partial. |
| 12 | “This document specifies the MCP tool surface Colibri will expose at the end of Phase 0. Nothing in it is running code. colibri_code: none for every tool named below. The entry point src/server.ts and every controller referenced here are targets (P0.2.1 and onward), not files on disk.” |
FIX | “This document specifies the MCP tool surface Colibri exposes in Phase 0. The surface is shipped: src/server.ts and the domain controllers referenced here are live (P0.2.1 and onward). The original 19-tool plan was amended to 14 shipped tools in ADR-004 R75 Wave H; the amended catalogue is authoritative below and in docs/reference/mcp-tools-phase-0.md.” |
| 16 | “Phase 0 ships 19 tools in 4 categories over one transport (MCP stdio).” | FIX | “Phase 0 ships 14 tools in 5 domains over one transport (MCP stdio) — ADR-004 R75 Wave H amendment.” |
| 18–23 | The 4-category table with task_delete, task_link, task_assign, thought_list, unified_init, unified_vitals, unified_set_project, unified_mode |
REPLACE | Full rewrite to the 5-domain 14-tool shipped table (β 5 · ζ 4 · η 3 · ε 1 · α/γ 2). |
| 25–29 | “Not in Phase 0.” block — agent_spawn, skill_get, no-HTTP, Claude API bridge |
KEEP (already historically framed as “deferred to Phase 1+”) | |
| 31 | Heritage note with AMS donor ~480 tools / target 60–80 | KEEP (explicitly heritage-framed, ADR-004 citation) | |
| 45 | “Client calls tools/list → the server returns the 19 tool definitions” |
FIX | “Client calls tools/list → the server returns the 14 tool definitions” |
| 96 | “ζ Decision Trail — owns 4 tools in Category 2 (thought_record, thought_list, audit_session_start, audit_verify_chain).” |
FIX | “ζ Decision Trail — owns 4 tools (thought_record, thought_record_list, audit_session_start, audit_verify_chain).” |
| 97 | “η Proof Store — owns 2 tools in Category 2 (merkle_finalize, merkle_root).” |
FIX | “η Proof Store — owns 3 tools (audit_session_start is registered via the η loader, plus merkle_finalize and merkle_root). Sessions close implicitly on merkle_finalize — there is no explicit audit_session_end.” Note: per src/server.ts L571–L575 registerMerkleTools owns audit_session_start, merkle_finalize, merkle_root. The original spec assigned audit_session_start to ζ, but the shipped code assigns it to η. Canonicalize to the code. |
| 104 | ”- [ ] src/server.ts exposes exactly the 19 tools listed in §1, no more and no fewer.” |
FIX | ”- [x] src/server.ts exposes the 14 tools listed in §1 (ADR-004 R75 Wave H amendment; shipped Waves A–I).” |
| 106 | ”- [ ] tools/list returns the 19 tool definitions with derived JSON Schema.” |
FIX | ”- [x] tools/list returns the 14 tool definitions with derived JSON Schema.” |
| 105, 107–110 | Other acceptance checkboxes | FIX | Flip [ ] → [x] since shipped; Zod schemas, middleware chain, actions enter/exit, E2E tests, no AMS_* dependencies are all in force. |
| 114–118 | Cross-ref block — links to ../concepts/α-system-core.md etc. |
KEEP structurally but FIX that the paths point to docs/concepts/ which does not exist. Map to actual concept docs under docs/3-world/. |
3.2 Heritage framing preserved
- §1 heritage note (L31) — explicitly framed as donor comparison; retain verbatim.
- §4 heritage note (L65) — 11-layer donor middleware comparison; retain.
- “Not in Phase 0” block (L25–L29) — retain; this is still accurate post-amendment.
3.3 Cross-ref breakage
§9 “Cross-references” L114–L118 points to ../concepts/α-system-core.md, ../concepts/β-task-pipeline.md, ../concepts/ε-skill-registry.md, ../concepts/ζ-decision-trail.md, ../concepts/η-proof-store.md. docs/concepts/ does not exist. These are broken links. Actual concept docs live under docs/3-world/:
- α →
docs/3-world/physics/laws/system-core.mdordocs/0-mutate/system-core.md(verify) - β →
docs/3-world/execution/task-pipeline.md - ε →
docs/3-world/execution/skills.md - ζ →
docs/3-world/execution/decision-trail.md - η →
docs/3-world/physics/laws/proof-store.md
Out-of-scope for R82.G: Full concept-link mapping is R82.J (colibri-system.md nav cleanup). Scope here is to remove the broken ../concepts/ links — do not attempt to re-target them. If removed, the cross-ref becomes: ADR-004 + ADR-005 + mcp-tools-phase-0 catalogue + task-breakdown (already present); no concept links. This keeps R82.G reversible and leaves R82.J’s domain untouched.
4. File 2 — docs/spec/index.md drift
4.1 Line-by-line findings
| Line | Current text (excerpt) | Classification | Correct replacement |
|---|---|---|---|
| 30 | “s17-mcp-surface — the Phase 0 contract: 19 tools × 4 categories, Zod schemas” |
FIX | “s17-mcp-surface — the Phase 0 contract: 14 tools × 5 domains, Zod schemas (ADR-004 R75 Wave H amendment)” |
| 69 | Table row s17: “Phase 0 contract: 19 tools × 4 categories, Zod schemas” | FIX | “Phase 0 contract: 14 tools × 5 domains, Zod schemas” |
| 135 | “No spec has running code today. … Phase 0 (R75–R80) creates the src/ tree and the first 19 MCP tools; none of them invokes the rule engine.” |
FIX | “Phase 0 has running code as of R75 Wave I (2026-04-18) — src/server.ts registers the 14 shipped MCP tools across α β γ ε ζ η; none of them invokes the rule engine (κ is Phase 1).” |
4.2 Heritage framing preserved
- Reading-order paths (Foundation/Legitimacy/Hardening) — unchanged except the §Foundation reference to s17 numeric. Retaining the
s17 — the Phase 0 contractline simply updates the count. - Coverage table L79–L83 — unchanged.
- Dependency graph L139–L156 — unchanged.
- Amendment procedure L120–L131 — unchanged.
5. File 3 — docs/spec/s12-dsl.md drift
5.1 Line-by-line findings
| Line | Current text (excerpt) | Classification | Correct replacement |
|---|---|---|---|
| 248 | “Summary: S12 is a pure protocol specification. Colibri’s Phase 0 codebase is a 19-tool MCP server with handwritten handlers. The DSL ships in Phase 1 (R81+).” | FIX | “Summary: S12 is a pure protocol specification. Colibri’s Phase 0 codebase is a 14-tool MCP server with handwritten handlers (ADR-004 R75 Wave H amendment). The DSL ships in Phase 1 (R81+).” |
Nothing else in s12-dsl.md touches the tool-count surface; the DSL spec is otherwise self-contained.
6. File 4 — docs/world-schema.md drift
6.1 Line-by-line findings
| Line | Current text (excerpt) | Classification | Correct replacement |
|---|---|---|---|
| 20 | “│ └── tools: 19” with inline comment “ADR-004 R74.5 — closed surface” | FIX | “│ └── tools: 14” with inline comment “ADR-004 R75 Wave H amendment — 19 planned → 14 shipped” |
| 204–221 | 14-tool shipped table (β 5 · ζ 4 · η 2 · ε 1 · α/γ 2) | KEEP — already correct. Note internal inconsistency: L204 table says “η Proof Store ▪ 2” but s17 refinement moves audit_session_start from ζ to η per shipped code. For world-schema, keep the ζ 4 / η 2 grouping since both reflect how the tools are conceptually owned; the per-file loader assignment is an implementation detail and the schema tree is already accurate on total count (14). |
|
| 291 | “│ └── Session 7: R74+ (Phase 0 execution), ACTIVE” | FIX | “│ ├── Session 7: R74 series (Phase 0 execution), SEALED 2026-04-09” new line for Session 8: “│ └── Session 8: R75+ (Phase 0 code + κ kickoff), ACTIVE” |
| 419 | “│ ν Integrations (basic) · 19 tools · data/colibri.db” | FIX | “│ ν Integrations (basic) · 14 tools · data/colibri.db” |
6.2 Session-row accuracy (MEMORY reference)
Per MEMORY.md “Colibri state at a glance”:
- S6 (R53–R73) SEALED 2026-04-09
- S7 (R74 series) closed 2026-04-09 with community-profile 100%
- S8 (R75) — Phase 0 SEALED 2026-04-18 at 28/28 (100%) via Waves H + I; continued through R76 bridge seal @
ae0b78ec; now extended post-Phase-0 with R77 pages-finish @77e579b8. Session boundary for S9 not yet drawn.
Current world-schema L289–L291 table:
- “Session 1–5: complete (pre-history)” — KEEP (factual)
- “Session 6: R53–R73 (src/ deletion → R73 unification), SEALED” — KEEP (factual, matches MEMORY)
- “Session 7: R74+ (Phase 0 execution), ACTIVE” — WRONG: S7 closed 2026-04-09; S8 carries Phase 0 execution + R81 κ kickoff; S9 not yet drawn.
Correct replacement (2 rows flipped, 1 row added):
- “Session 7: R74 series (documentation finish, zone hardening), SEALED 2026-04-09”
- “Session 8: R75+ (Phase 0 code + R81 κ kickoff), ACTIVE”
7. Classification summary
| File | FIX | STRIKE | KEEP-HISTORICAL | REPLACE |
|---|---|---|---|---|
s17-mcp-surface.md |
8 prose lines + acceptance checkbox rewrite | 6 phantom tools (task_delete, task_link, task_assign, thought_list, unified_* ×4) |
3 heritage blocks (L25–L29, L31, L65) | 1 surface table (L18–L23) + 1 cross-ref block (L114–L118) |
s17-mcp-surface.md frontmatter |
1 (colibri_code: none → partial) |
0 | 0 | 0 |
index.md |
3 prose lines | 0 | 0 | 0 |
s12-dsl.md |
1 prose line | 0 | 0 | 0 |
world-schema.md |
3 prose lines | 0 | 0 | 1 session-table row (3 rows after edit) |
8. Acceptance criteria for R82.G
grep -rn "19 tools\|all 19\|exactly 19\|19 MCP tools" docs/spec/ docs/world-schema.mdreturns 0 (or explicitly-historical/amendment-framing only; final verification doc enumerates exceptions).grep -rn "task_transition\|server_shutdown\|server_info\|audit_session_end\|task_delete\|task_depends_on\|task_link\|task_assign\|thought_list\b\|unified_init\|unified_vitals\|unified_set_project\|unified_mode" docs/spec/ docs/world-schema.mdreturns 0.world-schema.mdsession table reflects: S7 SEALED 2026-04-09, S8 ACTIVE (R75+).grep -F "14 tools" docs/world-schema.mdreturns ≥ 1 (current world-schema already has 1; will stay ≥ 1 or grow post-edit).- Jekyll frontmatter preserved on every edited file.
s17-mcp-surface.mdfrontmattercolibri_code: none→partial(graduation per ADR-006 §Decision; shipped Phase 0 slice =partial).- Broken
../concepts/cross-refs either removed or flagged out-of-scope for R82.J.
9. Out of scope (noted here for Phase B)
- Full
../concepts/→docs/3-world/remap across any spec — R82.J’s domain. s01–s16, s18, s19spec rewrites — no drift found in these per §1 grep.docs/world-schema.mdother sections (physics/social/execution subtrees, phase roadmap body, corpus audit) — unchanged; only the 4 line-level drifts listed in §6.1.src/server.tscode comments namingtask_transition— R82.K’s domain.- The internal nuance of whether
audit_session_startis conceptually ζ or η (spec says ζ, code registers via η loader) — reconciled here in s17 §7 by canonicalizing to the shipped code ownership;world-schema.mdalready uses the ζ grouping and that remains consistent at the count level.
10. Manifest path error — callout for Sigma Phase B
R82 manifest lists:
docs/spec/s03-task-pipeline.md— does not existdocs/spec/s05-decision-trail.md— does not exist
Actual spec files that match the 19-tool + phantom drift pattern:
docs/spec/s17-mcp-surface.md(primary)docs/spec/index.md(hub, 3 hits)docs/spec/s12-dsl.md(1 stale sentence)
Precedent: R82.F hit the same pattern (docs/2-plugin/deploy.md → docs/guides/deploy.md). Sigma Phase B gate-check should treat this as a manifest transcription error, not a drift regression.