Context and problem
After #18396, default popup hover feedback renders. Native popup-to-popup transfer still fails on merged d9ea7a5b44: the existing headed WorkstationNativePopupOverPopupNL journey claims Metrics, renders its preview and successfully parks the source, then never transfers or closes that source. The native ownership record remains bound. This is a separate accepted residual from #18383, not more work on that merged PR.
The test observes the root consumer's still-live lastCrossWindowTransfer receipt. Its failed values correctly report the baseline failure. Default popup commits use the shared WorkspaceSet directly, so the replacement receipt reads authoritative Group source/target documents while retaining physical closure, native-owner and pane-identity observations.
Architectural reality and fix
DragTarget.onRemoteDragMove requires stageDragEmbodiment(payload) === true for an embodied native drag, and its settlement path requires an explicit acknowledgement. PopupWorkspace.syncParticipation supplies neither. Workstation's root builds four wrappers around the existing vesselProxyEmbodiment owner, while the full popup supplies none.
Compose those existing stage/restore/promote/settlement operations in Participation, with explicit handler configs retaining precedence and the supplied controller/proxy retaining lifecycle ownership. Workstation passes those owners and deletes its four wrapper bodies; PopupWorkspace passes the same existing proxy owner. Preserve the exact physical source window across target-local reparenting in VesselEmbodiment. Adapt Emmy's existing 3a640d6d change to current dev; do not replay its older PreviewContract or overlay source.
| Surface |
Authority |
Behavior |
Fallback |
Docs |
Evidence |
| Participation target hooks |
Existing DragTarget stage/settlement contract |
Delegate through supplied embodiment and affordance owners; await pane and renderer |
Missing/refused owner fails closed |
Config/method JSDoc |
Real-object controls and native transfer |
| Proxy physical origin |
Existing VesselEmbodiment transient record |
Explicit source wins; otherwise retain active origin or resolve live pane origin before staging |
Invalid identity refuses |
move JSDoc |
Parked-source and repeated-frame control |
| Workstation native receipt |
Group snapshot + NativeLifecycle |
Assert source/target document ownership, source closure and same live pane |
Refusal preserves source ownership |
Existing E2E intent |
Headed on-screen movement, no synthetic page pointer |
Decision Record impact: aligned-with ADR 0029's shared drag/embodiment owners; no wire, history, or native-authority redesign. Structural pre-flight: existing files only; Agent OS structure map N/A.
Acceptance criteria
Out of scope
Resizing an already-hovered target (the reproduced warm-cache defect is tracked separately by #18400), independent full roots, native geometry/claim-arbiter redesign, the separate human pointer-overlap journey, Feed virtual-row identity census, module-wide class conversion, new undo/persistence logic, Brain/tooling changes, and reopening #18383 or #18396.
Avoided traps and prior art
Keep the native trigger: observed real window movement, not injected geometry or page mouse events. Memory Core records 646a21dc-f546-4e17-b8cc-4ef32e26b24e and 36bf5655-6ef7-4d2c-aedc-b0739636df1b explain why off-screen/emulated-screen setups and intermediate main-window claims misdiagnose this journey. #18121 owns older placement/claim instability; this leaf addresses the newly omitted target composition.
Live latest-20 open issues, own assignments and latest-30 all-status A2A checked immediately before creation; no equivalent leaf/claim found. Emmy's latest handoff reports no active writes or native fixtures. No ask/KB tool used under current operator scope.
Related: #18303, #18304, #18314, #18395
Origin Session ID: 01a07609-5e09-70f0-bf2c-a27d77d1b7f2
Retrieval Hint: 3a640d6d native popup parked source target embodiment settlement
Context and problem
After #18396, default popup hover feedback renders. Native popup-to-popup transfer still fails on merged
d9ea7a5b44: the existing headedWorkstationNativePopupOverPopupNLjourney claims Metrics, renders its preview and successfully parks the source, then never transfers or closes that source. The native ownership record remains bound. This is a separate accepted residual from #18383, not more work on that merged PR.The test observes the root consumer's still-live
lastCrossWindowTransferreceipt. Its failed values correctly report the baseline failure. Default popup commits use the shared WorkspaceSet directly, so the replacement receipt reads authoritative Group source/target documents while retaining physical closure, native-owner and pane-identity observations.Architectural reality and fix
DragTarget.onRemoteDragMoverequiresstageDragEmbodiment(payload) === truefor an embodied native drag, and its settlement path requires an explicit acknowledgement.PopupWorkspace.syncParticipationsupplies neither. Workstation's root builds four wrappers around the existingvesselProxyEmbodimentowner, while the full popup supplies none.Compose those existing stage/restore/promote/settlement operations in
Participation, with explicit handler configs retaining precedence and the supplied controller/proxy retaining lifecycle ownership. Workstation passes those owners and deletes its four wrapper bodies; PopupWorkspace passes the same existing proxy owner. Preserve the exact physical source window across target-local reparenting inVesselEmbodiment. Adapt Emmy's existing3a640d6dchange to current dev; do not replay its older PreviewContract or overlay source.Decision Record impact: aligned-with ADR 0029's shared drag/embodiment owners; no wire, history, or native-authority redesign. Structural pre-flight: existing files only; Agent OS structure map N/A.
Acceptance criteria
AC-1: Participation composes supplied embodiment and affordance owners for stage, restore, promote and renderer settlement; explicit callbacks still override defaults and borrowed owners are not destroyed.
AC-2: settlement waits for both the exact pane and preview; missing, refused or retired state cannot release the target handoff.
AC-3: a parked pane's physical source window survives target-local reparenting and repeated frames; exact-source restore returns it to that source.
AC-4: Workstation deletes the four repeated target callback bodies and full popups use the same existing owner; no second proxy registry or app-specific engine import.
AC-5: the existing native popup-to-popup journey reaches target preview, source park, Group document transfer, source retirement and same live pane in the target. The sibling native-titlebar-to-main journey remains passing. State the CDP movement evidence boundary explicitly.
AC-6 (operator-requested): add a permanent resize-before-hover journey. Enlarge the target popup substantially, compare preview/menu geometry to the new DOM bounds, then transfer another popup into the newly exposed area beyond its former right edge.
Out of scope
Resizing an already-hovered target (the reproduced warm-cache defect is tracked separately by #18400), independent full roots, native geometry/claim-arbiter redesign, the separate human pointer-overlap journey, Feed virtual-row identity census, module-wide class conversion, new undo/persistence logic, Brain/tooling changes, and reopening #18383 or #18396.
Avoided traps and prior art
Keep the native trigger: observed real window movement, not injected geometry or page mouse events. Memory Core records
646a21dc-f546-4e17-b8cc-4ef32e26b24eand36bf5655-6ef7-4d2c-aedc-b0739636df1bexplain why off-screen/emulated-screen setups and intermediate main-window claims misdiagnose this journey. #18121 owns older placement/claim instability; this leaf addresses the newly omitted target composition.Live latest-20 open issues, own assignments and latest-30 all-status A2A checked immediately before creation; no equivalent leaf/claim found. Emmy's latest handoff reports no active writes or native fixtures. No ask/KB tool used under current operator scope.
Related: #18303, #18304, #18314, #18395
Origin Session ID: 01a07609-5e09-70f0-bf2c-a27d77d1b7f2
Retrieval Hint:
3a640d6d native popup parked source target embodiment settlement