chore(node): align local, CI, and Docker runtimes on Node 24 - #74250
DeliciousHouse wants to merge 2 commits into
Conversation
teknium1
left a comment
There was a problem hiding this comment.
Thanks for consolidating the CI and Docker Node version inputs; current main does have the Node 22 / Node 20 drift this addresses.
Problems
package.json:47changes the root engine contract to Node 24, but Hermes-managed installs still provision Node 22:scripts/install.sh:60,scripts/lib/node-bootstrap.sh:27,scripts/install.ps1:153, andhermes_constants.py:311. A fresh managed install therefore remains outside the declared engine floor.- Nix is another shipped runtime omitted from the migration:
nix/hermes-agent.nix:13,42,198selectsnodejs_22and exports it asHERMES_NODE;nix/checks.nix:259-275only requires Node >=20. The new test does not cover that path.
Suggested changes
- Migrate the managed installers/bootstrap and Nix derivation together with the engine-floor change, or retain the Node-22-compatible engine range.
- Update the corresponding runtime checks and version documentation, then extend the contract coverage to these shipped paths.
This is an automated hermes-sweeper review.
| @@ -44,6 +44,6 @@ | |||
| "protobufjs": "^8.7.1" | |||
| }, | |||
| "engines": { | |||
| "node": ">=20.0.0" | |||
| "node": ">=24.0.0" | |||
There was a problem hiding this comment.
This raises the root requirement to Node 24, but fresh Hermes-managed installs still provision Node 22 (scripts/install.sh:60, scripts/lib/node-bootstrap.sh:27, scripts/install.ps1:153, hermes_constants.py:311) and Nix exports nodejs_22 as HERMES_NODE (nix/hermes-agent.nix:13,42,198). Please migrate those supported runtimes with this engine-floor change, or retain a Node-22-compatible engine range.
DeliciousHouse
left a comment
There was a problem hiding this comment.
Merge gate: correction required (bounce 1/1)
Reviewed exact head deb3ae61b0cfd2eef3f8804ae5cbafa10859d6f8. This is the canonical Node 24 stream; PR #74890 is a narrower four-file duplicate and should be superseded rather than merged separately.
Blocking runtime-contract gap
The root and desktop manifests now require Node 24, but shipped provisioning and healing paths still install or accept Node 20/22:
scripts/install.sh:60,782-816targets Node 22 and accepts^20.19 || >=22.12.scripts/install.ps1:147,1051-1079targets Node 22 and accepts the same older range.scripts/lib/node-bootstrap.sh:21-27accepts Node 20 and installs Node 22.hermes_constants.py:303self-heals to Node 22.nix/hermes-agent.nix:13,42packagesnodejs_22;nix/checks.nix:259-275only requires Node >=20.nix/nixosModules.nix:146,155provisions the NodeSource 22 channel.CONTRIBUTING.md:114,website/docs/getting-started/installation.md:93,website/docs/user-guide/windows-native.md:59,72,309, and the translated installation page still document Node 20/22.
A fresh CLI, Windows/desktop, bootstrap, self-heal, Nix, or NixOS install can therefore finish below the package engine floor. Migrate these surfaces to Node 24 together and extend tests-js/node-version-contract.test.ts (or equivalent focused tests) so installer/bootstrap/healing/Nix drift is covered, not only .nvmrc, manifests, Docker, and workflows.
Rebase and CI gate
This head is 405 commits behind current upstream/main cc4cab2f592e60a197e796506de9168f74baf3ea; current main has since changed apps/desktop/package.json and package-lock.json. Rebase onto fresh upstream main before pushing the correction and reconcile those files without dropping current-main content.
GitHub currently reports no checks at all on this exact head. Required exact-head CI must be populated and green, including the Linux Docker image build/smoke, before this can merge.
Evidence
Local exact-head verification under Node v24.15.0: npm ci passed; tests-js typecheck/Vitest/ESLint passed (10/10); desktop TypeScript passed; classifier suite passed (34/34); git diff --check passed. Pattern scans found no candidate secrets. An independent read-only Codex review confirmed the runtime-contract blocker and recommended retaining this broader stream over #74890.
Please update the existing PR branch only. Do not open a replacement PR or review card; this same reviewer/card will perform the one final review.
Use one repository pin for local tooling and CI, move the container source stage to Node 24, raise package engine floors, and add drift regression coverage.
deb3ae6 to
be440e2
Compare
|
Correction pushed at exact head
Focused local verification passed: Node contract Vitest (2), current install-script tests (6), managed-node tests (3), TUI typecheck, Bash/PowerShell/Nix parsing, desktop production build, workspace lint (warnings only), diff check, and public-repo redaction scan. The exact-head CI run exists but GitHub marked it |
|
Final merge-gate decision: close unmerged as superseded; no second correction bounce. Revalidated the corrected branch at exact head
The branch diff itself passes |
Summary
v24.15.0and make everyactions/setup-nodeconsumer read the same.nvmrccontract.node:24-bookworm-slimimage while preserving the existing Debian/glibc copy strategy.Test Coverage
All changed runtime-contract paths have focused regression coverage.
npm ci --ignore-scripts --no-audit --no-fundnpm run --workspace tests-js test -- node-version-contract.test.ts— 2 tests passednpm -C ui-tui run typecheckHERMES_PYTHON=.venv/Scripts/python.exe scripts/run_tests.sh tests/test_install_ps1_node_path_for_npm.py tests/test_install_sh_node_global_prefix.py— 6 tests passedHERMES_PYTHON=.venv/Scripts/python.exe scripts/run_tests.sh tests/test_hermes_constants.py -k TestHermesManagedNode— 3 tests passedbash -n scripts/install.sh scripts/lib/node-bootstrap.shscripts/install.ps1nix/hermes-agent.nix,nix/checks.nix, andnix/nixosModules.nixnpm -C apps/desktop run buildnpm run --ws --if-present lint— passed with existing warnings onlygit diff --check upstream/main...HEADRebase verification also compared
package.json,apps/desktop/package.json, andpackage-lock.jsonwith currentupstream/mainafter removing only the intentional Node engine fields; all remaining content matched.Local verification notes:
npm run verifyornpm run lint:all; the available workspace lint command above passed.tests/test_scripts_lint.py,tests/scripts/test_install_contract.py,tests/scripts/test_windows_install_script.py, andtests/test_node_self_heal.py, plusscripts/ci/secret_scan.sh, no longer exist on current main. The focused current-main equivalents above passed.npm run checkandnpm -C apps/desktop run testwere attempted; both reached broad untouched suites and exposed existing Windows-host failures in Unix-path/socket/SSH/UI timing tests. Required Ubuntu CI is the authoritative full-suite gate.Pre-Landing Review
No issues found in the correction diff. The review specifically checked that every shipped provisioning path now agrees with the Node 24 engine floor and that NixOS reprovisions when the Node major changes.
Eval Results
No prompt-related files changed — evals skipped.
Scope Drift
Scope Check: CLEAN
Plan Completion
No plan file detected.
Test plan