Context
The Fleet cockpit has two red Whitebox E2E witnesses on current dev, but fresh falsification shows that the production card→detail path is not regressed. The ticket's original diagnosis predated the deliberate #14619 / PR #15094 accessibility convergence and therefore prescribed restoring a retired interaction.
Clean-current-dev evidence at 5738546bf4 (2026-07-16):
NEO_E2E_PORT=8212 NEO_TEST_SKIP_CI=true npx playwright test \
test/playwright/e2e/agentos/FleetCockpitDrillNL.spec.mjs \
test/playwright/e2e/agentos/FleetGridKeyboardA11y.spec.mjs \
-c test/playwright/playwright.config.e2e.mjs --workers=1
<h1 class="neo-h1" data-record-id="3">2 failed</h1>
FleetCockpitDrillNL.spec.mjs still clicks .fm-card-avatar. PR #15094 intentionally made each card a non-interactive role=listitem and moved drill activation onto the dedicated native .fm-card-drill Button. The avatar doing nothing is now correct.
FleetGridKeyboardA11y.spec.mjs successfully executes native Enter and Space and renders Bravo, then Charlie. It fails later because it expects a persistent .fm-card-control-status after a successful lifecycle settle. The current lifecycle contract clears pendingAction/controlReason on success, so absence of a persistent status is correct. The test needs deterministic request evidence instead of inferring intent delivery from a state that is intentionally transient.
The prior whole-card restoration experiment is quarantined and must not be revived: it would merge the non-interactive listitem and its three native child Buttons back into competing activation authorities, undoing #14619's accepted semantics.
The Problem
The committed E2E witnesses encode two stale assumptions:
- The old avatar/body click target still owns drill activation.
- A successful lifecycle intent leaves a persistent control-status marker.
Because custom E2E configurations are not hosted-CI gates, these stale witnesses remained red while the production contracts evolved correctly.
The Architectural Reality
AgentCard is a non-interactive role=listitem. The resident name is a dedicated native drill Button (.fm-card-drill) with native Enter/Space semantics; lifecycle toggle/restart are separate sibling Buttons.
AgentCardController.onCardSelect is intentionally scoped to the drill Button. Restoring a card-root click handler would create competing drill/control authority and regress the accessibility topology ratified in #14619 / PR #15094.
- The keyboard witness may execute a lifecycle Button, but it must do so against a deterministic test-owned Fleet bridge. It must prove one minimal request plus no drill leakage without touching a live/shared fleet or relying on transient UI state.
- Whitebox evidence remains Playwright interaction → Neural Link engine truth. No direct controller shortcut may replace the real DOM activation path.
The Fix
- Update
FleetCockpitDrillNL.spec.mjs to click the exact selected card's native .fm-card-drill Button. Keep the exact resident-id possession assertion and update the stale whole-card narrative.
- Make the lifecycle-isolation leg in
FleetGridKeyboardA11y.spec.mjs deterministic: use a test-owned recording/rejecting Fleet bridge, execute the native lifecycle Button, assert exactly one minimal lifecycle request, assert the named rejection/status without a roster refresh, and prove the detail pane remains on Charlie.
- Re-run both scoped Whitebox E2Es together on a clean current-dev baseline.
Contract Ledger
| Target Surface |
Source of Authority |
Required Behavior |
Forbidden Fallback |
Evidence |
| Card→detail drill witness |
#14619 / PR #15094 native Button convergence |
Click the exact resident's .fm-card-drill Button and possess that resident in AgentDetail |
Avatar/body click or direct controller invocation |
FleetCockpitDrillNL.spec.mjs |
| Keyboard drill witness |
#14619 / PR #15094 |
Native Enter + Space drill activation remains executable |
Restoring an interactive card root |
FleetGridKeyboardA11y.spec.mjs |
| Lifecycle isolation witness |
B4÷C2 intent seam + #14619 sibling controls |
Native control activation emits one minimal request and does not drill |
Shared/live fleet mutation; persistent-success-status assumption |
Recording loopback + mounted DOM/Neural Link assertions |
| Production code |
Current AgentCard / AgentCardController |
Remains unchanged unless a new falsifier proves a product defect |
Whole-card listener restoration |
Exact diff + both E2Es green |
Acceptance Criteria
Out of Scope
Restoring whole-card/avatar activation · changing lifecycle product semantics · changing hosted-CI E2E coverage · the broader drill-tour leaf #14613.
Related
Parent surface #14560 · original detail witness #14608 / PR #15063 · successor accessibility authority #14619 / PR #15094 · broader drill journey #14613.
Successor-risk verdict: the ticket goal remains positive-ROI, but the original production-regression premise and unchanged-spec prescription were superseded by #14619. Amended to valid-as-written at this body revision.
Origin Session IDs: 2c0a23e9-f468-4de6-9e29-ddec96103fb4, d99146da-0478-4f23-bc16-dff04f5d650c, 1200dbd1-5159-45be-84c3-b7e323ad4979
Retrieval Hint: "FM cockpit stale drill witness native Button lifecycle status loopback"
Context
The Fleet cockpit has two red Whitebox E2E witnesses on current
dev, but fresh falsification shows that the production card→detail path is not regressed. The ticket's original diagnosis predated the deliberate #14619 / PR #15094 accessibility convergence and therefore prescribed restoring a retired interaction.Clean-current-dev evidence at
5738546bf4(2026-07-16):NEO_E2E_PORT=8212 NEO_TEST_SKIP_CI=true npx playwright test \ test/playwright/e2e/agentos/FleetCockpitDrillNL.spec.mjs \ test/playwright/e2e/agentos/FleetGridKeyboardA11y.spec.mjs \ -c test/playwright/playwright.config.e2e.mjs --workers=1 <h1 class="neo-h1" data-record-id="3">2 failed</h1>FleetCockpitDrillNL.spec.mjsstill clicks.fm-card-avatar. PR #15094 intentionally made each card a non-interactiverole=listitemand moved drill activation onto the dedicated native.fm-card-drillButton. The avatar doing nothing is now correct.FleetGridKeyboardA11y.spec.mjssuccessfully executes native Enter and Space and renders Bravo, then Charlie. It fails later because it expects a persistent.fm-card-control-statusafter a successful lifecycle settle. The current lifecycle contract clearspendingAction/controlReasonon success, so absence of a persistent status is correct. The test needs deterministic request evidence instead of inferring intent delivery from a state that is intentionally transient.The prior whole-card restoration experiment is quarantined and must not be revived: it would merge the non-interactive listitem and its three native child Buttons back into competing activation authorities, undoing #14619's accepted semantics.
The Problem
The committed E2E witnesses encode two stale assumptions:
Because custom E2E configurations are not hosted-CI gates, these stale witnesses remained red while the production contracts evolved correctly.
The Architectural Reality
AgentCardis a non-interactiverole=listitem. The resident name is a dedicated native drillButton(.fm-card-drill) with native Enter/Space semantics; lifecycle toggle/restart are separate sibling Buttons.AgentCardController.onCardSelectis intentionally scoped to the drill Button. Restoring a card-root click handler would create competing drill/control authority and regress the accessibility topology ratified in #14619 / PR #15094.The Fix
FleetCockpitDrillNL.spec.mjsto click the exact selected card's native.fm-card-drillButton. Keep the exact resident-id possession assertion and update the stale whole-card narrative.FleetGridKeyboardA11y.spec.mjsdeterministic: use a test-owned recording/rejecting Fleet bridge, execute the native lifecycle Button, assert exactly one minimal lifecycle request, assert the named rejection/status without a roster refresh, and prove the detail pane remains on Charlie.Contract Ledger
.fm-card-drillButton and possess that resident inAgentDetailFleetCockpitDrillNL.spec.mjsFleetGridKeyboardA11y.spec.mjsAgentCard/AgentCardControllerAcceptance Criteria
FleetCockpitDrillNL.spec.mjspasses by activating the dedicated native drill Button and still proves exact resident possession.FleetGridKeyboardA11y.spec.mjspasses with native Enter/Space, deterministic lifecycle-request evidence, no drill leakage, focus restoration, zero scroll, and zero uncaught page errors.AgentCard,AgentCardController, or Fleet interaction semantics are changed.Out of Scope
Restoring whole-card/avatar activation · changing lifecycle product semantics · changing hosted-CI E2E coverage · the broader drill-tour leaf #14613.
Related
Parent surface #14560 · original detail witness #14608 / PR #15063 · successor accessibility authority #14619 / PR #15094 · broader drill journey #14613.
Successor-risk verdict: the ticket goal remains positive-ROI, but the original production-regression premise and unchanged-spec prescription were superseded by #14619. Amended to
valid-as-writtenat this body revision.Origin Session IDs:
2c0a23e9-f468-4de6-9e29-ddec96103fb4,d99146da-0478-4f23-bc16-dff04f5d650c,1200dbd1-5159-45be-84c3-b7e323ad4979Retrieval Hint: "FM cockpit stale drill witness native Button lifecycle status loopback"