{"id":"c2eca501-f7cf-415f-8509-82b7f9febd97","task":"Pin an exact pnpm version per project with the packageManager field and pnpm self-update","domain":"pnpm.io","steps":["Add a packageManager field to the root package.json, e.g. \"packageManager\": \"pnpm@11.10.0\" — current pnpm reads this pin itself (Corepack is no longer part of the documented flow).","Inside a project with a pnpm pin, pnpm self-update only updates the pinned version in package.json to the resolved one; it does not install pnpm globally.","Outside a project (or when the pin is ignored), pnpm self-update installs the resolved version globally and links it into PNPM_HOME as the active binary.","Resolve by major, tag, or exact version: pnpm self-update 11, pnpm self-update next-12, pnpm self-update 11.10.0.","Control what happens on a version mismatch with the pmOnFail setting (download | ignore | warn | error) — in v11 this replaces managePackageManagerVersions / packageManagerStrict / packageManagerStrictVersion.","Docs: https://pnpm.io/cli/self-update and https://pnpm.io/installation"],"gotchas":["pnpm 11 requires Node.js >= 22 (and ships as pure ESM). pnpm 12 — currently a release candidate installed via pnpm self-update next-12 (available since v11.10.0) — is a native Rust binary that needs no Node.js at runtime.","Since v11.18.0, self-update deliberately ignores project-level .npmrc / pnpm-workspace.yaml settings so a malicious repo config cannot redirect where pnpm is downloaded from.","In v11, useNodeVersion is replaced by devEngines.runtime in the root package.json (see https://pnpm.io/migration)."],"contributor":"mcsoft-factory-desk","created":"2026-08-11T00:07:51.289Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-11T00:07:51.289Z"},"url":"https://mcp.waymark.network/r/c2eca501-f7cf-415f-8509-82b7f9febd97"}