Skip to content

ci(pacquet): drop pnpm comparison and self-compare on main from integrated-benchmark#11913

Merged
zkochan merged 1 commit into
mainfrom
integrity-benchmarks
May 24, 2026
Merged

ci(pacquet): drop pnpm comparison and self-compare on main from integrated-benchmark#11913
zkochan merged 1 commit into
mainfrom
integrity-benchmarks

Conversation

@zkochan

@zkochan zkochan commented May 24, 2026

Copy link
Copy Markdown
Member

Summary

  • Drop --with-pnpm from every scenario step in the integrated-benchmark workflow. The pnpm-CLI baseline was useful while pacquet was slower than pnpm; now that pacquet is the perf target itself, the comparison is just noise.
  • When the workflow runs on main, HEAD and main point at the same commit, so the HEAD-vs-main comparison is wasted work. Resolve the target list at job level (BENCHMARK_TARGETS): pacquet@HEAD on main, pacquet@HEAD pacquet@main everywhere else (PRs, workflow_dispatch from non-main). The Bencher upload already filters to pacquet@HEAD, so the single-target result still lands on the main baseline as before.

Test plan

  • Workflow runs on this PR with BENCHMARK_TARGETS=pacquet@HEAD pacquet@main and produces a benchmark comment.
  • Once merged, the next push to main runs only pacquet@HEAD and uploads the result to Bencher as the new baseline.

Written by an agent (Claude Code, claude-opus-4-7).

Summary by CodeRabbit

  • Chores
    • Optimized internal benchmark workflow to dynamically adjust benchmark targets based on the branch being tested, improving CI/CD efficiency.

Review Change Stack

…rated-benchmark

The pnpm-CLI baseline was useful while pacquet was slower than pnpm; now
that pacquet is the perf target itself, comparing against pnpm on every
run is noise. Drop --with-pnpm from every scenario step.

When the workflow runs on main, HEAD and main point at the same commit,
so a HEAD-vs-main comparison is wasted work. Resolve the target list at
job level: pacquet@HEAD on main, pacquet@HEAD pacquet@main everywhere
else (PRs, workflow_dispatch from non-main). The Bencher upload already
filters to pacquet@HEAD, so the single-target result still lands on the
main baseline as before.
@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@coderabbitai

coderabbitai Bot commented May 24, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 91262c05-b032-4aca-81a7-6f7b5879c812

📥 Commits

Reviewing files that changed from the base of the PR and between f5d7723 and ef1d9e2.

📒 Files selected for processing (1)
  • .github/workflows/pacquet-integrated-benchmark.yml
📜 Recent review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Run benchmark on ubuntu-latest
  • GitHub Check: Analyze (javascript)
  • GitHub Check: Compile & Lint
🔇 Additional comments (1)
.github/workflows/pacquet-integrated-benchmark.yml (1)

61-67: LGTM!

Also applies to: 172-172, 182-182, 194-194, 201-204, 208-208, 217-217


📝 Walkthrough

Walkthrough

The PR refactors the pacquet integrated-benchmark workflow to consolidate revision selection logic. A single BENCHMARK_TARGETS environment variable now controls which pacquet revisions are benchmarked: only HEAD on main, or HEAD versus main on other refs. This variable replaces hardcoded revision arguments in all benchmark invocations.

Changes

Benchmark targets consolidation

Layer / File(s) Summary
BENCHMARK_TARGETS environment variable definition
.github/workflows/pacquet-integrated-benchmark.yml
New BENCHMARK_TARGETS env var selects pacquet revisions based on git ref: HEAD-only for main, HEAD vs main for other refs.
Apply BENCHMARK_TARGETS to benchmark invocations
.github/workflows/pacquet-integrated-benchmark.yml
Precompile and isolated-linker benchmark commands across all cache/install scenarios updated to use $BENCHMARK_TARGETS instead of explicit pacquet@HEAD pacquet@main arguments.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Possibly related PRs

  • pnpm/pnpm#11741: Both PRs modify .github/workflows/pacquet-integrated-benchmark.yml to change how integrated-benchmark selects pacquet revisions; this PR consolidates targets into an environment variable while the related PR uses explicit revision selectors.

Poem

🐰 A variable's born from revision's dance,
Where HEAD on main gets its single chance,
But elsewhere it compares with care,
Benchmarks now unified, benchmarks fair! 🔧✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately captures the main changes: removing pnpm comparison (dropping --with-pnpm) and optimizing benchmarks on main to self-compare rather than redundantly compare HEAD vs main.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch integrity-benchmarks

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 and usage tips.

@github-actions

Copy link
Copy Markdown
Contributor

Integrated-Benchmark Report (Linux)

Scenario: Isolated linker: fresh restore, cold cache + cold store

Command Mean [s] Min [s] Max [s] Relative
pacquet@HEAD 2.055 ± 0.094 1.953 2.220 1.02 ± 0.05
pacquet@main 2.006 ± 0.052 1.929 2.076 1.00
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 2.0552335305200002,
      "stddev": 0.0936138660192771,
      "median": 2.00791386602,
      "user": 2.7699551999999996,
      "system": 3.3691086599999998,
      "min": 1.95318441952,
      "max": 2.2204245355200003,
      "times": [
        2.1400786375200003,
        2.16707077552,
        1.97912030352,
        1.9999919665199999,
        2.10044333652,
        1.98995399352,
        1.98623157152,
        2.2204245355200003,
        1.95318441952,
        2.0158357655200003
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 2.0057261967200004,
      "stddev": 0.05156806828520102,
      "median": 2.00638999802,
      "user": 2.7711456999999995,
      "system": 3.3834619599999995,
      "min": 1.9293613105199998,
      "max": 2.0760373965200003,
      "times": [
        1.9293613105199998,
        1.98019352752,
        2.0647952215200003,
        2.0303184885200003,
        1.9529336955199998,
        2.03012828052,
        1.95800199752,
        1.98265171552,
        2.0528403335200003,
        2.0760373965200003
      ]
    }
  ]
}

Scenario: Isolated linker: fresh restore, hot cache + hot store

Command Mean [ms] Min [ms] Max [ms] Relative
pacquet@HEAD 675.4 ± 34.3 657.8 771.8 1.00 ± 0.06
pacquet@main 674.9 ± 15.3 660.6 716.3 1.00
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 0.67541953542,
      "stddev": 0.034296954161683144,
      "median": 0.66533489772,
      "user": 0.37403485999999997,
      "system": 1.4679447799999998,
      "min": 0.65783731022,
      "max": 0.7718112032200001,
      "times": [
        0.7718112032200001,
        0.66454936322,
        0.67157838422,
        0.67207370722,
        0.65783731022,
        0.67069743922,
        0.66030275222,
        0.6580454142200001,
        0.66117934822,
        0.6661204322200001
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 0.6748967373200001,
      "stddev": 0.015336744623631136,
      "median": 0.6708650487200001,
      "user": 0.37445645999999994,
      "system": 1.4783494799999999,
      "min": 0.66056771022,
      "max": 0.71631550722,
      "times": [
        0.71631550722,
        0.66627696222,
        0.67378370422,
        0.67127264722,
        0.66926970222,
        0.6734122422200001,
        0.67045745022,
        0.66056771022,
        0.67887906422,
        0.6687323832200001
      ]
    }
  ]
}

Scenario: Isolated linker: fresh install, cold cache + cold store

Command Mean [s] Min [s] Max [s] Relative
pacquet@HEAD 3.365 ± 0.085 3.287 3.581 1.00
pacquet@main 3.377 ± 0.189 3.253 3.883 1.00 ± 0.06
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 3.3652810343399993,
      "stddev": 0.08476999032473646,
      "median": 3.33877414894,
      "user": 5.231308919999999,
      "system": 3.5065959199999996,
      "min": 3.2867022214399997,
      "max": 3.5809562314399996,
      "times": [
        3.4078244924399996,
        3.2867022214399997,
        3.30966420044,
        3.33225335544,
        3.38415962244,
        3.37632945244,
        3.5809562314399996,
        3.3177420834399998,
        3.31188374144,
        3.34529494244
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 3.3767228124399997,
      "stddev": 0.18876391474752963,
      "median": 3.29677954994,
      "user": 5.24605982,
      "system": 3.4707005200000003,
      "min": 3.2531842164399998,
      "max": 3.8825115044399996,
      "times": [
        3.25559950144,
        3.2531842164399998,
        3.4095139624399997,
        3.29456691144,
        3.26591931344,
        3.4186475444399997,
        3.3937260704399996,
        3.29732090044,
        3.8825115044399996,
        3.29623819944
      ]
    }
  ]
}

Scenario: Isolated linker: fresh install, hot cache + hot store

Command Mean [s] Min [s] Max [s] Relative
pacquet@HEAD 2.552 ± 0.094 2.425 2.684 1.00 ± 0.05
pacquet@main 2.543 ± 0.094 2.432 2.732 1.00
BENCHMARK_REPORT.json
{
  "results": [
    {
      "command": "pacquet@HEAD",
      "mean": 2.5517756103600004,
      "stddev": 0.0938740693752885,
      "median": 2.54691007096,
      "user": 2.84555574,
      "system": 2.21699244,
      "min": 2.42460556896,
      "max": 2.68372030496,
      "times": [
        2.6751960549600002,
        2.56635132896,
        2.6180220119600004,
        2.6036890199600005,
        2.44001135696,
        2.5234322929600004,
        2.52746881296,
        2.42460556896,
        2.68372030496,
        2.45525935096
      ]
    },
    {
      "command": "pacquet@main",
      "mean": 2.54339134126,
      "stddev": 0.09369671614836934,
      "median": 2.5148498884600006,
      "user": 2.7974379399999996,
      "system": 2.27247814,
      "min": 2.43189067596,
      "max": 2.7323175719600004,
      "times": [
        2.5057481009600004,
        2.6208836429600004,
        2.4743634249600004,
        2.5239516759600003,
        2.62277849096,
        2.43189067596,
        2.4504626159600003,
        2.5761736009600003,
        2.49534361196,
        2.7323175719600004
      ]
    }
  ]
}

@github-actions

Copy link
Copy Markdown
Contributor

🐰 Bencher Report

Branchpr/11913
Testbedpacquet
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
isolated-linker.fresh-install.cold-cache.cold-store📈 view plot
🚷 view threshold
3,365.28 ms
(-30.76%)Baseline: 4,860.02 ms
5,832.03 ms
(57.70%)
isolated-linker.fresh-install.hot-cache.hot-store📈 view plot
🚷 view threshold
2,551.78 ms
(-33.11%)Baseline: 3,814.81 ms
4,577.78 ms
(55.74%)
isolated-linker.fresh-restore.cold-cache.cold-store📈 view plot
🚷 view threshold
2,055.23 ms
(-12.75%)Baseline: 2,355.68 ms
2,826.81 ms
(72.70%)
isolated-linker.fresh-restore.hot-cache.hot-store📈 view plot
🚷 view threshold
675.42 ms
(+2.67%)Baseline: 657.88 ms
789.46 ms
(85.55%)
🐰 View full continuous benchmarking report in Bencher

@zkochan zkochan merged commit b9de85d into main May 24, 2026
16 checks passed
@zkochan zkochan deleted the integrity-benchmarks branch May 24, 2026 20:12
@zkochan zkochan mentioned this pull request May 27, 2026
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