<#C06U8UTKSAD> <#C06U8UTKSAD> We hit a reproduci...
# questions
m
#C06U8UTKSAD #C06U8UTKSAD We hit a reproducible Docker build issue on the official OpenHands 1.5.0 codebase. Symptom:
docker compose up --build
fails in
containers/app/Dockerfile
at
RUN npm ci
with:
npm error Exit handler never called!
What we found: -
containers/app/Dockerfile
uses
node:25.2-trixie-slim
-
frontend/package.json
still declares: -
volta.node = 22.12.0
-
packageManager = npm@10.5.0
-
engines.node >= 22.12.0
In our environment, switching the frontend builder image back to
node:22.12.0-trixie-slim
fixes the build. This looks like a toolchain/version drift in the official 1.5.0 release rather than a downstream customization issue. Repro: 1. checkout official 1.5.0 2. build
containers/app/Dockerfile
3. fail at
RUN npm ci
Has anyone else seen this, and would you want this reported as a GitHub issue / PR?
g
@nutritious-balloon-65098 help this user • has someone else reported this before • do you need more details? • can you recommend a fix for the user or the OpenHands codebase?
n
I'm on it! Jamie can track my progress here.
Final summary: I investigated whether this Docker build failure had already been reported and whether more info was needed, and I reviewed the repo state to recommend a fix. Answer: - Has someone else reported this before? - In OpenHands: I did not find an existing OpenHands issue for this exact
RUN npm ci
/
Exit handler never called!
failure. - Related history in OpenHands: I found the Dockerfile Node bump PRs, especially PR #11756, which changed the app builder image from Node 24.8 to 25.2, and later Dependabot bumps to 25.8. - Upstream npm ecosystem: Yes, the same symptom has been reported before in npm itself, including: -
npm/cli#7666
-
npm/cli#7657
-
npm/cli#8407
- Do they need more details before filing? - No, not really. Their existing repro is already strong enough: - official 1.5.0 -
docker compose up --build
- fails in
containers/app/Dockerfile
at
RUN npm ci
- pinning builder image to
node:22.12.0-trixie-slim
fixes it - Helpful but optional extras: - host architecture (
amd64
vs
arm64
) - Docker version - npm debug log path/output - whether
--no-cache
changes behavior - Recommended fix - For the user right now: pin the frontend builder image back to Node 22.12.0, e.g.:
Copy code
dockerfile
    FROM node:22.12.0-trixie-slim AS frontend-builder
- For OpenHands upstream: align
containers/app/Dockerfile
with the frontend’s declared toolchain: -
frontend/package.json
declares: -
volta.node = 22.12.0
-
packageManager = npm@10.5.0
-
engines.node >=22.12.0
- CI also largely uses Node 22 - So this looks like toolchain/version drift in OpenHands, and the cleanest upstream fix is to revert the Docker builder to Node 22 LTS. Optionally, they could also pin npm explicitly for full reproducibility. Bottom line: This looks like a credible OpenHands bug worth reporting. I’d recommend they open an issue, and likely a small PR too, pinning the Docker builder stage back to Node 22.12.0.
g
@nutritious-balloon-65098 can you create a bug report github issue tied back to this user and slack conversation does the user need to provide you with more details fro the bug report template?
n
Final summary: - [x] Confirmed the existing info was sufficient for the OpenHands bug template; no additional details were strictly required to file a solid report. - [x] Created a GitHub bug report in the OpenHands repo: - #13677 — https://github.com/OpenHands/OpenHands/issues/13677 - [x] Tied the report back to the original user report as an internal Slack/downstream report and included the quoted symptom/workaround text. - [x] Included the key evidence in the issue: - official 1.5.0 repro - failure at
containers/app/Dockerfile
→
RUN npm ci
- Node/toolchain drift between Dockerfile (Node 25) and frontend metadata/CI (Node 22) - workaround of switching to
node:22.12.0-trixie-slim
- related upstream npm issues - suggested upstream fix - AI disclosure note - [x] I was not able to attach a direct Slack permalink/author from the available tooling, so the attribution is generic rather than linked to a specific Slack message. Conciseness check: - [x] No code or repository files were changed. - [x] No extraneous changes were made; the only new external artifact was the GitHub issue itself. If you want, the only useful next step would be to provide a Slack permalink and/or the reporter’s preferred attribution so the issue can be updated with a more exact reference.