From 8817842593640d38f9e307e98c5fabe910503c6e Mon Sep 17 00:00:00 2001 From: Andreas Trawoeger Date: Mon, 26 Oct 2026 08:21:33 +0100 Subject: [PATCH] =?UTF-8?q?fix(build):=20pin=20the=20node=20version=20to?= =?UTF-8?q?=2022.23.4=20=E2=80=94=20the=20floor=20the=20lockfile=20declare?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit opencharly/docs#187's lockfile carries "engines": {"node": ">=22.23.4"} on @astrojs/mdx 8.1.1 and @astrojs/prism 4.1.1. The repo declared its node as the floating major "22", and actions/setup-node@v7 resolved that through its own version manifest to v22.23.3 — one patch below the floor, although v22.23.4 had been released six days earlier (2026-10-20). The deploy job therefore installed the site's dependencies on a node they declare unsupported, and npm said so twice (EBADENGINE) in the install log; the install still exits 0, so that warning was the only signal. A floating major cannot guarantee a floor: the floor was published ahead of the alias's resolution. Pin the exact version the tree's dependencies require, so CI installs a compliant node deterministically, and the declared toolchain and the declared requirement stop being two files that never compare themselves. Measured on the committed tree, same npm on both sides (10.9.9): node 22.23.3 -> npm ci warns EBADENGINE twice (>=22.23.4 required, v22.23.3 current); node 22.23.4 -> 0 warnings, and the site builds 1699 pages with 0 warning lines. Refs opencharly/docs#188 Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated) --- .node-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.node-version b/.node-version index 2bd5a0a9..b8b23ca9 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -22 +22.23.4