Context
Grace measured this on 2026-09-26: receipts on #19288 (issuecomment-5849264672), plus a bisect in her A2A.
WorkstationHumanPopupOverlapNL's two large-over-small arms are the only e2e witnesses of the operator's goal-1 journey at a realistic size. A large converted vessel is dragged over a smaller target popup, and the target must show the tab-header proxy and its drop zones. The two arms are "large-over-small: one local proxy plus readable target choices" and "large-over-small: pointer release transfers one pane with undo and redo".
- Headless CI (800 px screen): both arms
test.skip, because screen.width < requiredStageWidth. They have never run in CI.
- With #19288's
--screen-info={1920x1080} flag, at dev 6ceaf4f555 (after #19254): both fail at "target proxy width follows the live source viewport", |Δ| = 712 px.
- The same flag at
108b6ccb1c (before #19254): both fail one assertion later, at "…height follows the live source viewport".
The Problem
The arms still assert the pre-goal-1 contract, "the target-local proxy takes the live source viewport's size". #19248 / #19254 replaced it: a converted tab drag enters the target as its tab-header proxy. So once the flag lets the arms run, they are red for the right product. Meanwhile the goal-1 journey has no headless coverage.
With the flag, the arms get past the partial-overlap premise that #16472 found failing. That points to the 800 px clamp as #16472's cause. This is Grace's measurement; it is not re-run here.
The Architectural Reality
- The proxy-geometry expectations sit in the arms' shared body (
proxyRectA width and height against sourceBefore.managed). The skip sits beside requiredStageWidth.
- The goal-1 contract has three parts:
- the proxy is the tab header (
#19248);
- the target shows its zones before and after the park, and the vessel parks clear of the target (
#19278, PR #19289, lastVesselParkReceipt.cleared);
- "exactly five rendered target choices remain readable" and the preview stay as asserted.
The Fix
- Re-aim the proxy-geometry expectation to the tab-header contract: the proxy's extent is the header's, not the source viewport's.
- Assert the goal-1 witnesses beside it: the target's zones rendered while the proxy stands, and
lastVesselParkReceipt.cleared after the park.
- Keep the partial-overlap premise and the target-choice assertions unchanged.
- The arms run in CI once
#19288's screen flag is on the NL config.
Acceptance Criteria
Out of Scope
- The screen flag itself (
#19288, Grace's).
- The near-equal and post-resize-asymmetric cells.
- The hand witness of
#19278 AC-5, which stays the operator's.
Related
#19248, #19254, #19278 / #19289, #19288, #16472, #16358, #17844.
Blocked by #19288 (the arms need its screen flag to run) and #19289 (the contract they re-aim to).
Sweeps:
- The latest 20 open issues, read live at 20:12Z: no equivalent.
#16472 is the same spec's premise failure, and #16358 is an intermittent park miss. Neither covers the stale proxy expectation.
- A2A: Grace's measurement names this as my surface.
- My own open assignments:
#19278 only, which this follows.
Origin Session ID: 40558e40-aee4-4461-946d-a389266a3256
Retrieval Hint: "large-over-small proxy width follows the live source viewport tab header goal 1"
Context
Grace measured this on 2026-09-26: receipts on
#19288(issuecomment-5849264672), plus a bisect in her A2A.WorkstationHumanPopupOverlapNL's two large-over-small arms are the only e2e witnesses of the operator's goal-1 journey at a realistic size. A large converted vessel is dragged over a smaller target popup, and the target must show the tab-header proxy and its drop zones. The two arms are "large-over-small: one local proxy plus readable target choices" and "large-over-small: pointer release transfers one pane with undo and redo".test.skip, becausescreen.width < requiredStageWidth. They have never run in CI.--screen-info={1920x1080}flag, at dev6ceaf4f555(after#19254): both fail at "target proxy width follows the live source viewport", |Δ| = 712 px.108b6ccb1c(before#19254): both fail one assertion later, at "…height follows the live source viewport".The Problem
The arms still assert the pre-goal-1 contract, "the target-local proxy takes the live source viewport's size".
#19248/#19254replaced it: a converted tab drag enters the target as its tab-header proxy. So once the flag lets the arms run, they are red for the right product. Meanwhile the goal-1 journey has no headless coverage.With the flag, the arms get past the partial-overlap premise that
#16472found failing. That points to the 800 px clamp as#16472's cause. This is Grace's measurement; it is not re-run here.The Architectural Reality
proxyRectAwidth and height againstsourceBefore.managed). The skip sits besiderequiredStageWidth.#19248);#19278, PR#19289,lastVesselParkReceipt.cleared);The Fix
lastVesselParkReceipt.clearedafter the park.#19288's screen flag is on the NL config.Acceptance Criteria
#19289. Red first at the same head with the old proxy expectation.cleared: trueon the park receipt.Out of Scope
#19288, Grace's).#19278AC-5, which stays the operator's.Related
#19248,#19254,#19278/#19289,#19288,#16472,#16358,#17844.Blocked by
#19288(the arms need its screen flag to run) and#19289(the contract they re-aim to).Sweeps:
#16472is the same spec's premise failure, and#16358is an intermittent park miss. Neither covers the stale proxy expectation.#19278only, which this follows.Origin Session ID: 40558e40-aee4-4461-946d-a389266a3256 Retrieval Hint: "large-over-small proxy width follows the live source viewport tab header goal 1"