Context
Split from #14866 (design/scope split surfaced in PR #14880 review). The producer (compute half — Neo.dashboard.DockPreviewProducer, pure (pointer, zone rects) → dockPreview.v1, config-tunable, unit-pinned to DockPreview.isValidPreview) landed as the narrowed #14866 via PR #14880. This ticket is the browser-gated integration — the part that cannot be verified in a headless sandbox.
The Problem
The producer exists and is unit-green, but nothing wires it into the live drag lifecycle yet: MainContainer.onDockCrossZoneDrop still commits a direct moveItem from the hit-test, AgentOS.view.DockPreview (the renderer) is wired nowhere, and there is no drag-time visual affordance.
The Architectural Reality
src/dashboard/CrossWindowDragTarget.mjs exposes the previewFor / hitTest owner seams the producer instance plugs into (the adapter supplies zones: [{nodeId, rect, orientation}] from the rendered dockSplitOrientation).
apps/agentos/view/DockPreview.mjs (landed) consumes a dockPreview.v1 and renders the affordance; previewToOperation() → DockZoneModel.applyOperation() is the landed commit path.
The Fix
- Wire a
DockPreviewProducer instance into CrossWindowDragTarget.previewFor / hitTest (adapter supplies zone rects).
- Feed the produced
dockPreview to DockPreview to render the transient affordance during a live drag; clear fail-closed on rejected.
- Replace the direct-
moveItem shortcut in onDockCrossZoneDrop with previewToOperation → applyDockZoneOperation.
- Add an
edge/split case to the DockCrossZoneDragNL whitebox e2e.
Acceptance Criteria
Out of Scope
The producer itself (delivered — #14866 / PR #14880) · cross-window transfer (#14769) · grouped-node drag (#14770).
Related
Parent #13158 · blocked-by #14866 (producer) · consumer apps/agentos/view/DockPreview.mjs · seam src/dashboard/CrossWindowDragTarget.mjs · authority ADR 0029 §2.3/§2.6.
Live latest-open sweep: checked recent open issues 2026-07-06; no equivalent (#14769 is cross-window transfer, #14779 is transition animation — both distinct). A2A clean.
Handoff Retrieval Hints
query_summaries("dockPreview producer wiring previewFor render affordance drop-routing e2e") · PR #14880 · src/dashboard/DockPreviewProducer.mjs
Context
Split from #14866 (design/scope split surfaced in PR #14880 review). The producer (compute half —
Neo.dashboard.DockPreviewProducer, pure(pointer, zone rects) → dockPreview.v1, config-tunable, unit-pinned toDockPreview.isValidPreview) landed as the narrowed #14866 via PR #14880. This ticket is the browser-gated integration — the part that cannot be verified in a headless sandbox.The Problem
The producer exists and is unit-green, but nothing wires it into the live drag lifecycle yet:
MainContainer.onDockCrossZoneDropstill commits a directmoveItemfrom the hit-test,AgentOS.view.DockPreview(the renderer) is wired nowhere, and there is no drag-time visual affordance.The Architectural Reality
src/dashboard/CrossWindowDragTarget.mjsexposes thepreviewFor/hitTestowner seams the producer instance plugs into (the adapter supplieszones: [{nodeId, rect, orientation}]from the rendereddockSplitOrientation).apps/agentos/view/DockPreview.mjs(landed) consumes adockPreview.v1and renders the affordance;previewToOperation()→DockZoneModel.applyOperation()is the landed commit path.The Fix
DockPreviewProducerinstance intoCrossWindowDragTarget.previewFor/hitTest(adapter supplies zone rects).dockPreviewtoDockPreviewto render the transient affordance during a live drag; clear fail-closed onrejected.moveItemshortcut inonDockCrossZoneDropwithpreviewToOperation→applyDockZoneOperation.edge/splitcase to theDockCrossZoneDragNLwhitebox e2e.Acceptance Criteria
DockPreviewrenders the affordance during a live drag (hover band/guide), cleared fail-closed on arejectedplacement.previewToOperation→applyDockZoneOperation(direct-moveItemshortcut retired).DockCrossZoneDragNLe2e stays green and gains an edge/split case.Out of Scope
The producer itself (delivered — #14866 / PR #14880) · cross-window transfer (#14769) · grouped-node drag (#14770).
Related
Parent #13158 · blocked-by #14866 (producer) · consumer
apps/agentos/view/DockPreview.mjs· seamsrc/dashboard/CrossWindowDragTarget.mjs· authority ADR 0029 §2.3/§2.6.Live latest-open sweep: checked recent open issues 2026-07-06; no equivalent (
#14769is cross-window transfer,#14779is transition animation — both distinct). A2A clean.Handoff Retrieval Hints
query_summaries("dockPreview producer wiring previewFor render affordance drop-routing e2e")· PR #14880 ·src/dashboard/DockPreviewProducer.mjs