LearnNewsExamplesServices
Frontmatter
id18428
titlePointer readiness still reads the retired popup visual owners
stateClosed
labels
bugaitestingdashboard
assigneesneo-gpt
createdAtSep 7, 2026, 3:31 AM
updatedAtSep 7, 2026, 8:23 AM
githubUrlhttps://github.com/neomjs/neo/issues/18428
authorneo-gpt
commentsCount0
parentIssue18303
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtSep 7, 2026, 8:23 AM

Pointer readiness still reads the retired popup visual owners

Closed Backlog/active-chunk-21 bugaitestingdashboard
neo-gpt
neo-gpt commented on Sep 7, 2026, 3:31 AM

Context and problem

After the full PopupWorkspace/Participation ownership cut, Workstation.view.Workspace#readCrossWindowGestureSnapshot still queries the root's participation Map and state.preview / state.indicators for popup targets. The actual popup now owns its Participation and that participant owns or receives the affordance controller. The reader therefore reports a false negative and scripted pre-release gates cannot observe the live ready state.

A headed actual-pointer probe on merged a4dc6c9441 demonstrated the mismatch: one stable target claim, successful source parking, and one visible settled proxy; the actual participant's semantic and rendered preview IDs both matched, and its indicator set named the dragged item. The old snapshot nevertheless returned engaged: false, null preview/rendered/indicators, and ready: false. This is a stale observation, not evidence that the underlying gesture failed.

Architectural reality and fix

Read the current popup Participation from the registered PopupWorkspace owner, and read visuals from its supplied or already-created controller. Keep the main participant's supplied-controller path. Do not create the lazy visual tier merely to inspect readiness, add mirror state, or weaken the existing semantic/rendered/claim/park checks.

The existing WorkstationHumanPopupOverlapNL witness also carries retired fixture assumptions: a bare popup/eager overlay, frame coordinates compared to viewport coordinates, and target positioning that invokes native docking into main. Update those observations and physical staging so the same original gesture reaches its real target. Keep proxy motion, readable choices, convert-out, exact popup restoration, pointer-follow and Escape retirement assertions.

Surface Authority Required behavior Fallback Evidence
Pointer readiness snapshot Current Participation target and its current affordance controller Join semantic and rendered IDs with existing arbitration/park state Missing or mismatched visuals remain not ready; never construct UI during observation Prototype-call regression plus live owner/snapshot comparison
Actual-pointer witness Real pointer events, current window reports, Neo component identities Exercise the four existing size cells against the full popup workspace Fail with the current stage/owner rather than a retired selector or coordinate basis Headed matrix and unchanged gesture/restore assertions

Decision Record impact: aligned with ADR 0029; no new authority, wire format or window behavior. No new module is needed.

Acceptance criteria

  • AC-1: popup-owned and main-supplied visuals produce the correct readiness snapshot; absent or mismatched rendered previews fail closed without creating visuals.
  • AC-2: the readiness regression fails on the original reader and passes with the repair.
  • AC-3: all four existing headed cells pass: small-over-large, large-over-small, near-equal and post-resize-asymmetric, retaining the proxy, park, restoration, pointer-follow and cleanup assertions.
  • AC-4: existing first-terminal duplicate-DOM coverage remains intact and the production reader adds no additional Workstation implementation lines.

Out of scope

Root-edge boundary policy (#18421), placeholder theming (#18414), new gesture behavior, independent full roots, the rest of Workstation decomposition, and deployed-command acceptance beyond this existing reader/witness.

Prior art and ownership

The original #16117 witness remains useful but describes the older popup shape; #18409 / PR #18417 repaired the first-terminal duplicate DOM and remains closed. No equivalent open readiness repair appeared in the live latest-20 queue, exact all-state search or latest-30 A2A claim sweep at 2026-09-07 01:28 UTC. Six own open issues were checked; #18303's current body owns this acceptance residual. Memory queries on the reader, null popup previews and actual-pointer readiness surfaced the prior physical-stage pitfalls (646a21dc) and retired-preview-shape issue (bc1248fd), not another owner for this repair. Euclid takes this single delivery; no changes enter any prior merged PR.

Related: #18303 · #18304

Origin Session ID: 01a07609-5e09-70f0-bf2c-a27d77d1b7f2

Retrieval Hint: readCrossWindowGestureSnapshot current Participation ownedAffordances pointer matrix

tobiu cross-referenced by PR #18462 on Sep 8, 2026, 8:51 AM