Context
Operator verdict (2026-07-18): the real AgentOS Fleet Manager is a product surface, not a demo launcher. It must not render a Play tour control or carry demo choreography as ordinary product UI.
The regression arrived with #14646 / PR #15479. That demo leaf correctly shipped a deterministic screenplay, e2e replay, and recording path, but it made the production FleetCockpit the tour host.
Live latest-open sweep: checked the latest 20 open issues at 2026-07-18T20:54:06.598Z; targeted open-ticket and recent A2A claim sweeps found no equivalent correction lane.
The Problem
apps/agentos/view/fleet/FleetCockpit.mjs currently:
- imports
TourRunner plus the fusion and mission-control demo scripts;
- owns demo-only runner/report/cue state and synthetic activity injection;
- renders a tour caption strip; and
- renders an operator-facing Play tour button in the real Fleet Manager control bar.
That collapses two different products into one surface. The production cockpit should manage a real fleet. Demo choreography should prove and present that product from a dedicated demo/witness host.
Memory Core prior art records the causal choice as “the cockpit hosts the tour” (session 64f444d3-1042-4091-a56f-08332b6cc7a2). This ticket reverses that ownership decision while preserving the valuable screenplay and falsifiers.
The Architectural Reality
FleetCockpit is the real AgentOS product module governed by #14560.
- Dedicated tour hosts already exist at
apps/agentos/childapps/dockdemo/view/DemoAWorkspace.mjs and DemoBWorkspace.mjs; both own TourRunner, their play controls, captions, and demo-only cue handling.
apps/agentos/childapps/dockdemo/view/Viewport.mjs already selects isolated demo workspaces by ?demo= mode.
apps/agentos/tour/missionControlWalkthrough.mjs is reusable screenplay content. The real Fleet Manager must be composed by a demo host, never forked or polluted with demo UI.
Structural pre-flight: matched sibling fast path — add a third dockdemo workspace/mode beside Demo A/B, or an equivalently bounded demo-only host under that existing childapp subtree. Do not invent a second AgentOS product app.
The Fix
- Remove every tour-only import, state field, control, caption, synthetic event producer, and playback method from production
FleetCockpit.
- Move the fusion/walkthrough hosting contract into the dedicated dockdemo childapp as a sibling-pattern composition over the real Fleet cockpit module.
- Route recording and whitebox e2e playback through that demo-only host.
- Add a negative product witness proving the real Fleet Manager has no tour affordance or demo dependency.
Contract Ledger
| Target surface |
Source of authority |
Proposed behavior |
Fallback |
Docs |
Evidence |
Production FleetCockpit |
#14560 + operator verdict |
Real fleet controls and real data only; no tour imports, state, captions, buttons, or synthetic demo events |
none |
class JSDoc names product-only boundary |
unit/static dependency guard + live product render |
| Dockdemo mission-control host |
#14646 / PR #15479 + Demo A/B precedent |
Composes the real Fleet cockpit and owns playback UI, TourRunner, captions, and demo cues |
fail closed when the real cockpit target is absent |
dockdemo README names the mode |
deterministic two-run whitebox replay |
| Recording/e2e entry |
mission-control screenplay |
Addresses the demo host, never the production cockpit |
no implicit product fallback |
e2e header |
identical beat logs + zero product-surface demo controls |
Decision Record impact
None. This restores the accepted keeper-vs-proof and product-vs-demo ownership boundary; it does not change the Fleet Manager, docking, or TourRunner contracts.
Acceptance Criteria
Out of Scope
- Deleting or weakening the tour scripts,
TourRunner, recording path, or their falsifiers.
- Forking a mock Fleet Manager for the demo.
- The rejected AgentCard visual design; that remains a separate design-conformance correction under #14805.
- Docking-engine changes.
Avoided Traps
- CSS-hide or runtime flag inside the product class — demo code would still be product-owned.
- Delete the button but leave the demo machinery in
FleetCockpit — fixes the screenshot, not the boundary.
- Copy the cockpit into a demo — guarantees product/demo drift.
- Remove the demo to protect the product — destroys valuable proof instead of assigning it to the correct host.
Related
Parent: #14560
Product definition: #13448
Regression source: #14646 / PR #15479
Design-conformance sibling: #14805
Origin Session ID: ad71d4c3-3e37-4a17-8df7-8415509def84
Retrieval Hint: Fleet Manager production cockpit Play tour demo host missionControlWalkthrough PR 15479
Context
Operator verdict (2026-07-18): the real AgentOS Fleet Manager is a product surface, not a demo launcher. It must not render a Play tour control or carry demo choreography as ordinary product UI.
The regression arrived with #14646 / PR #15479. That demo leaf correctly shipped a deterministic screenplay, e2e replay, and recording path, but it made the production
FleetCockpitthe tour host.Live latest-open sweep: checked the latest 20 open issues at 2026-07-18T20:54:06.598Z; targeted open-ticket and recent A2A claim sweeps found no equivalent correction lane.
The Problem
apps/agentos/view/fleet/FleetCockpit.mjscurrently:TourRunnerplus the fusion and mission-control demo scripts;That collapses two different products into one surface. The production cockpit should manage a real fleet. Demo choreography should prove and present that product from a dedicated demo/witness host.
Memory Core prior art records the causal choice as “the cockpit hosts the tour” (session
64f444d3-1042-4091-a56f-08332b6cc7a2). This ticket reverses that ownership decision while preserving the valuable screenplay and falsifiers.The Architectural Reality
FleetCockpitis the real AgentOS product module governed by #14560.apps/agentos/childapps/dockdemo/view/DemoAWorkspace.mjsandDemoBWorkspace.mjs; both ownTourRunner, their play controls, captions, and demo-only cue handling.apps/agentos/childapps/dockdemo/view/Viewport.mjsalready selects isolated demo workspaces by?demo=mode.apps/agentos/tour/missionControlWalkthrough.mjsis reusable screenplay content. The real Fleet Manager must be composed by a demo host, never forked or polluted with demo UI.Structural pre-flight: matched sibling fast path — add a third dockdemo workspace/mode beside Demo A/B, or an equivalently bounded demo-only host under that existing childapp subtree. Do not invent a second AgentOS product app.
The Fix
FleetCockpit.Contract Ledger
FleetCockpitTourRunner, captions, and demo cuesDecision Record impact
None. This restores the accepted keeper-vs-proof and product-vs-demo ownership boundary; it does not change the Fleet Manager, docking, or TourRunner contracts.
Acceptance Criteria
FleetCockpitimports noTourRunnerand no demo screenplay; it contains no demo-only state or synthetic event injection.Out of Scope
TourRunner, recording path, or their falsifiers.Avoided Traps
FleetCockpit— fixes the screenshot, not the boundary.Related
Parent: #14560
Product definition: #13448
Regression source: #14646 / PR #15479
Design-conformance sibling: #14805
Origin Session ID: ad71d4c3-3e37-4a17-8df7-8415509def84
Retrieval Hint:
Fleet Manager production cockpit Play tour demo host missionControlWalkthrough PR 15479