fix(installer): preserve Station Express recipe across host handoff#7204
Conversation
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughStation Express resume state now persists and validates gateway, dashboard, and vLLM ports before host preparation, restores them across reboot or login, and includes them in the printed continuation command. Tests and documentation cover receipt safety, legacy compatibility, recovery, and port mismatches. ChangesStation Express resume flow
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant StationExpressPrompt
participant ensure_station_express_host
participant ResumeState
participant station_express_resume_command
StationExpressPrompt->>ensure_station_express_host: accepted recipe and port settings
ensure_station_express_host->>ResumeState: save receipt before host preparation
ResumeState->>station_express_resume_command: load and export saved ports
station_express_resume_command->>StationExpressPrompt: replay exact recipe without prompting
Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
PR Review Advisor — InformationalAdvisor assessment: Informational / low confidence Model lanes
Nemotron output stays in workflow artifacts and does not change the assessment above. E2E guidanceAdvisory only. E2E / PR Gate selects and runs jobs independently. Recommended E2E: This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
src/lib/onboard/station-express-resume.ts (1)
274-291: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winGrowing duplication across the legacy/current/port format branches.
The
portFormatbranch repeats the exact agent/sandbox/policy_tier checks already present incurrentFormatabove it. As more fields get added to the receipt (this is already the third format tier), this duplicated line-by-line prefix/validate pattern will keep expanding. Consider extracting a shared "parse and validate a labeled line" helper (e.g.parseLabeledLine(lines, index, prefix, validator)) that bothcurrentFormatandportFormatreuse, so future format extensions add one call instead of repeating a block.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/lib/onboard/station-express-resume.ts` around lines 274 - 291, Extract the repeated agent, sandbox, and policy_tier parsing and validation from currentFormat and portFormat into a shared labeled-line helper, such as parseLabeledLine(lines, index, prefix, validator). Update both format branches to reuse that helper while preserving their existing format-specific fields and validation behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/lib/onboard/station-express-resume.ts`:
- Around line 131-138: The port distinctness checks compare textual
representations instead of numeric values. In
src/lib/onboard/station-express-resume.ts lines 131-138, update
validReceiptPorts to normalize all ports numerically before constructing the
Set; in scripts/install.sh lines 3273-3296, normalize each port before the
comparisons in validate_station_express_resume_ports_distinct, while preserving
the existing validation behavior.
---
Nitpick comments:
In `@src/lib/onboard/station-express-resume.ts`:
- Around line 274-291: Extract the repeated agent, sandbox, and policy_tier
parsing and validation from currentFormat and portFormat into a shared
labeled-line helper, such as parseLabeledLine(lines, index, prefix, validator).
Update both format branches to reuse that helper while preserving their existing
format-specific fields and validation behavior.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: eeac607c-2ef3-4259-950a-757001bce93f
📒 Files selected for processing (7)
docs/get-started/dgx-station-preparation.mdxdocs/get-started/quickstart.mdxscripts/install.shsrc/lib/onboard/station-express-resume.test.tssrc/lib/onboard/station-express-resume.tstest/install-express-prompt.test.tstest/install-station-host-preparation.test.ts
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
|
Maintainer sweep update: I found and fixed one input-validation issue in the changed gateway-port normalization path. An overlong digit-only value could overflow Bash arithmetic and be accepted as a negative port. Commit Verification after the fix:
The broader Station handoff change remains within accepted bug #7203. Fresh CI and automated review are running; I did not merge. |
|
Maintainer sweep disposition: deferred — no source changes requested. The implementation and security review are clean after commit
The remaining blocker is GitHub Actions run association, not this PR. The successful current-base CI run is 29694731282, but GitHub's API returns an empty I did not merge. |
<!-- markdownlint-disable MD041 --> ## Summary Add the canonical dated changelog entry for NemoClaw `v0.0.89` before the release plan captures the tag commit. The entry summarizes the user-visible Station preparation, inference, recovery, policy-disclosure, and CLI-containment changes merged since `v0.0.88`. ## Changes - Add `docs/changelog/2026-07-20.mdx` with the exact `## v0.0.89` release heading, parser-safe SPDX comment, summary, and detailed bullets. - Link each shipped theme to the most specific published OpenClaw documentation routes. - Keep internal E2E, advisory-registry, and review-workflow refactors out of the user-facing release summary. Source summary: - #7214, #7241, #7237, #7223, #7204, #7202, #7183, and #7090 -> `docs/changelog/2026-07-20.mdx`: Summarize qualified DGX Station identity, package-state, PackageKit, DKMS, and reboot-handoff fixes. - #7242, #7221, #7186, #7164, and #6874 -> `docs/changelog/2026-07-20.mdx`: Summarize inference endpoint provenance, provider attachment, managed vLLM cleanup and progress, and Ollama selection guidance. - #7225, #7216, #7192, #7136, #7096, and #6910 -> `docs/changelog/2026-07-20.mdx`: Summarize sandbox readiness, recovery guidance, rebuilt model routing, durable Hermes state, and gateway restart behavior. - #7187 -> `docs/changelog/2026-07-20.mdx`: Summarize complete effective messaging-preset egress disclosure before policy mutation. - #7218, #7165, and #7184 -> `docs/changelog/2026-07-20.mdx`: Summarize structured output containment, terminal-safe route display, and Hermes forward cleanup. ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [x] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Quality Gates - [ ] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [x] Tests not applicable — justification: This PR adds release-history prose only; the focused changelog contract test validates its required structure and routes. - [x] Docs updated for user-facing behavior changes - [ ] Docs not applicable — justification: - [ ] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [ ] Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## Verification - [x] PR description includes a `Signed-off-by:` line and every commit appears as `Verified` in GitHub - [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or `npm run check:diff` passed when hooks were skipped or unavailable - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — `mise exec node@22.23.1 -- npx vitest run test/changelog-docs.test.ts` (6 passed). - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — not applicable to this doc-only release entry. - [x] Quality Gates section completed with required justifications or waivers - [x] No secrets, API keys, or credentials committed - [ ] `npm run docs` builds without warnings (doc changes only) — `mise exec node@22.23.1 -- npm run docs` completed with 0 errors and 2 existing site-wide warnings. - [x] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) — the native changelog entry uses the required parser-safe MDX SPDX comment and does not use frontmatter. --- Signed-off-by: Aaron Erickson <aerickson@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Expanded DGX Station installation support for qualified GB300 and OTA-upgraded environments. * Preserved selected inference providers, endpoints, model pins, and tuning settings during sandbox creation and rebuilds. * Improved sandbox recovery by validating availability and stability before restarting services. * Added clearer policy output showing the complete effective messaging egress configuration. * **Bug Fixes** * Hardened status and inference route displays by sanitizing terminal control characters. * Improved Hermes uninstall behavior by stopping detached dashboard forwarding. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Summary
Station Express now publishes its owner-only recovery receipt before host preparation can require a reboot or new login. The continuation command and resumed onboarding preserve the accepted revision, agent, model, sandbox, policy tier, and gateway, dashboard, and vLLM ports instead of silently returning to default ports.
Related Issue
Fixes #7203
Changes
Type of Change
Quality Gates
Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailablenpx vitest run --project cli src/lib/onboard/station-express-resume.test.ts(48 passed);npx vitest run --project installer-integration(354 passed, 2 skipped)npm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes — command/result: Not applicable; the complete installer integration project and normal repository hooks cover this scoped installer change.npm run docsbuilds without warnings (doc changes only) — build passed with 0 errors and 2 existing Fern warningsSigned-off-by: Senthil Ravichandran senthilr@nvidia.com
Summary by CodeRabbit