Context
Phase-4 leaf of epic #15798 (Discussion #15595, OQ7's author-lean adopted at convergence: per-seat opt-in via the seat-config generator; never a flag day; OQ5's explicit non-goal preserved — stdio stays). The cutover is a config-generation concern: a seat opts into the parity transport, and its generated harness config points MCP entries at the long-running HTTP servers instead of stdio spawns.
The Problem
Seat configs are generated per harness family (the #15392-productized pattern; the twin's first replication consumer). Today they wire stdio spawns unconditionally. The cutover needs: an opt-in flag per seat, HTTP endpoints + the seat's minted identity token (#15801) injected on opt-in, stdio fallback fully intact on opt-out, and the OQ11 lesson honored — seat-local edge contracts drift at harness-vendor cadence, so the generator carries a version-contract probe per adapter (cheap: assert the expected files/routes exist at generation time).
The Architectural Reality
- The generator is the single authoring surface for seat configs (hand-edited seat configs are the drift class the generator retired).
- Opt-in state is seat-level, not global (ADR 0020 trajectory: the seat connects to the stack).
- The wake-addressable seat is never a pure client (fold-3 E-boundary): the resident local delivery edge stays ADR-0014-local-only regardless of transport opt-in.
The Fix (one PR)
Generator gains the parity opt-in: flagged seats emit HTTP MCP entries (with mint-consume identity wiring per #15801) against the seat's declared plane; unflagged seats emit today's stdio shape byte-identical; the per-adapter version-contract probe runs at generation; docs for the opt-in/opt-out round-trip.
Acceptance Criteria
Out of Scope
Deleting stdio (non-goal); FM-managed fleet generation (FM lane); any server-side changes (phases 0–3 own those).
Related
Epic #15798 · blocked_by #15803 and #15801 · D#15595 OQ5/OQ7/OQ11 + fold 3 · #15392 (generator pattern) · borrowed-authority caveat as in #15799.
Origin Session ID: 758f110e-a429-4597-beb0-5fd3ec7d1bfc
Retrieval Hint: query_raw_memories("per-seat parity opt-in seat config generator stdio preserved version contract probe")
Context
Phase-4 leaf of epic #15798 (Discussion #15595, OQ7's author-lean adopted at convergence: per-seat opt-in via the seat-config generator; never a flag day; OQ5's explicit non-goal preserved — stdio stays). The cutover is a config-generation concern: a seat opts into the parity transport, and its generated harness config points MCP entries at the long-running HTTP servers instead of stdio spawns.
The Problem
Seat configs are generated per harness family (the #15392-productized pattern; the twin's first replication consumer). Today they wire stdio spawns unconditionally. The cutover needs: an opt-in flag per seat, HTTP endpoints + the seat's minted identity token (#15801) injected on opt-in, stdio fallback fully intact on opt-out, and the OQ11 lesson honored — seat-local edge contracts drift at harness-vendor cadence, so the generator carries a version-contract probe per adapter (cheap: assert the expected files/routes exist at generation time).
The Architectural Reality
The Fix (one PR)
Generator gains the parity opt-in: flagged seats emit HTTP MCP entries (with mint-consume identity wiring per #15801) against the seat's declared plane; unflagged seats emit today's stdio shape byte-identical; the per-adapter version-contract probe runs at generation; docs for the opt-in/opt-out round-trip.
Acceptance Criteria
Out of Scope
Deleting stdio (non-goal); FM-managed fleet generation (FM lane); any server-side changes (phases 0–3 own those).
Related
Epic #15798 · blocked_by #15803 and #15801 · D#15595 OQ5/OQ7/OQ11 + fold 3 · #15392 (generator pattern) · borrowed-authority caveat as in #15799.
Origin Session ID: 758f110e-a429-4597-beb0-5fd3ec7d1bfc Retrieval Hint:
query_raw_memories("per-seat parity opt-in seat config generator stdio preserved version contract probe")