fix #73837: stop after failed Node package installs#91528
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed June 11, 2026, 9:54 AM ET / 13:54 UTC. Summary PR surface: Tests +80, Other +9. Total +89 across 2 files. Reproducibility: unclear. The review failed before ClawSweeper could establish a reproduction path. Review metrics: none identified. Stored data model Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Risk before merge
Maintainer options:
Next step before merge
Review detailsBest possible solution: Retry the Codex review after fixing the execution failure. Do we have a high-confidence way to reproduce the issue? Unclear. The review failed before ClawSweeper could establish a reproduction path. Is this the best way to solve the issue? Unclear. Retry the review first so ClawSweeper can evaluate the actual issue and fix direction. AGENTS.md: unclear because the file could not be read completely. Codex review notes: model internal, reasoning high; reviewed against 2bec2caf0c69. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Tests +80, Other +9. Total +89 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
3952d59 to
f78d843
Compare
|
Maintainer pass complete; this is land-ready. Proof run:
I also rebased the branch onto current |
Fixes #73837.
Summary
install_nodeis called from a conditional shell context.Root Cause
scripts/install.shNode runtime installation and the adjacent installer test file.errexitsuppression: becauseinstall_nodecan be invoked from anif install_nodeshell context, barerun_quiet_stepfailures inside that function no longer abort the function, which caused failed NodeSource setup or package install commands to continue into later installer logic instead of stopping at the failed step.run_required_step, which exits immediately ifrun_quiet_stepreports failure. The existing post-installfinish_linux_node_installvalidation remains in place, so success is only printed after a supportednodebinary is active on PATH.run_required_stepreturns only after a successful wrapped command and exits on failure, so it cannot mask the failed package-manager command. No package manager selection, apt noninteractive flags, Node minimum version, npm install path, or macOS behavior changed.Real behavior proof
nodejsinstall no longer falls through and reports a successful Node.js install before later crashing.pgvector/pgvector:pg17image, with the patched worktree mounted read-only and Docker run with--network none. The proof sources productionscripts/install.sh, setsOS=linux, and invokesinstall_nodefrom anif install_node; thenconditional shell context. The container image has Debian's real/usr/lib/apt/apt-helper download-filebut no curl/wget, so the proof exposes apt-helper through a temporary curl-compatible wrapper in/tmp/proof-bin; no repository code or installer function was changed.deb.nodesource.com, exited with status 1 throughrun_required_step, and did not continue toapt_get_install nodejs,finish_linux_node_install, or any Node.js success message./media/vdc/code/ai/aispace/openclaw-issue-73837-evidence/local-installer-node-failure-proof.mjs, which sources productionscripts/install.shand locks both previously reported conditional-errexitfailure shapes: NodeSource setup failure and aptnodejsinstall failure both exit with status 1 and never returninstall_nodesuccess.Review findings addressed
install_nodehits a real NodeSource DNS/network failure forhttps://deb.nodesource.com/setup_24.x, exits with status 1 atDownloading NodeSource setup script, and does not print a Node.js success message.3952d599015d7356ffd5a4251f3255c079141e5fare self-hosted runner communication failures, with GitHub annotations saying the runner lost communication with the server; there is no current-head test assertion failure attributable to this PR.Temporary failure resolving 'deb.nodesource.com'NodeSource failure and theASSERT_PASSchecks for exit status and absence of success output.Tests
test/scripts/install-sh.test.ts.nodejsinstall failure stopinstall_nodeimmediately and do not print Node.js installation success.install_nodeunder the same conditional-shell shape that can suppresserrexit, while keeping package-manager operations local and deterministic.oxfmt --checkpassed;oxlint --deny-warningspassed;check:changedpassed the tooling lane;git diff --checkpassed with no output.Risk / Scope
run_required_stepowns required command failure handling, andfinish_linux_node_installremains the validation gate before any installed-success message.merge-risk: 🚨 availability,merge-risk: 🚨 compatibility.