Skip to content

docs(decisions): Add ADR 0083-0085 pinning the npm CLI toolchain across build and publish stages - #100

Merged
yunseo-kim merged 3 commits into
mainfrom
docs/npm-cli-version-pinning
Aug 17, 2026
Merged

docs(decisions): Add ADR 0083-0085 pinning the npm CLI toolchain across build and publish stages#100
yunseo-kim merged 3 commits into
mainfrom
docs/npm-cli-version-pinning

Conversation

@yunseo-kim

@yunseo-kim yunseo-kim commented Aug 17, 2026

Copy link
Copy Markdown
Member

Summary

Related Issues

Change Type

  • Bug fix
  • Feature
  • Refactor
  • Documentation
  • Test/CI
  • Breaking change
  • Other:

Changelog

  • Category: None
  • User-facing note: Architecture decision records only — no user-facing behavior changes. The implementing specification, workflow, and Go changes land later under ADR 0083's deferral scope and ADR 0085's own schedule.

Changelog update:

  • CHANGELOG.md [Unreleased] updated
  • Not needed because this change is not user-facing

Checklist

General

  • PR title follows Conventional Commits format: type(scope): Summary
  • This PR does not expose backend/internal implementation details in a public repo.
  • No secrets, tokens, keys, or private endpoints are included.
  • Changes stay within this repository's intended scope.

Protocol / Compatibility Impact

  • No protocol/spec impact
  • Protocol/spec updated
  • Conformance tests updated
  • Breaking change is versioned and migration notes are included

ADR texts only; no specification files are modified. Each ADR records which future specification amendments it governs.

Testing

  • Unit tests added/updated
  • Integration or conformance tests added/updated
  • Tests pass
  • Lint and format pass
  • Type check passes
  • Manual verification performed

Describe test evidence:

  • prettier --write on all touched files: clean.
  • markdownlint-cli2 docs/decisions/**/*.md: 89 files, 0 errors.
  • python3 .agents/skills/adr-relations-check/scripts/check_relations.py: 86 ADRs, 216 edges — NO PROBLEMS (forward + reverse relation edges symmetric, status grammar valid).
  • Lefthook pre-commit (prettier, markdownlint) and commit-msg (dco-signoff) passed on all three commits.

Documentation

  • README updated — docs/decisions/README.md and README.ko.md sequence, inventory, and traceability tables (bilingual, same change).
  • Spec/docs updated — three new ADRs; reverse relation edges added to ADR 0016/0017/0027/0067/0082/0083/0084; docs/decisions/AGENTS.md index updated.
  • Changelog decision completed above

Rollout / Risk

  • Risk level: Low — documentation-only; no runtime, workflow, or specification behavior changes.
  • Rollback plan: revert the merge commit; ADR 0065's immutability rule applies after acceptance, so any post-merge decision change would be a new ADR instead.

Reviewer Checklist

  • Scope is clear and minimal
  • Security and boundary checks passed
  • Tests and docs are sufficient
  • Compatibility impact is correctly handled

…n to the upstream provenance-file fix

Record the decision to wait for the first reviewed npm release containing
npm/cli#9882 and adopt it as the initial publish-stage npm pin under the
ADR 0082 procedure, instead of implementing the local OIDC-suppression and
token-injection workaround. Publish authentication returns to the ADR
0024/ADR 0029 design (npm-native trusted publishing); the ADR 0076/0081
exchange preflight is retained as an observation-only check. Includes an
explicit revisit trigger (closed unmerged, materially different precedence
semantics, or no merge by 12026-10-01) with the pinned-11.17.0 workaround
as the default fallback.

Relations: amends ADR-0082 (initial-pin identification only; reverse
amended-by edge added), see-also ADR-0024/0029/0076/0081 with reverse
edges. Index READMEs (both languages) and the decisions AGENTS.md updated.
adr-relations-check: 84 ADRs, 194 edges, NO PROBLEMS.

Signed-off-by: Yunseo Kim <git@yunseo.kim>
…from a digest-verified registry tarball

Record the provisioning-mechanism decision left open by ADR 0082: the
publish job downloads the exact recorded registry tarball URL, verifies
the committed distribution digest over the compressed bytes before
extraction, and executes npm through a basename-"npm" launcher passed
to the publish command's --npm-executable, provisioning before any npm
invocation (diagnostics included). The pinned digest is SHA-512 in SRI
form, byte-identical to the registry-native dist.integrity field, and
the pin data (version, URL, digest) lives in one machine-readable file
referenced normatively by the specification allowlist. Implementation
timing remains governed by ADR 0083's deferral scope.

Relations: partially-supersedes ADR-0082 (the SHA-256 digest
designation only) and amends ADR-0082 (mechanism selection), with
reverse partially-superseded-by/amended-by edges; see-also
ADR-0083/0027 with reverse edges. Index READMEs (both languages) and
the decisions AGENTS.md updated. adr-relations-check: 85 ADRs, 202
edges, NO PROBLEMS.

Signed-off-by: Yunseo Kim <git@yunseo.kim>
…ing the expected bundled npm pair

Record the build-stage toolchain decision left open by ADR 0082's scope
exclusion: the reusable workflow resolves Node.js to an exact 24 patch
recorded together with the npm version that patch bundles, and each job
that uses the bundled npm asserts node/npm version equality with the
recorded pair before the first npm invocation, failing closed before
install or pack. The pair changes only together through a bump procedure
with an npm changelog build-impact review, refreshed compatibility
fixtures, and the full CI gate. The publish npm remains independently
pinned per ADR 0082-0084, and an independently provisioned build npm is
reserved behind an explicit escalation trigger.

Relations: partially-supersedes ADR-0027 (the floating toolchain
resolution clause only) with the reverse edge; see-also
ADR-0016/0017/0067/0082/0083/0084 with reverse edges. Index READMEs
(both languages) and the decisions AGENTS.md updated.
adr-relations-check: 86 ADRs, 216 edges, NO PROBLEMS.

Signed-off-by: Yunseo Kim <git@yunseo.kim>
@yunseo-kim
yunseo-kim merged commit 9a140e6 into main Aug 17, 2026
86 of 87 checks passed
@yunseo-kim
yunseo-kim deleted the docs/npm-cli-version-pinning branch August 17, 2026 11:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant