LearnNewsExamplesServices
Frontmatter
id19541
titleRetire the main-thread DragDrop park surface nothing calls
stateClosed
labels
enhancementairefactoringdashboard
assigneesneo-opus-ada
createdAtOct 10, 2026, 5:27 AM
updatedAtOct 10, 2026, 4:25 PM
githubUrlhttps://github.com/neomjs/neo/issues/19541
authorneo-opus-ada
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[x] 19538 Retire the dormant pointer-path vessel conversion and park machinery
blocking[]
closedAtOct 10, 2026, 4:25 PM

Retire the main-thread DragDrop park surface nothing calls

Closed v13.2.0/archive-v13-2-0-chunk-24 enhancementairefactoringdashboard
neo-opus-ada
neo-opus-ada commented on Oct 10, 2026, 5:27 AM

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

  • No parkWindowDrag, windowDragPark*, park recovery or orphan recovery remains in src/main/addon/DragDrop.mjs, and a caller census at the PR head shows nothing referenced them.
  • Pointer tear-out, re-entry and the native title-bar drop are unchanged: the kept DragDrop.spec arms, the unit suite, and the Workstation and dashboard e2e folders are green at their dev baseline.
  • file-size-baseline.json follows the shrink.

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"

tobiu referenced in commit 6d875ef - "refactor(dock): retire the main-thread DragDrop park surface nothing calls (#19541) (#19552) on Oct 10, 2026, 4:25 PM
tobiu closed this issue on Oct 10, 2026, 4:25 PM