fix(installer): accept OTA-upgraded DGX OS on Station GB300 without image marker - #7223
Conversation
…mage marker Signed-off-by: Hung Le <hple@nvidia.com>
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
|
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 (2)
📝 WalkthroughWalkthroughThe DGX Station release classifier now keys OTA detection on ChangesDGX OTA classification
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage remains at 96%, unchanged from the TypeScript / code-coverage/cliThe overall coverage in the Show a code coverage summary of the most impacted files.
Updated |
PR Review Advisor — InformationalAdvisor assessment: Informational / high 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: None 1 warning · 0 suggestionsWarningsWarnings do not block.
|
<!-- 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>
<!-- markdownlint-disable MD041 --> ## Summary This change documents the approved DGX Station OTA metadata fallback in the canonical Station preparation guide. It states the public hardware boundary as recognized GB300 hardware while keeping exact PCI identifiers and the accepted-variant count as implementation details. ## Changes - [#7223](#7223) -> `docs/get-started/dgx-station-preparation.mdx`: Document that qualification uses the latest reviewed `DGX_OTA_VERSION`; `DGX_OTA_PRETTY_NAME` must equal `DGX OS` when present; and marker-less OTA hosts require `DGX_PRETTY_NAME=NVIDIA DGX GB300WS`. - Preserve the safe, root-owned release-file gate and `DGX_PLATFORM=DGX Server for GALAXY-GB300` requirement. - Describe the public PCI qualification boundary only as recognized GB300 hardware, without publishing identifiers or an accepted-variant count. - Extend `test/station-doc-ownership.test.ts` to protect canonical ownership, the fallback wording, the public hardware term, and identifier exclusion. - Leave Quickstart, Platform Support, and provider-selection summaries unchanged because their canonical links and summary-level statements remain accurate. - Rebase on merged PackageKit documentation PR #7331. The unpublished Quickstart deduplication work touches the ownership test nearby, so whichever branch lands second may need a mechanical rebase without a semantic wording dependency. ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [x] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Quality Gates - [x] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [ ] Tests not applicable — justification: - [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: ## Documentation Writer Review - [x] Documentation writer subagent reviewed the completed changes - Result: `docs-updated` - Evidence: At PR SHA `8cf7b91`, the focused integration test passed 1 file and 4 tests. `npm run docs` passed with the route checker OK, 0 errors, and 2 existing Fern warnings. `npm run check:diff` passed. The exact-head review found no documentation issues: the OTA marker and fallback wording matches the implementation, the force override is limited to recognized GB300 hardware, and the ownership test excludes raw device IDs. - Agent: Codex Desktop <!-- docs-review-head-sha: 8cf7b91 --> <!-- docs-review-agents-blob-sha: 9c9b36d --> ## DGX Station Hardware Evidence - [ ] Tested on DGX Station - Tested commit: Not applicable. - Station profile/scenario: Documentation-only clarification of merged behavior. - Result: No host behavior changed. - Supporting evidence: Merged PR #7223 and the current Station classifier and hardware-detection tests. ## 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 — `npx vitest run test/station-doc-ownership.test.ts test/changelog-docs.test.ts`: 2 files and 10 tests passed. - [ ] Applicable broad gate passed — Not run; focused documentation tests and the docs build cover this change. - [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) — The build passed with 0 errors. Fern reported the existing light-mode accent contrast warning. - [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) --- Signed-off-by: Miyoung Choi <miyoungc@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Refined DGX Station qualification guidance for GB300 systems, including how OTA hosts qualify using the latest OTA version and accepted version ranges. * Clarified `DGX_OTA_PRETTY_NAME` expectations (including when it may be omitted after OTA upgrades) and strengthened `DGX_PRETTY_NAME` requirements when `DGX_OTA_PRETTY_NAME` is absent. * Tightened the warning for `--force-station-install` to specify it should only be used when automatic Station detection rejects recognized GB300 `/etc/dgx-release` metadata. * **Tests** * Enhanced documentation ownership checks to validate OTA/GB300-specific text and key qualification requirements. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Prekshi Vyas <prekshiv@nvidia.com> Co-authored-by: Carlos Villela <cvillela@nvidia.com> Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Summary
The Station express installer classifies a GB300 DGX OS host from its
/etc/dgx-releasemetadata, but it only recognized DGX OS when the full-image identity fieldDGX_OTA_PRETTY_NAME="DGX OS"was present. A Station GB300 that was first installed from an older base image (for example7.4.1-GB300ws) and later OTA-upgraded to7.5.0accruesDGX_OTA_VERSION/DGX_OTA_DATEbut never gains that field, so it fell through tounsupported-dgx-osand hit the express boundary error even though it is a genuine, healthy DGX OS7.5.0GB300 host. This change classifies a host that carries an OTA history by its latest applied OTA version, so such a host is now recognized assupported-dgx-osand takes the existing stock-DGX-OS path that reuses the factory driver and container runtime without mutating host packages.Related Issue
Fixes #7224
Changes
scripts/prepare-dgx-station-host.sh: indgx_station_release_profile, gate the DGX OS branch on OTA-history presence and the latestDGX_OTA_VERSION(7.2.0/7.4.0/7.5.0) rather than on theDGX_OTA_PRETTY_NAMEimage marker. When that marker is present it must still read exactlyDGX OS; when it is absent, the host must identify as the GB300 workstation viaDGX_PRETTY_NAME="NVIDIA DGX GB300WS"so that other release lineages which also emitDGX_OTA_*fields stay fail-closed. The now-shadowedDGX_OTA_VERSIONguard in the no-OTA branch is removed; theDGX_OTA_DATEguard is kept as defense-in-depth.supported-dgx-os→stock-dgx-osprofile, which already reuses the factory driver and container runtime with no package, service, or runtime mutation.test/install-station-dgx-os.test.ts: add a positive case for a marker-less OTA-upgraded GB300 workstation (mirrors the reported/etc/dgx-release, classified assupported-dgx-os), plus fail-closed cases for a non-workstationDGX Serveridentity and for an unreviewed latest OTA version.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 unavailablenpm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes — command/result:npm run docsbuilds without warnings (doc changes only)Signed-off-by: Hung Le hple@nvidia.com
Summary by CodeRabbit
Bug Fixes
Tests