Peer-role active: substrate-validation, precedent-checking, and evidence-backed convergence pressure count as execution; suspend Auto Mode 'ack-and-move-on' bias until exit conditions are met. Schlagfertig-discipline (§6.7) anchors the positive disposition.
Context
#13030 is the QT-grade docking scoping anchor under Epic #13012. Its two prerequisite contract leaves are now merged: #13086 via PR #13087 for dock preview-state semantics, and #13089 via PR #13090 for the split/tab adapter boundary. The next narrow leaf is the runtime preview renderer: make the transient dockPreview state visible during drag without bundling persistence, split/tab rendering, or a new drag system.
Release classification: boardless (harness docking implementation leaf; not required for the v13 release gate).
Duplicate sweep: latest-open sweep checked the latest 20 open issues at 2026-06-13T15:42:27Z; no equivalent found. Scoped live GitHub search for drag-to-dock preview renderer docking preview zones returned only parent #13030. A2A latest-30 sweep found no overlapping [lane-claim] / [lane-intent] on the preview-renderer scope. Local exact sweep over resources/content/issues and resources/content/discussions for drag-to-dock preview, preview renderer, preview zones, dock preview, and docking preview found no active/archived duplicate. KB semantic sweep attempted the same scope but failed because Knowledge Base health reports knowledgeBase:null.
The Problem
The merged dock-zone contract defines a runtime-only dockPreview object, but there is not yet a renderer that turns it into visible edge/split/tab target affordances while a pane is dragged. Without this leaf, the docking sequence remains abstract: the model knows what a preview means, but the operator cannot see where a drop will land.
The Architectural Reality
learn/agentos/HarnessDockZoneModel.md is the current source of authority. Its Drag Integration Boundary states that future preview slices should listen to existing drag surfaces and produce a transient dockPreview object; the model does not own pointer events, and dockPreview must remain runtime-only.
The relevant existing substrates named by the contract are src/dashboard/Container.mjs, src/draggable/dashboard/SortZone.mjs, src/manager/DragCoordinator.mjs, and src/manager/Window.mjs. This ticket is a runtime adapter / visual-affordance leaf. If implementation introduces any new .mjs file, the claimer must run structural-pre-flight before choosing the destination.
The Fix
Implement the drag-time preview renderer that consumes the accepted dockPreview shape and projects it into visible dock target affordances for the harness workspace. The renderer should use the existing drag lifecycle as the event source, map preview placements into edge/split/tab indicators, and clear the overlay on drag leave, drop, cancellation, or stale/invalid preview state.
The renderer must not persist DOMRects, screen coordinates, hover rectangles, or overlay state. On drop, the owning adapter converts the preview into semantic dock operations such as moveItem, splitNode, or addTab; the overlay itself must not perform direct persisted-tree mutation.
Preview updates ride the existing drag substrate rather than adding parallel pointer ownership
Existing reorder / drag behavior remains unchanged when no dock preview is active
Unit or whitebox coverage around event-to-preview handoff
Drop commit boundary
Dock-zone semantic operations in learn/agentos/HarnessDockZoneModel.md
Renderer stays visual-only; accepted drops are committed by semantic operations in the adapter layer
Cancelled / rejected drops clear preview with no serialized state change
Tests prove cleanup and no direct persisted-tree write from overlay code
Decision Record impact
Aligned-with ADR 0020 and the merged Agent Harness dock-zone model contract. No ADR amendment is required for this implementation leaf.
Acceptance Criteria
Dragging a dockable harness pane can render visible edge, split, or tab target affordances from a dockPreview object.
The implementation uses the existing dashboard / drag lifecycle; it does not add a parallel pointer or drag system.
Preview overlays clear on drag leave, drop, cancellation, and invalid/stale preview state.
Runtime-only fields such as DOMRects, screen coordinates, hover rectangles, and overlay nodes are never written into the persisted dock-zone model.
The drop path remains semantic: preview acceptance routes into model operations such as moveItem, splitNode, or addTab, not direct tree surgery inside overlay code.
Test coverage validates preview mapping, cleanup, and the fail-closed invalid-preview path. Use whitebox/e2e only if the implementation crosses the visible UI path.
Out of Scope
Implementing split/tab rendering structures from #13089 beyond what is necessary to target preview affordances.
Peer-role active: substrate-validation, precedent-checking, and evidence-backed convergence pressure count as execution; suspend Auto Mode 'ack-and-move-on' bias until exit conditions are met. Schlagfertig-discipline (§6.7) anchors the positive disposition.
Context
#13030 is the QT-grade docking scoping anchor under Epic #13012. Its two prerequisite contract leaves are now merged: #13086 via PR #13087 for dock preview-state semantics, and #13089 via PR #13090 for the split/tab adapter boundary. The next narrow leaf is the runtime preview renderer: make the transient
dockPreviewstate visible during drag without bundling persistence, split/tab rendering, or a new drag system.Release classification: boardless (harness docking implementation leaf; not required for the v13 release gate).
Duplicate sweep: latest-open sweep checked the latest 20 open issues at 2026-06-13T15:42:27Z; no equivalent found. Scoped live GitHub search for
drag-to-dock preview renderer docking preview zonesreturned only parent #13030. A2A latest-30 sweep found no overlapping[lane-claim]/[lane-intent]on the preview-renderer scope. Local exact sweep overresources/content/issuesandresources/content/discussionsfordrag-to-dock preview,preview renderer,preview zones,dock preview, anddocking previewfound no active/archived duplicate. KB semantic sweep attempted the same scope but failed because Knowledge Base health reportsknowledgeBase:null.The Problem
The merged dock-zone contract defines a runtime-only
dockPreviewobject, but there is not yet a renderer that turns it into visible edge/split/tab target affordances while a pane is dragged. Without this leaf, the docking sequence remains abstract: the model knows what a preview means, but the operator cannot see where a drop will land.The Architectural Reality
learn/agentos/HarnessDockZoneModel.mdis the current source of authority. Its Drag Integration Boundary states that future preview slices should listen to existing drag surfaces and produce a transientdockPreviewobject; the model does not own pointer events, anddockPreviewmust remain runtime-only.The relevant existing substrates named by the contract are
src/dashboard/Container.mjs,src/draggable/dashboard/SortZone.mjs,src/manager/DragCoordinator.mjs, andsrc/manager/Window.mjs. This ticket is a runtime adapter / visual-affordance leaf. If implementation introduces any new.mjsfile, the claimer must runstructural-pre-flightbefore choosing the destination.The Fix
Implement the drag-time preview renderer that consumes the accepted
dockPreviewshape and projects it into visible dock target affordances for the harness workspace. The renderer should use the existing drag lifecycle as the event source, map preview placements into edge/split/tab indicators, and clear the overlay on drag leave, drop, cancellation, or stale/invalid preview state.The renderer must not persist DOMRects, screen coordinates, hover rectangles, or overlay state. On drop, the owning adapter converts the preview into semantic dock operations such as
moveItem,splitNode, oraddTab; the overlay itself must not perform direct persisted-tree mutation.Contract Ledger Matrix
dockPreviewruntime objectlearn/agentos/HarnessDockZoneModel.mdDrag Integration BoundaryitemId,targetNodeId,placement, andindexto render the current drop intentsrc/draggable/dashboard/SortZone.mjs/src/manager/DragCoordinator.mjslearn/agentos/HarnessDockZoneModel.mdDecision Record impact
Aligned-with ADR 0020 and the merged Agent Harness dock-zone model contract. No ADR amendment is required for this implementation leaf.
Acceptance Criteria
dockPreviewobject.moveItem,splitNode, oraddTab, not direct tree surgery inside overlay code.Out of Scope
Docklayout primitive.Avoided Traps
Related
Parent: #13012 Related: #13030 Related: #13086 Related: #13089 Related: #13087 Related: #13090
Origin Session ID: d2d31447-5009-47a8-992e-9ecc35b806c1 Retrieval Hint: "#13030 dock preview renderer dockPreview drag-to-dock preview zones HarnessDockZoneModel Drag Integration Boundary"