maniator / maniator/verticopolis

[Bug]: [P2] Screenshot check 'features' is intermittently nondeterministic on 27c-elevator-schedule-unsaved.png

Open
#762 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
TypeScript
Stars
5
Forks
1
PR merge metrics
No merged PRs in 30d

Description

The pinned-container determinism guard (two independent renders per shard) fails intermittently with:

screenshot check 'features' is nondeterministic: pixel bytes differ for docs/screenshots/27c-elevator-schedule-unsaved.png

Observed twice on PR #759 (runs on 2026-08-05, e.g. run 31015784833) with clean passes on intermediate pushes of the same branch, so it is probabilistic, not drift and not diff-related (#759 touches no render path). Always the SAME screenshot, which points at a wall-clock or RNG read that leaks into the 27c scene's render only when timing lands a certain way: the scene opens the elevator schedule dialog with unsaved changes, so suspects are a time-driven decoration ticking across a frame boundary between the two legs, an animation whose phase is captured mid-transition, or the unsaved-changes state depending on something time-seeded.

Until fixed this flake blocks merges at random (the determinism guard is the hard gate, correctly). Reruns pass; that is a workaround, not a fix.

Fix shape: reproduce locally in the pinned container by rendering the 27c scene twice in a loop and diffing; then pin whatever leaks (freeze the clock for the scene, or advance the sim to a stable frame before capture) the way the other scenes already do.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in the pinned-container rendering workflow and render docs/screenshots/27c-elevator-schedule-unsaved.png twice in a loop, diffing the pixel output. Investigate the 27c scene's clock, animation phase, and unsaved-changes state; done means repeated independent renders are byte-identical and the features determinism guard passes without relying on reruns.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.