Repository navigation
bench: calibrate the paired Nightly comparison from A/A and slowed-bench runs #7928
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
870b9e9
29cfa66
61d5887
68c7abe
a8dbca8
4452ad2
490ce39
07ddc55
94474a0
f780d00
3e6511b
7382ea2
0e87d92
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -120,12 +120,15 @@ jobs: | |
| artifact-path: target/bench/nightly/rust-bench | ||
| benchmark: true | ||
| paired: true | ||
| # Report-only until quest/m1/bench-ci.md fixes the build bias behind | ||
| # an A/A false alarm; the site still lists its confirmed regressions. | ||
| - name: Rust shared bench targets | ||
| recipe: gh nightly rust-shared | ||
| artifact: bench-rust-shared | ||
| artifact-path: target/bench/nightly/rust-shared | ||
| benchmark: true | ||
| paired: true | ||
| report-only: true | ||
| - name: Relay session benchmarks | ||
| recipe: gh nightly rust-relay | ||
| artifact: bench-rust-relay | ||
|
|
@@ -235,7 +238,7 @@ jobs: | |
| # After the upload, so the benchmark site still records tonight's history and | ||
| # publishes the comparison that failed this job before the alert links to it. | ||
| - name: Fail on paired regressions | ||
| if: ${{ matrix.paired && steps.workload.outcome == 'success' }} | ||
| if: ${{ matrix.paired && !matrix.report-only && steps.workload.outcome == 'success' }} | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Technical details# Keep the unavailability failure under report-only
## Affected sites
- `.github/workflows/nightly.yml:241` — `!matrix.report-only` skips the entire `benchmark-report gate` invocation
- `sh/gh/bench-report.py:131` — `gate()` returns 1 for `regressions or comparison["unavailable"]`; `unavailable` covers base build/run and confirmation failures, and a missing `paired.json` raises
- `bench/README.md:902` — "A target the base cannot build or run fails the job too"
- `quest/m1/bench-ci.md:127` — the retained 2026-10-23 decision says the same
## Required outcome
- `rust-shared` still fails Nightly when its comparison cannot run (unavailable targets, no `paired.json`), or the README and quest say explicitly that report-only covers those too.
## Suggested approach
- Add a `--report-only` flag to `bench-report.py gate` that ignores `verdict == "regression"` but still counts `unavailable` and a missing `paired.json` toward the exit code, and pass `${{ matrix.report-only && '--report-only' || '' }}` from the workflow. |
||
| run: nix develop --command just gh benchmark-report gate "${{ matrix.artifact-path }}" | ||
|
|
||
| # gh-pages is the one Pages site, and each directory has one writer: this job owns | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[P2] Keep unavailable comparisons failing in report-only mode
This skips the only failure check for an unavailable comparison as well as the regression check. In
bench/run.sh, a failed base build/run or confirmation is recorded inpaired-unavailable.tsvwhile the measurement can still return success;sh/gh/bench-report.py:gate()is what fails oncomparison["unavailable"]. Consequently, if rust-shared's current targets succeed but its base fails to build or run, this change makes the job green without a valid paired comparison, contrary to the retained README/quest rule that such targets fail Nightly. Keep invoking validation and suppress only the confirmed-regression failure in report-only mode, with coverage for an unavailable base.