<objective> Record every Phase 5 integration decision in the gate notes and pin the exact cited strings with a doc test, after verifying the Omp ExtensionAPI names against the official pages.
Purpose: Deliver the P5-D9, P5-D10, and omp.md Q1-Q4 records that plans 05-03, 05-04, and 05-05 code against, so no surface invents a revision, a version, or an API. Output: Five extended notes plus one doc-assertion test file. </objective>
<execution_context> @~/.claude/gsd-core/workflows/execute-plan.md @~/.claude/gsd-core/templates/summary.md </execution_context>
<context> @.planning/PROJECT.md @.planning/ROADMAP.md @.planning/phases/05-omp-plugin-mcp-and-acp-surfaces/05-CONTEXT.md </context>
<tasks>
<task type="auto"> <name>Task 1: Verify Omp ExtensionAPI names against the official pages (P5-D4, OQ-P5-01)</name> <files>docs/integration/omp.md</files> <read_first> - docs/integration/omp.md Q1-Q4 (the claims to confirm or correct) - https://omp.sh/docs/extension-authoring (registration, ExtensionAPI, manifest field) - The upstream docs cited in omp.md (extensions, extension-loading, hooks, sdk, marketplace, mcp-config) for event names, ctx.ui.setStatus, command registration, tool_call hook behaviour and timeout, and startup timing </read_first> <action>Read the official pages listed in read_first and update docs/integration/omp.md Q1-Q4 in place per P5-D4: confirm or correct each quoted name (event registration call, session_start and session_shutdown event names, ctx.ui.setStatus key-plus-text signature, command registration call, tool_call hook name and its block-on-error-or-timeout behaviour, extensionHandlers.toolCallTimeoutMs default, timer creation and clearing calls); record the exact verified signatures with their source URL and read date; mark anything not documented on those pages as a recorded limitation with its OQ-P5-01 status, explicitly including whether setActiveTools removal or a tool_call block provably enforces required mode (carry the Q4 OPEN status forward, do not resolve it by assumption). Write no code and no manifest; record read dates in ISO 8601. (Implements the P5-D4 verification half.)</action> <acceptance_criteria> - omp.md Q1-Q4 each cite the official URL and read date for every API name they assert - Every unverified name is marked as a limitation, not stated as fact </acceptance_criteria> <verify> <automated>npx tsc -p tsconfig.json && node --test dist/test/docs/phase5-notes.test.js</automated> </verify> <done>Omp names verified against official pages with limitations recorded.</done> </task>
<task type="auto"> <name>Task 2: Record MCP Q5, ACP version plus extension, and the Anda MCP path (P5-D9, P5-D10, P5-D1)</name> <files>docs/integration/mcp.md, docs/integration/acp.md, docs/integration/anda.md, docs/integration/anda-decision.md</files> <read_first> - docs/integration/mcp.md Q1-Q2 (revision 2026-07-28, server/discover probe, initialize backward compatibility, stdio framing) - docs/integration/acp.md Q1-Q2 (v1 versus v2, stdio defined, batch rule) - docs/integration/anda.md Q5 (Anda MCP client transports and revisions) </read_first> <action>Edit the four notes in place per P5-D1, P5-D9, and P5-D10: in mcp.md add Q5 recording revision 2026-07-28 with probe-plus-initialize handling and the stdio framing rules by reference to Q2, and restate that 2024-11-05 remains upstream-only and unverified; in acp.md record the generation choice v1 (protocolVersion 1 with clientInfo and agentInfo, highest-supported-at-or-below negotiation) with stdio framing and the batch rule by reference to Q2, and document the realm/tool method as a Realm extension carrying the whole frozen ToolCall map, explicitly not standard ACP; in anda.md and anda-decision.md record that Anda consumes Realm over MCP (P5-D1) with the stdio client path and the two revisions its client speaks, citing the Q5 evidence. Use no revision or version string the notes do not already cite. (Implements P5-D1, P5-D9, P5-D10.)</action> <acceptance_criteria> - mcp.md Q5 names exactly one spec-verified revision (2026-07-28) with probe-plus-initialize handling - acp.md names v1 plus the realm/tool extension marked as non-standard, and the Anda notes record the MCP-consumption path </acceptance_criteria> <verify> <automated>npx tsc -p tsconfig.json && node --test dist/test/docs/phase5-notes.test.js</automated> </verify> <done>Revision, version, extension, and Anda path recorded with cited strings only.</done> </task>
<task type="tdd"> <name>Task 3: Doc-decision pins with exact cited strings (FOUND-03 carry)</name> <files>test/docs/phase5-notes.test.ts</files> <read_first> - docs/integration/mcp.md (from Task 2; the Q5 text under test) - docs/integration/acp.md (from Task 2; the v1 plus extension text under test) - docs/integration/omp.md (from Task 1; the Q1-Q4 verified names under test) - test/runtime/decision-note.test.ts (existing assertion style for doc sections) </read_first> <behavior> - Test (TOOL-05): mcp.md Q5 contains 2026-07-28 and names both the server/discover probe and the initialize handshake, and no other four-digit revision string appears in Q5 - Test (TOOL-05): acp.md names protocol generation v1 and the realm/tool extension marked as a Realm extension, not standard ACP - Test (OMP-01): omp.md Q1-Q4 answers name only the verified APIs recorded in Task 1 and carry a source URL plus read date per answer - Test titles cite TOOL-05 or OMP-01 </behavior> <action>Write the failing tests first per behavior, then implement test/docs/phase5-notes.test.ts per the CONTEXT specifics note: read the five note files as text and assert the exact cited strings (2026-07-28, server/discover, initialize, protocolVersion 1 or generation v1, realm/tool, the Task 1 verified Omp names, official URLs, ISO read dates) rather than section presence alone, so an invented revision, version, or API name fails the suite. The test starts no process and touches no network. (Pins P5-D4, P5-D9, P5-D10.)</action> <acceptance_criteria> - The test asserts exact cited strings for the revision, the version, the extension, and the Omp names - An invented revision string in Q5 would fail the suite </acceptance_criteria> <verify> <automated>npx tsc -p tsconfig.json && node --test dist/test/docs/phase5-notes.test.js</automated> </verify> <done>Doc decisions pinned by exact-string assertions.</done> </task>
</tasks>
<threat_model>
Trust Boundaries
| Boundary | Description |
|---|---|
| official docs -> gate notes | Upstream wording crosses into build decisions; only read-dated, URL-cited facts are recorded |
| gate notes -> surface code | Recorded choices cross into plans 05-03 to 05-05; the doc test pins the exact strings |
STRIDE Threat Register
| Threat ID | Category | Component | Severity | Disposition | Mitigation Plan |
|---|---|---|---|---|---|
| T-05-03 | S (Spoofing) | docs/integration/mcp.md | medium | mitigate | Q5 names only the spec-verified revision with its read date; the upstream-only string stays marked unverified so no client is built against an uncited revision (P5-D2) |
| T-05-04 | T (Tampering) | docs/integration/omp.md | medium | mitigate | Q1-Q4 names carry source URLs and read dates; unverified controls stay marked as limitations so plan 05-05 cannot claim an unproven enforcement (P5-D4, OQ-P5-02) |
| </threat_model> |
<verification> npx tsc -p tsconfig.json && node --test dist/test/docs/phase5-notes.test.js; grep test/docs/phase5-notes.test.ts for TOOL-05 and OMP-01 in test titles. </verification>
<success_criteria> MCP revision handling, ACP v1 plus extension, verified Omp names, and the Anda MCP path are recorded and pinned by exact-string assertions. </success_criteria>
Artifacts this phase produces (contribution of this plan)
docs/integration/mcp.mdQ5 (new section, edited file): revision 2026-07-28 with probe-plus-initialize handling (P5-D9).docs/integration/acp.md(edited): v1 choice plus the realm/tool Realm extension (P5-D10).docs/integration/omp.mdQ1-Q4 (edited): verified API names with URLs and dates, limitations marked (P5-D4).docs/integration/anda.md,docs/integration/anda-decision.md(edited): the MCP-consumption path (P5-D1).test/docs/phase5-notes.test.ts(new): exact-string pins on all of the above.
<output> Create .planning/phases/05-omp-plugin-mcp-and-acp-surfaces/05-02-SUMMARY.md when done </output>