Context
T2.7 of Epic #14560 (map v1.1) — the cockpit's atom: the per-agent card composing the #14593 primitives into the SSOT artifact's card anatomy (family rail · state dot+pulse · name · engine tag · state line · current-lane line · foot meta + per-card controls slot). Filed under the decomposition sprint (D#14561).
The Problem
The card is where the product principles and the ADR 0032 render rules meet the pixel: state reads at a glance (form-encoded status), real-time is the spine (live lane-line), and the anti-lock-in contract at card grain. Hand-rolling it per view (grid, detail header, pop-out title) would fork the resident's visual identity across surfaces.
The Architectural Reality
- Composes #14593 primitives (StateDot/FamilyRail/HealthSwatch) + #14578 tokens; namespace per the #14577 gate.
- ADR 0032 bindings at card grain (the first consumer): name renders as mutable display state over the durable id (§2.3.2); the engine tag ("opus-4.8" / "fable-5" in the mock) is session metadata, never identity (§2.3.7) — bound from the current
EmbodiedEpisode-era data when #11318 lands, from the roster DTO until then; the family rail re-renders in place on family change, same resident (§2.3.3 fixture).
- Wire: consumes the Lane-2 roster/status DTO (#14571, approved per its owner) + #14595 runtime-status — the card binds LIVE per map v1.1 (no mocks; degrade-honestly when the wire is down: stale renders as stale, the #13444 freshness discipline at card grain).
- The per-view triplet: component + unit specs + NL-verifiable render.
The Fix
One PR: (1) AgentCard (config-driven: identity id, display name + provenance slot, engine tag, state, lane line, foot meta, controls slot — controls themselves are T5); (2) unit specs — state→primitive mapping, name-as-display-state binding (rename re-renders, same card instance), engine-tag-as-metadata, stale-wire render; (3) NL-verifiable mount (dev-server card wall bound to the live roster).
Acceptance Criteria
Out of Scope
Controls behavior (T5) · grid layout (T2.8) · detail view (T4) · primitives/tokens (#14593/#14578) · wire methods (Lane 2: #14571/#14595).
Related
Epic #14560 (parent) · blocked-by #14593 · consumes #14571/#14595 (Lane-2 seams, Ada) · ADR 0032 §2.3 (PR #14583) · #14592 density evidence (card-churn data) · D#14561.
Live latest-open sweep: latest 8 checked 2026-07-04T02:13Z (newest #14595); no equivalent. A2A sweep: clean (Ada's L2 claims are the consumed seams, boundary acked both directions). Structure-map gate: N/A — app-layer component.
Origin Session ID: a28f1415-37a4-4a5a-a3e4-b56adf6274ec
Retrieval Hint: "FM cockpit AgentCard resident card name display state engine metadata"
Context
T2.7 of Epic #14560 (map v1.1) — the cockpit's atom: the per-agent card composing the #14593 primitives into the SSOT artifact's card anatomy (family rail · state dot+pulse · name · engine tag · state line · current-lane line · foot meta + per-card controls slot). Filed under the decomposition sprint (D#14561).
The Problem
The card is where the product principles and the ADR 0032 render rules meet the pixel: state reads at a glance (form-encoded status), real-time is the spine (live lane-line), and the anti-lock-in contract at card grain. Hand-rolling it per view (grid, detail header, pop-out title) would fork the resident's visual identity across surfaces.
The Architectural Reality
EmbodiedEpisode-era data when #11318 lands, from the roster DTO until then; the family rail re-renders in place on family change, same resident (§2.3.3 fixture).The Fix
One PR: (1) AgentCard (config-driven: identity id, display name + provenance slot, engine tag, state, lane line, foot meta, controls slot — controls themselves are T5); (2) unit specs — state→primitive mapping, name-as-display-state binding (rename re-renders, same card instance), engine-tag-as-metadata, stale-wire render; (3) NL-verifiable mount (dev-server card wall bound to the live roster).
Acceptance Criteria
Out of Scope
Controls behavior (T5) · grid layout (T2.8) · detail view (T4) · primitives/tokens (#14593/#14578) · wire methods (Lane 2: #14571/#14595).
Related
Epic #14560 (parent) · blocked-by #14593 · consumes #14571/#14595 (Lane-2 seams, Ada) · ADR 0032 §2.3 (PR #14583) · #14592 density evidence (card-churn data) · D#14561.
Live latest-open sweep: latest 8 checked 2026-07-04T02:13Z (newest #14595); no equivalent. A2A sweep: clean (Ada's L2 claims are the consumed seams, boundary acked both directions). Structure-map gate: N/A — app-layer component.
Origin Session ID: a28f1415-37a4-4a5a-a3e4-b56adf6274ec Retrieval Hint: "FM cockpit AgentCard resident card name display state engine metadata"