fix(uninstall): delete the scoped sandbox before removing its unit (#8220) - #8259
Conversation
…VIDIA#8220) Signed-off-by: harjoth <harjoth.khara@gmail.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:
📝 WalkthroughWalkthroughGateway-scoped uninstall now deletes OpenShell resources before removing the managed Linux service. Tests cover cleanup ordering, Docker cleanup, service removal, and failure handling. Documentation describes partial cleanup and retry guidance. ChangesGateway-scoped uninstall
Estimated code review effort: 2 (Simple) | ~10 minutes Sequence Diagram(s)sequenceDiagram
participant Uninstall as Uninstall run plan
participant OpenShell
participant Docker
participant Systemd as Managed Linux service
Uninstall->>OpenShell: Delete selected sandbox resources
OpenShell->>Docker: Remove sandbox container
OpenShell-->>Uninstall: Report cleanup result
Uninstall->>Systemd: Remove managed service
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
PR Review Advisor — Blocking findings reportedAdvisor assessment: Blockers require maintainer review Model lanes
1 additional E2E selection from the second opinionAdvisory only. The primary lane did not select these E2E jobs or targets.
Second-opinion terminology and E2E selections are advisory. They do not change the primary assessment or E2E / PR Gate. 3 semantic terminology decisionsTerminology decisions are advisory. They affect the assessment only when a separate finding identifies concrete semantic impact.
E2E guidanceAdvisory only. E2E / PR Gate selects and runs jobs independently. Recommended E2E: None 2 optional E2E recommendations
Blockers
|
…#8220) Signed-off-by: harjoth <harjoth.khara@gmail.com>
…ure (NVIDIA#8220) Signed-off-by: harjoth <harjoth.khara@gmail.com>
|
✨ Thanks for the fix. This resolves the regression where scoped uninstall stranded the sandbox container and exited 1. Related open issues: Related open PRs: Related open issues: |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
|
The current CI failures are classified:
A signed, locally validated CI-only fix is prepared to reduce these limits in
GitHub authorization currently prevents publishing that commit to the contributor branch. The branch owner or a maintainer with working contributor-fork authorization must apply those three mechanical reductions. I will resume CI monitoring once the branch is updated. |
senthilr-nv
left a comment
There was a problem hiding this comment.
The refreshed implementation and focused suite pass on f5f3a33, but one actionable test gap remains from the repository PR Advisor. The new regression covers sandbox-delete failure only. Please add a scoped-uninstall case where openshell sandbox delete succeeds, openshell gateway delete fails, and assert exit 1, the marked Linux unit remains, and no systemctl disable call occurs. That pins the same retry-preservation invariant at the second failure boundary before service removal. Product scope, nine-category security review, exact-head docs review, type-check, repository checks, docs build, and current focused behavior otherwise pass.
…A#8220) The scoped-uninstall regression covered only sandbox-delete failure. Add the second cleanup boundary: sandbox delete succeeds, gateway registration removal fails, and uninstall still returns before it removes the marked Linux unit.
|
Added in Checked it fails for the right reason: dropping the registration-failure return makes only the new test fail, while the existing sandbox-delete test still passes. So the old coverage did not pin this boundary, as you said.
|
|
The prior branch-push blocker is resolved. The contributor branch now includes the requested second cleanup-boundary regression at revision I vetted the current fork changes as limited to the uninstall implementation, focused tests, and matching documentation, then approved the held ordinary workflows through GitHub's normal maintainer approval path. I am monitoring the fresh DCO, documentation, security, and CI results. The requested-change review is addressed in code but still awaits reviewer clearance. A release-tag merge freeze is active, so this PR will not be merged until the freeze is explicitly lifted and all repository gates have passed. |
senthilr-nv
left a comment
There was a problem hiding this comment.
Product scope PASS: this fixes ordering and retry preservation in the existing supported uninstall lifecycle. Exact head fa8c048 has the unchanged reviewed four-file patch; CLI build, 64 focused scoped-uninstall tests, CLI type-check, repository checks, documentation build and variant review, nine-category security review, cross-issue sweep, and automated review report no actionable findings. Approving per explicit maintainer direction; no auto-merge is being enabled.
Superseded by the exact-head maintainer approval after the requested regression was added and validated.
cjagwani
left a comment
There was a problem hiding this comment.
Security review — exact head 829a1125ab9383c1fa7ad8b8fd442e3fb95c0758 against base c176af5f08595ed748b4eeac8988c554e180183e: PASS with no findings.
- Secrets and credentials — PASS. No secret, credential, environment, or sensitive logging behavior changes.
- Input validation and injection resistance — PASS. The existing validated gateway selection and exact OpenShell command construction remain unchanged; no new caller-controlled shell or path interpolation is introduced.
- Authentication and authorization — PASS. Destructive work remains scoped to the selected gateway and existing owned-resource guards. The change does not grant a new caller or component deletion authority.
- Dependencies and supply chain — PASS. No dependency, lockfile, image, download, or external source change.
- Error handling and information exposure — PASS. Failed selected-sandbox or gateway-registration cleanup returns nonzero before marked unit/process removal, preserving inspectable retry state. Diagnostics reveal no secret material.
- Cryptography and data protection — PASS / not applicable. No cryptographic or protected-data behavior changes. The reordered operation reduces orphaned sandbox-container risk.
- Configuration and infrastructure — PASS. Default-port,
--keep-openshell, external-supervision, and managed-unit checks are centralized without broadening their conditions. Full uninstall behavior is unchanged. - Security testing — PASS. The exact changed-behavior suite passes 13/13 for successful cleanup ordering and both sandbox-deletion and gateway-registration failure preservation.
npm run build:cli,npm run check:diff, and diff hygiene pass; fresh GitHub Actions remains authoritative for the complete head. - System security — PASS. OpenShell resources are removed while the selected gateway service is still available, and privileged service removal occurs only after cleanup succeeds. Retry state remains intact on partial failure.
The signed merge was conflict-free and preserves the effective four-file patch byte-for-byte (raw SHA-256 e2a86769135b14957645b9549be1117f7d56f8547fc6a3e414f860a232ea2ba2; stable patch ID afc2c9ec9528aae2845e00aeee08617a46919f37). Base PR #8371 extracts vLLM model acquisition behind its preserved API and has no interaction with uninstall ordering, gateway selection, unit ownership, or cleanup retry state. Product scope is established by accepted bug #8220. Fresh CI, protected E2E, documentation receipt, and independent post-push approval remain mandatory.
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
cjagwani
left a comment
There was a problem hiding this comment.
Verdict
Security review — exact head cfc6ce2cda02b9eb7e0f635e92bd8ace3ff92d7f against base 3b208d79e5d3bda4183704145ee5c28d79876ae1: PASS with no findings. The effective patch is safe from the reviewed security perspective, subject to every repository merge gate.
Findings Table
No findings.
Detailed Analysis
-
Secrets and Credentials — PASS. No secret, credential, environment, or sensitive logging behavior changes.
-
Input Validation and Data Sanitization — PASS. The existing validated gateway selection and exact OpenShell command construction remain unchanged; no new caller-controlled shell or path interpolation is introduced.
-
Authentication and Authorization — PASS. Destructive work remains scoped to the selected gateway and existing owned-resource guards. The change does not grant a new caller or component deletion authority.
-
Dependencies and Third-Party Libraries — PASS. No dependency, lockfile, image, download, or external source change.
-
Error Handling and Logging — PASS. Failed selected-sandbox or gateway-registration cleanup returns nonzero before marked unit/process removal, preserving inspectable retry state. Diagnostics reveal no secret material.
-
Cryptography and Data Protection — PASS / not applicable. No cryptographic or protected-data behavior changes. The reordered operation reduces orphaned sandbox-container risk.
-
Configuration and Security Headers — PASS. Default-port,
--keep-openshell, external-supervision, and managed-unit checks are centralized without broadening their conditions. Full uninstall behavior is unchanged. -
Security Testing — PASS. The exact changed-behavior suite passes 13/13 for successful cleanup ordering and both sandbox-deletion and gateway-registration failure preservation.
npm run build:cli,npm run check:diff, and diff hygiene pass; fresh GitHub Actions remains authoritative for the complete head. -
System Security — PASS. OpenShell resources are removed while the selected gateway service is still available, and privileged service removal occurs only after cleanup succeeds. Retry state remains intact on partial failure.
Files Reviewed
docs/manage-sandboxes/uninstall-nemoclaw.mdxdocs/reference/commands.mdxsrc/lib/actions/uninstall/run-plan-gateway-service.test.tssrc/lib/actions/uninstall/run-plan.ts
Provenance and Required Gates
The signed refresh merge and subsequent signed empty synchronization commit preserve the effective four-file patch byte-for-byte (raw SHA-256 e2a86769135b14957645b9549be1117f7d56f8547fc6a3e414f860a232ea2ba2; stable patch ID afc2c9ec9528aae2845e00aeee08617a46919f37). Base PR #8372 changes the canonical security rubric and PR Review Advisor machinery only; it does not alter any effective PR file or runtime trust boundary. This review independently applies the new rubric.
Fresh CI, protected E2E, documentation receipt, unresolved-review resolution, and independent exact-head approval remain mandatory. This security review waives none of those gates.
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
cjagwani
left a comment
There was a problem hiding this comment.
Verdict
Security review — exact head 6697d74454de88c1b7152ff792908ee565004862 against base c6713c9dd17a9682654713ccb6829b8714f1b307: PASS with no findings. The effective patch is safe from the reviewed security perspective, subject to every repository merge gate.
Findings Table
No findings.
Detailed Analysis
-
Secrets and Credentials — PASS. No secret, credential, environment, or sensitive logging behavior changes.
-
Input Validation and Data Sanitization — PASS. The existing validated gateway selection and exact OpenShell command construction remain unchanged; no new caller-controlled shell or path interpolation is introduced.
-
Authentication and Authorization — PASS. Destructive work remains scoped to the selected gateway and existing owned-resource guards. The change does not grant a new caller or component deletion authority.
-
Dependencies and Third-Party Libraries — PASS. No dependency, lockfile, image, download, or external source change.
-
Error Handling and Logging — PASS. Failed selected-sandbox or gateway-registration cleanup returns nonzero before marked unit/process removal, preserving inspectable retry state. Diagnostics reveal no secret material.
-
Cryptography and Data Protection — PASS / not applicable. No cryptographic or protected-data behavior changes. The reordered operation reduces orphaned sandbox-container risk.
-
Configuration and Security Headers — PASS. Default-port,
--keep-openshell, external-supervision, and managed-unit checks are centralized without broadening their conditions. Full uninstall behavior is unchanged. The retry documentation now explicitly preserves the selected gateway port without changing runtime behavior. -
Security Testing — PASS. The exact changed-behavior suite passes 13/13 for successful cleanup ordering and both sandbox-deletion and gateway-registration failure preservation.
npm run build:cli,npm run check:diff, fresh strict docs validation, and diff hygiene pass; fresh GitHub Actions remains authoritative for the complete head. -
System Security — PASS. OpenShell resources are removed while the selected gateway service is still available, and privileged service removal occurs only after cleanup succeeds. Retry state remains intact on partial failure.
Files Reviewed
docs/manage-sandboxes/uninstall-nemoclaw.mdxdocs/reference/commands.mdxsrc/lib/actions/uninstall/run-plan-gateway-service.test.tssrc/lib/actions/uninstall/run-plan.ts
Provenance and Required Gates
The signed base refresh and attribution-preserving merge include the signed retry-port clarification authored by Carlos Villela. The resulting effective four-file patch (raw SHA-256 f573725c95cdb589edaedce5267df4d6bb7f5b86265510601f9722f1ea92f178; stable patch ID bdf744aee5b3f69d973e7f308608f10fe801f555). Base PR #8383 adds only the v0.0.103 release-note page and does not alter any effective PR file or reviewed runtime trust boundary. Base PR #8372 changes the canonical security rubric and PR Review Advisor machinery only; it does not alter any effective PR file or runtime trust boundary. This review independently applies the new rubric.
Fresh CI, protected E2E, documentation receipt, unresolved-review resolution, and independent exact-head approval remain mandatory. This security review waives none of those gates.
|
Current advisor retry disposition: both advisor jobs stopped after the primary partial review preserved 0 blockers, 0 warnings, and 0 suggestions. Its three terminology decisions confirmed the established wording and did not identify a semantic problem. The single bounded retry for this branch revision is consumed; no further retry will be requested. All other current checks, approval, documentation, DCO, verification, and security review are complete. The merge freeze remains active. |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cjagwani
left a comment
There was a problem hiding this comment.
Verdict
Security revalidation — exact head 9830a2b118355afdffc054b962c428581b540e7a against current base 1608281462923ff8282151c7be1a109ee262b4e9: PASS with no findings, subject to every repository merge gate.
Findings Table
No findings.
Detailed Analysis
-
Secrets and Credentials — PASS. The effective PR patch is unchanged from the prior exact review. The base refresh adds no overlapping secret, credential, environment, or sensitive-logging path.
-
Input Validation and Data Sanitization — PASS. The reviewed validation and command/path construction are unchanged. The new base delta does not alter an effective PR file.
-
Authentication and Authorization — PASS. No identity, ownership, permission, or authorization boundary changed in the PR patch or its integration with the refreshed base.
-
Dependencies and Third-Party Libraries — PASS. The PR's reviewed dependency and artifact identities are unchanged. Base PR #8387 adds verified llama.cpp GGUF acquisition in eight disjoint files and does not change this PR's dependency surface.
-
Error Handling and Logging — PASS. The reviewed fail-closed behavior and diagnostics are unchanged; the base refresh introduces no overlapping error or logging path.
-
Cryptography and Data Protection — PASS. The PR's reviewed cryptographic and protected-data behavior is unchanged. No new cross-patch data flow exists.
-
Configuration and Security Headers — PASS. The effective PR patch preserves its reviewed configuration, network, privilege, capability, port, and header boundaries.
-
Security Testing — PASS. Raw patch SHA-256 remains
f573725c95cdb589edaedce5267df4d6bb7f5b86265510601f9722f1ea92f178and stable patch ID remainsbdf744aee5b3f69d973e7f308608f10fe801f555. Documentation writer revalidation passed for the identical exact patch against the current base; the existing PR documentation remains accurate. Prior targeted test evidence remains applicable; fresh exact-head GitHub Actions is authoritative. -
System Security — PASS. The signed refresh is conflict-free, preserves the reviewed patch byte-for-byte, and introduces no new runtime trust-boundary interaction with the disjoint base delta.
Provenance and Required Gates
This exact-head revalidation supplements the full prior nine-category review at #8259 (review). It applies the current rubric from .agents tree 7320c9e331ddbcd9ff83e0fce9387a004e3bd1aa.
Fresh required CI, protected E2E, the exact documentation receipt, unresolved-review resolution, GitHub commit verification, and an independent exact-head approval remain mandatory. This review waives none of those gates.
cjagwani
left a comment
There was a problem hiding this comment.
Verdict
Security review — exact head 3431a02b041ba8bcd7fabd38374af3b9438ae98b against current base b148bc13ee53b7a1f612d07e42275ec732e71877: PASS with no findings, subject to every repository merge gate.
Findings Table
No findings.
Detailed Analysis
-
Secrets and Credentials — PASS. The effective PR patch is unchanged and adds no secret, credential source, environment exposure, or sensitive logging. The refreshed base introduces no overlapping credential path.
-
Input Validation and Data Sanitization — PASS. Reviewed validation, command construction, and path handling remain unchanged. The portable-profile base delta has no exact file overlap with this PR.
-
Authentication and Authorization — PASS. No identity, ownership, permission, or authorization boundary is widened by the PR patch or its integration with the refreshed base.
-
Dependencies and Third-Party Libraries — PASS. The PR's reviewed dependency and artifact identities are unchanged. Base PRs #8333 and #8376 add disjoint E2E artifact restoration and portable experimental onboarding behavior.
-
Error Handling and Logging — PASS. Reviewed fail-closed behavior and diagnostics remain unchanged; the signed integrations add no overlapping error or logging path.
-
Cryptography and Data Protection — PASS. Reviewed cryptographic and protected-data behavior remains unchanged, with no new cross-patch data flow.
-
Configuration and Security Headers — PASS. The effective PR patch preserves its reviewed configuration, network, privilege, capability, port, and header boundaries. The hidden portable profile does not bypass this PR's authority checks.
-
Security Testing — PASS. Raw patch SHA-256 remains
f573725c95cdb589edaedce5267df4d6bb7f5b86265510601f9722f1ea92f178and stable patch ID remainsbdf744aee5b3f69d973e7f308608f10fe801f555. The prior exact uninstall ordering and partial-failure evidence remains applicable. Exact-head documentation writer revalidation passed; fresh GitHub Actions is authoritative. -
System Security — PASS. Both signed refreshes are conflict-free, preserve the effective patch byte-for-byte, and introduce no new runtime trust-boundary interaction. For #7853 specifically, the portable profile supplies onboarding defaults but neither stages messaging credentials nor bypasses registry-driven credential-drift validation.
Provenance and Required Gates
The exact head preserves contributor history through signed merge commits and applies the current rubric from .agents tree 7320c9e331ddbcd9ff83e0fce9387a004e3bd1aa. This supplements the full prior nine-category review at #8259 (review).
Fresh required CI, protected E2E, the exact documentation receipt, unresolved-review resolution, GitHub commit verification, and an independent exact-head approval remain mandatory. This review waives none of those gates.
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
|
Maintainer revalidation is complete for revision
No code, documentation, compliance, security, CI, or review follow-up is required for this revision. Merge remains deferred under the active release-tag freeze; no merge or auto-merge action was taken. |
|
Post-merge follow-up: #8416 addresses the advisor finding identified after this PR merged. If scoped Linux unit disablement fails, uninstall now returns immediately so the managed service and gateway process remain available for inspection and retry. The 43 focused tests and |
<!-- markdownlint-disable MD041 --> ## Summary Adds the canonical dated changelog entry required before cutting `v0.0.104`. The entry reconciles user-facing changes merged from `v0.0.103` through `8d2b86aaf44968b4f7bc3b714222a73bd28e0403` while excluding hidden and experimental product surfaces. ## Changes - Added `docs/changelog/2026-08-06.mdx` with the exact `## v0.0.104` heading and release themes for local inference, private endpoints, network policy, state authority, lifecycle recovery, uninstall, Hermes, MCP diagnostics, credential safety, and installation guidance. - Source summary links: - [#8399](#8399) -> `docs/changelog/2026-08-06.mdx`: fixed DGX Spark local serving profiles. - [#8418](#8418) -> `docs/changelog/2026-08-06.mdx`: durable llama.cpp lifecycle management. - [#8422](#8422) -> `docs/changelog/2026-08-06.mdx`: recoverable llama.cpp receipt publication. - [#8402](#8402) -> `docs/changelog/2026-08-06.mdx`: remediable DGX Spark storage admission. - [#8391](#8391) -> `docs/changelog/2026-08-06.mdx`: host-local serving recipe contracts. - [#8401](#8401) -> `docs/changelog/2026-08-06.mdx`: serving profile lifecycle provenance. - [#8322](#8322) -> `docs/changelog/2026-08-06.mdx`: guarded llama.cpp route compatibility. - [#8272](#8272) -> `docs/changelog/2026-08-06.mdx`: explicitly trusted private endpoints with stable policy pins and CA trust. - [#8431](#8431) -> `docs/changelog/2026-08-06.mdx`: Personal onboarding policy tier and its trust boundary. - [#8143](#8143) -> `docs/changelog/2026-08-06.mdx`: manifest-derived state authority. - [#7859](#7859) -> `docs/changelog/2026-08-06.mdx`: side-effect-free lifecycle lock timeouts. - [#8262](#8262) -> `docs/changelog/2026-08-06.mdx`: managed gateway lease waiting. - [#8339](#8339) -> `docs/changelog/2026-08-06.mdx`: continued journaled rebuild recreation. - [#8373](#8373) -> `docs/changelog/2026-08-06.mdx`: restore readiness after compatibility decisions. - [#8443](#8443) -> `docs/changelog/2026-08-06.mdx`: fail-closed malformed registry handling. - [#8419](#8419) -> `docs/changelog/2026-08-06.mdx`: bounded recovery for a gateway that never served. - [#8486](#8486) -> `docs/changelog/2026-08-06.mdx`: target-scoped registry recovery. - [#8259](#8259) -> `docs/changelog/2026-08-06.mdx`: scoped uninstall ordering and retry safety. - [#8457](#8457) -> `docs/changelog/2026-08-06.mdx`: desktop metadata exclusion during uninstall. - [#8026](#8026) -> `docs/changelog/2026-08-06.mdx`: typed Hermes configuration policy. - [#8242](#8242) -> `docs/changelog/2026-08-06.mdx`: Hermes WhatsApp session diagnostics. - [#8344](#8344) -> `docs/changelog/2026-08-06.mdx`: patched Hermes image and dependency checks. - [#8491](#8491) -> `docs/changelog/2026-08-06.mdx`: bounded MCP discovery timeout. - [#8490](#8490) -> `docs/changelog/2026-08-06.mdx`: MCP shadow diagnostics. - [#7619](#7619) -> `docs/changelog/2026-08-06.mdx`: web-search credential isolation. - [#8476](#8476) -> `docs/changelog/2026-08-06.mdx`: stable preflight advisory identifiers. - [#8452](#8452) -> `docs/changelog/2026-08-06.mdx`: user-local CLI resolution. - [#8481](#8481) -> `docs/changelog/2026-08-06.mdx`: remote network-policy terminal guidance. - Product-scope exclusions: [#8429](#8429) remains experimental; [#8261](#8261) remains feature-gated; and portable-profile changes [#8408](#8408), [#8415](#8415), [#8446](#8446), [#8458](#8458), [#8462](#8462), and [#8506](#8506) are not promoted as supported product surfaces. ## 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 and validates dated changelog structure and published links. - [ ] 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-08-06.mdx`; release-range scope, writing rules, documentation style, skip terms, exact names, threat-boundary wording, and published routes reviewed; changelog tests and docs build passed. - Agent: Codex Desktop <!-- docs-review-head-sha: 02b51ae --> <!-- docs-review-agents-blob-sha: c69aad4 --> ## DGX Station Hardware Evidence - [ ] Tested on DGX Station - Tested commit: Not applicable; no DGX Station host preparation script changed. - Station profile/scenario: Not applicable. - Result: Not applicable. - Supporting evidence: Not applicable. ## 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 validate:pr` passed after refreshing `origin/main` when hooks were skipped or unavailable - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — command/result or justification: `npx vitest run test/changelog-docs.test.ts` passed 6/6. - [ ] 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 a single changelog entry. - [x] Quality Gates section completed with required justifications or waivers - [x] No secrets, API keys, or credentials committed - [x] `npm run docs` builds without warnings (doc changes only) - [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 new dated changelog file includes the required parser-safe SPDX header and intentionally has no frontmatter, matching the changelog contract and existing entries. --- Signed-off-by: Charan Jagwani <cjagwani@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added release notes for v0.0.104. * Documented fixes for local model runtimes, private endpoints, network policies, state recovery, uninstall behavior, safety updates, MCP diagnostics, credential isolation, and installation guidance. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Summary
A gateway-scoped
nemoclaw uninstallremoved the selected gateway's marked Linux unit before deleting its sandbox through that gateway.If sandbox deletion failed, later cleanup stopped and the sandbox container remained.
This change deletes the selected gateway's OpenShell resources first.
It removes the marked Linux unit only after OpenShell cleanup succeeds.
Full uninstall behavior is unchanged.
Related Issue
Fixes #8220
Changes
Stopping servicestoOpenShell resources, after selected-sandbox cleanup succeeds.--keep-openshell, and external-supervision checks shared by full and gateway-scoped cleanup.Type of Change
Quality Gates
c8544155016243c47ed24fc289f54e94da90daddagainst base SHAdb31c286129e878c3356eed49f76ab259561e47e.c8544155016243c47ed24fc289f54e94da90dadd.Documentation Writer Review
docs-updatedc8544155016243c47ed24fc289f54e94da90daddagainst base SHAdb31c286129e878c3356eed49f76ab259561e47e. The two changed documentation pages accurately describe cleanup order, failure preservation, possible partial completion, gateway inspection, and retry with the failed gateway port for the shared OpenClaw, Hermes, and LangChain Deep Agents Code uninstall path. The implementation and regression tests match that contract. The normal commit hook passed. Local tests were not run; GitHub Actions is authoritative after the PR commit is pushed.DGX Station Hardware Evidence
scripts/prepare-dgx-station-host.shdoes not change.Verification
Signed-off-by:line and every commit appears asVerifiedin GitHub — all 25 commits appear asVerified.pre-commit,commit-msg, andpre-pushhooks passed, ornpm run validate:prpassed after refreshingorigin/mainwhen hooks were skipped or unavailable.c8544155016243c47ed24fc289f54e94da90dadd.c8544155016243c47ed24fc289f54e94da90dadd.npm run docsbuilds without warnings (doc changes only) — the authoritative Fern Preview check is running.Security Review
Verdict
PASS with no findings.
Reviewed PR commit
c8544155016243c47ed24fc289f54e94da90daddagainst base SHAdb31c286129e878c3356eed49f76ab259561e47e.The change corrects sequencing in the existing supported uninstall lifecycle.
It does not create a product surface or require a product, business, or architecture decision.
This security verdict does not waive repository merge gates.
Findings Table
No findings.
Detailed Analysis
--keep-openshell, and lifecycle authority.Files Reviewed
docs/manage-sandboxes/uninstall-nemoclaw.mdxdocs/reference/commands.mdxsrc/lib/actions/uninstall/run-plan-gateway-service.test.tssrc/lib/actions/uninstall/run-plan.tsGitHub Actions
GitHub Actions is authoritative for PR commit
c8544155016243c47ed24fc289f54e94da90daddagainst base SHAdb31c286129e878c3356eed49f76ab259561e47e.The new checks are running.
No required check has a maintainer waiver.
Signed-off-by: harjoth harjoth.khara@gmail.com
Summary by CodeRabbit
Bug Fixes
Documentation