Skip to content

fix(onboard): preserve Spark managed-vLLM Express intent on onboard --resume (#7231)#7234

Merged
prekshivyas merged 13 commits into
mainfrom
fix/7231-spark-express-resume
Jul 24, 2026
Merged

fix(onboard): preserve Spark managed-vLLM Express intent on onboard --resume (#7231)#7234
prekshivyas merged 13 commits into
mainfrom
fix/7231-spark-express-resume

Conversation

@yanyunl1991

@yanyunl1991 yanyunl1991 commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Summary

On DGX Spark, a failed non-interactive managed-vLLM onboard now resumes the same Express flow instead of losing its provider, sandbox, and model intent and dropping into the interactive provider menu. An unpinned resume also isolates inherited model overrides so the Spark default is selected consistently.

Related Issue

Closes #7231

Changes

  • Persist a strict, secret-free kind: "spark" resume intent for non-interactive NEMOCLAW_PROVIDER=install-vllm runs detected on DGX Spark.
  • Restore the managed-vLLM provider, non-interactive mode, sandbox name, and an explicitly pinned Spark model during resume without enabling DGX Station receipt or policy state.
  • Temporarily clear inherited NEMOCLAW_VLLM_MODEL and NEMOCLAW_MODEL values for an unpinned Spark resume, then restore the caller environment afterward.
  • Clear Spark resume intent after provider selection completes; keep the existing DGX Station binding and receipt lifecycle unchanged.
  • Cover capture, strict parsing, tamper rejection, platform gating, environment isolation/restoration, session normalization, and completion cleanup.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • 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:
  • Tests not applicable — justification:
  • Docs updated for user-facing behavior changes
  • Docs not applicable — justification: Existing resume and DGX Spark Express documentation already specifies the provider/model/sandbox retention and unpinned-model behavior; this fix makes the implementation conform to that contract.
  • 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: Codex Desktop maintainer security review found no findings; strict persisted-state parsing, platform/model/name validation, Station isolation, and temporary environment restoration were reviewed.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Documentation Writer Review

  • Documentation writer subagent reviewed the completed changes
  • Result: no-docs-needed
  • Evidence: Existing resume, DGX Spark, DGX Station, and managed-vLLM docs already describe the provider/model/sandbox contract and platform separation; this head only isolates inherited Station settings during Spark resume. Focused tests passed 128/128 and npm run check:diff passed.
  • Agent: Codex Desktop

DGX Station Hardware Evidence

  • Tested on DGX Station
  • Tested commit:
  • Station profile/scenario:
  • Result:
  • Supporting evidence:

Verification

  • PR description includes a Signed-off-by: line and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run check:diff passed when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — npx vitest run --project cli src/lib/onboard/station-express-resume.test.ts src/lib/state/onboard-session.test.ts (2 files, 128 tests passed)
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result:
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Additional validation:

  • npm run test-size:check passed.
  • npm run build:cli passed.
  • npm --prefix nemoclaw run build passed.
  • Live DGX Spark validation from the contributor reproduced a managed-vLLM failure at provider configuration, resumed with nemoclaw onboard --resume without --name, completed with provider=vllm-local, cleared the intent, and left the sandbox Ready.

Signed-off-by: Yanyun Liao yanyunl@nvidia.com

…-resume (#7231)

A non-interactive DGX Spark Express onboard (NEMOCLAW_PROVIDER=install-vllm)
that fails at [3/8] Configuring inference provider printed
`nemoclaw onboard --resume`, but resume lost the Express intent: the saved
onboard-session.json had provider=null, so resume dropped into the interactive
provider menu defaulting to [1] NVIDIA Endpoints instead of continuing the
managed-vLLM install, and demanded a --name the recommendation omitted.

The #7048 Station Express contract already persists this kind of intent and
re-injects the provider env on resume, but it was gated to the DGX Station
path (the NEMOCLAW_STATION_EXPRESS marker + a platforms:["station"] model).
Extend that same contract to the DGX Spark install-vllm path.

- station-express-resume.ts: capture a kind:"spark" resume intent for a
  non-interactive install-vllm run (no marker required) and re-inject
  NEMOCLAW_PROVIDER=install-vllm (+ NEMOCLAW_SANDBOX_NAME and a pinned model
  when one was set) on resume. Spark intents never carry the Station-only
  receipt/served/checkpoint fields and never set the Station marker/policy env.
- onboard-session.ts: clear a spark intent once provider_selection completes
  (it has no receipt to retire), so it exists only while selection is
  incomplete and the existing null-until-complete invariants are unchanged.

Because the restored env includes NEMOCLAW_SANDBOX_NAME, the printed
`nemoclaw onboard --resume` now also works without an explicit --name.

Verified live on a DGX Spark (GB10, aarch64): the session now records the
spark intent, `nemoclaw onboard --resume` continues the managed-vLLM install
instead of defaulting to NVIDIA Endpoints, and a full resume completes with
provider=vllm-local and the intent cleared.

Signed-off-by: Yanyun Liao <yanyunl@nvidia.com>
@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds DGX Spark managed-vLLM Express resume intent capture, strict parsing, environment restoration, and session cleanup after provider selection.

Changes

Spark Express resume

Layer / File(s) Summary
Spark intent contract and detection
src/lib/onboard/station-express-resume.ts, src/lib/onboard/station-express-resume.test.ts
Adds Spark intent validation, Spark model resolution, provider-based intent detection, and capture/filtering tests.
Spark resume environment restoration
src/lib/onboard/station-express-resume.ts, src/lib/onboard/station-express-resume.test.ts, src/lib/state/onboard-session.ts
Restores managed-vLLM provider settings and optionally pinned Spark model variables without Station markers, while validating incomplete Spark sessions.
Spark session lifecycle completion
src/lib/state/onboard-session.ts, src/lib/state/onboard-session.test.ts
Skips Station provider binding and clears the Spark Express resume intent after provider selection completes, without generating Station receipt retirement state.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant FailedExpress
  participant ResumeSession
  participant Environment
  participant ProviderSelection
  FailedExpress->>ResumeSession: persist Spark Express intent
  ResumeSession->>Environment: restore install-vllm and non-interactive settings
  ResumeSession->>ProviderSelection: resume provider selection
  ProviderSelection->>ResumeSession: complete provider selection
  ResumeSession->>ResumeSession: clear Spark Express intent
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 7.69% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The changes preserve Spark managed-vLLM resume state, avoid the interactive provider menu, and keep Station behavior intact as requested by #7231.
Out of Scope Changes check ✅ Passed Only Spark resume onboarding logic and its tests were changed; no unrelated scope appears introduced.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: preserving Spark managed-vLLM Express intent during onboard resume.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/7231-spark-express-resume

Comment @coderabbitai help to get the list of available commands.

@github-code-quality

github-code-quality Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit 0fd3064 in the fix/7231-spark-expre... branch remains at 96%, unchanged from commit 70a8b6b in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit 0fd3064 in the fix/7231-spark-expre... branch remains at 80%, unchanged from commit f764692 in the main branch.

Show a code coverage summary of the most impacted files.
File main f764692 fix/7231-spark-expre... 0fd3064 +/-
src/lib/domain/.../connect-env.ts 97% 89% -8%
src/lib/state/m...-acquisition.ts 89% 84% -5%
src/lib/sandbox...rce-identity.ts 87% 87% 0%
src/lib/state/m...ock-identity.ts 95% 95% 0%
src/lib/state/m...lock-storage.ts 97% 97% 0%
src/lib/tunnel/services.ts 73% 73% 0%
src/lib/state/o...oard-session.ts 90% 91% +1%
src/lib/onboard...press-resume.ts 75% 78% +3%
src/lib/inferen...er-lifecycle.ts 65% 71% +6%
src/lib/inferen...lama/process.ts 50% 100% +50%

Updated July 24, 2026 03:12 UTC

@github-actions

github-actions Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — Informational

Advisor assessment: Informational / high confidence
Next action: No advisor follow-up needed.
Findings: 0 blockers · 0 warnings · 0 suggestions
Status: No actionable findings remain in the canonical review ledger.

Model lanes

  • GPT-5.6 Terra (primary): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Nemotron 3 Ultra (second opinion): Failed after a partial review · low confidence · 0 blockers · 5 warnings · 2 suggestions

Nemotron output stays in workflow artifacts and does not change the assessment above.

E2E guidance

Advisory only. E2E / PR Gate selects and runs jobs independently.

Recommended E2E: onboard-repair, onboard-resume, cloud-onboard

2 optional E2E recommendations
  • spark-install
  • onboard-negative-paths

Workflow run details

This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
src/lib/onboard/station-express-resume.ts (1)

19-32: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider a discriminated union for Station vs. Spark intent shapes.

Making model optional on the shared interface loosens the type for the Station branch too, even though Station intents always carry model at runtime (see parseStationExpressResumeIntent's station branch and getStationExpressResumeIntent, which both require a resolved model). A discriminated union ({ kind?: undefined; model: string; ... } | { kind: "spark"; model?: string; ... }) would let the compiler continue to enforce "Station intents always have a model" instead of relying purely on runtime checks scattered across expectedEnvironment, parseStationExpressResumeIntent, and callers.

🤖 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 19 - 32, Replace the
shared StationExpressResumeIntent shape with a discriminated union: keep the
Station branch identified by an absent or undefined kind and require model plus
its Station-only fields, while defining the Spark branch with kind "spark",
optional model, and no Station-only receipt/served/checkpoint fields. Update
parseStationExpressResumeIntent and getStationExpressResumeIntent as needed to
construct and narrow the correct branch.
🤖 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.

Nitpick comments:
In `@src/lib/onboard/station-express-resume.ts`:
- Around line 19-32: Replace the shared StationExpressResumeIntent shape with a
discriminated union: keep the Station branch identified by an absent or
undefined kind and require model plus its Station-only fields, while defining
the Spark branch with kind "spark", optional model, and no Station-only
receipt/served/checkpoint fields. Update parseStationExpressResumeIntent and
getStationExpressResumeIntent as needed to construct and narrow the correct
branch.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: efb367cc-0f01-4c53-8f11-d79dbf45a54a

📥 Commits

Reviewing files that changed from the base of the PR and between 3c4ea5a and 6a37eee.

📒 Files selected for processing (4)
  • src/lib/onboard/station-express-resume.test.ts
  • src/lib/onboard/station-express-resume.ts
  • src/lib/state/onboard-session.test.ts
  • src/lib/state/onboard-session.ts

…tore (#7231)

Address PR Review Advisor PRA-1: the isolated unit tests validate spark
intent capture and wrapper restoration separately, but none exercised the
real capture → session persistence → reload → resume-restore sequence, so a
wiring change in the entry/session-persistence path could reintroduce the
interactive provider-menu fallback while those tests stayed green.

Add an integration-style regression that captures the intent via
requireStationExpressResumeIntent, persists a failed pre-provider run through
the real session store, reloads it through normalizeSession, and resumes via
withStationExpressResumeEnvironment backed by the on-disk session — asserting
NEMOCLAW_PROVIDER=install-vllm, non-interactive mode, and the recorded sandbox
name are restored, and that the Station receipt-retirement path is never
touched.

Signed-off-by: Yanyun Liao <yanyunl@nvidia.com>
…reateRequire budgets (#7231)

The prior follow-up pushed onboard-session.test.ts past the 1500-line
test-size budget, and a dedicated new test file would have needed a
createRequire seam that the CLI createRequire allowlist forbids adding.

Move the spark Express coverage to where it fits the guardrails:
- station-express-resume.test.ts (static imports, ample budget) gets the
  normalize accept/reject case and the capture -> reload-normalization ->
  resume-restore integration test. The integration test runs the real
  requireStationExpressResumeIntent capture and normalizeSession reload (the
  exact transform loadSession applies) rather than a hand-built session, so a
  wiring change in capture/normalize/restore is still caught (PRA-1).
- onboard-session.test.ts (already on the createRequire allowlist, with the
  on-disk session harness) keeps only the clear-on-complete case, staying
  under the size budget.

No production changes.

Signed-off-by: Yanyun Liao <yanyunl@nvidia.com>
@wscurran wscurran added area: install Install, setup, prerequisites, or uninstall flow area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow bug-fix PR fixes a bug or regression platform: dgx-spark Affects DGX Spark hardware or workflows labels Jul 20, 2026

@prekshivyas prekshivyas left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All required checks are green. The unpinned Spark resume model-environment blocker is fixed with regression coverage, both selected live E2E targets passed, and no unresolved actionable automated-review or security findings remain.

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
@prekshivyas
prekshivyas requested a review from cv July 24, 2026 02:31

@prekshivyas prekshivyas left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed exact head e8051ec. Spark resume now clears inherited Station/policy variables for the child run and restores the caller environment; the regression test exercises both boundaries. Focused tests (128/128), build/typecheck, security review, receipt, and check:diff pass. Independent maintainer review remains requested because I pushed the fix.

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
@prekshivyas
prekshivyas merged commit b33f91a into main Jul 24, 2026
79 of 80 checks passed
@prekshivyas
prekshivyas deleted the fix/7231-spark-express-resume branch July 24, 2026 03:36
prekshivyas added a commit that referenced this pull request Jul 24, 2026
<!-- markdownlint-disable MD041 -->
## Summary

This PR adds the canonical dated release entry for NemoClaw v0.0.94
before the tag is cut.
The entry reconciles all 26 commits since v0.0.93 and links each
user-visible change to its owning documentation.

## Changes

- Add `docs/changelog/2026-07-24.mdx` with the exact `## v0.0.94`
heading, parser-safe SPDX comment, release summary, and detailed
bullets.
- Record sandbox restore and update behavior, onboarding and inference
changes, network policy behavior, security evidence, Hermes build
performance, DGX Station guidance, and E2E validation changes.
- Preserve `docs/` as the source of truth without changing the AI-agent
documentation routing skill.
- Use [E2E run
30075443016](https://github.com/NVIDIA/NemoClaw/actions/runs/30075443016)
for release QA evidence at exact tested SHA
`04e6dfa883071dda9df429c66e73168e1a995cba`.

### Source summary

- [#7461](#7461) ->
`docs/changelog/2026-07-24.mdx`: Record the ownership-preserving Hermes
image layer reduction and hosted timing comparison.
- [#7460](#7460) ->
`docs/changelog/2026-07-24.mdx`: Record removal of candidate Hermes swap
setup from E2E validation.
- [#7458](#7458) ->
`docs/security/fern-5.80.1-dependency-review.md`,
`docs/changelog/2026-07-24.mdx`: Record the reviewed Fern CLI update.
- [#7457](#7457) ->
`docs/changelog/2026-07-24.mdx`: Record periodic runner-pressure
telemetry.
- [#7455](#7455) ->
`docs/changelog/2026-07-24.mdx`: Record non-blocking absent Fern
previews.
- [#7450](#7450) ->
`docs/changelog/2026-07-24.mdx`: Record stable cancellation handling for
live-test child processes.
- [#7449](#7449) ->
`docs/changelog/2026-07-24.mdx`: Record parallel plugin EXDEV coverage.
- [#7448](#7448) ->
`docs/changelog/2026-07-24.mdx`: Record isolated long-running E2E lanes.
- [#7444](#7444) ->
`docs/changelog/2026-07-24.mdx`: Record exact-head Hermes swap
validation.
- [#7437](#7437) ->
`docs/manage-sandboxes/backup-restore.mdx`,
`docs/changelog/2026-07-24.mdx`: Record gateway pairing and
authenticated verification after cross-sandbox restore.
- [#7436](#7436) ->
`docs/manage-sandboxes/backup-restore.mdx`,
`docs/reference/commands.mdx`, `docs/changelog/2026-07-24.mdx`: Record
selected stale-state cleanup and Hermes virtual-environment access
repair.
- [#7385](#7385) ->
`docs/network-policy/customize-network-policy.mdx`,
`docs/changelog/2026-07-24.mdx`: Record the read-only agent-variant
route check.
- [#7371](#7371) ->
`docs/changelog/2026-07-24.mdx`: Record host-artifact verification for
session exports.
- [#7359](#7359) ->
`docs/changelog/2026-07-24.mdx`: Record platform validation for managed
vLLM model overrides.
- [#7356](#7356) ->
`docs/changelog/2026-07-24.mdx`: Record token-shaped value redaction for
`sandbox doctor --json`.
- [#7354](#7354) ->
`docs/security/advisory-early-warning.md`,
`docs/changelog/2026-07-24.mdx`: Record advisory correlation and
retained audit provenance.
- [#7352](#7352) ->
`docs/network-policy/customize-network-policy.mdx`,
`docs/network-policy/integration-policy-examples.mdx`,
`docs/reference/commands.mdx`, `docs/changelog/2026-07-24.mdx`: Record
preset reapplication and bounded `tls: skip` guidance.
- [#7345](#7345) ->
`docs/security/openclaw-2026.6.10-dependency-review.md`,
`docs/security/openclaw-2026.7.1-dependency-review.md`,
`docs/changelog/2026-07-24.mdx`: Record reviewed npm audit exception
enforcement.
- [#7340](#7340) ->
`docs/network-policy/customize-network-policy.mdx`,
`docs/changelog/2026-07-24.mdx`: Record the repaired CLI-reference
route.
- [#7334](#7334) ->
`docs/get-started/dgx-station-preparation.mdx`,
`docs/changelog/2026-07-24.mdx`: Record the qualified OTA metadata
fallback and narrowed override wording.
- [#7322](#7322) ->
`docs/changelog/2026-07-24.mdx`: Reconcile the gateway source tag added
to plugin registration banners.
- [#7284](#7284) ->
`docs/manage-sandboxes/update-sandboxes.mdx`,
`docs/changelog/2026-07-24.mdx`: Record read-only `upgrade-sandboxes
--check` behavior and recorded-gateway selection.
- [#7277](#7277) ->
`docs/changelog/2026-07-24.mdx`: Reconcile deterministic gateway TCP
refusal coverage.
- [#7234](#7234) ->
`docs/reference/troubleshooting.mdx`, `docs/changelog/2026-07-24.mdx`:
Record preserved DGX Spark managed vLLM Express intent on resume.
- [#7185](#7185) ->
`docs/reference/troubleshooting.mdx`, `docs/changelog/2026-07-24.mdx`:
Record IPv4 fallback DNS selection and exact resolver probing.
- [#6820](#6820) ->
`docs/reference/commands.mdx`, `docs/changelog/2026-07-24.mdx`: Record
the versioned, redacted `--events=jsonl` onboarding stream.

## 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
- [x] Existing tests cover changed behavior — justification: `npx vitest
run test/changelog-docs.test.ts` passed 6/6 tests.
- [ ] 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: `docs/changelog/2026-07-24.mdx`; the writing rules,
documentation style, exact release range, skip terms, published routes,
and product scope were reviewed; the changelog test passed 6/6; `npm run
docs` passed with route checking OK, zero errors, and two existing
warnings.
- Agent: Codex Desktop
<!-- docs-review-head-sha: 65368f9 -->
<!-- docs-review-agents-blob-sha: 9c9b36d -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit: Not applicable
- Station profile/scenario: Not applicable
- Result: Not applicable
- Supporting evidence: Not applicable. This PR does not change
`scripts/prepare-dgx-station-host.sh`.

## 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/changelog-docs.test.ts` passed 6/6 tests.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: Not applicable to the
dated changelog 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). The
build passed with zero errors and two existing Fern 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). Native dated changelog entries use the required parser-safe MDX
SPDX comment and no frontmatter.

---
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
  * Added the v0.0.94 release changelog.
  * Documented improvements to sandbox snapshot and restore behavior.
* Added updates for gateway selection, policy comparisons, onboarding
event output, and DGX recovery workflows.
* Documented enhanced diagnostics redaction, npm audit provenance, image
assembly performance, and validation stability improvements.


<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: install Install, setup, prerequisites, or uninstall flow area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow bug-fix PR fixes a bug or regression platform: dgx-spark Affects DGX Spark hardware or workflows

Projects

None yet

5 participants