chore: update package manager to pnpm v12#12811
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (3)
💤 Files with no reviewable changes (1)
📝 WalkthroughWalkthroughThe project updates its pnpm toolchain metadata to Changespnpm toolchain update
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
Integrated-Benchmark Report (Linux)Commit: Each scenario reports direct installs and pnpr installs. Bencher consumes pacquet@HEAD and pnpr@HEAD. Scenario: Isolated linker: fresh restore, cold cache + cold store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 4.1927293183200005,
"stddev": 0.19163205248697363,
"median": 4.10834073342,
"user": 3.90130542,
"system": 3.54549332,
"min": 3.99936772192,
"max": 4.6457731869200005,
"times": [
4.6457731869200005,
4.19471068392,
4.10315153192,
4.21179809192,
4.39231800992,
4.10556683292,
4.06240680692,
3.99936772192,
4.111114633920001,
4.10108568292
]
},
{
"command": "pacquet@main",
"mean": 4.180159650120001,
"stddev": 0.1840025559762075,
"median": 4.092714495920001,
"user": 3.8819046199999994,
"system": 3.549110319999999,
"min": 3.99100806192,
"max": 4.472306313920001,
"times": [
4.262154053920001,
4.0462214559200005,
3.99100806192,
4.472306313920001,
4.01534480192,
4.138285345920001,
4.3931086309200005,
4.3970350189200005,
4.038989171920001,
4.04714364592
]
},
{
"command": "pnpr@HEAD",
"mean": 2.14871041142,
"stddev": 0.05433836132632036,
"median": 2.16213093192,
"user": 2.6678890199999996,
"system": 3.0794845199999994,
"min": 2.05998835192,
"max": 2.22638831392,
"times": [
2.16943865292,
2.05998835192,
2.11089128992,
2.07985231892,
2.21645653192,
2.15482321092,
2.17190907292,
2.12744152792,
2.22638831392,
2.16991484292
]
},
{
"command": "pnpr@main",
"mean": 2.19743466022,
"stddev": 0.1280936910760945,
"median": 2.20141439942,
"user": 2.6535283199999995,
"system": 3.0270749199999996,
"min": 2.04871482592,
"max": 2.43210473092,
"times": [
2.35980659292,
2.22932925792,
2.24893117192,
2.43210473092,
2.06933475892,
2.21846767692,
2.06877811092,
2.11451835392,
2.04871482592,
2.18436112192
]
}
]
}Scenario: Isolated linker: fresh restore, hot cache + hot store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 0.6556674,
"stddev": 0.017563618207453165,
"median": 0.6519567163000001,
"user": 0.38777806000000004,
"system": 1.3378484199999998,
"min": 0.6327935838000001,
"max": 0.6913298678,
"times": [
0.6418471008000001,
0.6492602058000001,
0.6729522468000001,
0.6327935838000001,
0.6581726538000001,
0.6400412298000001,
0.6675537128000001,
0.6546532268,
0.6480701718,
0.6913298678
]
},
{
"command": "pacquet@main",
"mean": 0.6618006751000001,
"stddev": 0.04793767325014555,
"median": 0.6446410013000001,
"user": 0.38745376000000004,
"system": 1.3385665199999996,
"min": 0.6297963378000001,
"max": 0.7881175988000001,
"times": [
0.6440076168000001,
0.6297963378000001,
0.6611332358,
0.6385519848000001,
0.6458868898000001,
0.6376076388,
0.6452743858000001,
0.7881175988000001,
0.6931805848000001,
0.6344504778000001
]
},
{
"command": "pnpr@HEAD",
"mean": 0.7171516638000001,
"stddev": 0.014781152702166633,
"median": 0.7180092853000001,
"user": 0.41547036000000004,
"system": 1.3771440199999998,
"min": 0.6999003708000001,
"max": 0.7451088008000001,
"times": [
0.7184007058,
0.7361485448000001,
0.7451088008000001,
0.7005375788000001,
0.6999003708000001,
0.7070403808000001,
0.7059833968000001,
0.7198837618000001,
0.7208952328000001,
0.7176178648000001
]
},
{
"command": "pnpr@main",
"mean": 0.7223299727000001,
"stddev": 0.04762297418002603,
"median": 0.7061898618000001,
"user": 0.40031616000000003,
"system": 1.35665572,
"min": 0.6915194358000001,
"max": 0.8522069468000001,
"times": [
0.6915194358000001,
0.7337703028000001,
0.6968188828,
0.7030170388000001,
0.7265802658000001,
0.7048545138000001,
0.7075252098000001,
0.7131994478000001,
0.8522069468000001,
0.6938076828
]
}
]
}Scenario: Isolated linker: fresh install, cold cache + cold store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 4.32121646296,
"stddev": 0.04982309706597351,
"median": 4.31674748816,
"user": 3.7732905599999995,
"system": 3.45671702,
"min": 4.23587630566,
"max": 4.40036962666,
"times": [
4.40036962666,
4.31024188466,
4.28125161066,
4.35527983866,
4.32325309166,
4.38616909066,
4.28353233066,
4.329329115659999,
4.30686173466,
4.23587630566
]
},
{
"command": "pacquet@main",
"mean": 4.28596578886,
"stddev": 0.05530251363170166,
"median": 4.28026864966,
"user": 3.7596940599999997,
"system": 3.43098762,
"min": 4.18663115566,
"max": 4.40186251266,
"times": [
4.31154338266,
4.40186251266,
4.18663115566,
4.2964316796599995,
4.270363456659999,
4.27144995566,
4.256391939659999,
4.289087343659999,
4.3204734906599995,
4.25542297166
]
},
{
"command": "pnpr@HEAD",
"mean": 2.1552438507600007,
"stddev": 0.06946898699469427,
"median": 2.1486405176600005,
"user": 2.48389656,
"system": 2.9610646199999993,
"min": 2.0690641376600003,
"max": 2.25823384866,
"times": [
2.0690641376600003,
2.07903935666,
2.17239779866,
2.1640836926600002,
2.1331973426600004,
2.22746104666,
2.12386057466,
2.25823384866,
2.24137611566,
2.08372459366
]
},
{
"command": "pnpr@main",
"mean": 2.15696007656,
"stddev": 0.11637021229532256,
"median": 2.13439537716,
"user": 2.5202227599999993,
"system": 2.91359782,
"min": 2.0218742676600003,
"max": 2.36805709966,
"times": [
2.1184886776600003,
2.14440456166,
2.14352854366,
2.36805709966,
2.0218742676600003,
2.06885370466,
2.2281675196600004,
2.02932139966,
2.1252622106600003,
2.32164278066
]
}
]
}Scenario: Isolated linker: fresh install, hot cache + hot store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 1.3739970053800001,
"stddev": 0.013026242076098857,
"median": 1.37474124948,
"user": 1.3360634,
"system": 1.7049895400000001,
"min": 1.35019860348,
"max": 1.39258210148,
"times": [
1.37719299048,
1.39258210148,
1.3753160704799998,
1.35867728448,
1.36837174748,
1.37416642848,
1.38127016148,
1.39067148248,
1.37152318348,
1.35019860348
]
},
{
"command": "pacquet@main",
"mean": 1.38753841548,
"stddev": 0.058972779242372354,
"median": 1.3718041159799998,
"user": 1.3500895999999998,
"system": 1.69201494,
"min": 1.34372811648,
"max": 1.54893044748,
"times": [
1.40207873548,
1.3776726474799998,
1.37028990248,
1.54893044748,
1.38298853848,
1.36277512348,
1.34372811648,
1.3559610764799999,
1.37331832948,
1.35764123748
]
},
{
"command": "pnpr@HEAD",
"mean": 0.6838603343800002,
"stddev": 0.037939390303996,
"median": 0.67367258448,
"user": 0.3453023,
"system": 1.30082214,
"min": 0.6525830224800001,
"max": 0.7891529034800001,
"times": [
0.6525830224800001,
0.6806085724800001,
0.6726821204800001,
0.7891529034800001,
0.66507500348,
0.6755487494800001,
0.6727558474800001,
0.6828519554800001,
0.6741062934800001,
0.67323887548
]
},
{
"command": "pnpr@main",
"mean": 0.65368701098,
"stddev": 0.006734517258303814,
"median": 0.65310468298,
"user": 0.34388680000000005,
"system": 1.2779603399999997,
"min": 0.6440972704800001,
"max": 0.66613586548,
"times": [
0.6571131534800001,
0.66613586548,
0.6489688054800001,
0.6611953794800001,
0.6554424384800001,
0.64684624148,
0.6440972704800001,
0.6555906514800001,
0.6507669274800001,
0.65071337648
]
}
]
}Scenario: Isolated linker: fresh install, cold cache + hot store
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 3.06680781566,
"stddev": 0.03584814851881262,
"median": 3.0583894800599998,
"user": 1.8063188399999999,
"system": 1.97369958,
"min": 3.02278098356,
"max": 3.13890501156,
"times": [
3.08406205556,
3.07708182856,
3.02278098356,
3.05665106356,
3.06012789656,
3.04333428356,
3.03293541656,
3.13890501156,
3.10778077056,
3.04441884656
]
},
{
"command": "pacquet@main",
"mean": 3.04689064946,
"stddev": 0.04263955971826759,
"median": 3.03041132456,
"user": 1.77852344,
"system": 1.9710497800000002,
"min": 3.00163772956,
"max": 3.13450139856,
"times": [
3.03233263556,
3.02489163956,
3.02701542756,
3.02927952256,
3.00163772956,
3.00963380256,
3.03154312656,
3.08343935356,
3.13450139856,
3.09463185856
]
},
{
"command": "pnpr@HEAD",
"mean": 0.67738097346,
"stddev": 0.011988792687341314,
"median": 0.6772079930600001,
"user": 0.34451164,
"system": 1.3081797800000001,
"min": 0.65652397456,
"max": 0.69739145556,
"times": [
0.6825465245600001,
0.6782491405600001,
0.6718713995600001,
0.68384193756,
0.6761668455600001,
0.66723708256,
0.6690221725600001,
0.65652397456,
0.69739145556,
0.69095920156
]
},
{
"command": "pnpr@main",
"mean": 0.6690560754600001,
"stddev": 0.012766002019247807,
"median": 0.66549878956,
"user": 0.35101383999999997,
"system": 1.27761688,
"min": 0.65482248156,
"max": 0.6948622855600001,
"times": [
0.6581661185600001,
0.6611016485600001,
0.65482248156,
0.66161868556,
0.66975375356,
0.6753847725600001,
0.66937889356,
0.6948622855600001,
0.68484545156,
0.66062666356
]
}
]
}Scenario: Isolated linker: fresh resolve, hot cache, offline
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 0.65447396952,
"stddev": 0.011994060335464914,
"median": 0.6529587302200001,
"user": 0.62471594,
"system": 0.1476601,
"min": 0.6404327307200001,
"max": 0.67515162372,
"times": [
0.6415626507200001,
0.6670784227200001,
0.6568774757200001,
0.6537159797200001,
0.6671730247200001,
0.67515162372,
0.6522014807200001,
0.6404327307200001,
0.6463523997200001,
0.6441939067200001
]
},
{
"command": "pacquet@main",
"mean": 0.6519586924200003,
"stddev": 0.013293831184445416,
"median": 0.6496697637200001,
"user": 0.62086194,
"system": 0.15050469999999996,
"min": 0.6372960807200001,
"max": 0.6858768087200001,
"times": [
0.6470864067200001,
0.6508077117200001,
0.6486203087200001,
0.65071921872,
0.6858768087200001,
0.6410940257200001,
0.6372960807200001,
0.6478785467200001,
0.6510490117200001,
0.6591588047200001
]
},
{
"command": "pnpr@HEAD",
"mean": 0.10798476224000002,
"stddev": 0.0005063498522330448,
"median": 0.10795642572000001,
"user": 0.027056,
"system": 0.019093299999999997,
"min": 0.10695111972000002,
"max": 0.10932328672000001,
"times": [
0.10821227672000001,
0.10843675172000002,
0.10739048972000001,
0.10832016372000002,
0.10827289672000001,
0.10774774772000001,
0.10782948772,
0.10782790572,
0.10814568872000001,
0.10734769072000001,
0.10932328672000001,
0.10695111972000002,
0.10805985672000001,
0.10741727972000001,
0.10837406572000001,
0.10792079072,
0.10777537572000001,
0.10795642572000001,
0.10850908672000001,
0.10739799372000002,
0.10802280072,
0.10810918072,
0.10768879472000001,
0.10778463472000001,
0.10879726472000001
]
},
{
"command": "pnpr@main",
"mean": 0.10797530504000001,
"stddev": 0.0005246838353278988,
"median": 0.10816691872,
"user": 0.027566320000000005,
"system": 0.018944739999999998,
"min": 0.10703723972000001,
"max": 0.10875377372000002,
"times": [
0.10737459972,
0.10777733172000001,
0.10837748072000002,
0.10742138672000001,
0.10844608072,
0.10875377372000002,
0.10807593872000001,
0.10738355672000001,
0.10824910172,
0.10855934172000001,
0.10744554172000001,
0.10848783772000001,
0.10778762072,
0.10703723972000001,
0.10853459472000002,
0.10830773072000001,
0.10711320172000001,
0.10816691872,
0.10847610472000001,
0.10772041572,
0.10821616172000001,
0.10761975072,
0.10849354072,
0.10721897372000001,
0.10833840072
]
}
]
}Scenario: Isolated linker: fresh restore, cold cache + cold store + cold pnpr
BENCHMARK_REPORT.json{
"results": [
{
"command": "pacquet@HEAD",
"mean": 6.96605315388,
"stddev": 0.14587738209129397,
"median": 6.97707099208,
"user": 4.05991466,
"system": 3.8247993799999995,
"min": 6.77105538258,
"max": 7.13245858158,
"times": [
7.03624400258,
7.06397941458,
7.13245858158,
7.12358758658,
6.83671727658,
6.82672098958,
6.77105538258,
6.91789798158,
7.1305607465800005,
6.82130957658
]
},
{
"command": "pacquet@main",
"mean": 6.963556656180001,
"stddev": 0.1439829016823795,
"median": 6.91671682408,
"user": 4.02259606,
"system": 3.84142698,
"min": 6.8181582055800005,
"max": 7.2842367255800005,
"times": [
6.83446738858,
6.8181582055800005,
6.94466744258,
6.92779232058,
6.905641327580001,
7.11736354558,
7.03212851158,
7.2842367255800005,
6.87102715358,
6.90008394058
]
},
{
"command": "pnpr@HEAD",
"mean": 5.000582384079999,
"stddev": 0.10189158118801318,
"median": 5.001675155580001,
"user": 2.7570732599999994,
"system": 3.2636564799999994,
"min": 4.84782616958,
"max": 5.16934144958,
"times": [
5.004135943580001,
5.08053801358,
5.11116359558,
4.910906654580001,
5.16934144958,
4.84782616958,
5.03351520958,
4.958589287580001,
4.9992143675800005,
4.89059314958
]
},
{
"command": "pnpr@main",
"mean": 4.99936708558,
"stddev": 0.10841850226500996,
"median": 4.9573054370800005,
"user": 2.72950086,
"system": 3.26675628,
"min": 4.87081048558,
"max": 5.17233246658,
"times": [
5.17233246658,
4.88524154858,
4.95532289758,
5.00547656958,
4.94689034958,
4.93581141058,
4.87081048558,
4.959287976580001,
5.15533743558,
5.10715971558
]
}
]
} |
|
| Branch | pr/12811 |
| Testbed | pnpr |
⚠️ WARNING: No Threshold found!Without a Threshold, no Alerts will ever be generated.
Click here to create a new Threshold
For more information, see the Threshold documentation.
To only post results if a Threshold exists, set the--ci-only-thresholdsflag.
Click to view all benchmark results
| Benchmark | Latency | milliseconds (ms) |
|---|---|---|
| isolated-linker.fresh-install.cold-cache.cold-store | 📈 view plot | 2,155.24 ms |
| isolated-linker.fresh-install.cold-cache.hot-store | 📈 view plot | 677.38 ms |
| isolated-linker.fresh-install.hot-cache.hot-store | 📈 view plot | 683.86 ms |
| isolated-linker.fresh-resolve.hot-cache.offline | 📈 view plot | 107.98 ms |
| isolated-linker.fresh-restore.cold-cache.cold-store | 📈 view plot | 2,148.71 ms |
| isolated-linker.fresh-restore.cold-cache.cold-store.cold-pnpr | 📈 view plot | 5,000.58 ms |
| isolated-linker.fresh-restore.hot-cache.hot-store | 📈 view plot | 717.15 ms |
…tore index (#12829) Runtime archives (Node.js / Bun / Deno) ship no package.json, so pacquet synthesizes one carrying name, version, and bin. That synthesized manifest was only added to the in-memory cas_paths in fetch_binary_resolution_to_cas, after the download had already queued the store-index row, so the persisted PackageFilesIndex recorded no package.json and no bundled manifest. A cold fetch masks this — the current install's slot still gets the manifest from cas_paths. But a warm install materializes the runtime straight from the store-index row (via the warm-batch prefetch, which never calls fetch_binary_resolution_to_cas), so the slot lands without a package.json and the warm-batch bin linker finds no bin. That is the CI failure on #12811: the root install cold-fetches node@runtime:26.4.0 and the later pnpm dlx node@runtime:26.4.0 warm-reads the manifest-less row and dies in getBinName with dlx_read_manifest. Thread the synthesized manifest into the two binary download paths as append_manifest, mirroring pnpm's appendManifest: fold it into the extracted output's cas_paths, the row's files map, and its bundled manifest before the row is persisted, so warm and cold installs land the same slot. This brings pacquet in line with the TypeScript stack, which already bakes appendManifest into the files index via addManifestToCafs.
Support the recursive project-listing path used by the pnpm repo CI test chunker. Pacquet's `list` depth parser already treated `-1` as project-only mode, but clap rejected `--depth -1` before the parser saw it. In addition, `dispatch_query::list` ignored the recursive flag, so `pn -r list --depth=-1 --json` returned only the workspace root. The chunker then found no `.test` scripts and skipped every Windows chunk. Allow hyphen-prefixed depth values, pass the recursive flag into `list` and `ll`, and render selected workspace projects for recursive project-only listings. This matches TypeScript pnpm for `pn -r list --depth -1 --json` and keeps filtered recursive selection on the shared workspace filtering path. Sanitize root package names in tree-mode labels before printing dependency-free roots, matching pacquet's existing terminal-output sanitizer for other list labels. The TypeScript list helper still prints raw names and can be aligned in a separate TS changeset if maintainers want exact parity for that hardening. Also map the current `pkg` command in the version-switch command-name helper so the merge commit remains exhaustive under Dylint. Adds parser, integration, and renderer regressions for the CI command shape, package-param project-only parity, and root-label sanitization. Related to #12811.
PR Summary by QodoUpgrade package manager to pnpm v12 (alpha) and align CI tooling
AI Description
Diagram
High-Level Assessment
Files changed (4)
|
Code Review by Qodo
Context used✅ Compliance rules (platform):
18 rules 1. Pacquet bump workflow mismatch
|
| configDependencies: | ||
| '@pnpm/pacquet': 0.11.12 | ||
|
|
||
| enableGlobalVirtualStore: true | ||
|
|
||
| enablePrePostScripts: false |
There was a problem hiding this comment.
1. Pacquet bump workflow mismatch 🐞 Bug ⚙ Maintainability
This PR removes the @pnpm/pacquet configDependency, but the scheduled update-lockfile workflow still runs pnpm add --config @pnpm/pacquet, so the next automation run will re-add pacquet and rewrite pnpm-workspace.yaml/pnpm-lock.yaml (recurring churn and likely conflicts). Removing the configDependency also changes install behavior (pnpm no longer delegates install materialization to pacquet), so the workflow and workspace config need to be aligned.
Agent Prompt
## Issue description
The repo no longer declares `@pnpm/pacquet` under `configDependencies`, but the scheduled lockfile update workflow still adds/bumps it every run. This will reintroduce pacquet and regenerate `pnpm-workspace.yaml` and `pnpm-lock.yaml` on the next scheduled dispatch.
## Issue Context
`configDependencies` controls whether pnpm delegates install materialization to pacquet. If the intent is to stop using pacquet in this repo, the workflow should stop adding it. If the intent is to keep pacquet, the configDependencies removal should be reverted.
## Fix Focus Areas
- .github/workflows/update-lockfile.yml[51-75]
- pnpm-workspace.yaml[350-360]
- pnpm-lock.yaml[4-15]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
PR Code Suggestions ✨Warning
Explore these optional code suggestions:
|
|||||||||
pnpm/pnpm main now pins packageManager to pnpm v12 alphas (pnpm/pnpm#12811). The @pnpm/exe v12 alpha ships a placeholder bin that pnpm's version self-switch executes before the install script replaces it with the real binary, failing with a shell syntax error and breaking this job on every main run. Pin the clone to the latest stable tag (packageManager [email protected], the same version the last green run used) and support an optional ref field in the repos list so future pins are one-line changes.
pnpm/pnpm main now pins packageManager to pnpm v12 alphas (pnpm/pnpm#12811). The @pnpm/exe v12 alpha ships a placeholder bin that pnpm's version self-switch executes before the install script replaces it with the real binary, failing with a shell syntax error and breaking this job on every main run. Pin the clone to the latest stable tag (packageManager [email protected], the same version the last green run used) and support an optional ref field in the repos list so future pins are one-line changes.
Summary by CodeRabbit