Context
Exact-head review of PR #15004 found that its Fleet / Focus / Review preset layer is independently complete, but its state-continuity interpretation cannot honestly close #14616: ADR 0029 section 2.6 and that ticket require stable component references to resolve to the same live pane instances across projection.
This ticket is the narrow close target for the valuable layer PR #15004 actually delivers, so the live-instance remainder stays owned and visible on #14616 instead of forcing a broad code rewrite into the current review cycle.
The Problem
Fleet Manager operators need named duty layouts without manually reconstructing the cockpit. The useful first layer is state-backed preset switching:
- three seeded duty layouts;
- restoration through the landed
DockPerspectiveStore;
- the normal committed-document and FLIP refresh path;
- owner-held pane state preserved across projection;
- visible fail-closed refusal;
- Neural Link activation.
That behavior is real even though the current projection still recreates pane component instances.
The Architectural Reality
DockPerspectiveStore is the saved-layout source of authority.
FleetCockpit.activatePerspective() must use the same document-commit loop as every dock operation.
- Owner state continuity and live instance identity are distinct contracts. This ticket accepts the former only; #14616 retains the latter.
- Unknown or invalid names must leave the committed document byte-identical and render the refusal.
- Window-topology reconciliation and CRUD management UI are separate consumers.
The Fix
- Seed Fleet / Focus / Review as valid window-scope layouts in one perspective store.
- Render the preset controls from store state and track the active layout.
- Restore through the standard committed-document loop, inheriting FLIP and reduced-motion behavior.
- Preserve owner-held Fleet grid/stream state and the provider-owned roster store.
- Expose
activatePerspective through the existing Neural Link surface.
- Render failed activation visibly while leaving worker truth untouched.
Contract Ledger
| Surface |
Source of authority |
Accepted behavior |
Fail-closed behavior |
Evidence |
FleetCockpit.activatePerspective(name) |
DockPerspectiveStore |
restores Fleet / Focus / Review through the standard document commit loop |
unknown or invalid name leaves the current document byte-identical and records a visible error |
focused unit + mounted ghost refusal |
| preset bar |
perspective-store list + active id |
buttons derive from stored records and pressed state follows the active record |
no hardcoded shadow state |
focused unit + cockpit journey |
| pane data continuity |
Fleet cockpit owner fields + provider-owned roster store |
grid adapter state and activity events survive the switch |
no claim of component-instance identity |
continuity fixture |
| Neural Link activation |
registered cockpit surface |
Review / Fleet can be activated and worker truth read back |
the same refusal contract applies |
AgentOS E2E journey |
Acceptance Criteria
Out of Scope
- Live pane instance preservation across perspective switches; that remains the explicit #14616 remainder.
- Changed-topology reconciliation.
- Save-current / rename / delete management UI.
- Resolving the pre-existing VDOM reply wedge tracked by #14985.
Evidence
PR #15004 exact head 5c7fcd5800321c450833371786b598755239a11f:
- hosted CI: 11/11 green;
- touched focused unit: 10/10 green;
- new perspective E2E: green;
- mounted Ghost refusal chip: visibly rendered;
- direct live identity probe separately proved the intentionally excluded #14616 remainder.
Related
Parent epic: #14560
Origin ticket / live-instance remainder: #14616
Implementation: PR #15004
Authority: ADR 0029 section 2.6
Known render-refresh wedge: #14985
Origin Session ID: 019f484c-662f-7f31-969a-cbde373efd4a
Context
Exact-head review of PR #15004 found that its Fleet / Focus / Review preset layer is independently complete, but its state-continuity interpretation cannot honestly close #14616: ADR 0029 section 2.6 and that ticket require stable component references to resolve to the same live pane instances across projection.
This ticket is the narrow close target for the valuable layer PR #15004 actually delivers, so the live-instance remainder stays owned and visible on #14616 instead of forcing a broad code rewrite into the current review cycle.
The Problem
Fleet Manager operators need named duty layouts without manually reconstructing the cockpit. The useful first layer is state-backed preset switching:
DockPerspectiveStore;That behavior is real even though the current projection still recreates pane component instances.
The Architectural Reality
DockPerspectiveStoreis the saved-layout source of authority.FleetCockpit.activatePerspective()must use the same document-commit loop as every dock operation.The Fix
activatePerspectivethrough the existing Neural Link surface.Contract Ledger
FleetCockpit.activatePerspective(name)DockPerspectiveStoreAcceptance Criteria
DockPerspectiveStore.Out of Scope
Evidence
PR #15004 exact head
5c7fcd5800321c450833371786b598755239a11f:Related
Parent epic: #14560 Origin ticket / live-instance remainder: #14616 Implementation: PR #15004 Authority: ADR 0029 section 2.6 Known render-refresh wedge: #14985
Origin Session ID: 019f484c-662f-7f31-969a-cbde373efd4a