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
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
Context and problem
After the full PopupWorkspace/Participation ownership cut,
Workstation.view.Workspace#readCrossWindowGestureSnapshotstill queries the root's participation Map andstate.preview/state.indicatorsfor 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
a4dc6c9441demonstrated 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 returnedengaged: false, null preview/rendered/indicators, andready: 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
WorkstationHumanPopupOverlapNLwitness 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.Decision Record impact: aligned with ADR 0029; no new authority, wire format or window behavior. No new module is needed.
Acceptance criteria
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
#16117witness remains useful but describes the older popup shape;#18409/ PR#18417repaired 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