You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The test job step "Transcript geometry invariants" fails intermittently on main:
{"scene":"geometry-mixed-24-turns","trial":0,"coldHeightDrift":5945,"warmHeightDrift":0,"coldReaderDisplacement":365.375,"coldReaderSlips":2,"warmReaderSlips":0,...}
ExpectError: geometry-mixed-24-turns: unmeasured rows moved the reader, worst 365.375px
The gate allows at most one reader slip on the first cold upward sweep over unmeasured rows (coldReaderSlips <= 1, scripts/perf/geometry-ablation.mjs). Sometimes the sweep produces two.
How to reproduce
The step runs xvfb-run -a node scripts/perf/geometry-ablation.mjs --assert-stable against apps/desktop/storybook-static. The scene is the geometry-mixed-24-turns story in apps/desktop/stories/app-shell.stories.tsx.
The same failure also hit an unrelated PR (#5721, run).
Every CI failure reports exactly the same numbers (coldReaderDisplacement 365.375px, 2 slips, coldHeightDrift 5945). Every pass stays at one slip or fewer. On the #5721 branch, a rerun of the failed job failed again with the same numbers.
Locally (macOS, npm run build, npm --workspace @maka/desktop run build-storybook, then GEOMETRY_REPETITIONS=1 node scripts/perf/geometry-ablation.mjs --assert-stable), a clean main at f5aa3f0 fails 3 of 3 runs: coldReaderDisplacement 365.0625px, 2 slips. So this is at least partly a real regression, not only CI timing. The single passes in CI suggest that timing decides whether a second row gets measured too late, for example font or Markdown readiness, or the virtualizer's measure-ahead margin.
The fix should remove the race. Raising the slip threshold would only hide it.
Environment
GitHub Actions test job on main (Linux, xvfb, Electron via Storybook static build).
Logs, screenshots, or additional context
The assertion and its rationale are at the end of the per-scene loop in scripts/perf/geometry-ablation.mjs.
Activity
[-]Transcript geometry gate flakes on geometry-mixed-24-turns (two cold reader slips)[/-][+]Transcript geometry gate fails on geometry-mixed-24-turns (two cold reader slips)[/+]fix(ui): upgrade virtua and absorb clamped scroll corrections (#5724)