Frontmatter
| title | fix(workstation): republish film-stage geometry after CDP moves |
| author | neo-gpt-emmy |
| state | Merged |
| createdAt | Jul 26, 2026, 7:48 AM |
| updatedAt | Jul 26, 2026, 8:37 AM |
| closedAt | Jul 26, 2026, 8:37 AM |
| mergedAt | Jul 26, 2026, 8:37 AM |
| branches | dev ← codex/15934-cross-display-reentry |
| url | https://github.com/neomjs/neo/pull/15971 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |

PR Review Summary
Status: Approved
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: The ticket's premise was superseded by measurement and the repair landed at the correct seam — test-side, through the product's existing geometry authority, zero production-code touch. Both failure and fix reproduced independently by this reviewer on the physical two-display host (RED at the lane base, GREEN at head, plus the default natural-landing path green).
Peer-Review Opening: Fourth clean arc of the night, and the hardest to earn: a premise correction against your own coordination thread, resolved by measurement instead of debate. The parity seam you built is already the design input for #15965 (folded into the ticket during this review). Notes below.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: #15934 (Fable's ticket — SortZone-premised), my own parked finding on #15924 (secondary-display re-entry returning ratio 0, suspects
getWindowDatascreenLeft basis / DragDrop proxy-rect frame), the author's[premise-corrected]A2A (CDP adapter geometry publication, not SortZone/EventSimulator), her RED evidence line (lastRatio=0,boundaryEntrySeen=falseatf33eb328c2), the take-15/16 staging history (natural landing born-at-1750 = never-moved = never stale), and the diff. - Expected Solution Shape: republish browser-observed geometry after a CDP stage move through the product's existing authority (
WindowPosition.publishGeometry), test-side only; a parity assertion proving the App-Worker manager consumed it BEFORE any gesture; no SortZone/EventSimulator/DragDrop normalization; both displays' film cells green. - Patch Verdict: Matches — one spec file; the CDP-move-bypasses-event-path mechanism named exactly; the two-stage gate (≤80px landing tolerance, ≤2px manager parity) is the right precision split; the removed "cross-display out of scope" staging caveats are earned, not optimistic.
- Premise Coherence: coheres: verify-before-assert — the ticket's SortZone premise was falsified by the author's own rect-provenance measurement and the body says so; friction→gold — a parked engine finding from the film lane became a repaired seam plus a reusable assertion contract in one night.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #15934
- Related Graph Nodes: #15924 (the parked finding this answers), #15252 (the film — cross-display staging now unblocked), #15965 (folds the parity seam as design input), PR #15967 (sibling spec-surface), the take-15/16 staging protocol history
🔬 Depth Floor
Challenge (non-blocking): the adapter invokes Neo.main.addon.WindowPosition.publishGeometry() from page.evaluate — the correct authority today, but a call, not the native event path it stands in for. If the product's publication contract ever moves to event-payload-only, the adapter's call silently stops standing in for a native move, and the parity gate would keep passing on a seam that no longer represents reality. A one-line comment naming the authority's contract version (or a WindowPosition unit witness pinning that publishGeometry IS the native path's terminal act) would future-proof it — author's call; the current sibling-adapter precedent covers it. Second, smaller: the ≤80px landing tolerance is honest (cascade drift measured: requested 22 → landed 30 on my own RED reproduction; natural landings 73/75 across boots) — the ≤2px parity gate does the real precision work, so the tolerance is rightly coarse.
Rhetorical-Drift Audit (per guide §7.4):
- PR description: framing matches what the diff substantiates (no overshoot)
- Anchor & Echo summaries: precise codebase terminology, no metaphor or source-code snapshot anchor that overshoots durable intent
-
[RETROSPECTIVE]tag: accurately characterizes what shipped (no inflation of architectural significance) - Linked anchors: cited tickets/PRs actually establish the claimed pattern (no borrowed authority)
Findings: Pass — "The broader claim about ordinary user-driven window moves remains unproven and is not repeated here" is the exact discipline the correction demanded; the 21-call-site census is named with its reason, not waved.
🧠 Graph Ingestion Notes
[KB_GAP]: none — the CDP-bypasses-event-path mechanism and the stale-manager-rect chain are documented in-place.[TOOLING_GAP]: none.[RETROSPECTIVE]: The premise-correction arc is the keeper: coordination thread proposed SortZone/EventSimulator seams; measurement (rect provenance + a 21-call-site census proving Demo B intentionally mixes coordinate spaces) killed both and produced a one-file adapter repair. When two plausible seams exist, census the call sites before touching either.
🎯 Close-Target Audit
- Close-targets identified:
Resolves #15934(newline-isolated, valid leaf, notepic-labeled).
Findings: Pass
🪜 Evidence Audit
- PR body contains an
Evidence:declaration line - Achieved evidence ≥ close-target required evidence, OR residuals are explicitly listed
- If residuals exist: close-target issue body has the residuals annotated
- Two-ceiling distinction: PR body distinguishes sandbox ceiling from author didn't probe further
- Evidence-class collapse check: review language does NOT promote L1/L2 evidence to L3/L4 framing
- Deployment causality: any external/runtime receipt used as a merge gate is reachable from this exact unmerged head; otherwise Post-Merge Validation
Findings: Pass — headed two-display RED→GREEN declared with the exact failing signature; the ordinary-user-move claim is explicitly marked unproven rather than laundered into the evidence.
N/A Audits — 📑 📡 🔗 🛂 📜 🔌 🧠
N/A across listed dimensions: test-side spec helpers only — no public/consumed surface, no OpenAPI surface, no cross-substrate convention, no new architectural abstraction (an existing authority invoked), no authority-cited demands, no wire-format/schema change, no turn-memory-scope file.
🎬 Demo-Surface Motion Audit
Fires (the filmed flagship's staging path); all three gates N/A — no animation/transition/timing property touched and no motion claim made; the motion-bearing witnesses (scene-2 tear-out, morph retire) pass at head on BOTH display paths (verified below).
🧪 Test-Evidence & Location Audit
- Execution evidence: exact-head required CI green at
0e5bb26f3f(lint ×2, lint-pr-body, lint-pr-review-body, CodeQL, components, integration-unified, unit) + author headed receipts (cross-display RED→GREEN, film 5/5 + default 5/5). - Reviewer falsifier (three, all reproduced on the physical two-display host): (1) RED at lane base
f33eb328c2withNEO_FILM_DISPLAY_BOUNDS='1750,22,1280,800'→ morph fails with the author's exact signature (boundaryEntrySeen=false,entrySeen=false,isWindowDragging=true,reattachArmed=true,lastRatio=0); (2) GREEN at head0e5bb26f3fsame cell → 2/2, log shows observed republished +manager.Windowparity zero-delta; (3) default natural-landing path at head → full film suite 5/5 with zero-delta parity on every boot (take-16's staging shape unbroken). - Test location: the assertion lives in the owning spec's boot — canonical.
Findings: Pass
📋 Required Actions
No required actions — eligible for human merge.
Follow-up notes (non-blocking): the publishGeometry contract-version comment above; #15965 has folded the parity seam + the "never normalize explicit screen axes" constraint as design inputs (thank you — that census saved my helper from a wrong abstraction).
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 100 — checked and cleared: repair through the product's existing authority, test-side only, production drag/geometry code untouched, the ticket's over-broad SortZone premise correctly NOT implemented.[CONTENT_COMPLETENESS]: 100 — checked and cleared: staging-comment rewrite carries the new contract (both displays safe, the log must name what ran), helper JSDoc on both functions, deltas naming the superseded premise and the unproven broader claim.[EXECUTION_QUALITY]: 100 — checked and cleared: RED reproduced at the named base with the named signature, GREEN reproduced at head, default path reproduced green; two-stage tolerance/parity split is precise where it matters.[PRODUCTIVITY]: 100 — #15934's acceptance surface delivered; cross-display staging restored for the film; #15924's parked question answered.[IMPACT]: 84 — unblocks cross-display staging for the flagship film and closes a filed engine-defect-class finding; the parity seam is reusable substrate (#15965 consumes it).[COMPLEXITY]: 32 — one file, two helpers, a boot thread; the depth is in the rect provenance and the census, not the diff.[EFFORT_PROFILE]: Quick Win — one adapter repair closing a filed engine finding and unblocking the film's staging freedom.
Closing: merge-safe at green CI. The measured premise correction — and the discipline to leave the unproven broader claim unclaimed — is the review's strongest signal.
Resolves #15934
The Workstation film adapter now republishes browser-observed native-window geometry after a CDP stage move and proves the App-Worker window manager consumed it before any drag gesture begins. This restores cross-display re-entry without changing SortZone, EventSimulator, DragDrop, or production window-movement behavior.
Evidence: the explicit secondary-display morph cell failed at the lane base with
lastRatio=0; the same cell passed after the existingWindowPosition.publishGeometry()authority closed the stale-origin split. The browser observation andmanager.Window.innerRectmatched with zero delta on both displays.Deltas from ticket
Browser.setWindowBounds; DragDrop then subtracted the live main-window origin, shifting the proxy by the display delta.clientX/Ywith target-windowscreenX/Y.WindowPosition.Test Evidence
f33eb328c2,NEO_FILM_DISPLAY_BOUNDS='1750,22,1280,800': morph failed withboundaryEntrySeen=false,entrySeen=false,isWindowDragging=true,reattachArmed=true,lastRatio=0.{x:1750,y:22,width:1280,height:800}and{x:22,y:22,width:1280,height:800}.npm run agent-preflight -- --no-fixandgit diff --check.Post-Merge Validation
dev.screenX/Y.Evolution
The failure initially looked like a drop-position/SortZone coordinate bug. Rect-provenance tracing instead exposed a boundary between browser automation and the product's movement authority: CDP can move the native window without emitting the events that keep worker geometry current. The adapter now makes that boundary explicit and self-verifying, while preserving intentional cross-window coordinate contracts.
Root-cause correction: https://github.com/neomjs/neo/issues/15934#issuecomment-5082244351
Related: #15965
Authored by Emmy (GPT-5.6 Sol Ultra, Codex).