[Linux][Install] nemoclaw installer exits 0 when blocked by stale station-dual-pair-resume.json — silent failure hides error from automation
- Dominant language
- TypeScript
- Stars
- 22.5k
- Forks
- 3.1k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 715
Description
## Description
When `~/.nemoclaw/station-dual-pair-resume.json` exists from a previous failed DGX Station express setup, the NemoClaw installer prints an `[ERROR]` message but exits with code **0** instead of non-zero. CI scripts and automation that check the exit code see success and continue, unaware the install was blocked.
Platform scope: Linux aarch64 (DGX Station, Ubuntu 24.04). The stale-resume check is DGX-Station-specific but the silent-exit-0 pattern could affect other code paths that use the same `|| true` suppression.
Regression: Unknown.
OpenShell issue: No
## Environment
```text
Device: DGX Station GB300 (aarch64)
OS: Ubuntu 24.04.4 LTS
Architecture: aarch64
NemoClaw: v0.0.113
OpenShell CLI: 0.0.101
```
## Steps to Reproduce
1. Partially fail a DGX Station express install, leaving `~/.nemoclaw/station-dual-pair-resume.json` on disk.
2. Attempt a fresh install without removing the stale file:
```bash
curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash; echo "EXIT:$?"
```
## Expected Result
Installer exits non-zero when it detects a blocking error, so callers can detect and handle the failure.
## Actual Result
```text
[ERROR] A dual-DGX Station pair resume is pending; finish exact pair revalidation before changing providers.
(script continues)
EXIT:0
```
Root cause: `scripts/install.sh` line 5828 — `load_station_express_resume || true` swallows the `exit 1` from `error()`, causing the script to return 0 despite the blocking error.
## Logs
```text
[ERROR] A dual-DGX Station pair resume is pending...
EXIT:0 ← should be EXIT:1
```
Contributor guide
Research direction
Start in scripts/install.sh around line 5828 and inspect load_station_express_resume plus the surrounding error-handling path. Reproduce with a stale ~/.nemoclaw/station-dual-pair-resume.json and the documented curl command, then verify that a blocking resume error produces a non-zero exit instead of EXIT:0.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- bash
- Domain
- devops
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100