measure: holder-dogfood.sh takes --vdisplay like split-spring.sh
holder-dogfood.sh now takes --vdisplay=HZ, as split-spring.sh and burst-bench.sh already do.
Why
The STRESS phase needs a 1600 x 1000 pt window. On a 1920 x 1080 host display the Dock leaves about 967 pt, so AppKit clamps the window. Both 2026-10-28 runs on a 1080p measure host failed STRESS that way: the window is [1600, 967] pt, not [1600, 1000]. The same failure in split-spring.sh went away with --vdisplay=120, which placed the window at the full 1600 x 1000.
What changes
--vdisplay=HZcompilesscripts/ci/frame-pacing/vdisplay.mand opens a 1920 x 1200 virtual main display at HZ for the run. It is held for at most 2 h, so the helper ends by itself even after a SIGKILL. The script logs the helper's ready line.- Each model's dogfood now runs in the background through a fifo to
tee, and the script waits for both. A cancelled step (TERM, INT or HUP) therefore stops the dogfood and the helper at once. The log is complete before the JSON report reads it, and ateefailure still fails the step. - Without
--vdisplaynothing changes except that wait.
Tests
bash -npasses.- The fifo, wait and trap pattern was checked under /bin/bash 3.2: 20,000 lines all logged with exit status 3 kept, and a TERM during a 30 s child cleaned up at once and exited 143.
- Codex gpt-6-astra (high) review: SHIP at the head, after three FIX rounds (signal traps, deferred traps during a foreground pipeline, waiting for
tee). - The fleet rerun at a green ref with
--vdisplay=120follows this merge.
Risk: low. The change is in a measurement script only; no app code.
Agent session: agent session
š¤ Generated with Claude Code
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Adds a --vdisplay=HZ option to holder-dogfood.sh so the STRESS phase runs on a 1920Ć1200 virtual display. On a 1920Ć1080 host the Dock leaves about 967 pt, so AppKit clamps the 1600Ć1000 pt STRESS window and the run fails; split-spring.sh already solved this with --vdisplay=120.
The dogfood now runs in the background through a fifo to tee, so a cancelled step (TERM, INT, HUP) stops the dogfood and the virtual display at once, and the log is complete before the JSON report reads it. Without --vdisplay, behavior is unchanged except for the extra wait.