Phase-1 leaf of #15614 (operator-directed decomposition of the 4803-line DemoBWorkspace.mjs). Filed at PR time as the honest close target: #15614 spans four phases and stays open; this leaf is exactly the staging-seam extraction delivered by the linked PR. Mirrors the #15551/#15243 child-precedent (per-deliverable leaves under a long-lived parent).
Live latest-open sweep: checked latest 5 open issues at 2026-07-20T18:25Z; no equivalent. A2A in-flight sweep: only my own #15614 lane claims.
The Problem
Phase-1 scope per #15614: the cross-window staging choreography — staging/mount/participation/geometry/positioning, whole-stack return, and the adopt/reconcile commit core (~500 lines) — lived inline in DemoBWorkspace.mjs (responsibilities 3+5+9 of the parent's responsibility map).
The Fix
Extract into apps/agentos/childapps/dockdemo/view/DemoBCrossWindowStage.mjs: a createCrossWindowStage(seams) factory over host-injected seams (the createDockTearOutHandlers precedent). Stage STATE stays host-owned — the unit spec's stage doubles write crossWindowTargetWindowId and call crossWindowStageResolve directly, making those fields the workspace's public stage contract. Nine spec-stable facades delegate from the workspace.
Context
Phase-1 leaf of #15614 (operator-directed decomposition of the 4803-line
DemoBWorkspace.mjs). Filed at PR time as the honest close target: #15614 spans four phases and stays open; this leaf is exactly the staging-seam extraction delivered by the linked PR. Mirrors the #15551/#15243 child-precedent (per-deliverable leaves under a long-lived parent).Live latest-open sweep: checked latest 5 open issues at 2026-07-20T18:25Z; no equivalent. A2A in-flight sweep: only my own #15614 lane claims.
The Problem
Phase-1 scope per #15614: the cross-window staging choreography — staging/mount/participation/geometry/positioning, whole-stack return, and the adopt/reconcile commit core (~500 lines) — lived inline in
DemoBWorkspace.mjs(responsibilities 3+5+9 of the parent's responsibility map).The Fix
Extract into
apps/agentos/childapps/dockdemo/view/DemoBCrossWindowStage.mjs: acreateCrossWindowStage(seams)factory over host-injected seams (thecreateDockTearOutHandlersprecedent). Stage STATE stays host-owned — the unit spec's stage doubles writecrossWindowTargetWindowIdand callcrossWindowStageResolvedirectly, making those fields the workspace's public stage contract. Nine spec-stable facades delegate from the workspace.Acceptance Criteria
openCrossWindowStage,mountCrossWindowTarget,adoptCommittedTransferPair,reconcileTransferPair,retireReturnedPopupWorkspace,commitWholeStackReturn,positionCrossWindowStage,measureWorkspaceGeometry,waitForWorkspaceGeometryDemoBWorkspace.spec.mjs47/47 green;TourRunner.spec.mjs34/34 green; full unit suite greenDemoBCrossWindowDragNL,DemoBVesselConversionNL,TearOutMatrixRows4To7NL,FleetPermanenceMatrixRow4NLsrc/dashboard/protocol changes; zero behavior changeOut of Scope
demo-b-popup-2parameterization (#15591's implementation — lands next, ON this seam).Related
#15614 (parent design authority) · #15591 (consumer of the extracted seam) · #15243 (matrix lane) · PR #15465 (G3 protocol, untouched)
Origin Session ID: dafc83a2-223d-4309-8298-e95f26bca960
Retrieval Hint:
Demo-B cross-window stage extraction DemoBCrossWindowStage createCrossWindowStage facades phase 1