LearnNewsExamplesServices
Frontmatter
id19538
titleRetire the dormant pointer-path vessel conversion and park machinery
stateClosed
labels
enhancementairefactoringdashboard
assigneesneo-opus-ada
createdAtOct 10, 2026, 2:49 AM
updatedAtOct 10, 2026, 3:43 PM
githubUrlhttps://github.com/neomjs/neo/issues/19538
authorneo-opus-ada
commentsCount2
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[x] 19541 Retire the main-thread DragDrop park surface nothing calls, [ ] 19540 Restore Neo class extensibility in Dock window collaborators
closedAtOct 10, 2026, 3:43 PM

Retire the dormant pointer-path vessel conversion and park machinery

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

Context

#19533 (operator decision, 2026-10-10) gives a pointer drag one rule for every window of the group. Inside a window it is that window's tab-header proxy; outside every window it is a vessel; leaving a window opens a fresh vessel (docking design record §2.8.6, amended there). TabSortZone#resolveRemoteDragTransition now hands a claimed frame straight to the claiming window, so the pointer-path conversion sensor, its park and its re-show are no longer reached. #19533 changed behaviour and kept that code dormant so the release PR stayed reviewable; this ticket deletes it.

The Problem

Dormant code that still reads as live costs every reader. The conversion events, host handlers and park effects look wired, unit specs keep exercising them, and the size-calibrated park matrix in WorkstationHumanPopupOverlapNL is skipped rather than gone.

The Architectural Reality

Unreached since #19533. Each item is verified with a caller census before deleting. The native title-bar drop keeps its own park through nativeVesselParkHandlers and must survive.

  • src/dashboard/dock/interaction/TabSortZone.mjs:
    • getVesselConversionSensor with onConvertIn / onConvertOut;
    • the replay scheduling;
    • the conversionActive branches in processDragEnd / onDragCancel (dockVesselConversionTerminal, dockVesselConversionRetired).
  • src/dashboard/dock/window/VesselConversion.mjs and its unit spec.
  • src/dashboard/dock/projection/LayoutAdapter.mjs: the dockVesselConversion* listeners and options.
  • src/manager/DragCoordinator.mjs: the transition protocol's retain, preview, commitEligible and replayAfterTransition branches. The claim resolver never returns them.
  • Hosts:
    • apps/workstation/view/VesselWorkspace.mjs: onDockVesselConversion*, the pointer vesselParkHandlers, resolveVesselConversionSourceRect, and the pointer branch of parkTearOutVessel;
    • examples/dashboard/crossWindow/DemoBWorkspace.mjs: the same family.
  • src/dashboard/dock/window/NativeVesselTransaction.mjs:
    • the pointer park effect, including the corner placement resolveClearPark;
    • the pointer dispose and the extent restore;
    • the re-show's DragDrop addon calls, which only a parked pointer drag could answer.
  • src/dashboard/dock/window/VesselPark.mjs: the pointer convert-out (onConversionOut, pendingOut). The native drop never re-shows mid-gesture.
  • test/playwright/e2e/workstation/WorkstationHumanPopupOverlapNL.spec.mjs: the skipped size matrix (runOverlap, MATRIX_CELLS, positionTargetForPartialOverlap) and the helpers only it uses.
  • The pointer-conversion arms of DockTabSortZone.spec, DockVesselPark.spec, DockNativeVesselTransaction.spec, DockLayoutAdapter.spec, DragCoordinator.spec, Workspace.spec and DemoBWorkspace.spec.

The Fix

Delete the pointer-path conversion and park, and keep every native title-bar seam: VesselPark serves that path alone. The docs that describe the pointer park as live move with it: the docking guides and ADR 0029's resolver contract row. Net negative lines; no behaviour change.

The main-thread DragDrop addon's park surface (parkWindowDrag, park recovery, orphan recovery) loses its last caller here and is deleted by #19541.

Acceptance Criteria

  • No dockVesselConversion* event, handler or option remains; VesselConversion is gone.
  • The native title-bar drop keeps parking behind its target after release; its unit and e2e arms are green.
  • The HumanPopupOverlap size matrix and its exclusive helpers are deleted; the foreign-popup arms stay green.
  • The unit suite and the Workstation and dashboard e2e folders are green at their dev baseline.

Contract Ledger

Authority: ADR 0029 §2.3 and §2.8.6, as #19533 amended them. Each retired surface is removed outright, with no fallback to the retired path.

Surface Shipped behavior / retirement Refusal / fallback Evidence
TabSortZone#resolveRemoteDragTransition → DragCoordinator#onDragMove Input {draggedItem, pointerInTarget}. Output null, {engage: false} or {engage: true, proxyRect}; the proxy carries a finite positive extent and finite grab offsets. The retain, preview, commitEligible and replay fields are removed. null keeps the generic suspend/resume path. A throw, a Promise, a malformed record or an invalid proxy refuses engagement, and a lost claim leaves the target. DockTabSortZone.spec, DragCoordinator.spec; #19542 AC-1/2
enableVesselConversion (host option → LayoutAdapter → TabSortZone) The name and effective behavior are unchanged: it opts a source into the claim hand-over above, with getVesselConversionProxyRect() as the proxy. The dormant sensor it also armed is deleted. Off: the resolver returns null, so the generic path applies. Head census: VesselWorkspace, DemoBWorkspace, LayoutAdapter and TabSortZone are the only references
LayoutAdapter conversion callbacks/events and the source-rect request The dockVesselConversion* family, the source-rect resolver and the pointer-exit grace (vesselConversionPointerExitGraceMs) are removed. Ordinary tear-out and the cross-zone seams are kept. Removed outright, with no compatibility fallback to pointer parking. Head caller census; DockLayoutAdapter.spec; host suites
Pointer-only park and its effects Retired: the VesselConversion class; the pointer park, dispose, corner placement and extent restore; VesselPark convert-out; Demo B's park family. Close-on-entry and fresh tear-out admission own the pointer lifecycle; there is no fallback to the retired park. #19542 AC-1/3; Workstation and Demo B evidence
Native title-bar park/restore/commit Unchanged. The drop satisfies the main target, or focuses the popup, moves it and refocuses. It restores on refusal or non-commit and disposes the exact generation on commit. Re-show uses the existing exact route and the content-to-frame conversion. Strict admission and refusal, refocus compensation and the retained retry authority all remain. Workspace.spec, DockVesselPark.spec, DockNativeVesselTransaction.spec; eight executed native route/title-bar e2e arms (#19542 AC-2)
Main-thread addon and the surviving collaborator shape The addon park deletion (#19541) and the native-class conversion (#19540) stay separate owned leaves. This change does not expand into either leaf. #19542 Deltas

Rows 1 and 3–6 are Emmy's #19542 RA-1 draft (comment 6097785752), adopted after a census at head 55e96a3122. Row 2 comes from that same census.

Out of Scope

Any behaviour change; the native title-bar path; the film; the main-thread addon (#19541).

Related

  • #19533 — the decision and the behaviour change this cleans up after.
  • #19541 — the main-thread DragDrop park surface, blocked by this ticket.
  • #19540 — the class shape of the Dock window collaborators, blocked by this ticket.
  • #16358 (Vega) and #16472 — the large-over-small park and partial-conversion tickets. The park they test no longer runs, so they close with this ticket's merge unless their owners object.

Live latest-open sweep: checked the latest 20 open issues at 2026-10-10T00:48Z plus a search for the conversion/park scope. The only overlaps are #16358 and #16472, linked above.

Origin Session ID: fcc49158-63cf-4317-a407-741c5e5e3d8c

tobiu referenced in commit 6c1e478 - "refactor(dock): retire the dormant pointer-path vessel conversion and park (#19538) (#19542) on Oct 10, 2026, 3:43 PM
tobiu closed this issue on Oct 10, 2026, 3:43 PM
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