15eb5caf7a
The locked dependency tree now carries @babel/* 8.x, which requires node ^22.18.0 || >=24.11.0. Our engines.node arm said ^24.0.0 and the installer gates (node_satisfies_build / Test-NodeVersionOk) accepted any Node 24 — so a system Node 24.0–24.10 cleared every gate we own and then failed 'npm install' with EBADENGINE under engine-strict=true. - Raise the 24 arm to ^24.11.0 in root + desktop package.json and the package-lock.json mirrors - Tighten node_satisfies_build (install.sh) and Test-NodeVersionOk (install.ps1) to 24.11+; update user-facing wording - Add invariant tests: every engines.node arm floor must satisfy every locked dependency's engines.node, and the installer gates must encode the same floors as the manifest — so the next babel-style floor bump turns into a CI red instead of a user install outage - docs: correct stale 'Node.js v22' provisioning claim