# Risk map — changesets/changesets

> Canonical page: https://codevetter.com/unpack/changesets/risk-map

# Risk map — changesets/changesets

Scanned commit c73949ba7b3160a4aa5729223335c190de1528f8 (2026-09-22). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

These are source observations and narrowly labeled hypotheses, not confirmed vulnerabilities. Sensitive boundaries include configured executable modules, package-manager subprocesses, caller-selected paths, Git writes, and authenticated GitHub requests. Release application and publication can leave partial effects when later operations fail. Artifact validation and compatibility assumptions deserve focused verification before broader reliance.
- Configured changelog and commit modules are dynamically imported from the consumer's .changeset context with a CLI-context fallback; configuration therefore selects executable code in the invoking process. — [packages/apply-release-plan/src/index.ts#L259-284](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/apply-release-plan/src/index.ts#L259-L284) [packages/cli/src/commit/getCommitFunctions.ts#L19-44](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commit/getCommitFunctions.ts#L19-L44)
- readPlanFile checks only the outer object, plan array, and version; artifact publishing then trusts entry fields and resolves tarball paths, without checking the integrity metadata in the inspected publish path. — [packages/cli/src/commands/publish-plan/getPublishPlan.ts#L60-77](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/publish-plan/getPublishPlan.ts#L60-L77) [packages/cli/src/commands/pack/index.ts#L110-119](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/pack/index.ts#L110-L119) [packages/cli/src/commands/publish/index.ts#L79-90](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/publish/index.ts#L79-L90) [packages/cli/src/commands/publish/index.ts#L149-154](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/publish/index.ts#L149-L154)
- The publish-plan source explicitly documents that registry identity is omitted and planning/publishing require matching configuration; pnpm and Yarn info queries use fetch-registry behavior rather than publishConfig.registry overrides. — [packages/cli/src/commands/publish-plan/getPublishPlan.ts#L37-44](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/publish-plan/getPublishPlan.ts#L37-L44) [packages/cli/src/lib/pnpm.ts#L95-110](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/lib/pnpm.ts#L95-L110) [packages/cli/src/lib/yarn.ts#L82-89](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/lib/yarn.ts#L82-L89)
- applyReleasePlan writes manifests/changelogs sequentially before formatting and changeset cleanup, with no rollback in that sequence; later failures can leave earlier writes. Publishing similarly retains successful publications and tags when another package fails. — [packages/apply-release-plan/src/index.ts#L140-182](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/apply-release-plan/src/index.ts#L140-L182) [packages/apply-release-plan/src/index.ts#L190-232](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/apply-release-plan/src/index.ts#L190-L232) [packages/cli/src/commands/publish/index.ts#L366-419](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/publish/index.ts#L366-L419)
- readPreState parses JSON without structural validation and may migrate v2 state by renaming changesets and rewriting pre.json; callers such as status can therefore mutate legacy state through a read-named API. — [packages/pre/src/index.ts#L15-40](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/pre/src/index.ts#L15-L40) [packages/pre/src/index.ts#L73-112](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/pre/src/index.ts#L73-L112) [packages/cli/src/commands/status/index.ts#L28-30](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/status/index.ts#L28-L30)
- npm pack/publish delegate lifecycle execution to an external CLI; publish passes OTP as an argument and inherits other environment values after clearing OTP variables. pack/output paths and publishConfig.directory are caller/config-selected filesystem boundaries. — [packages/cli/src/lib/npm.ts#L54-59](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/lib/npm.ts#L54-L59) [packages/cli/src/lib/npm.ts#L232-243](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/lib/npm.ts#L232-L243) [packages/cli/src/lib/npm.ts#L346-374](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/lib/npm.ts#L346-L374) [packages/cli/src/commands/pack/index.ts#L52-58](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/pack/index.ts#L52-L58)
- GitHub helpers can read a consumer-cwd .env and send GITHUB_TOKEN to configured GITHUB_GRAPHQL_URL; changelog commit lookup may deepen shallow clones through git fetch. These are network/credential boundaries visible in source, not actions performed in this investigation. — [packages/get-github-info/src/env.ts#L5-33](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/get-github-info/src/env.ts#L5-L33) [packages/get-github-info/src/dataloader.ts#L91-120](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/get-github-info/src/dataloader.ts#L91-L120) [packages/git/src/index.ts#L129-136](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/git/src/index.ts#L129-L136) [packages/git/src/index.ts#L186-192](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/git/src/index.ts#L186-L192)
- Two reporting compatibility hypotheses need reproduction: createGitTags records success without checking git.tag's false result, and release-utils.runPublish still extracts 'New tag:' text while current CLI tag formatting emits 'Created git tags:'. (inferred) — [packages/git/src/index.ts#L39-46](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/git/src/index.ts#L39-L46) [packages/cli/src/commands/git-tag/utils.ts#L28-40](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/git-tag/utils.ts#L28-L40) [packages/cli/src/commands/git-tag/utils.ts#L57-68](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/git-tag/utils.ts#L57-L68) [packages/release-utils/src/run.ts#L46-85](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/release-utils/src/run.ts#L46-L85)

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)
