Loading documentation…
Loading documentation…
bench:release captures render-scale, the performance showcase's paged storage at bench/results/paged-results.json, the interaction evidence at bench/results/interaction-results.json, data, core paths, formula, formula engines, matched engines, and XLSX, then re-records the render regression baseline last. Its smoke rehearsal writes only to bench/results/smoke/.
The interaction capture (bench:interaction, schema interaction-current-v2) measures the current build, not a comparison: packed inverse-index lookup latency in nanoseconds, inverse-index backing bytes, retained bytes after 100 distant edits, and the cold-route long task owned by Sheetwrite. It records the raw samples, the summary derived from them, the runner, and the method, and it holds those four metrics to absolute release ceilings. Version 1 recorded a one-off before/after pair whose baseline build cannot be re-measured at a later release, so no old sample is carried forward into the current capture.
Timing comparisons run deliberately on a controlled local machine, not as a required CI job. Capture ten fresh matched rounds, retain every raw sample, and compare the fresh artifact with the committed baseline. Any unapproved slowdown fails the local command.
bun run --filter @sheetwrite/bench bench:render:preparecd benchbun run src/render-driver.ts --rounds 10 --output results/render-fresh.json --markdown-output results/render-fresh.mdbun run src/check.ts --baseline results/render-baseline.json --fresh results/render-fresh.json --power-mode balanced --concurrency 1A result is a regression decision only when that final baseline check passes on the declared power mode and concurrency. bench:verify remains a smoke and safety-ceiling check.
The committed baseline at bench/results/render-baseline.json pins the harness source hashes, the declared sampling, and the runner (OS, CPU, Bun, Node, Chromium, power mode, concurrency). It is therefore machine- and harness-pinned: it must be re-recorded whenever a harness file, the sampling flags, the protocol version, or the runner changes, and the release capture does that as its last step by re-recording ten controlled rounds into bench/results/render-baseline-raw.json and promoting that artifact over the committed baseline. Until the re-recorded baseline is committed, bench:check fails closed on the fingerprint mismatch instead of comparing unrelated measurements.