Skip to content

bench: measure current interaction metrics in the release capture - #82

Open
chh-ay wants to merge 6 commits into
fix/negative-currency-formatfrom
bench/release-evidence
Open

chh-ay wants to merge 6 commits into
fix/negative-currency-formatfrom
bench/release-evidence

Conversation

@chh-ay

@chh-ay chh-ay commented Oct 6, 2026

Copy link
Copy Markdown
Owner

Summary

  • The performance showcase showed interaction evidence from a one-time v0.3.0 before/after record. No script produced that file, so it could not be refreshed. paged-results.json was also not part of bench:release.
  • New producer bench:interaction measures the current build: lookup latency (median and p95), inverse view-index bytes, bytes after 100 distant edits, and owned cold-route long tasks. Long-task ownership comes from CDP traces and the V8 CPU profile.
  • New schema interaction-current-v2 with absolute release ceilings: lookup p95 1,000 ns, inverse index 4,000,000 bytes, 100 distant edits 1 MiB, owned cold long task 50 ms. A comparison is shown only when a previous capture of the same schema exists. No "before" value is invented.
  • bench:release now also captures interaction and paged evidence, with smoke variants. The regression baseline re-record stays last. The paged artifact now records its commit stamp.
  • The performance showcase reads the new fields. It shows current values, and no comparison line for the first capture.

Verification

  • bench:release:smoke passes under the timing lock (render-scale, interaction, paged, data, core-paths, formula, xlsx).
  • Committed full interaction capture (5 samples) passes every ceiling. Bench tests: 114 pass.
  • Docs build, docs:check, and the performance browser spec (5 pass) pass. Layer check on the stack passes.

@chh-ay
chh-ay added this pull request to stack #69 October 6, 2026 18:23
chh-ay added 5 commits October 7, 2026 15:32
The performance showcase's decision record reads
results/interaction-results.json, but that artifact was a one-off before/after
pair of the 0.3.0 comparison with no producer: bench:release never refreshed it,
and its improvement-ratio gates cannot be re-measured at a later release.

bench:interaction now measures the current values of the four published metrics
on the current build - packed inverse-index lookup latency and backing bytes,
retained bytes after 100 distant edits, and the cold-route long task owned by
Sheetwrite - in fresh worker processes and a fresh browser context, and records
raw samples, their summary, runner provenance, and the method. Schema version 2
gates those metrics on absolute release ceilings, so no baseline build is
re-measured and no old sample is carried forward. Cold-route ownership is
reconstructed from a V8 CPU profile inside each long task and stated in the
artifact.

bench:release and its smoke rehearsal now capture the interaction and paged
artifacts, and the bench and guide documentation describe that set.
Replace the 0.3.0 before/after artifact with a capture of the current build at
the harness commit: five samples of packed inverse-index latency and backing
bytes, retained bytes after 100 distant edits, the Sheetwrite-owned cold-route
long task, and the cold route's usable time, each with its summary and the
runner that produced it. Every release ceiling passed, and the version 1 pair
now lives in git history only.
The performance evidence page is generated, so the capture set it names has to
come from scripts/docs.ts: the page now states that bench:release refreshes
render-scale, the showcase's paged storage, the interaction evidence, data,
core paths, formula, the engine captures, and XLSX, and what the interaction
capture measures.
The capture wrote the raw Chromium build number, so the artifact's runner
provenance did not say which browser it was. Record `Chromium <version>`, as the
other browser captures do; the next capture picks the string up.
The showcase now reads the interaction-current-v2 artifact: the four cards show
the current value of their metric and its release ceiling, and they show the
change only against a recorded predecessor capture, so a first capture states
the current value instead of an invented before. The scenario module annotates
the artifact shape it consumes, which keeps the predecessor optional.
@chh-ay
chh-ay force-pushed the bench/release-evidence branch from 3464279 to dbad27e Compare October 7, 2026 08:39
@chh-ay chh-ay mentioned this pull request Oct 8, 2026
86 of 96 tasks

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant