Skip to content

fix(aztec-up): install manifest-pinned Node version instead of LTS#23201

Merged
vezenovm merged 1 commit into
merge-train/fairiesfrom
nc/install-node-pinned-version
May 12, 2026
Merged

fix(aztec-up): install manifest-pinned Node version instead of LTS#23201
vezenovm merged 1 commit into
merge-train/fairiesfrom
nc/install-node-pinned-version

Conversation

@nchamo
Copy link
Copy Markdown
Contributor

@nchamo nchamo commented May 12, 2026

Summary

install_node runs nvm install --lts && nvm alias default lts/* when the host Node doesn't meet the manifest's minimum. That installs whatever Node version is currently tagged LTS, not the version pinned in versions for the release being installed.

Today this happens to be safe — current LTS is 24.x and the manifest says node: 24.12.0. But it's coincidence: the moment a release pins a non-LTS line (or an LTS slips behind), the installer silently runs the rest of the install on the wrong Node and the failure manifests far away from install_node.

Fix

Install the version named in the manifest, instead of --lts:

-  nvm install --lts
-  nvm alias default lts/*
+  nvm install "$node_min_version"
+  nvm alias default "$node_min_version"

(Same change applied to the error-message hint for hosts without nvm.)

`install_node` was running `nvm install --lts && nvm alias default lts/*`,
which installs whatever Node version is currently tagged LTS rather than
the version pinned in the per-release `versions` manifest. The manifest
already names a concrete version (currently `node: 24.12.0`); installing
LTS instead is silently wrong whenever LTS and the manifest disagree.

Install the manifest version directly so each aztec release pins its
toolchain Node deterministically.
@nchamo nchamo requested a review from charlielye as a code owner May 12, 2026 15:35
@nchamo nchamo self-assigned this May 12, 2026
@nchamo nchamo requested a review from vezenovm May 12, 2026 15:57
@vezenovm vezenovm enabled auto-merge (squash) May 12, 2026 18:08
@vezenovm vezenovm merged commit 05683f8 into merge-train/fairies May 12, 2026
47 checks passed
@vezenovm vezenovm deleted the nc/install-node-pinned-version branch May 12, 2026 18:40
AztecBot pushed a commit that referenced this pull request May 12, 2026
…23201)

## Summary

`install_node` runs `nvm install --lts && nvm alias default lts/*` when
the host Node doesn't meet the manifest's minimum. That installs
whatever Node version is *currently* tagged LTS, not the version pinned
in `versions` for the release being installed.

Today this happens to be safe — current LTS is 24.x and the manifest
says `node: 24.12.0`. But it's coincidence: the moment a release pins a
non-LTS line (or an LTS slips behind), the installer silently runs the
rest of the install on the wrong Node and the failure manifests far away
from `install_node`.

## Fix

Install the version named in the manifest, instead of `--lts`:

```diff
-  nvm install --lts
-  nvm alias default lts/*
+  nvm install "$node_min_version"
+  nvm alias default "$node_min_version"
```

(Same change applied to the error-message hint for hosts without nvm.)
@AztecBot
Copy link
Copy Markdown
Collaborator

✅ Successfully backported to backport-to-v4-next-staging #23198.

AztecBot added a commit that referenced this pull request May 13, 2026
BEGIN_COMMIT_OVERRIDE
chore: kv store test fully on vitest (#23096)
chore: backport kv-store vitest migration (#23096) to v4-next (#23185)
test: add noir tests for get_note_hash_membership_witness (#23190)
fix(aztec-up): explicit exit in CLI acceptance test harness (#23200)
refactor(pxe): batch nullifier sync across scopes (#23129)
refactor(pxe): backport batch nullifier sync across scopes (#23129) to
v4-next (#23208)
fix(ci): revert ci-compat-e2e to AWS access keys (#23211)
test: drop event_logs from compat matrix and loosen avm_simulator
assertion regex (#23193)
fix(aztec-up): install manifest-pinned Node version instead of LTS
(#23201)
fix(ci): move CLI acceptance test timeout from job to step (#23205)
END_COMMIT_OVERRIDE
rangozd pushed a commit to rangozd/aztec-packages that referenced this pull request May 16, 2026
BEGIN_COMMIT_OVERRIDE
fix(aztec-up): install manifest-pinned Node version instead of LTS
(AztecProtocol#23201)
fix(ci): move CLI acceptance test timeout from job to step (AztecProtocol#23205)
feat: package sqlite kv-store backend for stricter browser envs (AztecProtocol#23089)
fix(pxe): sync target contract before cross-contract utility call
(AztecProtocol#23225)
fix(ci): swap slack_notify args in CLI acceptance test (AztecProtocol#23241)
feat: optimize get next app tag as sender (AztecProtocol#23239)
chore(aztec-nr): mark emit_event_in_public as #[inline_never] to shrink
public dispatch (AztecProtocol#23161)
chore: better encrypted sqlite ergonomics (AztecProtocol#23231)
END_COMMIT_OVERRIDE
critesjosh added a commit that referenced this pull request May 18, 2026
Covers operator-facing changes in v4.3.0:
- Bundled binaries renamed under aztec- prefix on PATH (#22902, #22709)
- --pxe flag removed from aztec start (#22867)
- aztec-up pins manifest Node version (#23201)
- aztec-up pins FOUNDRY_DIR (#22886)

Added to both source docs-operate/ and the v4.3.0 versioned snapshot,
and linked from the operator changelog sidebar in both places.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants