LearnNewsExamplesServices
Frontmatter
id19556
titleThe foreign-popup park ran pre-#19539 code: re-run the hand check on a dev worker
stateClosed
labels
bugaidashboard
assigneesneo-opus-ada
createdAtOct 10, 2026, 5:35 PM
updatedAtOct 10, 2026, 9:39 PM
githubUrlhttps://github.com/neomjs/neo/issues/19556
authorneo-fable
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtOct 10, 2026, 9:39 PM

The foreign-popup park ran pre-#19539 code: re-run the hand check on a dev worker

neo-fable
neo-fable commented on Oct 10, 2026, 5:35 PM

Release blocker on the v13.2 cut (#14800) until AC-1 runs on dev. Filed by Mnemosyne from the operator's hand check of apps/workstation (2026-10-10, 15:24–15:26Z, #19533 AC-3); owner @neo-opus-ada.

Status (19:40Z): AC-1 holds, closed as fixed by #19539 + #19542

At 19:29Z the operator ran the gesture on a fresh worker that the webpack dev server served from merged dev (1c43d51e26), and reported that it now looks right (relayed by Mnemosyne). Ada's Neural Link reads right after:

Read Value
The worker runs merged dev Neo.dashboard.dock.window.TearOut, first shipped by #19564, is registered
lastVesselParkReceipt null: no park ran
Window topology main only: popup A and the eight vessel windows the second gesture opened are all closed
tearOutHandlers activeVessel, lateVessel and pendingAdmission are null; returning is empty
lastTearOutClose (commits) native dispatch, acknowledged, closed, on the exact route
Dock document all 20 items in main; commits and alerts are live and mounted

The coordinator's claim ring keeps 40 entries. All 40 are the second gesture's last resolutions, with the pointer outside A, so the ring cannot show A's claim. The claim rests on the operator's observation, as AC-1 specifies.

Evidence

The reads below were taken over the Neural Link from the operator's Workstation page (useSharedWorkers: true) at 16:40Z.

Read Running page dev
TabSortZone#resolveRemoteDragTransition The sensor-driven conversion: {draggedItem, logicalSourceRect, now, pointerInTarget, replayAfterTransition, targetId, targetRect}. {draggedItem, pointerInTarget}; a claim fires dragBoundaryEntry, which retires the vessel (#19539, merged 02:23Z).
VesselWorkspace#parkTearOutVessel Carries the pointer branch: DragDrop.parkWindowDrag, resolveClearPark, and writes of needsResize / parkSize / cleared. Native title-bar park only. git grep for those names → 0 hits (#19542 merged 13:43Z, #19552 merged 14:25Z).
lastVesselParkReceipt needsResize: true, parkSize: 320×173, cleared: true, moved: true, parked: true, no focused. —

Reading:

  • The receipt is the pointer-path conversion park, i.e. the corner park that #19539 retired. It is not the native title-bar park.
  • On dev, the pointer source's suspend only hides its proxy (TabSortZone#suspendWindowDrag). The one park left is the native title-bar drop's (DragCoordinator#commitNativeWindowDrop → DragTarget#suspendWindowDrag). Its source resolver reads committed owners only (Participation#defaultResolveNativeWindowDrag → nativeWindows.ownerEntries, written at TearOut#onDockTearOutTerminal).

Cause (confirmed 17:18Z, Mnemosyne): the operator's IDE built-in server (localhost:63342) kept serving pre-merge modules after the pull, even to a restarted SharedWorker. Served from the webpack dev server (:8082), the page runs dev's source.

Acceptance Criteria

  • AC-1 The operator's gesture on a worker confirmed to run dev: the vessel closes when popup A shows the proxy, and lastVesselParkReceipt stays null (human-owned, L4). Held at 19:29Z (Status).
    • If AC-1 holds, this closes as fixed by #19539 + #19542.
    • If it fails, the dev-shaped receipt and the claim trace become this ticket's evidence.

The former AC-2 and AC-3 (a native-capability witness; nativeRoute no longer deciding the claim path) are removed. Both rested on the premise that the handle steers the pointer claim, and the source above refutes that for dev. A pointer arm with native capabilities granted is still a coverage gap. It does not block the release.

Out of Scope

  • The torn-out window's size (#19450, PR #19559).
  • The refused-open explanation (#19537).
  • The film take (#15252). The take should also record on a worker that runs dev.

Related

#19533 / PR #19539, #19538 / PR #19542, #19541 / PR #19552, #14800, #15252.

Origin Session ID: 656ab1e8-7b9c-4a10-b370-8718db430fad Retrieval Hint: "foreign popup pointer drag park stale SharedWorker pre-19539 needsResize parkSize cleared receipt"