What
frontend-next/Dockerfile builds and runs on node:22-alpine. Every frontend job in quality.yml (lines ~363, 493, 565, 599) uses setup-node node-version: "24". The only Node 22 coverage is the lockfile-install check (#1816/#2741). Unit tests, the build and the Playwright runs never execute on the version that ships.
Proposal
Either move the frontend jobs to node-version: "22" to match the image, or add a Node 22 row to the frontend matrix that runs npm ci && npm run build && vitest. Keep 24 as an advisory forward-compat row if wanted. Derive the version from the Dockerfile's FROM line in CI so the two can't drift again.
Sources
Found by the #3194 OmniRoute ops/CI deep-check (pinned 18bbb101, APIARY main 3dca4457).
What
frontend-next/Dockerfilebuilds and runs onnode:22-alpine. Every frontend job inquality.yml(lines ~363, 493, 565, 599) usessetup-nodenode-version: "24". The only Node 22 coverage is the lockfile-install check (#1816/#2741). Unit tests, the build and the Playwright runs never execute on the version that ships.Proposal
Either move the frontend jobs to
node-version: "22"to match the image, or add a Node 22 row to the frontend matrix that runsnpm ci && npm run build && vitest. Keep 24 as an advisory forward-compat row if wanted. Derive the version from the Dockerfile'sFROMline in CI so the two can't drift again.Sources
.github/workflows/opencode-plugin-ci.yml.github/workflows/opencode-provider-ci.yml.github/workflows/nightly-compat.ymlFound by the #3194 OmniRoute ops/CI deep-check (pinned
18bbb101, APIARYmain3dca4457).