Skip to content

Separate benchmark timing from routine CI - #334

Merged
acgetchell merged 1 commit into
mainfrom
chore/317-shared-tooling-benchmark-ci
Nov 5, 2026
Merged

acgetchell merged 1 commit into
mainfrom
chore/317-shared-tooling-benchmark-ci

Conversation

@acgetchell

@acgetchell acgetchell commented Nov 5, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Adopt research-repo-tools v0.2.6 for setup, Semgrep fixtures, and release tooling. Remove the temporary Semgrep adapter.
  • Keep benchmark compilation, input tests, and the untimed exact harness in routine native CI. Run full Criterion timings only on manual dispatch and through the tagged release workflow.
  • Refresh the managed tools and dependency locks. Keep Semgrep 1.182.1 on Intel macOS for wheel availability and use 1.184.0 on the CI platforms.

Validation

The local CI gates passed across split runs on Apple Silicon macOS. The release evidence and publishing tests were rerun after updating their fixtures for v0.2.6, with 145 passing.

  • 1,143 native Rust tests and 151 focused benchmark input tests passed. All 418 exact cases passed in Criterion test mode and produced no samples.
  • Benchmark compilation, doctests, examples, Semgrep fixture and production scans, and workflow and documentation checks passed.
  • The locked development environment resolved for Intel and Apple Silicon macOS, Linux, and Windows. Windows-targeted Python type checks passed.

Closes #317
Closes #321

Summary by CodeRabbit

  • CI & Benchmarking
    • Routine CI now validates benchmark inputs and runs benchmark smoke checks without collecting timings.
    • Benchmarks can be run manually; results are saved as downloadable artifacts for 14 days.
  • Tooling
    • Setup and validation now use the updated shared tooling, including refreshed Semgrep checks and platform-specific support.
  • Documentation
    • Contributor, benchmarking, and release guides now explain the updated setup, validation, and manual benchmark process.

- Run full exact Criterion timing on demand and retain untimed benchmark
  validation in routine CI.
- Use research-repo-tools v0.2.6 for setup, Semgrep fixtures, and release
  tooling, and remove the temporary scanner adapter.
- Refresh the managed tools and dependency locks while retaining the
  Intel macOS Semgrep wheel.

Closes #317
Closes #321
@acgetchell
acgetchell enabled auto-merge (squash) November 5, 2026 21:52
@coderabbitai

coderabbitai Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

This change routes setup and Semgrep fixture checks through locked research-repo-tools 0.2.6, adds benchmark input checks to routine CI while making full timings manually dispatched, and updates release tooling pins, workflows, tests, and documentation.

Changes: Shared CLI and Semgrep integration

Layer / File(s) Summary
Shared CLI and Semgrep integration
.github/actions/setup-tools/action.yml, CONTRIBUTING.md, justfile, pyproject.toml, tooling/shared_tooling.py, tooling/README.md, docs/code_organization.md, docs/dev/performance-tooling-adoption.md, tests/tooling/test_justfile_discoverability.py, tests/tooling/test_maintenance_integration.py, tests/tooling/test_semgrep_integration.py, tests/tooling/test_shared_tooling.py, tests/tooling/test_toolchain_integration.py
Setup and Semgrep fixture checks now use the installed CLI. The local adapter and its tests are removed. The tooling dependency and Semgrep constraints, integration tests, and documentation reflect the updated setup.
Benchmark validation and manual timings
.github/workflows/benchmarks.yml, justfile, CONTRIBUTING.md, docs/BENCHMARKING.md, tests/tooling/test_performance_workflow.py
Routine CI includes benchmark input and harness checks. Full exact timing runs are manually dispatched and upload Criterion output as an exploratory artifact. The contributor and benchmark guides describe these checks and timing runs.
Release tooling and evidence updates
.github/workflows/ci.yml, .github/workflows/release-benchmarks.yml, justfile, pyproject.toml, docs/RELEASING.md, docs/BENCHMARKING.md, docs/dev/performance-tooling-adoption.md, tests/tooling/test_release_evidence.py, tests/tooling/test_release_publishing.py
Release commands use updated shared-tooling and uv versions. Release-evidence tests add clean-checkout and download-bound checks. Release workflow assertions and documentation reflect the updated versions.

Estimated code review effort: 3 (Moderate) | ~30 minutes

Change: Refactor

Sequence Diagram(s)

sequenceDiagram
  participant Operator
  participant BenchmarksWorkflow as .github/workflows/benchmarks.yml
  participant Justfile as just bench-exact
  participant Criterion
  participant Artifact
  Operator->>BenchmarksWorkflow: Manually dispatch workflow
  BenchmarksWorkflow->>Justfile: Run exact benchmark with --noplot
  Justfile->>Criterion: Execute benchmark and write results
  BenchmarksWorkflow->>Artifact: Upload target/criterion/
Loading

Possibly related issues

  • Issue 326 tracks the routine-CI timing policy; this change moves full timing runs out of routine CI while retaining benchmark validation.
  • Issue 330 covers the tagged release benchmark workflow and later evidence reuse; this change retains the release acquisition path while changing exploratory timing triggers.
  • Issue 323 addresses duplicate release acquisition; this change retains release acquisition rather than implementing evidence reuse.

Possibly related PRs

  • acgetchell/la-stack#318: Introduced the benchmark release workflow and local tooling adapter that this change revises.
  • acgetchell/la-stack#319: Migrated release and performance commands to installed shared tooling, which this change updates to version 0.2.6.
  • acgetchell/la-stack#297: Established the performance tooling and benchmark workflow that this change updates.

Suggested labels: github-actions, performance, python, refactor, release

Merge Risk: Minimal · up to edcbb

The benchmark and tooling changes appear ready to merge after normal checks.

Pre-merge checks: Passed 3 · Inconclusive 1

Failed Failed checks: 1 inconclusive

Check name Status Explanation Resolution
Linked Issues check Inconclusive [#317] The PR adopts research-repo-tools 0.2.6, removes the adapter, restores shared commands, and adds locked-scanner and fixture failure tests. The package integration test checks the installed ve… Provide reviewable evidence of the guarantee-to-validator map and of required status and release-evidence coverage after the workflow trigger change.
Passed Passed checks: 3 passed

Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly describes the move of benchmark timing out of routine CI.
Out of Scope Changes check Passed [#317, #321] The workflow, recipe, test, documentation, and dependency changes support the shared-tooling adoption or benchmark CI separation. The release fixture updates support the shared-tooling ve…
Full details: Out of Scope Changes check

Explanation

[#317, #321] The workflow, recipe, test, documentation, and dependency changes support the shared-tooling adoption or benchmark CI separation. The release fixture updates support the shared-tooling version change. No unrelated change is established by the available evidence.

Full details: Linked Issues check

Explanation

[#317] The PR adopts research-repo-tools 0.2.6, removes the adapter, restores shared commands, and adds locked-scanner and fixture failure tests. The package integration test checks the installed version and distribution hashes without requiring review of the excluded uv.lock. [#321] Routine CI retains benchmark compilation, input tests, and untimed exact-harness checks. Manual dispatch runs full timings, and the release workflow retains its acquisition path. The summary does not establish whether the guarantee-to-validator map is complete or whether required status checks and release evidence remain valid after the trigger change.

Resolution

Provide reviewable evidence of the guarantee-to-validator map and of required status and release-evidence coverage after the workflow trigger change.

Finishing Touches

Generate docstrings

  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between ab3b8a0 and edcbb91.

Files ignored due to path filters: 2

  • Cargo.lock is excluded by !**/*.lock
  • uv.lock is excluded by !**/*.lock
Files selected for processing: 21

  • .github/actions/setup-tools/action.yml
  • .github/workflows/benchmarks.yml
  • .github/workflows/ci.yml
  • .github/workflows/release-benchmarks.yml
  • CONTRIBUTING.md
  • docs/BENCHMARKING.md
  • docs/RELEASING.md
  • docs/code_organization.md
  • docs/dev/performance-tooling-adoption.md
  • justfile
  • pyproject.toml
  • tests/tooling/test_justfile_discoverability.py
  • tests/tooling/test_maintenance_integration.py
  • tests/tooling/test_performance_workflow.py
  • tests/tooling/test_release_evidence.py
  • tests/tooling/test_release_publishing.py
  • tests/tooling/test_semgrep_integration.py
  • tests/tooling/test_shared_tooling.py
  • tests/tooling/test_toolchain_integration.py
  • tooling/README.md
  • tooling/shared_tooling.py
Files with no reviewable changes: 2

  • tests/tooling/test_shared_tooling.py
  • tooling/shared_tooling.py

Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour.

@codecov

codecov Bot commented Nov 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.35%. Comparing base (ab3b8a0) to head (edcbb91).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #334   +/-   ##
=======================================
  Coverage   98.35%   98.35%           
=======================================
  Files          16       16           
  Lines        7609     7609           
=======================================
  Hits         7484     7484           
  Misses        125      125           
Flag Coverage Δ
unittests 98.35% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

@acgetchell
acgetchell merged commit f520e2f into main Nov 5, 2026
23 checks passed
@acgetchell
acgetchell deleted the chore/317-shared-tooling-benchmark-ci branch November 5, 2026 22:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant