Skip to content

Fix the booting FIRST-PAINT watch race (event-driven paint) - #281

Merged
theogravity merged 1 commit into
mainfrom
fix/pane-repaint-first-paint
Sep 30, 2026
Merged

theogravity merged 1 commit into
mainfrom
fix/pane-repaint-first-paint

Conversation

@theogravity

Copy link
Copy Markdown
Contributor

The pane-repaint booting case armed its single-shot paint at wall-clock +600 ms against seed's +500 ms sleep - a 100 ms margin CI's throttled container ate (shard 2/2 red on #280, which touches nothing here). The pane now waits on a go-file and repaints every 150 ms: nothing can paint before the watch is armed, the first paint always lands inside the 200 ms budget, and the 60 ms quiet beat still ends the watch on the FIRST paint. 9/9 x4 locally.

The paint was a single shot at wall-clock +600 ms behind seed's +500 ms
sleep: a 100 ms margin the throttled CI container ate (shard 2/2,
2026-09-30) - a stretched seed sleep started the watch after the paint,
and a late capture child never saw the byte again. The pane now waits on
a go-file (nothing can paint before the watch is armed, so `before` is
still genuinely blank) and repaints every 150 ms, comfortably inside the
200 ms no-growth budget and above the 60 ms quiet beat, so the watch
still ends on the FIRST paint going quiet - the claim the case pins.
@theogravity
theogravity merged commit 9074850 into main Sep 30, 2026
15 of 16 checks passed
@theogravity
theogravity deleted the fix/pane-repaint-first-paint branch September 30, 2026 04:50
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 30, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant