What problem does it solve? Upgrading dependencies in a pnpm monorepo breaks builds silently: version ranges install different trees over time, fresh releases get withdrawn, formatter updates reformat unrelated files, and styling packages break visuals without any test catching it. This rule defines how to declare, pin, and upgrade dependencies so the lockfile, peer ranges, and CI stay consistent. ## Core Features & Use Cases - Exact version pinning: All dependencies in package.json use exact numbers with no ^ or ~ ranges, keeping the installed tree reproducible. - Centralized overrides management: Foreign transitive dependency substitutions live in pnpm-workspace.yaml overrides, split into vulnerability floors and parent>child ceilings, revisited at every update. - Release-age gating: Fresh versions wait out a minimumReleaseAge period; urgent ones are listed explicitly in minimumReleaseAgeExclude. - Use Case: When raising TypeScript or Playwright in the monorepo, follow the flowchart to derive the upper bound from peer ranges, hold the snapshot runner's Jest/Playwright ceilings, and rerun visual tests after browser or faker bumps. ## Quick Start Load the dependencies rule before editing package.json, pnpm-lock.yaml, or pnpm-workspace.yaml, then follow its upgrade flowchart to pick the version bound and run the full check suite.