Context
Delegated by the operator via Emmy's Build Week task handoff (A2A task D15570-fleet-runtime-honesty, 2026-07-20): post-merge recapture at dev e5e7002b5e renders all nine active roster residents as benched / offline while the health summary simultaneously says 9 working — the filmed UI contradicts itself. Build Week submission closes 2026-07-21 17:00 PT; Emmy retries recapture on merge.
Live latest-open sweep: checked latest 20 open issues at 2026-07-20T20:20Z; no equivalent. A2A in-flight sweep: Vega's #15624 (AgentCard anatomy leaf) is adjacent, not equivalent — coordinated separately.
The Problem
apps/agentos/view/fleet/AgentCard.mjs::applyRecord() computes resolvedState = runtimeWired ? recordState : 'off'. One ternary conflates two different facts:
- Operator-benched
off (Gemini's row: record.state === 'off' — a first-party participation fact from identityRoots) → benched / offline is honest there.
- Unobserved session (the derived sample seed carries participation truth
state: 'ok' but no sources.runtime — no session evidence exists) → benched / offline is a FALSE participation claim for nine active maintainers.
Meanwhile FleetGrid's ranking and HealthBar's tally both read record.state directly (participation truth), so cards are the lone dissenting surface: summary 9 working vs cards 10 × benched / offline.
Authority conflict (per Emmy's evidence addendum): CARD-CONTRACT.md mandates not-wired runtime → off-token and maps source-gated off to benched / offline. The contract's discipline — placeholder never renders as fact — is correct; the missing vocabulary is a presentation for participation-active, session-unobserved.
The Architectural Reality
record.state IS participation truth on the sample path (identityRoots participationStatus → deriveFleetRoster.mjs); it is session truth only when sources.runtime.state === 'wired'.
sourceHealth.mjs already hosts the fleet honesty contract (mapFleetSessionHealth, normalizeFleetSources) — the resolver belongs beside them, shared by card AND health bar so the two surfaces can never diverge again.
- The state vocabulary is closed-set (
StateDot.mjs STATE_TOKEN/STATE_LABEL + theme --fm-state-* tokens + CARD-CONTRACT's legend) — a new unobserved state is a recorded contract delta (design authority: Grace, pinged).
The Fix
sourceHealth.mjs: add resolveFleetDisplayState({state, sources}) — wired → state (session truth, unchanged); not-wired + state === 'off' → off (benched preserved); not-wired + otherwise → unobserved.
AgentCard.applyRecord: consume the resolver (pendingAction transitional precedence unchanged; pulse still requires confidence: 'observed' — no fabricated liveness).
HealthBar tally: bucket by the same resolver (legend gains unobserved).
StateDot + both themes: unobserved token/label (slate-blue "signal-pending", distinct from off-grey; non-text 3:1 floor verified per theme).
CARD-CONTRACT.md: record the delta (state-line row + legend category) — contract amendment, never silent drift.
- Unit coverage: card renders
unobserved for roster-only active rows, preserves benched / offline for explicit off, keeps wired-session truth; HealthBar buckets the six categories.
Acceptance Criteria
Out of Scope
- The roster derivation layer (#15621/#15623, merged) and the Fleet roster live-wiring work.
- The AddAgentJourneyNL empty-fleet assumption (#15449 lane / roster isolation — separate finding).
- Vega's #15624 AgentCard anatomy leaf (coordinated: this fix is small and lands first for the film).
Related
#15621 · PR #15623 (the seed that exposed it) · PR #15565 (evolved-D card, merged) · #14605 (CARD-CONTRACT) · #15624 (adjacent AgentCard leaf, Vega) · D#15570 (Build Week film — the consumer)
Origin Session ID: dafc83a2-223d-4309-8298-e95f26bca960
Retrieval Hint: AgentCard unobserved session state benched offline sample roster state-honesty participation truth CARD-CONTRACT
Context
Delegated by the operator via Emmy's Build Week task handoff (A2A task
D15570-fleet-runtime-honesty, 2026-07-20): post-merge recapture at deve5e7002b5erenders all nine active roster residents asbenched / offlinewhile the health summary simultaneously says9 working— the filmed UI contradicts itself. Build Week submission closes 2026-07-21 17:00 PT; Emmy retries recapture on merge.Live latest-open sweep: checked latest 20 open issues at 2026-07-20T20:20Z; no equivalent. A2A in-flight sweep: Vega's #15624 (AgentCard anatomy leaf) is adjacent, not equivalent — coordinated separately.
The Problem
apps/agentos/view/fleet/AgentCard.mjs::applyRecord()computesresolvedState = runtimeWired ? recordState : 'off'. One ternary conflates two different facts:off(Gemini's row:record.state === 'off'— a first-party participation fact from identityRoots) →benched / offlineis honest there.state: 'ok'but nosources.runtime— no session evidence exists) →benched / offlineis a FALSE participation claim for nine active maintainers.Meanwhile
FleetGrid's ranking andHealthBar's tally both readrecord.statedirectly (participation truth), so cards are the lone dissenting surface: summary9 workingvs cards10 × benched / offline.Authority conflict (per Emmy's evidence addendum):
CARD-CONTRACT.mdmandatesnot-wired runtime → off-tokenand maps source-gatedofftobenched / offline. The contract's discipline — placeholder never renders as fact — is correct; the missing vocabulary is a presentation for participation-active, session-unobserved.The Architectural Reality
record.stateIS participation truth on the sample path (identityRootsparticipationStatus→deriveFleetRoster.mjs); it is session truth only whensources.runtime.state === 'wired'.sourceHealth.mjsalready hosts the fleet honesty contract (mapFleetSessionHealth,normalizeFleetSources) — the resolver belongs beside them, shared by card AND health bar so the two surfaces can never diverge again.StateDot.mjsSTATE_TOKEN/STATE_LABEL + theme--fm-state-*tokens + CARD-CONTRACT's legend) — a newunobservedstate is a recorded contract delta (design authority: Grace, pinged).The Fix
sourceHealth.mjs: addresolveFleetDisplayState({state, sources})— wired →state(session truth, unchanged); not-wired +state === 'off'→off(benched preserved); not-wired + otherwise →unobserved.AgentCard.applyRecord: consume the resolver (pendingAction transitional precedence unchanged; pulse still requiresconfidence: 'observed'— no fabricated liveness).HealthBartally: bucket by the same resolver (legend gainsunobserved).StateDot+ both themes:unobservedtoken/label (slate-blue "signal-pending", distinct from off-grey; non-text 3:1 floor verified per theme).CARD-CONTRACT.md: record the delta (state-line row + legend category) — contract amendment, never silent drift.unobservedfor roster-only active rows, preservesbenched / offlinefor explicitoff, keeps wired-session truth; HealthBar buckets the six categories.Acceptance Criteria
unobserved— neverbenched / offline.state: 'off'row still rendersbenched / offline(operator-benched truth preserved).9 workingvs10 benchedcontradiction (summary shows9 unobserved · 1 benched / offlineon the sample path).confidence: 'observed'; controls stay disabled without a wired runtime (existing behavior).unobserveddelta; unit specs green; headed FM cockpit witness on macOS shows the resolved grid.Out of Scope
Related
#15621 · PR #15623 (the seed that exposed it) · PR #15565 (evolved-D card, merged) · #14605 (CARD-CONTRACT) · #15624 (adjacent AgentCard leaf, Vega) · D#15570 (Build Week film — the consumer)
Origin Session ID: dafc83a2-223d-4309-8298-e95f26bca960
Retrieval Hint:
AgentCard unobserved session state benched offline sample roster state-honesty participation truth CARD-CONTRACT