measure: holder-dogfood.sh takes --vdisplay like split-spring.sh

Merged
TE
10d ago
+54-4

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=HZ compiles scripts/ci/frame-pacing/vdisplay.m and 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 a tee failure still fails the step.
  • Without --vdisplay nothing changes except that wait.

Tests

  • bash -n passes.
  • 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=120 follows 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 Autofix with [code]smith
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.