Skip to content

Pin Node.js to eMudhra-patched versions in docs and JS toolchains (GDS-473) - #488

Closed
tyndria wants to merge 2 commits into
mainfrom
gds-473-nodejs-version-unpinned-in-gds-docs-toolchains-antora-apply
Closed

tyndria wants to merge 2 commits into
mainfrom
gds-473-nodejs-version-unpinned-in-gds-docs-toolchains-antora-apply

Conversation

@tyndria

@tyndria tyndria commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Fixes GDS-477 (sub-issue of GDS-473) — the python-graph-visualization portion of the eMudhra intermediate CA compromise remediation (CVE-2026-111943, INC-1013).

Why

Node.js bundles its own CA trust store, independent of the OS store — so the ca-certificates patch step already present in CI does not protect npm/yarn/Antora during TLS. Only patched Node releases (22.23.4 / 24.22.1 / 26.12.1) distrust the compromised intermediates. Until now, both toolchains in this repo ran on an unpinned Node version.

Notably, the antora-docs CI job had no setup-node step at all and ran npm ci on the runner's ambient Node.

Changes

  • docs/antora/package.json, js-applet/package.json — add engines.node: "^22.23.4 || ^24.22.1 || >=26.12.1", admitting only patched release lines (the never-patched 25.x line and pre-fix versions are rejected)
  • docs/antora/.npmrc — engine-strict=true, so npm fails on an incompatible Node instead of only warning (yarn already enforces engines natively)
  • .nvmrc — 24.22.1 (current LTS), the single source of truth for the Node version
  • .github/actions/build-js/action.yml, .github/workflows/js-code-style.yml, .github/workflows/render-docs.yml — CI reads the Node version from .nvmrc via node-version-file (the lts/* alias resolved inconsistently across runners, including an unpatched 24.21.0 that the engines check then correctly rejected)

Bumping Node in the future is a one-line change to .nvmrc; the engines range already allows all patched versions.

How to validate

  • nvm use in the repo root picks up .nvmrc
  • With an unpatched Node (e.g. 22.23.3): npm install in docs/antora fails with EBADENGINE; yarn in js-applet fails with an engine incompatibility error
  • CI on this PR is green: Render docs, Check JS code style, and all tests matrix jobs ran on Node 24.22.1

The other three toolchains listed in GDS-473 (graph-data-science → GDS-478, graph-data-science-client → GDS-479, graph-analytics → GDS-480) live in separate repos and follow the same pattern.

Refs GDS-477, GDS-473, INC-1013.

🤖 Generated with Claude Code

CVE-2026-111943 (eMudhra intermediate CA compromise): Node.js bundles
its own CA trust store, so the OS-level ca-certificates patch already
in CI does not protect npm/yarn/Antora TLS. Only Node 22.23.4 / 24.22.1
/ 26.12.1+ distrust the compromised intermediates.

- Add engines.node range admitting only patched release lines
  (^22.23.4 || ^24.22.1 || >=26.12.1) to docs/antora and js-applet
- Enforce it for npm via engine-strict=true in docs/antora/.npmrc
  (yarn already fails on incompatible engines)
- Add .nvmrc (24.22.1) for local dev
- Add a setup-node step to the antora-docs job, which previously ran
  npm ci on the runner's ambient Node with no version control

Refs GDS-473, INC-1013.

Co-Authored-By: Claude Code <noreply@anthropic.com>
@tyndria
tyndria requested a review from a team as a code owner October 28, 2026 13:22
CI jobs (build-js action, js-code-style, antora-docs) now read the Node
version from .nvmrc via node-version-file instead of the lts/* alias,
which resolved inconsistently across runners (24.22.1 on one, unpatched
24.21.0 on another) and made yarn fail the engines check.

Bumping Node is now a one-line change to .nvmrc.

Also move the engines block to the end of js-applet/package.json as
required by oxfmt's package.json key ordering.

Refs GDS-473, INC-1013.

Co-Authored-By: Claude Code <noreply@anthropic.com>
@tyndria tyndria closed this Oct 28, 2026
@tyndria
tyndria deleted the gds-473-nodejs-version-unpinned-in-gds-docs-toolchains-antora-apply branch October 28, 2026 13:37
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