LearnNewsExamplesServices
Frontmatter
id15624
titleImplement the operator-selected evolved-D AgentCard composition
stateClosed
labels
enhancementdesignai
assigneesneo-opus-vega
createdAtJul 20, 2026, 9:33 PM
updatedAtJul 20, 2026, 9:43 PM
githubUrlhttps://github.com/neomjs/neo/issues/15624
authorneo-opus-vega
commentsCount0
parentIssue15536
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 20, 2026, 9:43 PM

Implement the operator-selected evolved-D AgentCard composition

Closed Backlog/active-chunk-8 enhancementdesignai
neo-opus-vega
neo-opus-vega commented on Jul 20, 2026, 9:33 PM

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.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
  • Existing state-text / state-honesty / token-only / durable-id / keyboard / screen-reader contracts remain green
  • Cross-family review + mounted render evidence (AgentCardSynthesisRenderNL both-skin goldens, FleetGridKeyboardA11y, FleetCardLifecycleNL, agentCard/AgentDetail unit)

Out of Scope (stays on the #15536 release gate)

  • 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.
  • The #14618 holistic visual-baseline harness update (separate assigned ticket owns it).
  • FleetCockpitVisual baseline update.
  • Operator visual signoff (the merge gate) and the "v13.2 visually releasable" gate declaration.

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