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

  1. server_ping — α system (registerColibriTool at L538 directly)
  2. server_health — α system (registerHealthTool(ctx) at L555)
  3. thought_record — ζ trail (registerThoughtTools at L559)
  4. thought_record_list — ζ trail (same)
  5. audit_verify_chain — ζ trail (registerVerifyChainTool at L563)
  6. skill_list — ε (registerSkillTools at L567)
  7. task_create — β (registerTaskTools at L570)
  8. task_get — β (same)
  9. task_update — β (same; accepts status, routes through state-machine)
  10. task_list — β (same)
  11. task_next_actions — β (same)
  12. audit_session_start — η proof (registerMerkleTools at L575)
  13. merkle_finalize — η proof (same)
  14. 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) and data/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-exposed server_shutdown tool. 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 toolstask_create, task_list, task_get, task_update (accepts status; routes through state-machine), task_next_actions
  • 4 ζ Audit toolsaudit_session_start, thought_record, thought_record_list, audit_verify_chain
  • 2 η Proof toolsmerkle_finalize, merkle_root
  • 1 ε Skill toolskill_list
  • 2 α/γ System toolsserver_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 0 description in L171 says “Clean shutdown via server_shutdown” — there is no such tool; teardown is SIGINT/SIGTERM per modes.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, no audit_session_end, no task_delete, no server_info, no task_depends_on anywhere in boot.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_status on L51)
    • docs/2-plugin/boot.md → 1 (server_shutdown on 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

  1. Zero occurrences of the regex (19 tools|all 19) in either file.
  2. Zero occurrences of the regex (server_shutdown|server_status|task_transition|audit_session_end|task_delete|task_depends_on) in either file.
  3. At least one occurrence of 14 shipped in each file.
  4. All 14 live tool names collectively appear across both files (they do — via boot.md Step 2 table + the shutdown / MINIMAL cell rewrites).
  5. Jekyll frontmatter intact on both files.
  6. No new drift introduced.
  7. A new callout note on capabilitiesFor() advisory status lands in deploy.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 — expect 0 on 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 — expect 0 on each side.
  • Run grep -cE "14 tools|14 shipped" docs/guides/deploy.md docs/2-plugin/boot.md — expect ≥ 1 on 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.


Back to top

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

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