Skip to content

Commit f62b80b

Browse files
authored
fix(sandbox): upgrade Node runtime to 24.18.0 (#83)
## Summary - upgrades the single repository, CI, local-container, web, sandbox, and generated-app Node baseline to 24.18.0 - pins both Docker images to the verified multi-architecture Node 24.18.0 image digest - makes protected Daytona snapshot publication fail unless the candidate actually runs Node 24.18.0 - regenerates only the affected npm lock metadata ## Context Production upload QA proved that files persist under the project `uploads` directory, remain available through the slash picker in later chats, and are readable by the agent. Recovery of one pre-existing mobile workspace still failed because Node 22.22.2/libuv treats timestamp preservation on the Daytona-mounted workspace as fatal, causing pnpm to exit with `EPERM: operation not permitted, futime`. Node 24.18.0 contains the upstream mounted-filesystem copy fix and is compatible with the pinned npm 12.0.1 and pnpm 11.15.0 toolchain. This changes the runtime baseline directly; it does not add a package-manager workaround or legacy path. ## Decisions | Decision | Choice | Reasoning | |---|---|---| | Runtime | Node 24.18.0 LTS everywhere | One version across local, CI, Vercel, Daytona, and generated apps | | Image integrity | Exact version plus immutable OCI digest | Reproducible image input across architectures | | Publication guard | Assert the exact Node version in snapshot smoke tests | Prevents a mislabeled or stale runtime from being promoted | | Migration scope | No database change | The repository remains at exactly one SQL migration | ## Verification - [x] full workspace typecheck under Node 24.18.0 — 46/46 tasks passed - [x] full workspace and repository lint under Node 24.18.0 — no warnings - [x] production build under Node 24.18.0 — 26/26 tasks passed - [x] operational script typecheck, architecture boundaries, and dead-code scan passed - [x] GitHub Actions workflow and embedded shell passed actionlint/shellcheck - [x] five npm locks and both pnpm template locks validated under Node 24.18.0 - [x] official Node image digest independently resolved before pinning - [ ] protected AMD64 sandbox build, vulnerability/secret scan, runtime smoke test, and Daytona snapshot publication after merge - [ ] direct production recovery QA after the new snapshot is promoted No database migration or data mutation is included. No Linear issue or plan document is associated with this production QA fix.
1 parent cade5ac commit f62b80b

20 files changed

Lines changed: 23 additions & 23 deletions

File tree

.github/actions/setup-repository/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ runs:
1919
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
2020
- uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
2121
with:
22-
node-version: 22.22.2
22+
node-version: 24.18.0
2323
cache: pnpm
2424
- name: Install workspace dependencies
2525
shell: bash

.github/workflows/build-snapshot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ jobs:
113113
docker run --rm --platform=linux/amd64 --entrypoint /bin/sh "$IMAGE_TAG" -lc '
114114
test "$(id -un)" = node
115115
test "$PWD" = /workspace
116-
node --version
116+
test "$(node --version)" = v24.18.0
117117
npm --version
118118
pnpm --version
119119
python3 --version

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
22.22.2
1+
24.18.0

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ docker compose version
4646
docker info
4747
```
4848

49-
The expected Node and pnpm versions are `v22.22.2` and `11.15.0`. Do not ignore
50-
an engine warning: select or install Node 22.22.2 before installing packages or
49+
The expected Node and pnpm versions are `v24.18.0` and `11.15.0`. Do not ignore
50+
an engine warning: select or install Node 24.18.0 before installing packages or
5151
running repository commands. Docker must be running before `pnpm dev`.
5252

5353
### Configure local credentials
@@ -104,7 +104,7 @@ From the repository root:
104104
pnpm dev
105105
```
106106

107-
The first run builds the pinned Node 22.22.2/pnpm 11.15.0 image, installs the
107+
The first run builds the pinned Node 24.18.0/pnpm 11.15.0 image, installs the
108108
locked workspace dependencies inside it, builds shared packages, validates
109109
`.env.local`, generates permission-restricted local Wrangler configs, and then
110110
starts the watchers. Subsequent source edits are synchronized into the
@@ -152,7 +152,7 @@ workflow can remove remote resources correctly.
152152

153153
### Troubleshooting
154154

155-
- **Node engine mismatch:** run `nvm install 22.22.2 && nvm use 22.22.2`, then
155+
- **Node engine mismatch:** run `nvm install 24.18.0 && nvm use 24.18.0`, then
156156
confirm `node --version` before retrying.
157157
- **Docker cannot connect:** start Docker Desktop or the Docker daemon and
158158
confirm `docker info` succeeds.

apps/web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"type": "module",
66
"packageManager": "pnpm@11.15.0",
77
"engines": {
8-
"node": "22.22.2"
8+
"node": "24.18.0"
99
},
1010
"scripts": {
1111
"build": "next build",

infra/containers/dev/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM node:22.22.2-bookworm-slim@sha256:9f6d5975c7dca860947d3915877f85607946403fc55349f39b4bc3688448bb6e
1+
FROM node:24.18.0-bookworm-slim@sha256:6f7b03f7c2c8e2e784dcf9295400527b9b1270fd37b7e9a7285cf83b6951452d
22

33
ENV PNPM_HOME=/pnpm
44
ENV PATH=$PNPM_HOME:$PATH

infra/containers/sandbox/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM node:22.22.2-bookworm-slim@sha256:9f6d5975c7dca860947d3915877f85607946403fc55349f39b4bc3688448bb6e
1+
FROM node:24.18.0-bookworm-slim@sha256:6f7b03f7c2c8e2e784dcf9295400527b9b1270fd37b7e9a7285cf83b6951452d
22

33
ARG CODE_SERVER_VERSION=4.128.0
44
ARG CODE_SERVER_SHA256=79ba26bf186e5268a22b7c17b30a5f288a16c37791f0b86c27859e8fef103188

infra/containers/sandbox/app-generators/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

infra/containers/sandbox/app-generators/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"private": true,
44
"version": "0.0.0",
55
"engines": {
6-
"node": "22.22.2"
6+
"node": "24.18.0"
77
},
88
"dependencies": {
99
"create-next-app": "16.2.11"

infra/containers/sandbox/app-templates/expo/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"private": true,
66
"packageManager": "pnpm@11.15.0",
77
"engines": {
8-
"node": "22.22.2"
8+
"node": "24.18.0"
99
},
1010
"scripts": {
1111
"start": "expo start",

0 commit comments

Comments
 (0)