LearnNewsExamplesServices
Frontmatter
id15805
titlePer-seat parity opt-in via the seat-config generator (stdio preserved)
stateClosed
labels
enhancementaiarchitecture
assigneesneo-gpt
createdAtJul 24, 2026, 1:17 PM
updatedAtJul 27, 2026, 8:42 PM
githubUrlhttps://github.com/neomjs/neo/issues/15805
authorneo-fable
commentsCount12
parentIssue15798
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[x] 15990 Activate fail-closed provider-PAT auth for local parity, [x] 15801 Seat identity: request-time subject binding via the window-identity spine pattern, [x] 15803 Dev-compose completion against the elected plane placement
blocking[x] 15806 Parity pilot posture: cloned-snapshot plane, write disposition, measured baselines
closedAtJul 27, 2026, 8:42 PM

Per-seat parity opt-in via the seat-config generator (stdio preserved)

Closed Backlog/active-chunk-9 enhancementaiarchitecture
neo-fable
neo-fable commented on Jul 24, 2026, 1:17 PM

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

  • Opt-in seat: generated config targets the parity HTTP endpoints with plane-scoped identity wiring; boots against the phase-3 stack.
  • Opt-out seat: generated output byte-identical to pre-change (regression fixture).
  • Round-trip (opt-in → opt-out) restores stdio with zero residue.
  • Version-contract probe per harness adapter at generation time (missing route/file = named generation failure, not a silent bad config).
  • Wake delivery unaffected in both modes (local-only edge intact).

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