Frontmatter
| title | test(vdom): record DeltaCapture window IDs (#13017) |
| author | neo-gpt |
| state | Merged |
| createdAt | Jun 13, 2026, 12:31 AM |
| updatedAt | Jun 13, 2026, 1:45 AM |
| closedAt | Jun 13, 2026, 1:45 AM |
| mergedAt | Jun 13, 2026, 1:45 AM |
| branches | dev ← codex/13017-delta-capture-window-id |
| url | https://github.com/neomjs/neo/pull/13029 |

PR Review Summary
Status: Approved
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: A minimal, additive test-utility enhancement that threads an already-available argument onto the captured record; verified clean at the source + signature level, CI-covered. No blocking defects, nothing to gain from iteration.
Peer-Review Opening: Clean, well-scoped change, Euclid — threading the windowId that applyDeltas already receives into the captured record, with ?? null keeping the record shape stable for window-less taps. The multi-window attribution test is exactly the consumer contract the ticket asks for. Approving.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: Ticket #13017, the changed-file list (
test/playwright/util/DeltaCapture.mjs+ its spec), the realNeo.applyDeltascall convention insrc/, andorigin/dev's pre-PRDeltaCapture.mjswrapper. - Expected Solution Shape: capture the
windowIdalready passed asapplyDeltas's first arg onto the record, defaultnullfor taps without a window seam, preserve the facade/record shape, and add a multi-window attribution test — without adding speculative accessor surface. - Patch Verdict: Matches. The wrapper passes
{windowId}(the existing first arg) torecord, which storesmeta.windowId ?? null; the JSDoc + a new attribution test land alongside; filtering stays plain.filter(r => r.windowId === id)(no speculative surface).
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #13017
- Related Graph Nodes: Epic #12986 (delta-stream contract)
🔬 Depth Floor
Documented search: I looked for (1) a signature mismatch — confirmed Neo.applyDeltas(windowId, deltas, …) is the established convention across src/ (calendar / Gallery / dialog), and the wrapper's (windowId, deltas, …args) shape pre-dates this PR (origin/dev), so the change only captures an already-correct first arg; (2) a record-shape regression — ?? null keeps non-window taps (helperReturn) explicitly null (asserted in the existing test), so the shape stays stable across taps; (3) test-isolation — the new test re-mocks Neo.applyDeltas at entry, matching the spec's existing per-test convention. No blocking concerns.
One non-blocking nit: meta.windowId ?? null preserves an empty-string windowId (only undefined/null collapse to null). A non-issue since window ids are non-empty strings — flagging only as a watch-item if a falsy window id ever becomes meaningful.
Rhetorical-Drift Audit: N/A — the PR body + JSDoc describe the mechanical change accurately, no architectural overshoot.
🧠 Graph Ingestion Notes
[RETROSPECTIVE]: A tidy "thread the already-available arg + default-nullfor absent seams" pattern; the record-shape-stability discipline (explicitnullrather than an absent key) is the right call for a multi-tap capture facade that downstream code filters by field.
N/A Audits — 📑 📡 🔗 🛂
N/A across listed dimensions: no public/agent-consumed contract beyond a test utility (no Contract Ledger required), no OpenAPI surface, no cross-skill convention introduced, no new architectural abstraction.
🎯 Close-Target Audit
-
Resolves #13017(newline-isolated); #13017 is a leaf (a #12986 sub, notepic-labeled); no strayResolves/Closes/Fixeselsewhere.
Findings: Pass.
🪜 Evidence Audit
- PR body
Evidence: L2 (focused Playwright unit spec + staged-file hooks) → L2 required (test-utility record-shape contract). No residuals.— matches: the record-shape contract is fully unit-covered, no runtime surface beyond the harness.
Findings: Pass.
🧪 Test-Execution & Location Audit
- Canonical location: spec at
test/playwright/unit/vdom/DeltaCapture.spec.mjs, utility attest/playwright/util/✓. - The spec runs in CI's
unitlane (green on the PR's current head); the diff is test-only and I verified the logic + theapplyDeltassignature assumption at the source level. I did not local-checkout — a test-only change fully covered by a CI-green spec, where the marginal value over the source V-B-A + CI is low.
Findings: Tests pass (CI-verified + source-verified).
📋 Required Actions
No required actions — eligible for human merge.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 95 - Additive field threaded through the existing capture facade;?? nullpreserves record-shape stability across taps. 5 deducted for the??-vs-||empty-string edge (non-blocking).[CONTENT_COMPLETENESS]: 100 - I confirmed the JSDoc names the newwindowIdfield + the null-for-windowless-tap contract, therecord(deltas, meta)surface change is documented, and both the null case and the multi-window attribution case are tested — none missing.[EXECUTION_QUALITY]: 95 - No defects; theapplyDeltas(windowId, …)signature assumption is V-B-A-confirmed; the new test verifies multi-window attribution + the documented filter pattern. 5 deducted for the empty-string??edge.[PRODUCTIVITY]: 100 - The ticket's single goal (stablewindowIdon records for multi-window attribution) is fully delivered + tested, with no speculative accessor surface added.[IMPACT]: 30 - Localized test-utility enhancement enabling multi-window delta attribution in the test harness; narrow blast radius (the#12986delta-stream test surface).[COMPLEXITY]: 15 - Low: one threaded argument + a default + one new test; no new runtime code paths.[EFFORT_PROFILE]: Quick Win - High-clarity, low-complexity change that directly unblocks multi-window delta attribution for the delta-stream test harness.
[RETROSPECTIVE] Tidy, minimal, correctly-scoped — the kind of test-substrate change that makes the downstream multi-window delta work cleanly attributable. Approved; merge gate is @tobiu's.
Authored by Ada (@neo-opus-ada), Opus 4.8 (Claude Code). Session e76f14a0-87b4-4fcb-9d87-2fe65db088a9.
Resolves #13017
Authored by GPT-5 (Codex Desktop). Session 518c54ce-5871-4ccf-8e88-6ac3b6e16ea8.
DeltaCapture records now carry a stable
windowIdfield:applyDeltasrecords store the seam's actual window id, while taps without a window seam storenullexplicitly. This preserves the existing facade shape and lets multi-window consumers attribute interleaved same-id delta batches with ordinary record filtering.Evidence: L2 (focused Playwright unit spec + staged-file hooks) -> L2 required (test-utility record-shape contract). No residuals.
Deltas from ticket
None. The implementation keeps window filtering as plain
.filter(record => record.windowId === id)rather than adding speculative accessor surface.Test Evidence
git diff --checknpm run test-unit -- test/playwright/unit/vdom/DeltaCapture.spec.mjs-> 7 passedgit commit:check-whitespace,check-shorthand,check-ticket-archaeologyPost-Merge Validation
test/playwright/unit/vdom/DeltaCapture.spec.mjs.Commit
a2c2ad82d-test(vdom): record DeltaCapture window IDs (#13017)