Roadmap
From intent to impact, in the order the plan's dependencies allow.
Every milestone of the plan with the issues it holds, and the intents the work serves.
- NowM002plan.roadmap /now
- NextM003plan.roadmap /next
- Milestones41plan.roadmap /milestones
- Intents5intents.list /intents
What it is for
The milestone's own record: why it exists, what it promises, and what would prove it.
The problem
The MCP projection is already one registry walk: tools and resources come from apps/majordomus-cli/src/mcp/surface.rs:367-394, annotations from the declared effect (apps/majordomus-cli/src/mcp/protocol.rs:446-456), held by apps/majordomus-cli/tests/projections.rs:26, apps/majordomus-cli/tests/mcp_conformance.rs and case 940. The pack's premise that MCP keeps independent lists is refuted. The transport is the defect. The stdio bridge resends the same tools/call after a 60 s timeout or any 4xx other than 404 (apps/majordomus-cli/src/mcp/bridge.rs:25,352; apps/majordomus-cli/src/commands/mcp.rs:283,301), so a slow writer can run twice. notifications/cancelled is dropped (apps/majordomus-cli/src/mcp/protocol.rs:234-238) and could not be forwarded anyway because the bridge is sequential under a mutex (apps/majordomus-cli/src/commands/mcp.rs:218). stdin lines and bridge responses are unbounded (apps/majordomus-cli/src/mcp/stdio.rs:40, apps/majordomus-cli/src/mcp/bridge.rs:85); the Streamable HTTP endpoint ignores MCP-Protocol-Version, issues predictable session ids (apps/majordomus-cli/src/http/mcp.rs:159) and can reap a session whose request is still running (apps/majordomus-cli/src/http/mcp.rs:138). The provider launch configurations are hand-written and diagnosed by substring (apps/majordomus-cli/src/capability/builtin/mcp.rs:394-399). Measured in the runtime baseline audit of 2026-10-09 at master 1fb8d6be44 (plan/RUNTIME_BASELINE.md).
The outcome
A client gets each answer once or is told the outcome is unknown, can cancel what it started, cannot exhaust the server with one message, and finds its launch configuration generated from the provider declaration and diagnosed by parsing it.
Where it stands
Implemented and tested: stdout hygiene (apps/majordomus-cli/tests/mcp_stdio.rs), malformed traffic (apps/majordomus-cli/tests/mcp_conformance.rs::malformed_traffic_is_answered_and_the_session_survives), session isolation over HTTP (apps/majordomus-cli/tests/mcp_conformance_http.rs), protocol negotiation (apps/majordomus-cli/src/mcp/protocol.rs:71). Absent: idempotency on resend, cancellation, symmetric bounds, the version header, generated client configs. Authorization of writers and the effect laundering through executions.start for remote callers are I2123 (runtime-trust).
Where it should stand
The audit's MCP rows are all I in plan/RUNTIME_BASELINE.md, each with a real-process test: a timed-out writer runs once, a cancelled call stops, an oversized message is refused with its real cause, a long request is not reaped, a Codex config without its table is reported unwired.
In scope
- apps/majordomus-cli/src/mcp
- apps/majordomus-cli/src/commands/mcp.rs
- apps/majordomus-cli/src/http/mcp.rs
- apps/majordomus-cli/src/http/server.rs
- apps/majordomus-cli/src/execution/engine.rs
- apps/majordomus-cli/src/capability/builtin/mcp.rs
- share/providers.yaml
- lib/update.sh
- .mcp.json
- .gemini/settings.json
- .codex/config.toml
- apps/majordomus-cli/tests/
- test/cases
- docs/MCP.md
Out of scope
- A GET/SSE stream on the Streamable HTTP endpoint; docs/MCP.md documents its absence and no client here needs it.
- Authorization and remote callers, which are I2123.
- A second tool list or MCP-specific capability metadata; the registry stays the one source.
Proven when
- A mutating tool call that outlasts the bridge timeout is executed exactly once
- notifications/cancelled stops a running call within a bound
- One declared message bound applies to stdin, request bodies and bridge responses, each with a test one byte over it
- The three client launch configurations are generated and their diagnosis parses them
objects.get0 msAPI/api/v1/objectMCPmajordomus_gettechnical view
Milestone
One milestone of the plan: what it holds, what can start, and what it waits for.
mcp-transports-are-reliable · order 139 · p0
Every MCP transport delivers each request at most once, bounds what it carries, and honours cancellation
verifyClose
- Done
- 2 of 2
- Ready now
- none
- Blocked
- 0
- Waits for
- none
- Blocked by
- none
- Unblocks
- none
- Serves
- none
Critical path
No issue of it is open.
Issues
| Issue | Status | Priority | Wave | Blocked by |
|---|---|---|---|---|
| I2145A tool call that may have run is never sent a second time | done | p0 | 0 | none |
| I2147The MCP transports bound what they read and follow the Streamable HTTP rules they claim | done | p2 | 0 | none |
plan.roadmap0 msAPI/api/v1/plan/roadmapMCPmajordomus_plan_roadmaptechnical view
plan.issues0 msAPI/api/v1/plan/issuesMCPmajordomus_plan_issuestechnical view
Milestones
Every milestone, in the plan's order; the plan declares no dates, so none are drawn.
plan.roadmap0 msAPI/api/v1/plan/roadmapMCPmajordomus_plan_roadmaptechnical view
Intents
What the work is for, and whether the evidence says it is met.
intents.list279 msAPI/api/v1/intentsCLImajordomus intent listMCPmajordomus_intentstechnical view
Issues by status
Every issue of the plan, counted by the plan.
- active1
- blocked159
- cancelled10
- done161
- ready86
- verify7
plan.status0 msAPI/api/v1/plan/statusMCPmajordomus_plan_statustechnical view
Dependencies
Which milestone waits for which, as the plan records it.
| Milestone | Depends on | Blocked by |
|---|---|---|
| runtime-adapters | foundation | |
| intent-planning | intent-lifecycle | intent-lifecycle |
| execution-telemetry | runtime-adapters | runtime-adapters |
| intent-bound-work | intent-planning | intent-planning |
| cost-per-accepted-outcome | execution-telemetry | execution-telemetry |
| routing-recommendations | cost-per-accepted-outcome | cost-per-accepted-outcome |
| shared-policy | routing-recommendations | routing-recommendations |
plan.roadmap0 msAPI/api/v1/plan/roadmapMCPmajordomus_plan_roadmaptechnical view