Context
Surfaced 2026-06-12 (operator-directed, night session). @tobiu's framing: "ask [a new agent] if they know you can log delta updates in Neo e2e tests to see exactly what's happening — the answer might be no." The capability has existed in the engine for years; the technique is in no agent-loaded skill, so agents debug VDOM/rendering divergences (incl. the v13 grid issues) blind to the single best lever.
The Problem
Neo's VDOM diff (vdom.Helper) emits an explicit, ordered, serializable delta array ({action, id, index, parentId, …}). Neo.config.logDeltaUpdates = true makes that stream observable: at src/main/DeltaUpdates.mjs:897-900, each applied update logs 'update ' + countUpdates, 'total deltas ', countDeltas, Neo.clone(data, true) — the full deep-cloned delta payload (a snapshot, so it reflects exactly what was applied), in order. In a Playwright whitebox e2e the page console carries that stream → read the exact delta sequence → a rendering divergence (a stray moveNode, a wrong index) is sitting in it.
The gap: grep -niE "delta|logDelta" .agents/skills/whitebox-e2e/references/whitebox-e2e-protocol.md → empty. The protocol teaches Neural-Link deep-state introspection but never the delta-stream lever. A new agent has no documented path from "the UI rendered wrong" to "read the deltas."
The Architectural Reality (verified surfaces — cite these, do not infer)
Neo.config.logDeltaUpdates — src/DefaultConfig.mjs:138
- Content-log —
src/main/DeltaUpdates.mjs:897-900 (if (NeoConfig.logDeltaUpdates && len > 0) console.log(… Neo.clone(data, true)))
- rAF frame-count —
src/Main.mjs:419 (the JSDoc's "as well as the requestAnimation frames")
- Replay —
Neo.applyDeltas, src/worker/App.mjs:119
- Sibling flag —
Neo.config.logVdomUpdateCollisions (src/DefaultConfig.mjs), parent/child update collisions
- Home:
.agents/skills/whitebox-e2e/references/whitebox-e2e-protocol.md (conditional payload — loaded only when authoring/debugging E2E tests; NOT the always-loaded router)
The Fix
Add a concise "Debugging a rendering divergence via the delta stream" section to whitebox-e2e-protocol.md: set Neo.config.logDeltaUpdates = true, read the delta stream from the captured console (each entry = the in-order deep-cloned delta payload that points at the divergence); mention logVdomUpdateCollisions + Neo.applyDeltas (replay).
Decision Record impact
aligned-with ADR 0008 — skill payload addition; content lands in the conditional references/ payload (not the router); load-effect neutral.
Acceptance Criteria
Out of Scope
- The locked-column grid fixture (#12936 — complementary).
- Wiring delta-logging into an automated assertion / the broader overview (#12937) — this documents the manual debug lever.
Related
- Sibling whitebox-e2e/grid: #12936 (fixture tests the grid; this sees its deltas).
- Architecture:
src/vdom/Helper.mjs — the delta emitter; the "vdom as an IPC protocol / json-first" framing (@tobiu, this session).
Release classification: boardless — substrate hygiene; recommended NOW (the debug lever for the class of bug blocking v13), not itself release-gating.
Origin Session ID: 0bc22bf2-9ded-4cdb-b351-182c3ab1d16f
Retrieval Hint: "logDeltaUpdates delta stream whitebox-e2e debug rendering divergence DeltaUpdates console clone"
Context
Surfaced 2026-06-12 (operator-directed, night session). @tobiu's framing: "ask [a new agent] if they know you can log delta updates in Neo e2e tests to see exactly what's happening — the answer might be no." The capability has existed in the engine for years; the technique is in no agent-loaded skill, so agents debug VDOM/rendering divergences (incl. the v13 grid issues) blind to the single best lever.
The Problem
Neo's VDOM diff (
vdom.Helper) emits an explicit, ordered, serializable delta array ({action, id, index, parentId, …}).Neo.config.logDeltaUpdates = truemakes that stream observable: atsrc/main/DeltaUpdates.mjs:897-900, each applied update logs'update ' + countUpdates, 'total deltas ', countDeltas, Neo.clone(data, true)— the full deep-cloned delta payload (a snapshot, so it reflects exactly what was applied), in order. In a Playwright whitebox e2e the page console carries that stream → read the exact delta sequence → a rendering divergence (a straymoveNode, a wrong index) is sitting in it.The gap:
grep -niE "delta|logDelta" .agents/skills/whitebox-e2e/references/whitebox-e2e-protocol.md→ empty. The protocol teaches Neural-Link deep-state introspection but never the delta-stream lever. A new agent has no documented path from "the UI rendered wrong" to "read the deltas."The Architectural Reality (verified surfaces — cite these, do not infer)
Neo.config.logDeltaUpdates—src/DefaultConfig.mjs:138src/main/DeltaUpdates.mjs:897-900(if (NeoConfig.logDeltaUpdates && len > 0) console.log(… Neo.clone(data, true)))src/Main.mjs:419(the JSDoc's "as well as the requestAnimation frames")Neo.applyDeltas,src/worker/App.mjs:119Neo.config.logVdomUpdateCollisions(src/DefaultConfig.mjs), parent/child update collisions.agents/skills/whitebox-e2e/references/whitebox-e2e-protocol.md(conditional payload — loaded only when authoring/debugging E2E tests; NOT the always-loaded router)The Fix
Add a concise "Debugging a rendering divergence via the delta stream" section to
whitebox-e2e-protocol.md: setNeo.config.logDeltaUpdates = true, read the delta stream from the captured console (each entry = the in-order deep-cloned delta payload that points at the divergence); mentionlogVdomUpdateCollisions+Neo.applyDeltas(replay).Decision Record impact
aligned-with ADR 0008— skill payload addition; content lands in the conditionalreferences/payload (not the router); load-effect neutral.Acceptance Criteria
whitebox-e2e-protocol.mdhas a delta-stream debugging section citingNeo.config.logDeltaUpdates+ the exact console output shape (deep-cloned payload, in order).DeltaUpdates.mjs:897-900/Main.mjs:419/App.mjs:119(no inference).lint-skill-manifestOK;grep logDeltaUpdates whitebox-e2e-protocol.mdnon-empty.Out of Scope
Related
src/vdom/Helper.mjs— the delta emitter; the "vdom as an IPC protocol / json-first" framing (@tobiu, this session).Release classification: boardless — substrate hygiene; recommended NOW (the debug lever for the class of bug blocking v13), not itself release-gating.
Origin Session ID: 0bc22bf2-9ded-4cdb-b351-182c3ab1d16f
Retrieval Hint: "logDeltaUpdates delta stream whitebox-e2e debug rendering divergence DeltaUpdates console clone"