R82.D — Launcher Config Execution Packet

Task: R82.D · launcher config reality Scope: .mcp.json, .vscode/mcp-settings.example.json Round: R82 phase-0-1-stabilization, Wave 2 Author: T3 executor Date: 2026-04-19

0. Pre-edit state

Reproduced verbatim so the Edit tool finds the exact strings.

0.1. .mcp.json (18 lines)

{
  "mcpServers": {
    "ams-unified": {
      "command": "node",
      "args": [
        "E:/AMS/src/server.js"
      ],
      "env": {
        "AMS_ROOT": "E:/AMS",
        "AMS_WATCH_MODE": "none"
      },
      "_note": "Phase 0 not started — src/server.js does not exist yet. Update when P0.2 completes."
    },
    "github": {
      "url": "http://localhost:3000/sse"
    }
  }
}

0.2. .vscode/mcp-settings.example.json (36 lines)

Already at §2.2 of the audit; not reproduced here. The key lines to edit are 25–34.

1. Edit plan

Two-file surgical patch. No file creates/deletes.

Edit E1 — .mcp.json full-file rewrite (it’s tiny and every line inside mcpServers.ams-unified is drifted)

Because the drift touches the server key name, command/args, env block, and footer note, the cleanest Edit is a single old_string → new_string replacement of the entire "ams-unified": { ... } block.

old_string (lines 3–13):

    "ams-unified": {
      "command": "node",
      "args": [
        "E:/AMS/src/server.js"
      ],
      "env": {
        "AMS_ROOT": "E:/AMS",
        "AMS_WATCH_MODE": "none"
      },
      "_note": "Phase 0 not started — src/server.js does not exist yet. Update when P0.2 completes."
    },

new_string (11 lines — same line count preserved for minimum diff):

    "colibri": {
      "command": "node",
      "args": [
        "--loader",
        "tsx",
        "E:/AMS/src/server.ts"
      ],
      "env": {
        "COLIBRI_MODE": "FULL"
      }
    },

Citations:

  • Server identity "colibri" (D1): package.json:2 "name": "colibri".
  • src/server.ts + tsx loader (D3): package.json:20 "dev": "tsx watch src/server.ts"; VS Code example at .vscode/mcp-settings.example.json:28 uses the same node --loader tsx ${workspaceFolder}/src/server.ts pattern.
  • AMS_ROOT removed (D4): src/config.ts:26-33 rejects AMS_*; no live reader for COLIBRI_ROOT either (grep src/ clean).
  • COLIBRI_MODE: FULL (D5): src/modes.ts:31 defines RUNTIME_MODES = ['FULL', 'READONLY', 'TEST', 'MINIMAL']; src/modes.ts:90-93 treats unset as FULL. Explicit FULL is equivalent to the default but documents intent.
  • _note removed (D6): Phase 0 is 28/28 sealed at R75 Wave I per CLAUDE.md §9 and R82 manifest § Phase 0 status.

What stays: "github": { "url": "http://localhost:3000/sse" } untouched; outer JSON brackets untouched.

Edit E2 — .vscode/mcp-settings.example.json _colibri_phase_0_placeholder.env block

old_string (lines 29–33):

      "env": {
        "COLIBRI_ROOT": "${workspaceFolder}",
        "COLIBRI_DB": "${workspaceFolder}/data/colibri.db",
        "COLIBRI_WATCH_MODE": "none"
      }

new_string (4 lines — one removed entry since COLIBRI_ROOT is not consumed):

      "env": {
        "COLIBRI_DB_PATH": "${workspaceFolder}/data/colibri.db",
        "COLIBRI_MODE": "FULL"
      }

Citations:

  • COLIBRI_ROOT removed (D7): src/config.ts schema has no COLIBRI_ROOT key; grep -rn COLIBRI_ROOT src/ returns zero hits.
  • COLIBRI_DB_PATH (D8): src/config.ts:48.
  • COLIBRI_MODE = FULL (D9): src/modes.ts:31 + src/modes.ts:90.

Edit E3 — .vscode/mcp-settings.example.json _enabled_when comment (line 26)

old_string:

      "_enabled_when": "Rename the key to 'colibri' to activate; src/server.ts and data/colibri.db are live as of R75 Wave H",

new_string:

      "_enabled_when": "Rename the key to 'colibri' to activate; src/server.ts and data/colibri.db are live (Phase 0 sealed 28/28 at R75 Wave I)",

Rationale (D11): The “Wave H” framing is stale — Phase 0 has since sealed at Wave I (2026-04-18). The rename hint remains useful for users who copy this file.

Edit E4 — .vscode/mcp-settings.example.json top comment block (lines 2–16) — append R82.D reality note

old_string (last two lines of the comment array):

    "Zone: CANON (config). Governed by CLAUDE.md §9 (the R74.2 inventory doc",
    "was absorbed into §9.2 and deleted in R75)."
  ],

new_string:

    "Zone: CANON (config). Governed by CLAUDE.md §9 (the R74.2 inventory doc",
    "was absorbed into §9.2 and deleted in R75).",
    "",
    "R82.D (2026-04-19) update: env block reconciled to live config contract.",
    "COLIBRI_ROOT removed (no live reader in src/); COLIBRI_DB → COLIBRI_DB_PATH",
    "per src/config.ts:48; COLIBRI_WATCH_MODE → COLIBRI_MODE per src/modes.ts:90."
  ],

Rationale (D10): Manifest definition-of-done for R82.D says “inline ‘Phase 0 not started’ note removed” (for .mcp.json) and implicitly permits an R82.D note for .vscode example’s _comment_r75_wave_h block. A future-auditor pointer is worth the four extra lines.

2. Post-edit expected state

2.1. .mcp.json (17 lines — one fewer because _note removed shrinks by 1)

{
  "mcpServers": {
    "colibri": {
      "command": "node",
      "args": [
        "--loader",
        "tsx",
        "E:/AMS/src/server.ts"
      ],
      "env": {
        "COLIBRI_MODE": "FULL"
      }
    },
    "github": {
      "url": "http://localhost:3000/sse"
    }
  }
}

2.2. .vscode/mcp-settings.example.json (relevant region)

    "_colibri_phase_0_placeholder": {
      "_enabled_when": "Rename the key to 'colibri' to activate; src/server.ts and data/colibri.db are live (Phase 0 sealed 28/28 at R75 Wave I)",
      "command": "node",
      "args": ["--loader", "tsx", "${workspaceFolder}/src/server.ts"],
      "env": {
        "COLIBRI_DB_PATH": "${workspaceFolder}/data/colibri.db",
        "COLIBRI_MODE": "FULL"
      }
    }

3. Verification flow (Step 5 will re-run this)

cd E:/AMS/.worktrees/claude/r82-d-launcher

# Gate G1-G5 (negative)
grep -cF "src/server.js" .mcp.json .vscode/mcp-settings.example.json  # both 0
grep -cE "AMS_ROOT|AMS_WATCH_MODE" .mcp.json                          # 0
grep -cE "COLIBRI_WATCH_MODE" .mcp.json .vscode/mcp-settings.example.json # both 0
grep -cE '"COLIBRI_DB"[^_]' .vscode/mcp-settings.example.json         # 0
grep -cE "Phase 0 not started" .mcp.json                              # 0

# Gate G6-G7 (positive)
grep -cF "COLIBRI_DB_PATH" .vscode/mcp-settings.example.json          # >= 1
grep -cF "COLIBRI_MODE" .mcp.json .vscode/mcp-settings.example.json   # sum >= 1

# Gate JSON parse
python -c "import json; json.load(open('.mcp.json')); json.load(open('.vscode/mcp-settings.example.json')); print('json-valid')"

# Gate server identity
python -c "import json; cfg=json.load(open('.mcp.json')); keys=list(cfg['mcpServers'].keys()); assert 'colibri' in keys and 'ams-unified' not in keys; print('identity OK')"

# Gate github preservation
python -c "import json; cfg=json.load(open('.mcp.json')); assert cfg['mcpServers']['github']['url'] == 'http://localhost:3000/sse'; print('.mcp.json github OK')"
python -c "import json; cfg=json.load(open('.vscode/mcp-settings.example.json')); gh=cfg['mcpServers']['github']; assert gh['command']=='npx' and gh['args']==['-y','@modelcontextprotocol/server-github']; print('.vscode github OK')"

4. Commit plan

Step 4 (implement) commits everything as one fix(r82-d-launcher): reconcile launcher configs to COLIBRI env reality. No intermediate commits inside Step 4.

5. Next step

Implement per §1 above, then run §3 verification before committing Step 4.


R82.D packet. Four surgical Edits (E1-E4) across two files; no creates/deletes. Every value cited against live-code line number. Full post-edit state reproduced for diff review.


Back to top

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

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