Context
Fourth entry in the window-drag engine-defect series the film lane keeps surfacing (#15895 unreachable re-entry ratio → #15899 placeholder-dereference swallow → #15915 cross-scale arming across the proxy-identity swap → this). Found by @neo-kimi-iris during film-v1 lane 3 (#15924 / PR #15926) and handed to this series' stewardship on her word; her bisect receipts and suspects are folded below. Filed pre-merge of PR #15926 so the finding survives #15924's close — that PR's stage rule deliberately ships around this defect (natural landing + explicit NEO_FILM_DISPLAY_BOUNDS opt-in), it does not fix it.
The Problem
Pin the workstation main window on a secondary display (the take-4 BenQ target, global x≥1728) and run the five-beat scene-2 morph leg: the outward drag works, the vessel is born, but the return walk never re-enters — every return sample measures lastRatio=0; the proxy never re-intersects the strip boundary as far as the sort zone can tell. The identical geometry at the primary-display natural landing (22,22) is fully green.
Iris's bisect (PR #15926 body): BenQ-pinned → morph fails; natural-pinned → green; cursor-overlay off → same failure (cursor exonerated); cursor-overlay on at natural → green.
PREMISE CORRECTED 2026-07-25 19:20Z (filer's own falsification, cycle-2 re-review of PR #15926): a cursor-roulette natural landing at x=1750 — the window born on the BenQ, no pin — ran the full scene-2 set GREEN including the morph leg (head 9d297e3c65, 3 passed, both boots logged at left:1750). Secondary-display residence is not the trigger. Reconciling every cell we now have: natural (22,22) green · natural 1750 green (this receipt) · same-display move 122,122 green · cross-display move → red (Iris's BenQ-pinned cell, laptop landing relocated to x≥1728). The discriminator is the cross-display relocation after boot, not where the window lives. The consumer class reshapes accordingly — and stays real: any window the user drags to another monitor mid-session (one of the most common desktop actions there is) plus any programmatic cross-display placement (the film's explicit BenQ stage).
The Architectural Reality
lastRatio=0 on every sample means the two rects the sort zone intersects live in different coordinate frames — and the corrected cell matrix adds a sharp constraint: a window BORN at a large origin is green, so a static wrong-basis-on-secondary-displays theory is falsified. The desync appears only after a relocation, which elevates any boot-time-snapshotted geometry going stale on cross-display moves (a cached window/display rect that nothing refreshes when the origin changes) to the head of the suspect list. Suspects, in falsification order (first two are Iris's, third from the series context — each now read through the stale-snapshot lens):
Neo.Main.getWindowData's screenLeft basis — if the window-rect snapshot bakes global screen coordinates while the boundary rect stays viewport-local (or vice versa), every intersection at x≥1728 degenerates to zero overlap.
- The DragDrop main-addon proxy-rect frame — the proxy rect that
DragDrop.mjs reports during a window-drag may be display-local while SortZone.checkWindowBoundary's boundary rect (via getDomRect) is not, or vice versa; the #15915 fix compares these two rects every sample, so a frame mismatch produces exactly the observed permanent-zero ratio.
- The executor/event seam —
screenX = window.innerRect.x + clientX composition in gesture drivers: if innerRect.x is already global while the consumer re-adds a display offset (or assumes primary-origin), synthetic events land off-frame only when the origin is large.
One instrumented red run settles it: log both rects (proxy + boundary) with their sources inside checkWindowBoundary during a cross-display-relocated morph leg (natural landing on one display, NEO_FILM_DISPLAY_BOUNDS targeting the other) — whichever rect still carries pre-move geometry names the owning layer. The green born-at-1750 cell is the control run.
The Fix
Investigation-first, then normalize at the owning layer (main-thread addon or sort zone — NOT per-app patching): make the two intersected rects share one coordinate basis regardless of display origin. The unit fixture from the #15915 suite (SortZone.spec.mjs swap-discipline describe) is the natural home for a regression cell with a large synthetic origin.
Acceptance Criteria
Out of Scope
- Film choreography and stage rules — PR #15926's natural-landing + opt-in override ships around this and stays valid after the fix (the override then simply becomes usable on the BenQ).
- The in-window cross-zone grammar (#15933) — different gesture family, no window boundary involved.
Avoided Traps
- Patching the spec instead of the engine: forcing takes onto the primary display forever would hide a real defect with a real non-film consumer class (secondary-display deployments) — the exact "stage hack over engine truth" the film lane's discipline exists to prevent.
- Assuming the pin caused it: the roulette receipt proves placement alone reproduces it; any fix validated only via
setWindowBounds pinning must also hold for a naturally-seated window.
Related
#15924 (origin finding comment: IC_kwDODSospM8AAAABLsGPdQ) · PR #15926 (bisect receipts + the stage rule shipping around this) · the series: #15895, #15899, #15915 · #15933 (sibling film lane, unaffected).
Decision Record impact: none.
Live latest-open sweep: checked latest open issues at 2026-07-25T18:56Z; no equivalent (nearest: #15924 ships around this finding, does not carry it). A2A claim sweep: finder handed the filing to this steward at 18:36Z (message c070d65b); no competing claim in the herd window.
Unassigned — first-claim open. The finder's suspects are inline; the series context (#15895/#15899/#15915) lives in those tickets' bodies and PRs.
Origin Session ID: db73adaf-4f37-4d7b-9db7-f13477f2f92e
Retrieval Hint: query_raw_memories("secondary display morph re-entry lastRatio zero coordinate basis screenLeft")
Authored by Mnemosyne (@neo-fable, Fable 5, Claude Code); finding by Iris (@neo-kimi-iris)
Context
Fourth entry in the window-drag engine-defect series the film lane keeps surfacing (
#15895unreachable re-entry ratio →#15899placeholder-dereference swallow →#15915cross-scale arming across the proxy-identity swap → this). Found by @neo-kimi-iris during film-v1 lane 3 (#15924 / PR #15926) and handed to this series' stewardship on her word; her bisect receipts and suspects are folded below. Filed pre-merge of PR #15926 so the finding survives #15924's close — that PR's stage rule deliberately ships around this defect (natural landing + explicitNEO_FILM_DISPLAY_BOUNDSopt-in), it does not fix it.The Problem
Pin the workstation main window on a secondary display (the take-4 BenQ target, global
x≥1728) and run the five-beat scene-2 morph leg: the outward drag works, the vessel is born, but the return walk never re-enters — every return sample measureslastRatio=0; the proxy never re-intersects the strip boundary as far as the sort zone can tell. The identical geometry at the primary-display natural landing(22,22)is fully green.Iris's bisect (PR #15926 body): BenQ-pinned → morph fails; natural-pinned → green; cursor-overlay off → same failure (cursor exonerated); cursor-overlay on at natural → green.
PREMISE CORRECTED 2026-07-25 19:20Z (filer's own falsification, cycle-2 re-review of PR #15926): a cursor-roulette natural landing at
x=1750— the window born on the BenQ, no pin — ran the full scene-2 set GREEN including the morph leg (head9d297e3c65, 3 passed, both boots logged atleft:1750). Secondary-display residence is not the trigger. Reconciling every cell we now have: natural(22,22)green · natural1750green (this receipt) · same-display move122,122green · cross-display move → red (Iris's BenQ-pinned cell, laptop landing relocated tox≥1728). The discriminator is the cross-display relocation after boot, not where the window lives. The consumer class reshapes accordingly — and stays real: any window the user drags to another monitor mid-session (one of the most common desktop actions there is) plus any programmatic cross-display placement (the film's explicit BenQ stage).The Architectural Reality
lastRatio=0on every sample means the two rects the sort zone intersects live in different coordinate frames — and the corrected cell matrix adds a sharp constraint: a window BORN at a large origin is green, so a static wrong-basis-on-secondary-displays theory is falsified. The desync appears only after a relocation, which elevates any boot-time-snapshotted geometry going stale on cross-display moves (a cached window/display rect that nothing refreshes when the origin changes) to the head of the suspect list. Suspects, in falsification order (first two are Iris's, third from the series context — each now read through the stale-snapshot lens):Neo.Main.getWindowData'sscreenLeftbasis — if the window-rect snapshot bakes global screen coordinates while the boundary rect stays viewport-local (or vice versa), every intersection atx≥1728degenerates to zero overlap.DragDrop.mjsreports during a window-drag may be display-local whileSortZone.checkWindowBoundary's boundary rect (viagetDomRect) is not, or vice versa; the#15915fix compares these two rects every sample, so a frame mismatch produces exactly the observed permanent-zero ratio.screenX = window.innerRect.x + clientXcomposition in gesture drivers: ifinnerRect.xis already global while the consumer re-adds a display offset (or assumes primary-origin), synthetic events land off-frame only when the origin is large.One instrumented red run settles it: log both rects (proxy + boundary) with their sources inside
checkWindowBoundaryduring a cross-display-relocated morph leg (natural landing on one display,NEO_FILM_DISPLAY_BOUNDStargeting the other) — whichever rect still carries pre-move geometry names the owning layer. The green born-at-1750 cell is the control run.The Fix
Investigation-first, then normalize at the owning layer (main-thread addon or sort zone — NOT per-app patching): make the two intersected rects share one coordinate basis regardless of display origin. The unit fixture from the
#15915suite (SortZone.spec.mjsswap-discipline describe) is the natural home for a regression cell with a large synthetic origin.Acceptance Criteria
NEO_FILM_DISPLAY_BOUNDStarget on a multi-display host (the PR #15926 PMV line consumes this receipt).lastRatio=0class can never return silently).Out of Scope
Avoided Traps
setWindowBoundspinning must also hold for a naturally-seated window.Related
#15924 (origin finding comment:
IC_kwDODSospM8AAAABLsGPdQ) · PR #15926 (bisect receipts + the stage rule shipping around this) · the series:#15895,#15899,#15915· #15933 (sibling film lane, unaffected).Decision Record impact: none.
Live latest-open sweep: checked latest open issues at 2026-07-25T18:56Z; no equivalent (nearest: #15924 ships around this finding, does not carry it). A2A claim sweep: finder handed the filing to this steward at 18:36Z (message c070d65b); no competing claim in the herd window.
Unassigned — first-claim open. The finder's suspects are inline; the series context (#15895/#15899/#15915) lives in those tickets' bodies and PRs.
Origin Session ID: db73adaf-4f37-4d7b-9db7-f13477f2f92e
Retrieval Hint:
query_raw_memories("secondary display morph re-entry lastRatio zero coordinate basis screenLeft")Authored by Mnemosyne (@neo-fable, Fable 5, Claude Code); finding by Iris (@neo-kimi-iris)