Leaf of #15536 (the AgentCard responsive-recompose release gate for v13.2). #15536's design phase — render three materially-different directions, @neo-kimi-phoebe's independent narrow challenge, and @tobiu's product selection — is complete: the operator selected the evolved-D / synthesis direction on 2026-07-19 (selection receipt on #15536).
This leaf is the implementation of that selected direction, delivered by PR #15565. It is split out per operator direction (2026-07-20) so the fully-delivered, CI-green, cross-family-reviewed component slice has a truthful leaf close-target, while #15536 stays OPEN as the broader release gate (its CARD-CONTRACT.md fold, the #14618 baseline update, the full render-matrix signoff, and operator visual signoff remain the gate's items). Splitting replaces scope out of #15536's resolve-target; it does not add backlog.
Live latest-open sweep: checked the latest 20 open issues + AgentCard-title search + A2A last-30 at 2026-07-20 ~19:3xZ — no equivalent component-impl leaf exists (only the #15536 parent gate).
The Problem
The selected evolved-D composition had to be implemented as ONE state/data-driven, layout-blind (ADR 0029) AgentCard whose OWN width — not the viewport — drives composition, while preserving the operator's avatar invariant, keeping lifecycle controls touch/keyboard-reachable at every width, de-abbreviating the source-truth facts (no 9px three-row wall), and staying correct in both themes.
The Architectural Reality
apps/agentos/view/fleet/AgentCard.mjs — the recomposed component; @container card-own-width modes (never viewport media queries).
apps/agentos/CARD-CONTRACT.md — the governing semantic contract (design-SSOT authority: @neo-opus-grace). It currently documents the pre-recomposition anatomy; folding it to the shipped evolved-D anatomy is a #15536 gate AC under Grace's authority (out of scope for this component leaf — see below).
ADR 0029 keeps cards layout-blind with respect to docking mechanics.
The aria-label-on-vdom-root seam and the inert-lane XSS invariant surfaced/were fixed during the recompose.
The Fix
Delivered by PR #15565 at head 46da0dab46: recompose AgentCard to the evolved-D anatomy (FamilyRail accent · center-aligned head = avatar beside a two-line identity column · inline lifecycle verbs at every width · two-line tail-aware lane · one honest source word-line), card-own-width @container modes, plus the focus-continuity + inert-lane XSS fixes.
Decision Record impact
aligned-with ADR 0029 (layout-blind cards; this leaf implements a card-own-width composition within that discipline — no amend).
Acceptance Criteria
AgentCard renders the operator-selected evolved-D composition, responding to its OWN width via @container (not viewport media queries)
A clearly visible profile avatar is retained at narrow (~294px), regular (~360–480px), and roomy (~720px) card widths
Lifecycle controls keep accessible pointer + keyboard hit targets at every width (inline verbs, ≥44px), no hover-only route
Source-truth facts are readable, full-word (no 9px three-row abbreviation wall), and touch/keyboard-accessible
Both themes correct; render matrix covers long names, 2-digit lane counts, telltales, pending/rejected controls, and healthy/degraded/not-wired source combinations
CARD-CONTRACT.md fold to the evolved-D anatomy — a #15536 gate AC under @neo-opus-grace's design-SSOT authority (the contract is change-controlled: "deltas are recorded design decisions on tickets"). Recorded there, not folded silently into this component PR.
Context
Leaf of #15536 (the AgentCard responsive-recompose release gate for v13.2). #15536's design phase — render three materially-different directions, @neo-kimi-phoebe's independent narrow challenge, and @tobiu's product selection — is complete: the operator selected the evolved-D / synthesis direction on 2026-07-19 (selection receipt on #15536).
This leaf is the implementation of that selected direction, delivered by PR #15565. It is split out per operator direction (2026-07-20) so the fully-delivered, CI-green, cross-family-reviewed component slice has a truthful leaf close-target, while #15536 stays OPEN as the broader release gate (its
CARD-CONTRACT.mdfold, the #14618 baseline update, the full render-matrix signoff, and operator visual signoff remain the gate's items). Splitting replaces scope out of #15536's resolve-target; it does not add backlog.Live latest-open sweep: checked the latest 20 open issues + AgentCard-title search + A2A last-30 at 2026-07-20 ~19:3xZ — no equivalent component-impl leaf exists (only the #15536 parent gate).
The Problem
The selected evolved-D composition had to be implemented as ONE
state/data-driven, layout-blind (ADR 0029)AgentCardwhose OWN width — not the viewport — drives composition, while preserving the operator's avatar invariant, keeping lifecycle controls touch/keyboard-reachable at every width, de-abbreviating the source-truth facts (no 9px three-row wall), and staying correct in both themes.The Architectural Reality
apps/agentos/view/fleet/AgentCard.mjs— the recomposed component;@containercard-own-width modes (never viewport media queries).apps/agentos/CARD-CONTRACT.md— the governing semantic contract (design-SSOT authority: @neo-opus-grace). It currently documents the pre-recomposition anatomy; folding it to the shipped evolved-D anatomy is a #15536 gate AC under Grace's authority (out of scope for this component leaf — see below).aria-label-on-vdom-root seam and the inert-lane XSS invariant surfaced/were fixed during the recompose.The Fix
Delivered by PR #15565 at head
46da0dab46: recomposeAgentCardto the evolved-D anatomy (FamilyRail accent · center-aligned head = avatar beside a two-line identity column · inline lifecycle verbs at every width · two-line tail-aware lane · one honest source word-line), card-own-width@containermodes, plus the focus-continuity + inert-lane XSS fixes.Decision Record impact
aligned-with ADR 0029(layout-blind cards; this leaf implements a card-own-width composition within that discipline — no amend).Acceptance Criteria
AgentCardrenders the operator-selected evolved-D composition, responding to its OWN width via@container(not viewport media queries)AgentCardSynthesisRenderNLboth-skin goldens,FleetGridKeyboardA11y,FleetCardLifecycleNL, agentCard/AgentDetail unit)Out of Scope (stays on the #15536 release gate)
CARD-CONTRACT.mdfold to the evolved-D anatomy — a #15536 gate AC under @neo-opus-grace's design-SSOT authority (the contract is change-controlled: "deltas are recorded design decisions on tickets"). Recorded there, not folded silently into this component PR.FleetCockpitVisualbaseline update.Related
Parent (release gate): #15536 · delivered by PR #15565 · baseline harness: #14618 · original design signal: #14805 · accessibility sibling: #15512 / PR #15534 · ADR 0029 · design SSOT authority: @neo-opus-grace
Origin Session ID: f4ff850d-9e40-42b0-8b17-f5684047db38
Retrieval Hint:
AgentCard evolved-D synthesis composition recompose leaf of 15536