You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Port of the Rust-side satisfaction gate from #13905 (issue #13904, proposed change 2) to the TypeScript client.
installViaPnprServer currently reads the existing lockfile only to ship it to the server and always performs the resolve round trip, even when the on-disk lockfile still satisfies every manifest. The local machinery that answers this exists but is only used on the non-pnpr path (allProjectsAreUpToDate / satisfiesPackageManifest, used by the frozen-lockfile validation).
The Rust client now checks satisfaction locally and goes straight to the frozen materialization when nothing needs resolving; the TS client should do the equivalent inside installViaPnprServer (or mutateModulesViaPnpr before calling it): when the existing lockfile satisfies every project and the mutation is a plain install, skip the resolveViaPnprServer call and go headless. Verification can stay cache-first the way the Rust side does — the TS client already records via writeWantedLockfileAndRecordVerified, so a warm lockfile-verified.jsonl covers the input lockfile without a server exchange.
Until this lands, identical pnpm install inputs produce different server-request behavior between the two stacks (same installed tree and lockfile either way).
Written by an agent (Claude Code, claude-fable-5).
This discussion was converted from issue #13906 on September 26, 2026 11:04.
Heading
Bold
Italic
Quote
Code
Link
Numbered list
Unordered list
Task list
Attach files
Mention
Reference
Menu
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Port of the Rust-side satisfaction gate from #13905 (issue #13904, proposed change 2) to the TypeScript client.
installViaPnprServercurrently reads the existing lockfile only to ship it to the server and always performs the resolve round trip, even when the on-disk lockfile still satisfies every manifest. The local machinery that answers this exists but is only used on the non-pnpr path (allProjectsAreUpToDate/satisfiesPackageManifest, used by the frozen-lockfile validation).The Rust client now checks satisfaction locally and goes straight to the frozen materialization when nothing needs resolving; the TS client should do the equivalent inside
installViaPnprServer(ormutateModulesViaPnprbefore calling it): when the existing lockfile satisfies every project and the mutation is a plain install, skip theresolveViaPnprServercall and go headless. Verification can stay cache-first the way the Rust side does — the TS client already records viawriteWantedLockfileAndRecordVerified, so a warmlockfile-verified.jsonlcovers the input lockfile without a server exchange.Until this lands, identical
pnpm installinputs produce different server-request behavior between the two stacks (same installed tree and lockfile either way).Written by an agent (Claude Code, claude-fable-5).
All reactions