Context
The FleetSettingsPanel retirement (#15242 completion) removed the two panel-path lifecycle NL tests with their subject — they drove the retired panel's Start/Stop/Restart against the AgentDefinitions store, a path that no longer exists. The REMAINING lifecycle UI — the card controls (B4: control-toggle/control-restart → lifecycleIntent → the C2 fleetLifecycleIntentAdapter → the bridge — onto the FLEET ROSTER records) has unit coverage from its own lanes but no e2e witness against a live authenticated bridge. That is new work this ticket owns, not lost coverage: the card path was never e2e-witnessed.
The Fix
One NL e2e spec (test/playwright/e2e/agentos/ — the AddAgentJourneyNL harness pattern):
- Recording loopback bridge via
authenticatedFleetHarness whose roster verb (fleetRoster) returns ONE row with lifecycle.state: 'off' and wired runtime sources (the card gates its controls on sources.runtime.state === 'wired' — an unwired row renders disabled controls and the test dies honestly).
- Boot with
fleetUrl → wireAuthenticatedFleetBridge → the cockpit renders the card → click the card's control-toggle (play) → assert: exactly one minimal startAgent wire call (agent-id string, no credential bytes — the retired tests' expectMinimalLifecyclePayload contract carries over), the roster record's pendingAction/state transition, and the honest outcome render.
- The rejected path:
rejectStart → the card's control-status renders ⚠ rejected: <reason> with retry open, record untouched (the applyRecord matrix's terminal-kind contract).
Acceptance Criteria
Related
#15242 (the retirement that re-homed this) · the C2 adapter lane (fleetLifecycleIntentAdapter) · AddAgentJourneyNL.spec.mjs (the harness pattern) · CARD-CONTRACT.md §controls.
Live latest-open sweep: checked latest open at 2026-07-18T06:47Z; no equivalent (the retired spec was the only lifecycle NL surface). A2A in-flight: no claim; #15242 is my lane and this is its named follow-up.
Decision Record impact: none.
Origin Session ID: 2dcbf336-4338-4009-82f3-79f1b1d151f1
Retrieval Hint: "card lifecycle NL e2e control-toggle minimal startAgent wire fleetRoster wired sources"
Context
The FleetSettingsPanel retirement (#15242 completion) removed the two panel-path lifecycle NL tests with their subject — they drove the retired panel's Start/Stop/Restart against the AgentDefinitions store, a path that no longer exists. The REMAINING lifecycle UI — the card controls (B4:
control-toggle/control-restart→lifecycleIntent→ the C2fleetLifecycleIntentAdapter→ the bridge — onto the FLEET ROSTER records) has unit coverage from its own lanes but no e2e witness against a live authenticated bridge. That is new work this ticket owns, not lost coverage: the card path was never e2e-witnessed.The Fix
One NL e2e spec (
test/playwright/e2e/agentos/— theAddAgentJourneyNLharness pattern):authenticatedFleetHarnesswhose roster verb (fleetRoster) returns ONE row withlifecycle.state: 'off'and wired runtime sources (the card gates its controls onsources.runtime.state === 'wired'— an unwired row renders disabled controls and the test dies honestly).fleetUrl→wireAuthenticatedFleetBridge→ the cockpit renders the card → click the card's control-toggle (play) → assert: exactly one minimalstartAgentwire call (agent-id string, no credential bytes — the retired tests'expectMinimalLifecyclePayloadcontract carries over), the roster record'spendingAction/state transition, and the honest outcome render.rejectStart→ the card'scontrol-statusrenders⚠ rejected: <reason>with retry open, record untouched (the applyRecord matrix's terminal-kind contract).Acceptance Criteria
startAgenton the wire → roster state lands from the response.Related
#15242 (the retirement that re-homed this) · the C2 adapter lane (
fleetLifecycleIntentAdapter) ·AddAgentJourneyNL.spec.mjs(the harness pattern) · CARD-CONTRACT.md §controls.Live latest-open sweep: checked latest open at 2026-07-18T06:47Z; no equivalent (the retired spec was the only lifecycle NL surface). A2A in-flight: no claim; #15242 is my lane and this is its named follow-up.
Decision Record impact:
none.Origin Session ID:
2dcbf336-4338-4009-82f3-79f1b1d151f1Retrieval Hint:
"card lifecycle NL e2e control-toggle minimal startAgent wire fleetRoster wired sources"