Context
#19538 retires the worker-side pointer-path vessel conversion and park (docking design record §2.8.6, amended for #19533: a pointer drag never parks). Its PR also removes the last worker callers of the main-thread DragDrop addon's park surface:
- the pointer park called
parkWindowDrag;
- the native re-show (
NativeVesselTransaction.effectsFor().reshowVessel) asked resumeWindowDrag and the orphan-recovery probe and acknowledgement before the route move. Only a parked pointer drag could ever answer them, so they always fell through.
Once #19538 merges, that surface in src/main/addon/DragDrop.mjs has no caller.
The Problem
About 965 lines of main-thread code still read as live:
src/main/addon/DragDrop.mjs lines 1069–2034 at 5698517f19;
- the park helpers at lines 490–558;
- the parked branches of the kept methods.
Every reader of the addon has to reason about a parked window drag, its recovery and its orphan-recovery serialization. test/playwright/unit/main/addon/DragDrop.spec.mjs keeps 104 references pinning that machinery. The addon is also the file-size ratchet's over-target entry (1,294 code lines).
The Architectural Reality
Caller census (grep over src, apps, examples on the #19538 branch). The worker-side resumeWindowDrag methods of TabSortZone, the dashboard Container and DragTarget are SortZone hooks, not this addon method.
| Addon member |
Reached from |
Remote parkWindowDrag, resumeWindowDrag, hasWindowDragOrphanRecovery, acknowledgeWindowDragOrphanRecovery, retireWindowDragOrphanRecovery |
Nothing |
recoverInvalidatedWindowDragPark, retryWindowDragParkRecovery, retainWindowDragOrphanRecovery, retryWindowDragOrphanRecovery, cleanupRetiredWindowDragOrphanRecovery, releaseWindowDragRouteOperation |
Only the members above |
promoteWindowDragParkRecovery |
Kept resetDragState and startWindowDrag, guarded by park state that only parkWindowDrag writes |
windowDragParked, windowDragParkedGeometry, windowDragParkRoute, windowDragParkRecovery, the orphan-recovery map |
State written only by the park path. onDragMove's !me.windowDragParked branch is always taken. |
The PR re-proves each row against its own head before deleting it.
The Fix
- Delete the parked-window-drag surface from the addon: its remote-method registrations, the state fields, and the parked branches of
resetDragState, startWindowDrag and onDragMove.
- Delete the
DragDrop.spec arms that pin it.
- Lower
buildScripts/util/file-size-baseline.json with the shrink.
Kept: pointer-follow (startWindowDrag, the window branch of onDragMove), setConfigs, and everything the in-window and tear-out drags use. No behaviour change, because nothing reaches the surface.
Decision Record impact: aligned-with ADR 0029 §2.8.6 (#19533 amendment), whose pointer-path park text is already history.
Acceptance Criteria
Out of Scope
- Any behaviour change.
- The worker-side dock (#19538).
- The native title-bar park (worker-side, kept).
- The class shape of the dock collaborators (#19540).
Related
- #19538: removes the last callers; this ticket is blocked by its merge, because on
dev NativeVesselTransaction still calls resumeWindowDrag.
- #19540: class conversion of the Dock window collaborators; touches no file of this ticket.
- #19533: the decision.
Sweeps
- Live latest-open sweep: the latest 20 open issues at 2026-10-10T03:27Z, plus
gh search issues --owner neomjs for parkWindowDrag and "orphan recovery DragDrop". Only closed predecessors came up (#19278, #19288, #19186, #19533).
- A2A sweep: the latest 30 messages, all read states; no claim on this surface.
- Memory Core: no prior decision on retiring it.
- Own assignments: #19538 and #19540 are adjacent; neither covers the addon.
Origin Session ID: fcc49158-63cf-4317-a407-741c5e5e3d8c
Retrieval Hint: "DragDrop addon parkWindowDrag orphan recovery retired after the pointer park"
Context
#19538 retires the worker-side pointer-path vessel conversion and park (docking design record §2.8.6, amended for #19533: a pointer drag never parks). Its PR also removes the last worker callers of the main-thread
DragDropaddon's park surface:parkWindowDrag;NativeVesselTransaction.effectsFor().reshowVessel) askedresumeWindowDragand the orphan-recovery probe and acknowledgement before the route move. Only a parked pointer drag could ever answer them, so they always fell through.Once #19538 merges, that surface in
src/main/addon/DragDrop.mjshas no caller.The Problem
About 965 lines of main-thread code still read as live:
src/main/addon/DragDrop.mjslines 1069–2034 at5698517f19;Every reader of the addon has to reason about a parked window drag, its recovery and its orphan-recovery serialization.
test/playwright/unit/main/addon/DragDrop.spec.mjskeeps 104 references pinning that machinery. The addon is also the file-size ratchet's over-target entry (1,294 code lines).The Architectural Reality
Caller census (
grepoversrc,apps,exampleson the #19538 branch). The worker-sideresumeWindowDragmethods ofTabSortZone, the dashboardContainerandDragTargetare SortZone hooks, not this addon method.parkWindowDrag,resumeWindowDrag,hasWindowDragOrphanRecovery,acknowledgeWindowDragOrphanRecovery,retireWindowDragOrphanRecoveryrecoverInvalidatedWindowDragPark,retryWindowDragParkRecovery,retainWindowDragOrphanRecovery,retryWindowDragOrphanRecovery,cleanupRetiredWindowDragOrphanRecovery,releaseWindowDragRouteOperationpromoteWindowDragParkRecoveryresetDragStateandstartWindowDrag, guarded by park state that onlyparkWindowDragwriteswindowDragParked,windowDragParkedGeometry,windowDragParkRoute,windowDragParkRecovery, the orphan-recovery maponDragMove's!me.windowDragParkedbranch is always taken.The PR re-proves each row against its own head before deleting it.
The Fix
resetDragState,startWindowDragandonDragMove.DragDrop.specarms that pin it.buildScripts/util/file-size-baseline.jsonwith the shrink.Kept: pointer-follow (
startWindowDrag, the window branch ofonDragMove),setConfigs, and everything the in-window and tear-out drags use. No behaviour change, because nothing reaches the surface.Decision Record impact: aligned-with ADR 0029 §2.8.6 (#19533 amendment), whose pointer-path park text is already history.
Acceptance Criteria
parkWindowDrag,windowDragPark*, park recovery or orphan recovery remains insrc/main/addon/DragDrop.mjs, and a caller census at the PR head shows nothing referenced them.DragDrop.specarms, the unit suite, and the Workstation and dashboard e2e folders are green at theirdevbaseline.file-size-baseline.jsonfollows the shrink.Out of Scope
Related
devNativeVesselTransactionstill callsresumeWindowDrag.Sweeps
gh search issues --owner neomjsforparkWindowDragand "orphan recovery DragDrop". Only closed predecessors came up (#19278, #19288, #19186, #19533).Origin Session ID: fcc49158-63cf-4317-a407-741c5e5e3d8c
Retrieval Hint: "DragDrop addon parkWindowDrag orphan recovery retired after the pointer park"