how this was recorded
the bench never trusts what wrec says about itself. every number on the benchmarks page is decoded out of the pixels of the finished recording — the same file a user would keep.
1 · a window that counts out loud
a stimulus window redraws 60 times a second, synced to the display. each redraw paints its own frame number as a strip of big black/white blocks — 1 bit per block, with guard patterns at both ends:
the number advances once per rendered frame, so every index that reaches the screen is consecutive. the window also holds a power assertion — a dimming display would otherwise read as a frame-rate collapse.
2 · wrec records it, black box
the harness drives the real release binary through the public CLI only:
wrec record start --target window:<id> --json, one
fresh isolated daemon per recording (own WREC_HOME, own
socket, env overrides scrubbed). no bench mode, no test hooks — wrec
cannot tell it is being measured.
3 · the file is the referee
after each run an AVAssetReader walks every frame of the
.mov and reads the block numbers back. missing number = a displayed
frame the recorder lost. from this fall out observed fps, capture completeness,
duplicate frames, PTS gaps and ordering. the engine's own frames/dropped counters are recorded too — and if they disagree with the decoded truth by
more than 5%, that is itself a failing gate.
4 · cost and latency on the side
while recording, ps samples cpu and rss of the daemon tree every
250 ms; start latency (command → first frame written) and finalize latency (duration
elapsed → closed file) come from the timestamped
--json job events.
5 · a/b, not vibes
for a release, candidate and reference binaries run interleaved — A B A B A B, three reps each per profile, same session — and gates compare paired medians. a regression fails only if the candidate is >15% worse and beyond an absolute noise floor. thermal drift and background load hit both binaries equally, so they cancel.
6 · three verdicts, not two
on battery, under thermal pressure, under load, or when same-binary reps disagree beyond the noise floor, perf gates return inconclusive instead of pass/fail. correctness gates (codec, dimensions, PTS order, frame accounting) always stay hard — machine load cannot corrupt those.
profiles: efficient-720p30-hevc · balanced-1080p30-hevc ·
high-native60-hevc · balanced-1080p30-h264. every release ships its bench
as wrec-bench-<version>.json; run it yourself with
bun run bench release --against <previous wrec>.