LearnNewsExamplesServices
Frontmatter
id16402
titleDense tour leaves the 100k Matrix update stream dead while the feed keeps streaming
stateClosed
labels
bugaigrid
assigneesneo-fable
createdAtAug 2, 2026, 10:10 PM
updatedAtAug 3, 2026, 2:44 AM
githubUrlhttps://github.com/neomjs/neo/issues/16402
authorneo-fable
commentsCount4
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 3, 2026, 2:41 AM

Dense tour leaves the 100k Matrix update stream dead while the feed keeps streaming

neo-fable
neo-fable commented on Aug 2, 2026, 10:10 PM

Context

Operator-observed during headed dense-tour runs (2026-08-02): after roughly the second tour step, the 100k Matrix stops updating cells for good, while the rest of the app stays visibly alive. Reproduced same-hour with a measuring probe (receipts below). This is the film-critical surface: a frozen Matrix during tour choreography falsifies the "content never stops living" thesis on camera — the same stake #16353 carried for the splitter trigger.

The Problem

The Matrix and the Feed grid have different liveness signatures, and the defect separates them cleanly:

Headed probe (1280×720, dev head 47d998f1f6-era tree, apps/workstation, per-2s MutationObserver windows over each grid body — childList + characterData; feed grid as in-run control; zero pageerrors):

[t+4s]  matrix: 122   feed: 50   "Audit crosses the matrix split preview…"
[t+10s] matrix: 116   feed: 50   "…Sparkline receives a new values array…"
[t+12s] matrix: 115   feed: 50   "light mode…"
[t+16s]              (tour reports complete — 11 beats)
[t+20s] matrix: 104   feed: 50
[t+26s] matrix:  78   feed: 50
[t+36s] matrix:  78   feed: 50   ← last Matrix burst, ever
[t+38s…t+90s] matrix: 0 × 27 consecutive windows   feed: 50 in EVERY window
  • Baseline: the Matrix updates in bursts (~78–122 mutations every ~8–12s — its natural pulse), the Feed streams continuously (50/2s, the 10 events/sec feed).
  • After the tour, the Matrix bursts cease permanently (54+ seconds of zero across 27 windows) while the Feed never misses a window.
  • The operator's observation places the freeze earlier (mid-tour, around step 2); the probe run froze after completion. Both fit "a tour beat boundary kills the Matrix update stream"; which beat varies between runs.

The Architectural Reality

  • The page is healthy at freeze time: the Feed grid's mutation stream, timers, vdom delta pipeline, and rendering all run uninterrupted; no page errors.
  • The grid's layout width never changed across the run (336px constant) — no dock resize committed. This measured fact DOWNGRADES the #16375 geometry family (echo-swallow / transform-poison, repaired in PR #16390) as the prime suspect for this trigger: the freeze is update-SOURCE-shaped, not geometry-shaped.
  • The tour is deterministic by design ("11 deterministic beats"); at least one beat interacts with Matrix content directly (the Sparkline values-array beat), and beats touching the Matrix pane (split preview crossing) may pause, redirect, or take ownership of the Matrix churn generator for determinism. The prime suspect class is the tour↔churn lifecycle seam: a pause-for-determinism whose resume leg is conditional/broken, a generator ownership handoff that never hands back, or a tour-end state flip the Matrix scheduler reads as terminal.
  • #16353 (closed) proved repaint truth for the SPLITTER trigger: store-accepts + identity-survives + exact-cell-repaints all hold across committed drags. This ticket's trigger is tour choreography; the closed witness does not cover it.
  • Relevant surfaces to read first: the workstation tour script (apps/workstation/tour/denseWorkstation.mjs) for beats that touch the Matrix pane or its stores; the Matrix churn/update scheduler (whatever drives the ~10s burst pulse — follow the store/interval ownership from apps/workstation); TourRunner step settlement (#16359 landed injected-callback settlement — check what tour start/finish toggles app-side).

The Fix

  1. Instrument the Matrix update chain across one tour run: who fires the burst pulse (worker interval / store task), and what state does each tour beat toggle on it (pause flags, generator swaps, store references).
  2. Identify the first beat boundary after which the pulse owner never fires again (or fires into a dead store/component reference).
  3. Repair at the owning seam — likely the tour's pause/resume contract or the churn generator's ownership handoff — never by adding screenplay delays (the #16353 wall applies unchanged).
  4. Regression witness: a headed spec that runs the full dense tour and asserts the Matrix mutation pulse RESUMES within one pulse period after tour completion (feed-grid control included), plus a mid-tour liveness floor if the operator-observed mid-tour variant reproduces under instrumentation.

Acceptance Criteria

  • Root cause named at the owning seam, with a receipt showing the exact beat boundary and the state that killed the pulse.
  • Worker grid geometry converges to the DOM box without requiring rendering opportunities: under a rendering-starved page state (document.hidden, zero rAF ticks), a geometry-changing dock operation yields converged worker containerWidth/availableHeight (paint-independent read), and a degenerate mount-time pool populates through the same channel. (Restated 2026-08-03 by the ticket author: the original "resumes its update pulse within one pulse period" bound a pulse that the census proved does not exist — no driver touches the scale store; post-tour idle is by design. Receipts: issuecomment-5160783031.)
  • The Feed grid control stays uninterrupted throughout (guards against a fix that trades one stream for the other).
  • The mid-tour freeze variant (operator-observed around step 2) is either reproduced-and-covered by the same fix, or explicitly separated with its own receipt.
  • No fixed-delay settlement and no Workstation-specific timing offsets in the witness.

Out of Scope

  • Grid worker-geometry integrity across dock resizes — #16375 / PR #16390.
  • The DockFlip same-node-resize presentation defect — #16391.
  • Splitter-drag repaint truth — #16353 (closed, witnessed).

Related

Related: #16353 · #16375 · PR #16390 · #16391 · #16359

Live latest-open sweep: checked latest 20 open issues at 2026-08-02T20:12Z; no equivalent found (the dock/grid family covers drag, tear-out, popup, staging — none the tour trigger). A2A in-flight claim sweep: recent lane-claims (#16355, #16391, #16398, #16344-family) — no overlap.

Origin Session ID: 3bdbcbb5-b77b-46f5-88b7-9dbb124733fe

Retrieval Hint: "dense tour matrix update stream freeze feed control burst pulse"