Context
Operator drill-in during the #17271 L1 witnessed run (2026-08-17, pop-out agent-detail widget): the Configuration tab for neo-fable-clio renders GitHub workflow: Off — while that very seat had created four GitHub issues through its github-workflow MCP server within the preceding hour (#17302-#17305, receipts on the tracker). The same pane labels Memory & Knowledge as Local services while the seat's MC/KB demonstrably run on the containerized plane through the :3102 ingress (the whole #17271 session rode it). Operator verbatim: "you have 4 mcp servers => github workflow shown as off => only 3 instead of 4 on."
The Problem
The Configuration pane presents the registry's seat DECLARATION (agent definition rows: harness, servers, service mode) in the visual grammar of runtime observation — flat On/Off value rows with no confidence or source marker. Everywhere else the cockpit carries the as-declared vs as-observed split explicitly (sources envelopes with wired/observed/inferred, reason-carrying degradation); this pane asserts declared config as if the fleet had observed it. A stale or wrong declaration renders indistinguishable from measured truth — the exact vocabulary violation class as #17305, on the config axis.
The pane's own OPERATIONS section already does it right: Hooks: Not read back yet / Wake subscriptions: Not read back yet — declared-vs-read-back is IN the pane's vocabulary, just not applied to the SERVERS/mode rows.
The Architectural Reality
- Data source:
FleetRegistryService agent definitions (registry.json — declaration authority, no runtime knowledge).
- The seat's REAL server set is not fleet-observable today for external harnesses (no probe exists) — which is precisely why the rows must render as declaration, not as state.
- Sibling precedent: the
sources envelope grammar (roster/repoStatus/runtime rows) and the OPERATIONS rows' "Not read back yet".
The Fix
- SERVERS + MEMORY & KNOWLEDGE rows render as declared (registry authority named), visually distinct from observed state — reusing the existing "Not read back yet" / source-marker grammar rather than inventing a new one.
- Where a cheap observation EXISTS, show it beside the declaration (e.g. Memory Core reachability = the plane handshake the fleet child already proved; a mismatch renders as declared≠observed, the honest interesting state).
- Correct the current false rows for this deployment's reality (github-workflow active per evidence; MC/KB container-plane, not local) — likely falls out of (1) automatically once declaration stops masquerading.
Acceptance Criteria
Out of Scope
A server-set observation probe for external harnesses (new capability — separate ticket if wanted) · pane visual design (#17268 owns aesthetics) · editing/config-write flows.
Related
Epic #14560 (parent) · #17271 (origin L1 run) · #17305 (sibling truth-vocabulary bug, runtime axis) · #17268 (pane design pass)
Live latest-open sweep: latest 8 checked 2026-08-17T16:40Z, no equivalent; A2A claim window clean (newest claim 13:54, unrelated).
Origin Session ID: 7ee47ccf-d1c7-469d-a75e-15cebf3b5ea5
Retrieval Hint: query_raw_memories("configuration pane declared observed github workflow off false registry")
Context
Operator drill-in during the #17271 L1 witnessed run (2026-08-17, pop-out agent-detail widget): the Configuration tab for
neo-fable-cliorendersGitHub workflow: Off— while that very seat had created four GitHub issues through its github-workflow MCP server within the preceding hour (#17302-#17305, receipts on the tracker). The same pane labels Memory & Knowledge asLocal serviceswhile the seat's MC/KB demonstrably run on the containerized plane through the :3102 ingress (the whole #17271 session rode it). Operator verbatim: "you have 4 mcp servers => github workflow shown as off => only 3 instead of 4 on."The Problem
The Configuration pane presents the registry's seat DECLARATION (agent definition rows: harness, servers, service mode) in the visual grammar of runtime observation — flat
On/Offvalue rows with no confidence or source marker. Everywhere else the cockpit carries the as-declared vs as-observed split explicitly (sourcesenvelopes withwired/observed/inferred, reason-carrying degradation); this pane asserts declared config as if the fleet had observed it. A stale or wrong declaration renders indistinguishable from measured truth — the exact vocabulary violation class as #17305, on the config axis.The pane's own OPERATIONS section already does it right:
Hooks: Not read back yet/Wake subscriptions: Not read back yet— declared-vs-read-back is IN the pane's vocabulary, just not applied to the SERVERS/mode rows.The Architectural Reality
FleetRegistryServiceagent definitions (registry.json— declaration authority, no runtime knowledge).sourcesenvelope grammar (roster/repoStatus/runtime rows) and the OPERATIONS rows' "Not read back yet".The Fix
Acceptance Criteria
On/Offimplying observation.GitHub workflow: Offstate on a seat that files issues through it).Local servicesvs container-plane mode reflects the actual binding where the fleet can know it (plane handshake), else renders as declaration.Out of Scope
A server-set observation probe for external harnesses (new capability — separate ticket if wanted) · pane visual design (#17268 owns aesthetics) · editing/config-write flows.
Related
Epic #14560 (parent) · #17271 (origin L1 run) · #17305 (sibling truth-vocabulary bug, runtime axis) · #17268 (pane design pass)
Live latest-open sweep: latest 8 checked 2026-08-17T16:40Z, no equivalent; A2A claim window clean (newest claim 13:54, unrelated).
Origin Session ID: 7ee47ccf-d1c7-469d-a75e-15cebf3b5ea5
Retrieval Hint:
query_raw_memories("configuration pane declared observed github workflow off false registry")