Skip to content

fix(bench): pair Criterion samples by full IDs - #6297

Merged
kixelated merged 5 commits into
mainfrom
quest/m1/release-perf/compare-harness
Oct 22, 2026
Merged

kixelated merged 5 commits into
mainfrom
quest/m1/release-perf/compare-harness

Conversation

@kixelated

@kixelated kixelated commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Criterion's --list truncates titles at 100 characters, so just bench <base> can miss long session cases. Its default reports also lived under build output rather than the current worktree's scratch directory.

Approach

Discover full IDs from isolated short Criterion measurements, then run exact comparisons with separate samples per case. Match baseline storage by full ID even when truncated directory suffixes change. Report added/removed cases from the exact inventories, since baseline measurements also write new/ samples. Reuse MOQ_BENCH_ARTIFACTS, defaulting to .scratch/bench, and document choosing a durable parent for reports that must survive worktree removal.

Impact

  • Public API and wire: none.
  • Benchmark evidence defaults to the current worktree's .scratch/bench; the existing environment override and final retained-path output remain available.
  • Consumer: the release performance epic's final comparison can pair long cases without manual joins.

Alternatives

--test does not write Criterion identity JSON, and every supported --list format uses truncated titles. A custom cargo-criterion protocol collector would add unnecessary machinery. Discovery samples remain separate from measured comparisons.

Validation

  • Real Criterion 0.8.2 reproduction: two distinct IDs longer than 100 characters have truncated display titles. The revised shell path produces two exact comparisons with reversed registration order and changed directory suffixes.
  • Twelve comparison tests pass, including full-ID collisions, baseline relocation and malformed inventory. They now run in the existing bench CI module. A direct shell smoke also verifies added/removed long IDs despite stale baseline new/ samples.
  • The initial scoped just ci passes. Wiring the tests into root orchestration selects all modules: the final gate passes its build/lint/binding modules, then stops at the unchanged Nix runner image because the host denies unshare writing /proc/self/uid_map.
  • Remaining global lints, workflow/TS path checks, all selected JS tests and 104 Python tests pass in direct continuation. Rust completes 9,350 tests: 9,349 pass, 60 skipped, with the sole failure being the base late-stats readiness issue fixed in ci: run merge queue tests with 24 workers #6290. This branch does not include that unrelated fix.
  • git diff --check passes.
  • After merging main and retiring the quest: quest check --base origin/main passes, and just check passes every module except flake, which stops at the same host unshare denial while building the runner image.

Quest

Completes and retires quest/m1/release-perf/compare-harness.md, removing its links from the release-perf epic.

Follow-ups

The epic retains its final release comparison. No additional quest is needed.

(Written by GPT-6; quest retirement by Claude Opus 5.5)

kixelated and others added 2 commits October 22, 2026 02:22
@kixelated kixelated changed the title Comparison harness fix(bench): pair Criterion samples by full IDs Oct 22, 2026
kixelated and others added 3 commits October 22, 2026 02:47
@kixelated
kixelated marked this pull request as ready for review October 22, 2026 21:11
@kixelated

Copy link
Copy Markdown
Collaborator Author

@codex review

(Written by Claude Opus 5.5)

@coderabbitai

coderabbitai Bot commented Oct 22, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 6 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 19651e00-7993-412f-b4c4-dc11ba8d81fb
📥 Commits

Reviewing files that changed from the base of the PR and between 43fc925 and f8ed041.

📒 Files selected for processing: 7
  • bench/README.md
  • bench/compare.py
  • bench/compare.test.py
  • bench/run.sh
  • quest/m1/release-perf/README.md
  • quest/m1/release-perf/compare-harness.md
  • sh/dispatch.sh

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-22T21:14:58.347341Z f8ed041 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. You're on a roll.

Reviewed commit: f8ed0419d6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@kixelated
kixelated added this pull request to the merge queue Oct 22, 2026
Merged via the queue into main with commit f42b336 Oct 22, 2026
12 checks passed
@kixelated
kixelated deleted the quest/m1/release-perf/compare-harness branch October 22, 2026 22:06
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