R82.F — deploy.md + boot.md drift audit
0. Manifest-path reconciliation
The R82 manifest (.agents/spawns/r82-phase-0-1-stabilization/manifest.md §Group 3 and §Slices Row F) lists the deploy target as docs/2-plugin/deploy.md. That file does not exist in the current tree — docs/2-plugin/ contains only boot.md, database.md, health.md, index.md, middleware.md, modes.md. The file whose body exactly matches the manifest’s described drift pattern (“all 19 tools” in the mode table, “server_status” in the MINIMAL row, inline paragraphs claiming “all 19 tools” and “the 19 tools per ADR-004”) is docs/guides/deploy.md. R82.F therefore targets docs/guides/deploy.md + docs/2-plugin/boot.md; the manifest path is treated as a transcription error in R82 Phase A. This is flagged here and in the verification doc so Sigma Phase B gate-check is not surprised.
1. Target surface
| File | Zone | Role | Size | Phantom-tool hits | 19-tool hits |
|---|---|---|---|---|---|
docs/guides/deploy.md |
CANON (guides) | Phase-0 deploy runbook (entry point, env, modes, boot, wiring, profiles, shutdown, heritage) | 180 lines | 1 (server_status) |
5 |
docs/2-plugin/boot.md |
CANON (plugin) | 6-step boot sequence + Promise gate + failure paths + configuration + timeout + health loop | 236 lines | 1 (server_shutdown) |
3 |
2. Live 14-tool surface (ground truth)
Source: src/server.ts (bootstrap() L538–L575 in the worktree copy).
server_ping— α system (registerColibriToolat L538 directly)server_health— α system (registerHealthTool(ctx)at L555)thought_record— ζ trail (registerThoughtToolsat L559)thought_record_list— ζ trail (same)audit_verify_chain— ζ trail (registerVerifyChainToolat L563)skill_list— ε (registerSkillToolsat L567)task_create— β (registerTaskToolsat L570)task_get— β (same)task_update— β (same; acceptsstatus, routes through state-machine)task_list— β (same)task_next_actions— β (same)audit_session_start— η proof (registerMerkleToolsat L575)merkle_finalize— η proof (same)merkle_root— η proof (same)
Per src/server.ts L226–L229: capabilitiesFor(mode) is read advisorily — the call is void capabilitiesFor(mode) with comment “currently advisory (pure-mutex tool-lock per contract §2 + T0 Q-1 decision)”. There is no mode-gated tool-registration in Phase 0. Every registered tool is exposed in every mode. Mode-based admission is deferred.
No server_status is exported or registered anywhere. No server_shutdown is exported or registered anywhere. No task_transition, no audit_session_end, no task_delete, no task_depends_on either — all phantoms.
3. File 1 — docs/guides/deploy.md drift
3.1 Line-by-line findings
| Line | Current text (excerpt) | Classification | Correct replacement |
|---|---|---|---|
| 48 | `FULL` | yes | yes | all 19 tools | Normal laptop / dev operation |
FIX | `FULL` | yes | yes | all 14 shipped tools | Normal laptop / dev operation |
| 50 | `TEST` | yes (fresh temp DB) | yes | all 19 tools | CI runs, integration tests |
FIX | `TEST` | yes (fresh temp DB) | yes | all 14 shipped tools | CI runs, integration tests |
| 51 | `MINIMAL` | yes | no | `server_health` + `server_status` only | Smoke check, first connect |
FIX + STRIKE | `MINIMAL` | yes | no | `server_ping` + `server_health` only | Smoke check, first connect |
| 53 | The 19 tools are defined in …mcp-tools-phase-0.md per ADR-004. |
FIX | The 14 shipped tools are defined in …mcp-tools-phase-0.md per ADR-004 (R75 Wave H amendment; the original 19-tool plan is retained as heritage in that doc). |
| 63 | Boot step 5: “Register the 19 Phase 0 tools (minus the subset gated out by COLIBRI_MODE). Advertise them in the MCP tools/list response.” |
FIX | Register the 14 shipped Phase 0 tools. Advertise them in the MCP tools/list response. Note: capabilitiesFor(mode) is read at construction time but currently advisory — every registered tool is exposed in every mode. Enforcement at registration time is a Phase 1 follow-up. |
| 104 | Full read + write, all 19 tools, local DB. This is what a developer runs daily. |
FIX | Full read + write, all 14 shipped tools, local DB. This is what a developer runs daily. |
| 141 | \| Agent spawn / orchestration tools | Phase 1.5 per ADR-005 | \agent_spawn`, `agent_status`, `agent_list` not in the 19 tools |` |
FIX | \| Agent spawn / orchestration tools | Phase 1.5 per ADR-005 | \agent_spawn`, `agent_status`, `agent_list` not in the 14 shipped tools |` |
| 179 | - [`docs/reference/mcp-tools-phase-0.md`](/AMS/reference/mcp-tools-phase-0.html) — the 19 tools per ADR-004. |
FIX | - [`docs/reference/mcp-tools-phase-0.md`](/AMS/reference/mcp-tools-phase-0.html) — the 14 shipped tools per ADR-004 (R75 Wave H amendment). |
3.2 Supporting observations (no fix needed)
- Line 13 Phase-0 status note “No Colibri TypeScript code exists yet. Implementation begins at Phase 0 once
src/server.ts(P0.2.1) anddata/colibri.db(P0.2.2) are created.” — OUT OF SCOPE for R82.F (belongs to R82.B Phase-0 status sweep; leave untouched here to avoid cross-slice drift reintroduction). Noted. - Lines 146–159 Shutdown section (
SIGINT, handlers, etc.) — no phantom tools named. The doc already describes process-signal shutdown, not an MCP-exposedserver_shutdowntool. Good. - Lines 166–169 Heritage note re:
AMS_*— good as-is. - Jekyll frontmatter L1–L9 — preserve intact.
4. File 2 — docs/2-plugin/boot.md drift
4.1 Line-by-line findings
| Line | Current text (excerpt) | Classification | Correct replacement |
|---|---|---|---|
| 116 | - **\FULL`** — all 19 tools active (default).` |
FIX | - **\FULL`** — all 14 shipped tools active (default).` |
| 119 | - **\MINIMAL`** — health/shutdown tools only.` |
FIX + STRIKE | - **\MINIMAL`** — `server_ping` + `server_health` only.` |
| 159 | \| 2 | Handler registration failed | 73 | CONFIG — one of the 19 schemas is malformed \| |
FIX | \| 2 | Handler registration failed | 73 | CONFIG — one of the 14 tool schemas is malformed \| |
| 171 | \| 0 | Success | Clean shutdown via \server_shutdown` |` |
FIX + STRIKE | \| 0 | Success | Clean shutdown via SIGINT/SIGTERM \| (there is no `server_shutdown` MCP tool in Phase 0; teardown is handled by process signals per docs/2-plugin/modes.md §Tool surface per mode) |
4.2 Step 2 — Register Handlers (L30–L39) — no fix needed
The existing table already matches the 14-tool reality:
- 5 β Task tools —
task_create,task_list,task_get,task_update(acceptsstatus; routes through state-machine),task_next_actions - 4 ζ Audit tools —
audit_session_start,thought_record,thought_record_list,audit_verify_chain - 2 η Proof tools —
merkle_finalize,merkle_root - 1 ε Skill tool —
skill_list - 2 α/γ System tools —
server_ping,server_health
Total 14. Good. This section is already reconciled from some earlier pass and only the downstream references (lines 116, 119, 159, 171) drift.
4.3 Supporting observations (no fix needed)
- Exit-code
0description in L171 says “Clean shutdown viaserver_shutdown” — there is no such tool; teardown is SIGINT/SIGTERM permodes.md§Tool surface per mode (“Process-level shutdown (SIGTERM/SIGINT) is the Phase 0 signal for clean teardown — there is no MCP-exposed shutdown tool.”) - No
task_transition, noaudit_session_end, notask_delete, noserver_info, notask_depends_onanywhere inboot.md. Phantom-tool grep returns only the two hits at L116 (via “19 tools” + “shutdown”) and L171 (server_shutdown). - Jekyll frontmatter L1–L9 — preserve intact.
5. Counts before fix
grep -cE "19 tools|all 19" docs/guides/deploy.md docs/2-plugin/boot.md:docs/guides/deploy.md→ 5 hits (L48, L50, L53, L104, L141, L179 — 5 distinct “19 tools” mentions; L63 “19 Phase 0 tools” plus count)docs/2-plugin/boot.md→ 3 hits (L116 “all 19 tools”, L159 “19 schemas”, plus L116 itself)
grep -cE "server_shutdown|server_status|task_transition|audit_session_end|task_delete|task_depends_on" …:docs/guides/deploy.md→ 1 (server_statuson L51)docs/2-plugin/boot.md→ 1 (server_shutdownon L171)
6. Dependency + impact map
| Caller | Reads | Impact of our edits |
|---|---|---|
docs/guides/deploy.md |
cross-links to boot.md, modes.md, health.md, database.md, mcp-tools-phase-0.md |
No cross-link is broken or renamed — only prose + mode-table cell contents change. |
docs/2-plugin/boot.md |
cross-links to database.md, index.md, modes.md, colibri-system.md |
Same — no link renamings. |
docs/2-plugin/modes.md |
This file is already 14-tool-correct (amended Wave H). R82.F keeps it as the source of truth; edits to the two target files bring their phrasings into alignment with it. | Not edited in R82.F. |
R82.E (docs/reference/mcp-tools-phase-0.md) |
Downstream consumer of this R82.F work | R82.E runs in the same wave (Wave 2). No collision — R82.E owns mcp-tools-phase-0.md, R82.F owns the two target files. |
7. Invariants after fix
- Zero occurrences of the regex
(19 tools|all 19)in either file. - Zero occurrences of the regex
(server_shutdown|server_status|task_transition|audit_session_end|task_delete|task_depends_on)in either file. - At least one occurrence of
14 shippedin each file. - All 14 live tool names collectively appear across both files (they do — via
boot.mdStep 2 table + the shutdown / MINIMAL cell rewrites). - Jekyll frontmatter intact on both files.
- No new drift introduced.
- A new callout note on
capabilitiesFor()advisory status lands indeploy.md§Boot sequence step 5 (per task prompt).
8. Risks
- Low: The Phase-0 status note at
docs/guides/deploy.md:13(“No Colibri TypeScript code exists yet”) is out-of-scope drift that R82.B (docs/index.md + README.md) should address. Leaving it is the correct call for R82.F — cross-slice expansion would break the Wave 2 disjoint-file invariant. Flagged. - Low: Any additional “19” numerics unrelated to tool count (e.g. a “19th April” date) would be a false positive for the sweep regex; verified none exist in either file by inspection.
9. Verification plan hooks (for Step 5)
- Run
grep -cE "19 tools|all 19" docs/guides/deploy.md docs/2-plugin/boot.md— expect0on each side. - Run
grep -cE "server_shutdown|server_status|task_transition|audit_session_end|task_delete|task_depends_on" docs/guides/deploy.md docs/2-plugin/boot.md— expect0on each side. - Run
grep -cE "14 tools|14 shipped" docs/guides/deploy.md docs/2-plugin/boot.md— expect≥ 1on each side. - Run
head -10 docs/guides/deploy.md docs/2-plugin/boot.md— confirm frontmatter block intact.
Part of R82 Phase 0-1 stabilization, Wave 2 (task F). Governed by docs/agents/executor-contract.md.