Skip to content

fix(onboard): report an unhealthy inference route as not ready - #6862

Merged
cv merged 16 commits into
mainfrom
fix/onboard-finalize-route-health
Jul 15, 2026
Merged

fix(onboard): report an unhealthy inference route as not ready#6862
cv merged 16 commits into
mainfrom
fix/onboard-finalize-route-health

Conversation

@laitingsheng

@laitingsheng laitingsheng commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Summary

Onboard finalization now treats an unhealthy committed inference route as not ready. When the route is unreachable or returns HTTP 5xx, onboarding prints <agent> is not ready, exits non-zero, and keeps the session paused at retryable final verification. After the route is repaired, onboard --resume rechecks the existing sandbox and completes without rebuilding it.

Related Issue

Fixes #6849
Fixes #6848

Changes

  • verify-deployment: classifies HTTP 5xx and unreachable inference results as blocking readiness failures, while preserving independent gateway and dashboard health evidence.
  • Finalization lifecycle: adds an explicit non-terminal pause result so failed final readiness persists safe context, remains in_progress and resumable, and does not report completion.
  • Recovery coverage: adds focused runtime coverage and a live onboard-resume scenario that stops the committed inference route, proves not-ready state, restores the same endpoint, and proves successful resume.
  • Documentation: explains the final in-sandbox inference probe, non-zero not-ready result, retained session, and repair-and-resume workflow.

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
  • 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: fix(onboard): report an unhealthy inference route as not ready #6862 (review)
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Verification

  • PR description includes Signed-off-by: lines and every added commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed
  • Focused onboarding and deployment verification tests passed: 115/115
  • Onboarding exit-path integration tests passed: 4/4
  • CLI and plugin TypeScript checks passed
  • Vitest project membership is exact: 1597 files across 8 projects
  • npm run docs passed with 0 errors
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed

Signed-off-by: Tinson Lai tinsonl@nvidia.com
Signed-off-by: Julie Yaunches jyaunches@nvidia.com
Signed-off-by: Carlos Villela cvillela@nvidia.com

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@coderabbitai

coderabbitai Bot commented Jul 14, 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

Loopback inference endpoints are rewritten for sandbox access. Deployment verification now probes and classifies the inference route, making failures affect readiness. Finalization reports readiness through the dashboard, process exit code, and returned state.

Changes

Inference endpoint normalization

Layer / File(s) Summary
Sandbox endpoint rewriting
src/lib/inference/local.ts, src/lib/inference/local.test.ts, src/lib/onboard.ts
Loopback hosts are rewritten to host.openshell.internal while preserving URL components, and routed selection uses the shared helper with coverage for loopback and unchanged inputs.

Inference route verification

Layer / File(s) Summary
Inference route health verification
src/lib/verify-deployment.ts, src/lib/verify-deployment.test.ts, docs/get-started/quickstart.mdx, docs/inference/verify-inference-route.mdx
Sandbox probes classify inference routes as healthy, unreachable, or unhealthy; unreachable and HTTP 5xx results now fail deployment readiness and are documented and tested.

Finalization readiness reporting

Layer / File(s) Summary
Finalization readiness reporting
src/lib/onboard/machine/handlers/finalization.ts, src/lib/onboard/finalization-deps.ts, src/lib/onboard/dashboard.ts, src/lib/onboard/machine/handlers/finalization.test.ts, src/lib/onboard/finalization-deps.test.ts, test/helpers/onboard-final-flow-phases.ts
Finalization computes deployment health, displays ready or not ready, sets process.exitCode for unhealthy deployments, returns the health flag, and updates dependency wiring and tests.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

Suggested reviewers: cv, jyaunches, cv

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% 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 PR addresses both #6849’s non-zero not-ready finalization and #6848’s loopback rewrite for sandbox reachability.
Out of Scope Changes check ✅ Passed The added tests, docs, and readiness plumbing directly support the onboarding and inference-route fixes, with no unrelated scope evident.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main onboarding change: unhealthy inference routes are now reported as not ready.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/onboard-finalize-route-health

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

@github-code-quality

github-code-quality Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage remains at 96%, unchanged from the main branch.

TypeScript / code-coverage/cli

The overall coverage in the fix/onboard-finalize... branch remains at 80%, unchanged from the main branch.

Show a code coverage summary of the most impacted files.
File main 627154d fix/onboard-finalize... adc90c0 +/-
src/lib/adapter...ocker/volume.ts 85% 70% -15%
src/lib/messagi...onfig-parser.ts 92% 77% -15%
src/lib/onboard...shboard-port.ts 94% 89% -5%
src/lib/onboard...ime-boundary.ts 87% 85% -2%
src/lib/adapter.../docker/pull.ts 83% 86% +3%
src/lib/messagi...onfig-parser.ts 93% 100% +7%
src/lib/messagi...parser-utils.ts 86% 95% +9%
src/lib/messagi...ate-resolver.ts 82% 94% +12%
src/lib/messagi...ate-resolver.ts 67% 89% +22%
src/lib/core/pr...mpt-activity.ts 67% 92% +25%

Updated July 15, 2026 17:09 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.

@laitingsheng laitingsheng added NV QA Bugs found by the NVIDIA QA Team area: inference Inference routing, serving, model selection, or outputs area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow bug-fix PR fixes a bug or regression labels Jul 14, 2026
@github-actions

github-actions Bot commented Jul 14, 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): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Model comparison: normalized findings match; normalized E2E selections differ; severity counts match.

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: cloud-onboard, credential-sanitization, security-posture, onboard-repair, onboard-resume

2 optional E2E recommendations
  • onboard-negative-paths
  • ubuntu-repo-cloud-openclaw

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.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
test/helpers/onboard-final-flow-phases.ts (1)

237-287: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

isDeploymentHealthy should reflect the verification result.
test/helpers/onboard-final-flow-phases.ts:253 hardcodes isDeploymentHealthy: () => true, so a test that overrides only verifyDeployment cannot exercise the unhealthy path. Derive it from result.healthy or add a recorder override hook.

🤖 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 `@test/helpers/onboard-final-flow-phases.ts` around lines 237 - 287, Update the
isDeploymentHealthy dependency in the finalizationDeps setup to reflect the
result returned by verifyDeployment, using result.healthy or an equivalent
shared recorder state. Preserve the default healthy behavior while allowing
tests that override only verifyDeployment to exercise unhealthy deployment
paths.

Source: Path instructions

🤖 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/inference/local.ts`:
- Around line 64-69: Update rewriteHostLoopbackForSandbox to parse the URL first
and rewrite only when parsed.hostname equals localhost or 127.0.0.1, using
case-insensitive matching for hostname variants; otherwise return the original
URL. Add regression coverage for unrelated paths/hostnames and uppercase
LOCALHOST while preserving port, path, query, and hash handling.

In `@src/lib/verify-deployment.ts`:
- Around line 573-581: Update the healthy calculation in the deployment
verification flow to require inference.status to be neither "unhealthy" nor
"unreachable". Ensure isDeploymentHealthy() and resume readiness consume this
result so an unreachable inference proxy cannot report the deployment as ready,
while preserving the existing gateway and dashboard checks.

---

Outside diff comments:
In `@test/helpers/onboard-final-flow-phases.ts`:
- Around line 237-287: Update the isDeploymentHealthy dependency in the
finalizationDeps setup to reflect the result returned by verifyDeployment, using
result.healthy or an equivalent shared recorder state. Preserve the default
healthy behavior while allowing tests that override only verifyDeployment to
exercise unhealthy deployment paths.
🪄 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: ba2aff06-623f-4c7f-add3-11152bf1fa4e

📥 Commits

Reviewing files that changed from the base of the PR and between 33d55b0 and 14f86a5.

📒 Files selected for processing (11)
  • src/lib/inference/local.test.ts
  • src/lib/inference/local.ts
  • src/lib/onboard.ts
  • src/lib/onboard/dashboard.ts
  • src/lib/onboard/finalization-deps.test.ts
  • src/lib/onboard/finalization-deps.ts
  • src/lib/onboard/machine/handlers/finalization.test.ts
  • src/lib/onboard/machine/handlers/finalization.ts
  • src/lib/verify-deployment.test.ts
  • src/lib/verify-deployment.ts
  • test/helpers/onboard-final-flow-phases.ts

Comment thread src/lib/inference/local.ts Outdated
Comment thread src/lib/verify-deployment.ts Outdated
laitingsheng and others added 3 commits July 14, 2026 16:43
…iting compatible endpoints

rewriteHostLoopbackForSandbox tested the raw endpoint string, so a remote
URL merely containing "localhost" or "127.0.0.1" in its host, path, query,
or fragment was wrongly rewritten. Parse the URL first and rewrite only an
exact localhost/127.0.0.1 hostname.

The custom and Anthropic-compatible endpoint branch in
handleRemoteProviderSelection also wrapped its endpoint in this rewrite
before gatewayReachableCompatibleEndpointUrl ran its own exact-authority,
bundled-port gateway rewrite downstream. Rewriting twice replaced the raw
loopback URL needed for host-side credential validation and for that
gateway check, breaking both. Stop rewriting in
handleRemoteProviderSelection and let the existing gateway-route check
handle it, as it already did before this change.

Restructure the growth-guardrail-triggering conditional mock in the new
verify-deployment.ts unhealthy-inference-route test into a flat response.

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
@jyaunches

Copy link
Copy Markdown
Contributor

PR Review Advisor PRA-1 was checked against the current registration path and is not actionable for #6848. handleRemoteProviderSelection intentionally retains the user-entered loopback URL so host-side validation can reach the service. Before provider registration, src/lib/onboard/inference-providers/remote.ts calls gatewayReachableCompatibleEndpointUrl, which rewrites exact HTTP localhost/127.0.0.1 OpenAI-compatible endpoints on the policy-supported ports to host.openshell.internal; test/onboard-inference-gateway-scope.test.ts asserts both the rewritten provider create URL and the original host-smoke URL. Focused verification passed: 4/4 gateway-route unit tests and 4/4 onboarding gateway-scope integration tests. The linked issue is OpenAI-compatible; extending this behavior to the Anthropic-compatible surface would be a separate product requirement.

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>

# Conflicts:
#	test/e2e/support/jetson-workflow-boundary.test.ts
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
@github-actions

Copy link
Copy Markdown
Contributor

@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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/lib/verify-deployment.test.ts (1)

200-210: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Isolate the HTTP 5xx response to the inference probe.

The executeSandboxCommand stub on Line 202 returns 503 for every command, including the gateway probe. Assert that the gateway remains reachable and return 503 only when the script contains inference.local; otherwise this test can pass without proving that the inference route is the cause of the unhealthy result.

Proposed test adjustment
-      executeSandboxCommand: () => ({ status: 0, stdout: "503", stderr: "" }),
+      executeSandboxCommand: (_name, script) =>
+        script.includes("inference.local")
+          ? { status: 0, stdout: "503", stderr: "" }
+          : { status: 0, stdout: "200", stderr: "" },
...
+    expect(result.verification.gatewayReachable).toBe(true);
🤖 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/verify-deployment.test.ts` around lines 200 - 210, Update the
executeSandboxCommand stub in the inference-route test so it returns 503 only
when the requested script targets inference.local, while returning a successful
response for other probes. Add an assertion that the gateway remains reachable,
preserving the existing assertions that the inference route is unhealthy and its
diagnostics include 503.

Source: Path instructions

🤖 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 `@docs/get-started/quickstart.mdx`:
- Around line 325-329: Rewrite the onboarding verification and recovery guidance
in docs/get-started/quickstart.mdx lines 325-329 using direct second-person
instructions, including “verify,” “restore,” and “rerun” actions. Apply the same
instructional style to the route-reachability and recovery guidance in
docs/inference/verify-inference-route.mdx lines 37-39; update both sites
consistently without changing the documented behavior.

---

Outside diff comments:
In `@src/lib/verify-deployment.test.ts`:
- Around line 200-210: Update the executeSandboxCommand stub in the
inference-route test so it returns 503 only when the requested script targets
inference.local, while returning a successful response for other probes. Add an
assertion that the gateway remains reachable, preserving the existing assertions
that the inference route is unhealthy and its diagnostics include 503.
🪄 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: d13fe696-a936-4eec-97cd-e921cced1380

📥 Commits

Reviewing files that changed from the base of the PR and between 07cca79 and 64d582c.

📒 Files selected for processing (5)
  • docs/get-started/quickstart.mdx
  • docs/inference/verify-inference-route.mdx
  • src/lib/onboard.ts
  • src/lib/verify-deployment.test.ts
  • src/lib/verify-deployment.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/lib/onboard.ts

Comment thread docs/get-started/quickstart.mdx Outdated
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
@jyaunches jyaunches added v0.0.84 and removed v0.0.83 labels Jul 14, 2026
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
@jyaunches

jyaunches commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

I am taking over the remaining follow-up on this PR. The path to completion is:\n\n- keep failed final readiness verification in a retryable onboarding state instead of completing the session;\n- add focused coverage plus a live resume scenario for route failure → repair → successful resume;\n- reconcile the docs and outstanding review-test gaps;\n- push and monitor required CI, E2E, CodeRabbit, and PR Review Advisor feedback until the PR is green;\n- from that green SHA, run the staging GCP image build in nemoclaw-image and validate the resulting image through a real Brev launchable.\n\nI will keep PR updates minimal. The next progress comment will be the successful staging build/launchable link, unless an external blocker requires maintainer input.

@prekshivyas prekshivyas assigned cjagwani and unassigned jyaunches Jul 15, 2026
cv and others added 2 commits July 15, 2026 09:32
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
# Conflicts:
#	docs/get-started/quickstart.mdx
#	docs/inference/verify-inference-route.mdx
#	src/lib/onboard.ts
#	src/lib/onboard/machine/final-flow-phases.runtime.test.ts
#	src/lib/onboard/machine/handlers/finalization.test.ts
#	src/lib/onboard/machine/handlers/finalization.ts
#	test/helpers/onboard-final-flow-phases.ts

@cv cv 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.

Maintainer review complete for commit 1ee8088. Unhealthy final verification now remains resumable, recovery is regression-tested, and the user guidance matches the persisted lifecycle.

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
@jyaunches

jyaunches commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Status update:

  • The architecture/review pass is complete, including explicit resumable pause semantics for unhealthy final route verification.
  • The missing live recovery path is covered: fail final verification, repair the endpoint, then onboard --resume to completion.
  • The exact PR head is e0f34e78be25e8c510ed17670afd46c2bad33b5c; source CI and the E2E PR gate are still running. PR Review Advisor (Terra) has passed, with the Nemotron Advisor check still in progress.
  • The proposed staging image build from brevdev/nemoclaw-image was an experiment only. It was not dispatched and is no longer being pursued or treated as a completion requirement for this PR.

Signed-off-by: Carlos Villela <cvillela@nvidia.com>

@cv cv 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.

Maintainer review complete for commit adc90c0. Retryable unhealthy final verification is correct and security-reviewed; local-provider post-ready guidance and universal final-route guidance are now documented and tested separately. Focused docs test and Fern build pass.

@cv
cv merged commit a31140a into main Jul 15, 2026
57 of 58 checks passed
@cv
cv deleted the fix/onboard-finalize-route-health branch July 15, 2026 18:00
cv pushed a commit that referenced this pull request Jul 16, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Adds the canonical `docs/changelog/2026-07-15.mdx` entry with the exact
`## v0.0.84` heading for the release candidate range from `v0.0.83`
through `710d2b36b9eebcb6bca3c2b2f796a1bdb69c3a31`.
Fills two owner-page gaps for model-aware local inference health and
pre-write OpenClaw candidate validation.

## Changes

- Add the complete shared Fern changelog entry for `v0.0.84`, with
literal CLI names and root-absolute OpenClaw and Hermes routes.
- Document that sandbox status and doctor compare the configured Ollama
or vLLM model with provider inventory without issuing a completion.
- Document that host-side OpenClaw `config set` validates the complete
candidate before replacing live config or reaching gateway restart.
- Reconcile the `v0.0.84` release label with the commit range. PR #6773
is already contained in `v0.0.83` and remains documented there; CI,
test-harness, docs-infrastructure, and `.js` to `.mts` migration-only
changes require no additional user guidance.

### Source summary

- [#6882](#6882) ->
`docs/manage-sandboxes/backup-restore.mdx`,
`docs/changelog/2026-07-15.mdx`: Explain that OpenClaw runtime identity
and pairing state are excluded from snapshots and ignored during
restore.
- [#6873](#6873) ->
`docs/inference/set-up-ollama.mdx`, `docs/changelog/2026-07-15.mdx`:
Record the Ollama requested-model environment fallback and interactive
default.
- [#6835](#6835) ->
`docs/changelog/2026-07-15.mdx`: Include the sandbox name in the
documented rebuild resume-recovery behavior.
- [#6886](#6886) ->
`docs/inference/custom-endpoint-security.mdx`,
`docs/inference/set-up-openai-compatible-endpoint.mdx`,
`docs/changelog/2026-07-15.mdx`: Explain the exact-host trusted-private
endpoint opt-in and retained SSRF boundaries.
- [#6887](#6887) ->
`docs/reference/commands.mdx`, `docs/changelog/2026-07-15.mdx`: Document
Telegram channel health verdicts, summary behavior, and exit status.
- [#6863](#6863) ->
`docs/manage-sandboxes/lifecycle.mdx`, `docs/changelog/2026-07-15.mdx`:
Add the missing model-inventory behavior for local status and doctor
checks.
- [#6902](#6902) ->
`docs/manage-sandboxes/runtime-controls.mdx`,
`docs/changelog/2026-07-15.mdx`: Add the missing pre-write OpenClaw
candidate-validation contract.
- [#6916](#6916) ->
`docs/changelog/2026-07-15.mdx`: Preserve the failed-session
fresh-install recovery correction in the release entry.
- [#6934](#6934) ->
`docs/reference/commands.mdx`, `docs/reference/troubleshooting.mdx`,
`docs/security/credential-storage.mdx`, `docs/changelog/2026-07-15.mdx`:
Summarize completed-prompt checkpointing and validated credential reuse
during OpenClaw resume.
- [#6898](#6898) ->
`docs/inference/switch-models.mdx`,
`docs/inference/switch-providers.mdx`,
`docs/reference/troubleshooting.mdx`, `docs/changelog/2026-07-15.mdx`:
Explain Hermes dashboard convergence after in-place inference changes.
- [#6711](#6711) ->
`docs/manage-sandboxes/run-sandboxes.mdx`,
`docs/manage-sandboxes/uninstall-nemoclaw.mdx`,
`docs/reference/architecture.mdx`, `docs/reference/commands.mdx`,
`docs/changelog/2026-07-15.mdx`: Summarize port-scoped host state and
uninstall preservation.
- [#6767](#6767) ->
`docs/inference/configure-model-limits.mdx`,
`docs/inference/set-up-ollama.mdx`,
`docs/reference/troubleshooting.mdx`, `docs/changelog/2026-07-15.mdx`:
Record the Hermes `64000`-token Ollama floor and unchanged OpenClaw
floor.
- [#6862](#6862) ->
`docs/get-started/quickstart.mdx`,
`docs/inference/verify-inference-route.mdx`,
`docs/changelog/2026-07-15.mdx`: Explain retryable not-ready
finalization for unhealthy inference routes.
- [#6766](#6766) ->
`docs/security/tcb-boundary.mdx`, `docs/changelog/2026-07-15.mdx`:
Document definitive stale transition-lock recovery and fail-closed
ambiguous cases.
- [#6948](#6948) ->
`docs/manage-sandboxes/manage-mcp-servers.mdx`,
`docs/changelog/2026-07-15.mdx`: Include Hermes MCP apply-state race
recovery in the release entry without changing the established user
workflow.
- [#6964](#6964) ->
`docs/reference/troubleshooting.mdx`, `docs/changelog/2026-07-15.mdx`:
Record complete agent-specific fresh-install and resume recovery
commands.
- [#6883](#6883) ->
`docs/get-started/quickstart.mdx`, `docs/inference/set-up-vllm.mdx`,
`docs/reference/platform-support.mdx`, `docs/changelog/2026-07-15.mdx`:
Summarize the DGX Station Nemotron Ultra express path and pinned
managed-vLLM recipe.
- [#6985](#6985) ->
`docs/inference/set-up-vllm.mdx`, `docs/reference/commands.mdx`,
`docs/changelog/2026-07-15.mdx`: Capture the final automated and
interactive storage-warning behavior.

## 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 —
`test/changelog-docs.test.ts` validates the dated-entry structure, exact
version heading, and preserved history.
- [ ] 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:

## 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` (6 passed)
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — not run for this doc-only 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) —
completed with 0 errors; Fern reported the unchanged unauthenticated
redirect-check and light-theme contrast 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 intentionally has 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.84 changelog entry covering setup, endpoint onboarding,
model handling, sandbox readiness, recovery, channel status, and
configuration safeguards.
* Clarified that sandbox health checks validate configured models
against local Ollama and vLLM provider inventories without generating
completions or consuming tokens.
* Documented that invalid runtime configuration changes are rejected
while preserving the existing working configuration.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: inference Inference routing, serving, model selection, or outputs area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow bug-fix PR fixes a bug or regression NV QA Bugs found by the NVIDIA QA Team

Projects

None yet

6 participants