# Contributor handoff — yarnpkg/berry

> Canonical page: https://codevetter.com/unpack/berry/agent-handoff

# Contributor handoff — yarnpkg/berry

Scanned commit e4e423a1eb117b5129f20ac626a03eb7a97aedff (2026-09-24). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Begin with the relevant command, its core operation, and the owning plugin instead of treating this as a React application. Preserve generated-artifact boundaries, typed portable paths, and repository constraint conventions. Tests and CI were inspected, not executed; proposed checks below require separate execution authority, and the inventory remains bounded.
- Read the root and CLI manifests first: CLI version 4.18.1 differs from the root packageManager pin of Yarn 4.2.1, and standard plugin membership is declared in the CLI manifest. — [package.json#L76-86](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/package.json#L76-L86) [packages/yarnpkg-cli/package.json#L1-9](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/packages/yarnpkg-cli/package.json#L1-L9) [packages/yarnpkg-cli/package.json#L78-106](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/packages/yarnpkg-cli/package.json#L78-L106)
- For installation changes, read InstallCommand and Project.install together; the command’s source explicitly directs reusable install customization into configuration/core because other commands also install projects. — [packages/plugin-essentials/sources/commands/install.ts#L364-380](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/packages/plugin-essentials/sources/commands/install.ts#L364-L380) [packages/yarnpkg-core/sources/Project.ts#L1750-1802](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/packages/yarnpkg-core/sources/Project.ts#L1750-L1802)
- For protocol changes, keep NpmSemverResolver.getCandidates and getSatisfying consistent: both use selectMatchingVersions, whose prerelease fallback applies only to a literal '*' with no stable matches. — [packages/plugin-npm/sources/NpmSemverResolver.ts#L15-42](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/packages/plugin-npm/sources/NpmSemverResolver.ts#L15-L42) [packages/plugin-npm/sources/NpmSemverResolver.ts#L81-90](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/packages/plugin-npm/sources/NpmSemverResolver.ts#L81-L90) [packages/plugin-npm/sources/NpmSemverResolver.ts#L137-147](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/packages/plugin-npm/sources/NpmSemverResolver.ts#L137-L147)
- For linker changes, honor Installer ordering and fetch-result ownership; custom data must tolerate absence and handle its own migration, and asynchronous holds require bounded concurrency. — [packages/yarnpkg-core/sources/Installer.ts#L48-82](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/packages/yarnpkg-core/sources/Installer.ts#L48-L82) [packages/yarnpkg-core/sources/Installer.ts#L93-142](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/packages/yarnpkg-core/sources/Installer.ts#L93-L142)
- Follow strict TypeScript and the portable-path conversions already used by Workspace; ESLint requires semverUtils.validRange and httpUtils instead of direct semver.Range/validRange and global fetch. — [tsconfig.json#L3-20](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/tsconfig.json#L3-L20) [packages/yarnpkg-core/sources/Workspace.ts#L36-66](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/packages/yarnpkg-core/sources/Workspace.ts#L36-L66) [eslint.config.mjs#L85-104](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/eslint.config.mjs#L85-L104)
- Dependency edits must account for yarn.config.cjs constraints: internal dependencies become workspace:^, most shared ranges are synchronized, lodash/inquirer are forbidden, and package metadata/prepack conventions are enforced. — [yarn.config.cjs#L22-55](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/yarn.config.cjs#L22-L55) [yarn.config.cjs#L106-124](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/yarn.config.cjs#L106-L124) [yarn.config.cjs#L207-228](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/yarn.config.cjs#L207-L228)
- Edit source implementations rather than generated bundles, hooks, workers, and grammars; ESLint excludes those outputs, while CI conditionally regenerates PnP hooks and checks their diffs. — [eslint.config.mjs#L14-48](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/eslint.config.mjs#L14-L48) [.github/workflows/integration-workflow.yml#L80-89](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/.github/workflows/integration-workflow.yml#L80-L89)
- Tests and CI were inspected, not executed. For later authorized validation, start with the affected Jest file or acceptance command suite using test:unit/test:integration, then use existing test:lint and typecheck:all scripts; mocked transport tests and explicitly skipped compatibility cases limit conclusions. — [package.json#L62-64](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/package.json#L62-L64) [packages/acceptance-tests/package.json#L16-18](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/packages/acceptance-tests/package.json#L16-L18) [packages/yarnpkg-core/tests/httpUtils.test.ts#L11-22](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/packages/yarnpkg-core/tests/httpUtils.test.ts#L11-L22) [.github/workflows/e2e-webpack-workflow.yml#L100-104](https://github.com/yarnpkg/berry/blob/e4e423a1eb117b5129f20ac626a03eb7a97aedff/.github/workflows/e2e-webpack-workflow.yml#L100-L104)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
