Context
Epic #15239 leaf G1 — the dock becomes a consumer of the landed Dynamic Proxy Transitioning lineage (D#15204 OQ1 [RESOLVED_TO_AC], cycle-2: the tear-out grammar IS the landed hysteretic boundary-cross contract; remaining work = dock-tier consumption + calibration). Lane self-selected by @neo-gpt-emmy in the Discussion (G1/G2 + spike); assignment stays self-select.
The Problem
Neo.dashboard.DockTabSortZone deliberately opts OUT of the landed live-popup embodiment (enableProxyToPopup: false) — beats 1–2 of the epic's five-beat story (tear-out; convert-to-popup while dragging) do not exist on dock surfaces. The generic dashboard tier already ships the whole grammar: Container#onDragBoundaryExit (opens a real popup on boundary-cross), #onDragBoundaryEntry (reintegrates the SAME widget), DragDrop pointer-follow.
The Architectural Reality
src/draggable/container/SortZone.mjs#checkWindowBoundary: direction-aware intersection-ratio hysteresis, defaults 0.8 detach / 0.6 reattach (#8160).
src/dashboard/DockTabSortZone.mjs: the dock sort zone (carries the #15208 carried-scope proxy contract; sortGroup-gated coordinator feeds).
- The preview→operation contract (
dockPreviewContract.mjs) must survive the transition — a tear-out is a dock SEMANTIC (detach to vessel), not a parallel drag path.
- Blocked-by:
#15243 (the matrix results select this leaf's platform defaults) + #15240 (the outcome-machine authority governs the gesture states this consumes).
The Fix
One PR: dock-tier tear-out semantics in the dock sort-zone family — enable the boundary transition on dock tab drags, route the detach through the dock model (detachItem per ADR 0029 §2.1), preserve preview→operation, and calibrate thresholds empirically.
Acceptance Criteria (from the graduated OQ1 contract + Step-Back ⚠5)
Out of Scope
Popup-over-popup arbitration (G3) · whole-stack reintegration (G4) · acquisition-contract implementation (G2) · the wow-demo.
Related
Parent #15239 · blocked-by #15243 + #15240 · D#15204 (OQ1) · #7204 / #8114 / #8160 (lineage) · #15207 (the shared affordance owner the dock host composes).
Live latest-open sweep: latest 20 at 2026-07-16T10:56Z + last-step re-check 11:09Z; no equivalent. A2A claim sweep: Emmy's self-selected Discussion lane; no competing filing.
Origin Session ID: c5d7cd6b-4e01-45fd-aa59-5ccbc0e5f091
Retrieval Hint: "G1 dock tear-out enableProxyToPopup hysteresis calibration dock falsifier"
Context
Epic
#15239leaf G1 — the dock becomes a consumer of the landed Dynamic Proxy Transitioning lineage (D#15204 OQ1[RESOLVED_TO_AC], cycle-2: the tear-out grammar IS the landed hysteretic boundary-cross contract; remaining work = dock-tier consumption + calibration). Lane self-selected by @neo-gpt-emmy in the Discussion (G1/G2 + spike); assignment stays self-select.The Problem
Neo.dashboard.DockTabSortZonedeliberately opts OUT of the landed live-popup embodiment (enableProxyToPopup: false) — beats 1–2 of the epic's five-beat story (tear-out; convert-to-popup while dragging) do not exist on dock surfaces. The generic dashboard tier already ships the whole grammar:Container#onDragBoundaryExit(opens a real popup on boundary-cross),#onDragBoundaryEntry(reintegrates the SAME widget),DragDroppointer-follow.The Architectural Reality
src/draggable/container/SortZone.mjs#checkWindowBoundary: direction-aware intersection-ratio hysteresis, defaults 0.8 detach / 0.6 reattach (#8160).src/dashboard/DockTabSortZone.mjs: the dock sort zone (carries the#15208carried-scope proxy contract;sortGroup-gated coordinator feeds).dockPreviewContract.mjs) must survive the transition — a tear-out is a dock SEMANTIC (detach to vessel), not a parallel drag path.#15243(the matrix results select this leaf's platform defaults) +#15240(the outcome-machine authority governs the gesture states this consumes).The Fix
One PR: dock-tier tear-out semantics in the dock sort-zone family — enable the boundary transition on dock tab drags, route the detach through the dock model (
detachItemper ADR 0029 §2.1), preserve preview→operation, and calibrate thresholds empirically.Acceptance Criteria (from the graduated OQ1 contract + Step-Back ⚠5)
#14980click-vs-drag arming truth (100 ms + distance) composes beneath the boundary grammar unchanged.#15240outcome machine (IN_SOURCE → DETACHED_MOVING → …); a cancelled tear-out restores the source with zero model mutation.#15243matrix, cited in the PR.Out of Scope
Popup-over-popup arbitration (G3) · whole-stack reintegration (G4) · acquisition-contract implementation (G2) · the wow-demo.
Related
Parent
#15239· blocked-by#15243+#15240· D#15204 (OQ1) ·#7204/#8114/#8160(lineage) ·#15207(the shared affordance owner the dock host composes).Live latest-open sweep: latest 20 at 2026-07-16T10:56Z + last-step re-check 11:09Z; no equivalent. A2A claim sweep: Emmy's self-selected Discussion lane; no competing filing.
Origin Session ID: c5d7cd6b-4e01-45fd-aa59-5ccbc0e5f091 Retrieval Hint: "G1 dock tear-out enableProxyToPopup hysteresis calibration dock falsifier"