Context and problem
The operator asked whether a popup's drop zones adjust after the popup is enlarged. Two sequences were tested while validating #18398 on d9ea7a5b44 plus its bounded staging changes:
- Resize before a new hover: passes. The new permanent native journey enlarges the target, verifies its menu/preview rectangles against actual DOM geometry, and transfers another popup into an area beyond the target's former right edge.
- Resize an already-hovered target: fails. A native hover first warms the target's geometry at 146 px wide. Resize that same native window to 520 px, keep the source corner inside the former target bounds, then inspect the next native frames. The DOM width is 520;
ownedAffordances.geometry.hostRect.width remains 146. The direct width assertion fails after 4.7 seconds.
The probe used headed Chrome, on-screen CDP window moves/resizing, the real movement poll and the real default Participation path. No geometry or runtime code was injected. This is a warm-cache invalidation defect, distinct from the staging repair and from the intended result-region preview size.
Architectural reality and fix
Participation.defaultPreviewFor reuses DragAffordances.ensureGeometry. The controller memoizes a geometry promise and synchronous mirror until invalidated. Its shared candidate selector can rebuild from a new measured rect, but it cannot discover a resize while the existing geometry is reused.
Make the existing default target/controller invalidate and refresh its geometry when its rendering host changes size during an active gesture. Keep the geometry-generation fence so an old asynchronous measurement cannot overwrite the new size. Preserve the current indicator-first policy and borrowed/owned lifecycle contract; no second geometry cache or popup-specific controller.
| Surface |
Authority |
Behavior |
Fallback |
Docs |
Evidence |
| Default target geometry |
Actual host geometry and existing DragAffordances generation |
Refresh menu, preview and selection after live resize |
Pending/unmeasurable geometry must not commit using stale bounds |
Changed method JSDoc |
Warm-cache native resize regression |
| Candidate selection |
Shared registered PreviewContract and producer |
Resolve against the refreshed target rect |
Existing rejection/leave path |
Existing controller docs |
Actual DOM/menu/preview alignment and transfer/cancel controls |
Decision Record impact: aligned-with ADR 0029; transient display geometry remains outside durable topology. Structural pre-flight: expected existing-owner changes only. Agent OS structure map N/A.
Acceptance criteria
Out of scope
The native staging repair #18398, independent full roots, native claim-arbiter redesign, broad Workspace decomposition, module-wide class conversion, Feed virtual-row census, or new persistence/history behavior. Keep this out of the #18398 PR.
Prior art and ownership
An older WorkstationHumanPopupOverlapNL matrix has a post-resize variant, but it shrinks its target and is not this warmed-default-target witness. Memory Core bc1248fd-5441-4f89-82b8-31d4ad72b37e distinguishes intentional result-region sizing from stale geometry; this failure compares actual host widths, not a retired thin-band expectation. #18121's older native placement/claim instability is separate.
Live latest-20 open, own-assignment and latest-30 all-status A2A sweeps repeated immediately before filing; no equivalent found. Euclid owns the follow-up after the bounded #18398 delivery.
Related: #18303, #18304, #18395, #18398
Origin Session ID: 01a07609-5e09-70f0-bf2c-a27d77d1b7f2
Retrieval Hint: 18398-active-resize-probe preview host width 146 520
Context and problem
The operator asked whether a popup's drop zones adjust after the popup is enlarged. Two sequences were tested while validating #18398 on
d9ea7a5b44plus its bounded staging changes:ownedAffordances.geometry.hostRect.widthremains 146. The direct width assertion fails after 4.7 seconds.The probe used headed Chrome, on-screen CDP window moves/resizing, the real movement poll and the real default Participation path. No geometry or runtime code was injected. This is a warm-cache invalidation defect, distinct from the staging repair and from the intended result-region preview size.
Architectural reality and fix
Participation.defaultPreviewForreusesDragAffordances.ensureGeometry. The controller memoizes a geometry promise and synchronous mirror until invalidated. Its shared candidate selector can rebuild from a new measured rect, but it cannot discover a resize while the existing geometry is reused.Make the existing default target/controller invalidate and refresh its geometry when its rendering host changes size during an active gesture. Keep the geometry-generation fence so an old asynchronous measurement cannot overwrite the new size. Preserve the current indicator-first policy and borrowed/owned lifecycle contract; no second geometry cache or popup-specific controller.
Decision Record impact: aligned-with ADR 0029; transient display geometry remains outside durable topology. Structural pre-flight: expected existing-owner changes only. Agent OS structure map N/A.
Acceptance criteria
Out of scope
The native staging repair #18398, independent full roots, native claim-arbiter redesign, broad Workspace decomposition, module-wide class conversion, Feed virtual-row census, or new persistence/history behavior. Keep this out of the #18398 PR.
Prior art and ownership
An older
WorkstationHumanPopupOverlapNLmatrix has a post-resize variant, but it shrinks its target and is not this warmed-default-target witness. Memory Corebc1248fd-5441-4f89-82b8-31d4ad72b37edistinguishes intentional result-region sizing from stale geometry; this failure compares actual host widths, not a retired thin-band expectation. #18121's older native placement/claim instability is separate.Live latest-20 open, own-assignment and latest-30 all-status A2A sweeps repeated immediately before filing; no equivalent found. Euclid owns the follow-up after the bounded #18398 delivery.
Related: #18303, #18304, #18395, #18398
Origin Session ID: 01a07609-5e09-70f0-bf2c-a27d77d1b7f2
Retrieval Hint:
18398-active-resize-probe preview host width 146 520