Skip to content

chore(deps): keep the Node major out of Dependabot's hands - #351

Merged
Apolloccrypt merged 1 commit into
mainfrom
chore/dependabot-node-lts
Sep 2, 2026
Merged

chore(deps): keep the Node major out of Dependabot's hands#351
Apolloccrypt merged 1 commit into
mainfrom
chore/dependabot-node-lts

Conversation

@Apolloccrypt

Copy link
Copy Markdown
Owner

Follow-up to #340, and the reason #343 and #346 are being closed.

What happened

#340 pinned one Node line across four places at once:

place value
package.json, relay/package.json, admin/package.json engines: ">=22 <25"
.nvmrc 24
node-version in all 7 CI job steps 24
relay/Dockerfile, admin/Dockerfile node:24-alpine3.24 (by digest)

Its own wording: >=22 <25 "makes adopting Node 26 a deliberate bump rather
than an accident".

Dependabot opened #343 (admin) and #346 (relay) within the hour, both
node:24-alpine3.24 -> 26-alpine3.24. Two things made that quiet rather than
loud:

  • Node 26 is not in Active LTS. It is the next even line, but it does not
    enter LTS until late October 2026. Node 24 is the current LTS line.
  • Nothing checks engines. There is no .npmrc anywhere in the repo, so
    engine-strict is off and the npm ci inside both Dockerfiles never looks at
    it. The image would have built green on a runtime all three manifests forbid,
    and disagreed with itself only at runtime.

Build prod image (drift gate) did go green on #346, because that job proves
the Dockerfile builds, not that the manifest agrees with the runtime it built
for. #343 had no image build at all: build-image.yml is path-gated on
relay/**, so the admin Dockerfile has no CI that ever builds it.

What this changes

The docker updater for /relay and /admin ignores version-update:semver-major
for node, and for node only:

Adopting a new LTS line stays what #340 wanted it to be: a hand bump of the
whole grid, with docs/RELEASE.md as the checklist.

No workflow, image or manifest changes here, so nothing to run beyond the
existing checks.

#340 pinned one Node line across four places: `engines` (">=22 <25") in the
root, relay and admin manifests, `.nvmrc`, the `node-version` steps in every CI
job, and the base image in both Dockerfiles. Its own words: the range "makes
adopting Node 26 a deliberate bump rather than an accident".

Dependabot opened #343 and #346 (node 24-alpine3.24 -> 26-alpine3.24) within the
hour. Node 26 is the next even line but does not reach Active LTS until late
October 2026, and no `.npmrc` sets engine-strict, so `npm ci` inside the image
never checks `engines`: both PRs went green while putting the image on a runtime
all three manifests forbid.

The docker updater for /relay and /admin now ignores semver-major on "node"
only. The rust builder keeps its majors (#313 was a real break that had to be
seen), and node minor/patch, Alpine rebuilds and digest updates still arrive
weekly. Adopting a new LTS line stays a hand bump of the whole grid.
@Apolloccrypt
Apolloccrypt merged commit 05c4b7b into main Sep 2, 2026
10 checks passed
@Apolloccrypt
Apolloccrypt deleted the chore/dependabot-node-lts branch September 5, 2026 18:55
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