Skip to content

fix(uninstall): add --destroy-user-data flag to purge preserved data - #5784

Merged
jyaunches merged 9 commits into
mainfrom
fix/uninstall-yes-purge-flag
Jun 30, 2026
Merged

fix(uninstall): add --destroy-user-data flag to purge preserved data#5784
jyaunches merged 9 commits into
mainfrom
fix/uninstall-yes-purge-flag

Conversation

@laitingsheng

@laitingsheng laitingsheng commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Summary

nemoclaw uninstall --yes is non-destructive by design — it preserves ~/.nemoclaw/rebuild-backups/, ~/.nemoclaw/backups/, and ~/.nemoclaw/sandboxes.json, leaving the state directory non-empty. The only escape hatch today is the NEMOCLAW_UNINSTALL_DESTROY_USER_DATA=1 env var, which is not discoverable from --help or the usage banner. Add a first-class --destroy-user-data CLI flag that mirrors the env-var semantics so users who want a clean uninstall have a visible flag to reach for, without changing the safe --yes default.

Related Issue

Fixes #5780

Changes

  • src/commands/internal/uninstall/run-plan.ts: declare a destroy-user-data boolean flag and forward it into UninstallRunOptions.destroyUserData.
  • src/lib/actions/uninstall/run-plan.ts: extend UninstallRunOptions with destroyUserData?: boolean; resolvePreserveSet now checks the flag before the env var and logs --destroy-user-data set; purging user data under ~/.nemoclaw/. when it triggers; the non-interactive preserve notice now mentions both the flag and the env var. Note: the flag is opt-in precisely to avoid changing the existing safe --yes default — but the flag itself is destructive, so a user (or script) invoking it without intent will lose the preserved user data.
  • uninstall.sh: extend the usage banner with the new flag.
  • src/lib/actions/uninstall/run-plan.test.ts: four new tests — non-TTY plus --yes plus --destroy-user-data purges, TTY plus flag purges without prompting, flag takes precedence over NEMOCLAW_UNINSTALL_DESTROY_USER_DATA=1, and the preserve hint mentions both the flag and the env var.
  • docs/manage-sandboxes/lifecycle.mdx, docs/reference/commands.mdx, docs/reference/commands-nemohermes.mdx: add the new flag to the uninstall flags table, the usage line, and the user-data decision matrix.

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)

Verification

  • PR description includes the DCO sign-off declaration and every commit appears as Verified in GitHub
  • Git hooks passed during commit and push, or npx prek run --from-ref main --to-ref HEAD passes
  • Targeted tests pass for changed behavior
  • Full npm test passes (broad runtime changes only)
  • Tests added or updated for new or changed behavior
  • No secrets, API keys, or credentials committed
  • Docs updated for user-facing behavior changes
  • 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)

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

Summary by CodeRabbit

  • New Features

    • Added a --destroy-user-data option to uninstall flows, including the CLI help and reference usage.
    • Updated uninstall decision behavior to support full removal of preserved ~/.nemoclaw/ user data.
  • Bug Fixes

    • Clarified that --yes only confirms; preserved ~/.nemoclaw/ data remains unless --destroy-user-data (or the documented env override) is provided.
    • Improved prompts and messaging for interactive vs non-interactive runs, including secondary confirmation behavior.
  • Documentation

    • Expanded uninstall lifecycle and command reference docs with the new flag and decision matrix.
  • Tests

    • Added/updated coverage for preservation vs full purge scenarios.

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

coderabbitai Bot commented Jun 25, 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

Added --destroy-user-data across uninstall flags, help text, docs, runtime selection logic, and tests. The uninstall path now supports explicit user-data purging, updated confirmation text, and revised interactive and non-interactive preservation behavior.

Changes

Uninstall destroy-user-data flag

Layer / File(s) Summary
CLI surface and docs
src/commands/internal/uninstall/run-plan.ts, src/lib/actions/root-help.ts, docs/reference/commands.mdx, docs/reference/commands-nemohermes.mdx, docs/manage-sandboxes/lifecycle.mdx, uninstall.sh
The uninstall command usage, flags, help text, shell wrapper usage note, and uninstall docs add --destroy-user-data and update the preserved user-data descriptions.
Preserve-set purge path
src/lib/actions/uninstall/run-plan.ts
destroyUserData is added to uninstall options, the confirmation prompt reflects the user-data disposition, and preserve-set resolution prioritizes explicit destroy and the env override before the default preserve list.
Uninstall flag tests
src/lib/actions/uninstall/run-plan.test.ts, test/uninstall.test.ts
The uninstall tests add coverage for shared preservation helpers, destroy-user-data precedence, prompt wording, interactive behavior, and wrapper-level filesystem effects.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Suggested reviewers

  • cv
  • sandl99

Poem

🐰 I hopped through ~/.nemoclaw/ with a bright new plan,
--destroy-user-data cleaned up just as it ran.
The prompts stayed clear, the footprints light and neat,
A tidy little uninstall on my rabbit feet.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 10.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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately describes the main change: adding a destroy-user-data flag to uninstall.
Linked Issues check ✅ Passed The PR adds the requested first-class uninstall purge option and updates messaging, docs, and tests to support it.
Out of Scope Changes check ✅ Passed The docs, tests, and helper refactors directly support the uninstall flag and are not unrelated scope.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/uninstall-yes-purge-flag

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

@github-code-quality

github-code-quality Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in the fix/uninstall-yes-pu... branch is 96%. Coverage data for the main branch is not yet available.

Show a code coverage summary of the most covered files.
File main fix/uninstall-yes-pu... 313efff +/-
nemoclaw/src/se...cret-scanner.ts 100%
nemoclaw/src/commands/slash.ts 100%
nemoclaw/src/li...bprocess-env.ts 100%
nemoclaw/src/bl...eprint/state.ts 98%
nemoclaw/src/onboard/config.ts 98%
nemoclaw/src/bl...int/snapshot.ts 97%
nemoclaw/src/bl...print/runner.ts 95%
nemoclaw/src/co...ration-state.ts 94%
nemoclaw/src/bl...ate-networks.ts 94%
nemoclaw/src/index.ts 94%

TypeScript / code-coverage/cli

The overall coverage in the fix/uninstall-yes-pu... branch is 67%. Coverage data for the main branch is not yet available.

Show a code coverage summary of the most covered files.
File main fix/uninstall-yes-pu... 313efff +/-
src/lib/actions...all/run-plan.ts 80%
src/lib/state/o...oard-session.ts 79%
src/lib/actions...dbox/rebuild.ts 75%
src/lib/state/sandbox.ts 72%
src/lib/onboard/preflight.ts 69%
src/lib/actions...licy-channel.ts 60%
src/lib/onboard...er-gpu-patch.ts 59%
src/lib/policy/index.ts 52%
src/lib/shields/index.ts 51%
src/lib/onboard.ts 20%

Updated June 30, 2026 16:54 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.

@laitingsheng laitingsheng added area: cli Command line interface, flags, terminal UX, or output bug-fix PR fixes a bug or regression labels Jun 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: state-backup-restore, snapshot-commands
Optional E2E: full-e2e

Dispatch hint: state-backup-restore,snapshot-commands

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • state-backup-restore (high): Closest existing live lifecycle coverage for the preserved ~/.nemoclaw/backups and sandboxes.json contracts changed by uninstall. It exercises real onboard, workspace backup, destroy/recreate, restore, and registry/session preservation with Docker/OpenShell.
  • snapshot-commands (high): Closest existing live coverage for ~/.nemoclaw/rebuild-backups, which this PR now exposes in the destructive uninstall flag and preservation contract. It verifies real snapshot command lifecycle behavior and host-side snapshot artifacts.

Optional E2E

  • full-e2e (high): Useful broader smoke for install → onboard → sandbox operations after changing lifecycle-adjacent CLI/help surfaces, but it does not directly validate uninstall data-destruction semantics.

New E2E recommendations

  • uninstall lifecycle and user-data preservation (high): No existing live E2E appears to invoke the real public uninstall path and assert that --yes preserves rebuild-backups/, backups/, and sandboxes.json while --destroy-user-data purges them. Unit and wrapper tests cover flag parsing and fake-tool behavior, but not the real installed CLI/uninstall.sh path against a live onboarded sandbox and OpenShell gateway.
    • Suggested test: Add a live uninstall-preservation E2E that installs/onboards a sandbox, seeds backup and snapshot state, runs uninstall.sh --yes to prove preserved entries survive and resources are removed, then repeats with --yes --destroy-user-data to prove the explicit destructive opt-in purges preserved state.

Dispatch hint

  • Workflow: E2E
  • jobs input: state-backup-restore,snapshot-commands

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Recommendation

Required Vitest E2E scenarios: None
Optional Vitest E2E scenarios: None

Workflow run

Full Vitest E2E advisor summary

Vitest E2E Scenario Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required Vitest E2E scenarios

  • None. No Vitest E2E scenario dispatch is applicable. The PR changes uninstall/root-help behavior, docs, and non-scenario unit/integration tests; the current Vitest scenario workflow has no registry scenario or wired free-standing live job that exercises uninstall.sh, internal uninstall run-plan, or root help output.

Optional Vitest E2E scenarios

  • None.

Relevant changed files

  • None.

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings

Merge posture: No blocking advisor findings
Primary next action: No advisor follow-up required beyond maintainer review.
Open items: 0 required · 0 warnings · 0 suggestions · 0 test follow-ups
Since last review: 0 prior items resolved · 0 still apply · 0 new items found

Workflow run details

This is an automated, non-binding review; it still expects maintainers and agents to respond to each required or warning item. Treat suggestions as current-PR improvements when they touch changed code; defer only with maintainer rationale or a linked follow-up. A human maintainer must make the final merge decision.

@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

🤖 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/manage-sandboxes/lifecycle.mdx`:
- Around line 253-258: Add `--gateway <name>` to the uninstall quick-reference
and the hosted-script guidance in lifecycle.mdx so the documented uninstall
surface matches the actual command. Update the relevant uninstall section
entries alongside the existing `--yes`, `--keep-openshell`, `--delete-models`,
and `--destroy-user-data` flags, and make sure the `gateway` option is
explicitly mentioned wherever the uninstall behavior is summarized so users can
remove a non-default gateway correctly.

In `@src/lib/actions/uninstall/run-plan.test.ts`:
- Around line 1002-1004: The uninstall run-plan test is checking the wrong log
text and can pass even if the non-interactive preserve branch runs; update the
assertion in run-plan.test to target the actual preserve notice emitted by
resolvePreserveSet(), specifically verifying that no log line starts with
“Preserving ” rather than looking for “preserved:”. Keep the existing stateDir
and destroy-user-data expectations, and adjust the log assertion to match the
preserve path used by resolvePreserveSet.
🪄 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: 3077d88a-d34d-4a72-9dd4-34aafd42d503

📥 Commits

Reviewing files that changed from the base of the PR and between e3b8325 and a21cf26.

📒 Files selected for processing (7)
  • docs/manage-sandboxes/lifecycle.mdx
  • docs/reference/commands-nemohermes.mdx
  • docs/reference/commands.mdx
  • src/commands/internal/uninstall/run-plan.ts
  • src/lib/actions/uninstall/run-plan.test.ts
  • src/lib/actions/uninstall/run-plan.ts
  • uninstall.sh

Comment thread docs/manage-sandboxes/lifecycle.mdx
Comment thread src/lib/actions/uninstall/run-plan.test.ts Outdated
@wscurran wscurran added the NV QA Bugs found by the NVIDIA QA Team label Jun 26, 2026
…o preserve

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

@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

🤖 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/actions/root-help.ts`:
- Around line 76-86: The help text in root-help’s banner is describing --yes as
removing preserved ~/.nemoclaw/ user data, which no longer matches the intended
safe default. Update the help strings built in the help-listing logic so --yes
is presented as non-destructive and the explicit destructive behavior is
attributed to --destroy-user-data, keeping --keep-user-data as the preservation
option. Make sure the descriptions around the root-help output stay consistent
with the CLI flags shown in this section.

In `@src/lib/actions/uninstall/run-plan.ts`:
- Around line 821-824: The `runPlan` flow in `run-plan.ts` is treating
`options.assumeYes` as permission to purge preserved `~/.nemoclaw/` data, which
is too destructive by default. Update the `assumeYes` branch so `--yes` only
confirms the uninstall plan and does not delete user data unless
`--destroy-user-data` (or its env equivalent) is explicitly enabled, and keep
the destructive path gated behind the existing destroy-user-data checks.
🪄 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: 36e72db2-0942-4028-b110-e4331238fdaf

📥 Commits

Reviewing files that changed from the base of the PR and between a21cf26 and 67a7592.

📒 Files selected for processing (9)
  • docs/manage-sandboxes/lifecycle.mdx
  • docs/reference/commands-nemohermes.mdx
  • docs/reference/commands.mdx
  • src/commands/internal/uninstall/run-plan.ts
  • src/lib/actions/root-help.ts
  • src/lib/actions/uninstall/run-plan.test.ts
  • src/lib/actions/uninstall/run-plan.ts
  • test/uninstall.test.ts
  • uninstall.sh
💤 Files with no reviewable changes (2)
  • uninstall.sh
  • test/uninstall.test.ts
✅ Files skipped from review due to trivial changes (1)
  • docs/reference/commands.mdx
🚧 Files skipped from review as they are similar to previous changes (4)
  • docs/manage-sandboxes/lifecycle.mdx
  • src/commands/internal/uninstall/run-plan.ts
  • docs/reference/commands-nemohermes.mdx
  • src/lib/actions/uninstall/run-plan.test.ts

Comment thread src/lib/actions/root-help.ts Outdated
Comment thread src/lib/actions/uninstall/run-plan.ts Outdated

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

LGTM once coderabbit/advisor issues are addressed

@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

🤖 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 `@test/uninstall.test.ts`:
- Around line 35-54: The runUninstall() helper is inheriting the full parent
environment, so uninstall control flags like
NEMOCLAW_UNINSTALL_DESTROY_USER_DATA can leak into tests and make the
preserve-by-default behavior flaky. Update runUninstall() to build the child
process env from a sanitized base instead of spreading process.env, then
explicitly add only the needed values (HOME, PATH, NEMOCLAW_NODE, TMPDIR) and
finally overlay extraEnv so test-specific overrides still work.
🪄 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: 3442b7eb-1748-4c55-87e0-097ecba0789c

📥 Commits

Reviewing files that changed from the base of the PR and between 67a7592 and 1d3f666.

📒 Files selected for processing (9)
  • docs/manage-sandboxes/lifecycle.mdx
  • docs/reference/commands-nemohermes.mdx
  • docs/reference/commands.mdx
  • src/commands/internal/uninstall/run-plan.ts
  • src/lib/actions/root-help.ts
  • src/lib/actions/uninstall/run-plan.test.ts
  • src/lib/actions/uninstall/run-plan.ts
  • test/uninstall.test.ts
  • uninstall.sh
✅ Files skipped from review due to trivial changes (3)
  • uninstall.sh
  • docs/reference/commands-nemohermes.mdx
  • docs/manage-sandboxes/lifecycle.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/reference/commands.mdx

Comment thread test/uninstall.test.ts
@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ⚠️ No requested jobs ran

Run: 28220260136
Target ref: 1d3f66682a73309afc5834ef4d81726ffc49220f
Workflow ref: main
Requested jobs: gpu-e2e
Summary: 0 passed, 0 failed, 0 cancelled, 1 skipped

Job Result
gpu-e2e ⏭️ skipped

…-data refs

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

@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

🤖 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/reference/commands.mdx`:
- Line 1986: The documentation sentence in the `--yes` description violates the
style guide by using a colon to join two clauses and by packing multiple
sentences onto one line. Rewrite the affected text in `commands.mdx` so `--yes`
is described with separate single-sentence lines, and make sure the colon only
introduces a list or is removed in favor of plain sentence structure.
🪄 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: 8eccda30-a98e-45d2-a4c5-8477bc21a703

📥 Commits

Reviewing files that changed from the base of the PR and between 1d3f666 and edaabaf.

📒 Files selected for processing (4)
  • docs/manage-sandboxes/lifecycle.mdx
  • docs/reference/commands-nemohermes.mdx
  • docs/reference/commands.mdx
  • test/uninstall.test.ts
🚧 Files skipped from review as they are similar to previous changes (3)
  • docs/reference/commands-nemohermes.mdx
  • docs/manage-sandboxes/lifecycle.mdx
  • test/uninstall.test.ts

Comment thread docs/reference/commands.mdx Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ⚠️ No requested jobs ran

Run: 28220780875
Target ref: edaabafa83a34cd85946ccefad2fa54d4f89f45d
Workflow ref: main
Requested jobs: gpu-e2e
Summary: 0 passed, 0 failed, 0 cancelled, 1 skipped

Job Result
gpu-e2e ⏭️ skipped

…st env scrub

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
…st if-statement

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

Copy link
Copy Markdown
Contributor

Selective E2E Results — ⚠️ No requested jobs ran

Run: 28221804344
Target ref: 89d2912c1ec7752dfcb9a381633268eaa98664e0
Workflow ref: main
Requested jobs: gpu-e2e
Summary: 0 passed, 0 failed, 0 cancelled, 1 skipped

Job Result
gpu-e2e ⏭️ skipped

…ge-flag

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

# Conflicts:
#	docs/manage-sandboxes/lifecycle.mdx
#	docs/reference/commands-nemohermes.mdx
#	docs/reference/commands.mdx
#	test/uninstall.test.ts
@github-actions

github-actions Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor (Nemotron Ultra) — No blocking findings

Merge posture: No blocking advisor findings
Primary next action: Resolve or justify PRA-1: Test file monolith growth — 1350 lines after 98-line addition.
Open items: 0 required · 1 warning · 3 suggestions · 0 test follow-ups
Since last review: 0 prior items resolved · 0 still apply · 0 new items found

Action checklist

  • PRA-1 Resolve or justify: Test file monolith growth — 1350 lines after 98-line addition in src/lib/actions/uninstall/run-plan.test.ts:1
  • PRA-2 In-scope improvement: Decision matrix duplicated across 3 documentation files in docs/manage-sandboxes/lifecycle.mdx:210
  • PRA-3 In-scope improvement: Env var strict '1' check vs other NEMOCLAW_* flags accepting true/yes in src/lib/actions/uninstall/run-plan.ts:545
  • PRA-4 In-scope improvement: Subtle return of allowlist when no preservable entries exist on disk in src/lib/actions/uninstall/run-plan.ts:550

Findings index

ID Severity Category Location Required action
PRA-1 Resolve/justify architecture src/lib/actions/uninstall/run-plan.test.ts:1 Extract preservation tests into run-plan-preservation.test.ts and process-cleanup tests into run-plan-process-cleanup.test.ts in a follow-up PR. Not a blocker for this merge.
PRA-2 Improvement docs docs/manage-sandboxes/lifecycle.mdx:210 Evaluate single-source-of-truth pattern (shared include, generated table, or centralized reference) in a follow-up docs architecture PR. Not a blocker.
PRA-3 Improvement correctness src/lib/actions/uninstall/run-plan.ts:545 If intentional, add comment clarifying why strict '1' check. If not, align with other flags (accept '1'/'true'/'yes'). Current behavior is tested and documented.
PRA-4 Improvement correctness src/lib/actions/uninstall/run-plan.ts:550 Add inline comment: 'Return allowlist so removePathExcept preserves nothing but future snapshots still work.'
Review findings by urgency: 0 required fixes, 1 item to resolve/justify, 3 in-scope improvements

⚠️ Resolve or justify before merge

Investigate these in the current review; either fix them, explain why they are not applicable, or document the accepted risk.

PRA-1 Resolve/justify — Test file monolith growth — 1350 lines after 98-line addition

  • Location: src/lib/actions/uninstall/run-plan.test.ts:1
  • Category: architecture
  • Problem: The test file grew by 98 lines to ~1350 lines. While all new behavior is thoroughly tested, the file is becoming a monolith covering core logic, preservation, process cleanup, and integration scenarios.
  • Impact: Harder to navigate, slower test runs, risk of test interdependencies. Future changes may compound the problem.
  • Recommended action: Extract preservation tests into run-plan-preservation.test.ts and process-cleanup tests into run-plan-process-cleanup.test.ts in a follow-up PR. Not a blocker for this merge.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: wc -l src/lib/actions/uninstall/run-plan.test.ts
  • Missing regression test: Refactoring must preserve all 40+ existing test cases and the 4 new destroyUserData tests.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: wc -l src/lib/actions/uninstall/run-plan.test.ts.
  • Evidence: File grew from 1252 to 1350 lines (drift context). Contains tests for: plan building, shim classification, non-destructive run, OpenShell binaries, Hermes branding, interactive confirmation, abort on decline, stdin handling, process.stdin avoidance, Ollama auth proxy (5 tests), model router (5 tests), SIGKILL escalation, lsof missing, gateway destroy wording, user-data preservation (11 tests), swap cleanup, host openshell-gateway.

💡 In-scope improvements

These are lower-risk, not throwaway. Prefer fixing them in this PR when they are local to changed code; defer only with rationale or a linked follow-up.

PRA-2 Improvement — Decision matrix duplicated across 3 documentation files

  • Location: docs/manage-sandboxes/lifecycle.mdx:210
  • Category: docs
  • Problem: The uninstall decision matrix (interactive/non-interactive behavior, flag/env var precedence) is duplicated in lifecycle.mdx, commands.mdx, and commands-nemohermes.mdx. Maintenance burden if behavior changes.
  • Impact: Risk of documentation drift if one copy is updated and others are not.
  • Suggested action: Evaluate single-source-of-truth pattern (shared include, generated table, or centralized reference) in a follow-up docs architecture PR. Not a blocker.
  • Expected follow-up: Prefer a current-PR fix when local to changed code; defer only with rationale or linked follow-up.
  • Verification: diff the three decision matrix tables in lifecycle.mdx, commands.mdx, commands-nemohermes.mdx
  • Missing regression test: Doc validation should catch inconsistencies; consider adding a script to verify all three match.
  • Done when: The local improvement is applied, or the PR notes why it should be deferred.
  • Evidence: All three files updated with identical matrix in this PR (lines 210-230 in lifecycle.mdx, similar in others).

PRA-3 Improvement — Env var strict '1' check vs other NEMOCLAW_* flags accepting true/yes

  • Location: src/lib/actions/uninstall/run-plan.ts:545
  • Category: correctness
  • Problem: NEMOCLAW_UNINSTALL_DESTROY_USER_DATA is checked for exact string '1' only. Other flags like NEMOCLAW_CLEANUP_GATEWAY accept '1', 'true', 'yes'. Comment says 'matches today's behaviour' but consistency may be preferable.
  • Impact: Users setting env var to 'true' or 'yes' would not get expected behavior; inconsistent UX.
  • Suggested action: If intentional, add comment clarifying why strict '1' check. If not, align with other flags (accept '1'/'true'/'yes'). Current behavior is tested and documented.
  • Expected follow-up: Prefer a current-PR fix when local to changed code; defer only with rationale or linked follow-up.
  • Verification: grep NEMOCLAW_CLEANUP_GATEWAY src/lib/core/ports.ts or similar to see accepted values
  • Missing regression test: Add test for 'true'/'yes' values if behavior changes to accept them.
  • Done when: The local improvement is applied, or the PR notes why it should be deferred.
  • Evidence: resolvePreserveSet() line 545: `if (runtime.env.NEMOCLAW_UNINSTALL_DESTROY_USER_DATA === "1")`

PRA-4 Improvement — Subtle return of allowlist when no preservable entries exist on disk

  • Location: src/lib/actions/uninstall/run-plan.ts:550
  • Category: correctness
  • Problem: When preservable.length === 0, resolvePreserveSet returns PRESERVED_USER_DATA_ENTRIES (the allowlist) rather than empty array. This ensures removePathExcept preserves nothing but future snapshot-create still works. Correct but subtle — no inline comment explaining why.
  • Impact: Future maintainers may incorrectly 'fix' this to return empty array, breaking future snapshot persistence.
  • Suggested action: Add inline comment: 'Return allowlist so removePathExcept preserves nothing but future snapshots still work.'
  • Expected follow-up: Prefer a current-PR fix when local to changed code; defer only with rationale or linked follow-up.
  • Verification: Read resolvePreserveSet() around line 550
  • Missing regression test: Test 'skips the preservation notice when no protected entries exist on disk' covers this behavior.
  • Done when: The local improvement is applied, or the PR notes why it should be deferred.
  • Evidence: Line 550: `if (preservable.length === 0) return PRESERVED_USER_DATA_ENTRIES;`
Simplification opportunities: 1 possible cut

These are safe simplification checks only. Do not remove validation, security controls, data-loss prevention, or required tests.

  • PRA-1 shrink (src/lib/actions/uninstall/run-plan.test.ts:1): Split run-plan.test.ts into focused modules by behavior domain
    • Replacement: run-plan-core.test.ts, run-plan-preservation.test.ts, run-plan-process-cleanup.test.ts
    • Net: 0 lines
    • Safety boundary: All existing test coverage must be preserved; no behavior changes
Since last review details

Current findings, using the urgency labels above:

PRA-1 Resolve/justify — Test file monolith growth — 1350 lines after 98-line addition

  • Location: src/lib/actions/uninstall/run-plan.test.ts:1
  • Category: architecture
  • Problem: The test file grew by 98 lines to ~1350 lines. While all new behavior is thoroughly tested, the file is becoming a monolith covering core logic, preservation, process cleanup, and integration scenarios.
  • Impact: Harder to navigate, slower test runs, risk of test interdependencies. Future changes may compound the problem.
  • Recommended action: Extract preservation tests into run-plan-preservation.test.ts and process-cleanup tests into run-plan-process-cleanup.test.ts in a follow-up PR. Not a blocker for this merge.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: wc -l src/lib/actions/uninstall/run-plan.test.ts
  • Missing regression test: Refactoring must preserve all 40+ existing test cases and the 4 new destroyUserData tests.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: wc -l src/lib/actions/uninstall/run-plan.test.ts.
  • Evidence: File grew from 1252 to 1350 lines (drift context). Contains tests for: plan building, shim classification, non-destructive run, OpenShell binaries, Hermes branding, interactive confirmation, abort on decline, stdin handling, process.stdin avoidance, Ollama auth proxy (5 tests), model router (5 tests), SIGKILL escalation, lsof missing, gateway destroy wording, user-data preservation (11 tests), swap cleanup, host openshell-gateway.

PRA-2 Improvement — Decision matrix duplicated across 3 documentation files

  • Location: docs/manage-sandboxes/lifecycle.mdx:210
  • Category: docs
  • Problem: The uninstall decision matrix (interactive/non-interactive behavior, flag/env var precedence) is duplicated in lifecycle.mdx, commands.mdx, and commands-nemohermes.mdx. Maintenance burden if behavior changes.
  • Impact: Risk of documentation drift if one copy is updated and others are not.
  • Suggested action: Evaluate single-source-of-truth pattern (shared include, generated table, or centralized reference) in a follow-up docs architecture PR. Not a blocker.
  • Expected follow-up: Prefer a current-PR fix when local to changed code; defer only with rationale or linked follow-up.
  • Verification: diff the three decision matrix tables in lifecycle.mdx, commands.mdx, commands-nemohermes.mdx
  • Missing regression test: Doc validation should catch inconsistencies; consider adding a script to verify all three match.
  • Done when: The local improvement is applied, or the PR notes why it should be deferred.
  • Evidence: All three files updated with identical matrix in this PR (lines 210-230 in lifecycle.mdx, similar in others).

PRA-3 Improvement — Env var strict '1' check vs other NEMOCLAW_* flags accepting true/yes

  • Location: src/lib/actions/uninstall/run-plan.ts:545
  • Category: correctness
  • Problem: NEMOCLAW_UNINSTALL_DESTROY_USER_DATA is checked for exact string '1' only. Other flags like NEMOCLAW_CLEANUP_GATEWAY accept '1', 'true', 'yes'. Comment says 'matches today's behaviour' but consistency may be preferable.
  • Impact: Users setting env var to 'true' or 'yes' would not get expected behavior; inconsistent UX.
  • Suggested action: If intentional, add comment clarifying why strict '1' check. If not, align with other flags (accept '1'/'true'/'yes'). Current behavior is tested and documented.
  • Expected follow-up: Prefer a current-PR fix when local to changed code; defer only with rationale or linked follow-up.
  • Verification: grep NEMOCLAW_CLEANUP_GATEWAY src/lib/core/ports.ts or similar to see accepted values
  • Missing regression test: Add test for 'true'/'yes' values if behavior changes to accept them.
  • Done when: The local improvement is applied, or the PR notes why it should be deferred.
  • Evidence: resolvePreserveSet() line 545: `if (runtime.env.NEMOCLAW_UNINSTALL_DESTROY_USER_DATA === "1")`

PRA-4 Improvement — Subtle return of allowlist when no preservable entries exist on disk

  • Location: src/lib/actions/uninstall/run-plan.ts:550
  • Category: correctness
  • Problem: When preservable.length === 0, resolvePreserveSet returns PRESERVED_USER_DATA_ENTRIES (the allowlist) rather than empty array. This ensures removePathExcept preserves nothing but future snapshot-create still works. Correct but subtle — no inline comment explaining why.
  • Impact: Future maintainers may incorrectly 'fix' this to return empty array, breaking future snapshot persistence.
  • Suggested action: Add inline comment: 'Return allowlist so removePathExcept preserves nothing but future snapshots still work.'
  • Expected follow-up: Prefer a current-PR fix when local to changed code; defer only with rationale or linked follow-up.
  • Verification: Read resolvePreserveSet() around line 550
  • Missing regression test: Test 'skips the preservation notice when no protected entries exist on disk' covers this behavior.
  • Done when: The local improvement is applied, or the PR notes why it should be deferred.
  • Evidence: Line 550: `if (preservable.length === 0) return PRESERVED_USER_DATA_ENTRIES;`

Workflow run details

This is an automated, non-binding review; it still expects maintainers and agents to respond to each required or warning item. Treat suggestions as current-PR improvements when they touch changed code; defer only with maintainer rationale or a linked follow-up. A human maintainer must make the final merge decision.

@github-actions

Copy link
Copy Markdown
Contributor

E2E Target Recommendation

Required E2E targets: docs-validation
Optional E2E targets: None

Dispatch required E2E targets:

  • gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=docs-validation

Workflow run

Full E2E target advisor summary

E2E Target Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E targets

  • docs-validation: The PR changes command reference docs plus CLI help/uninstall flag surfaces. The docs-validation free-standing E2E job builds the CLI and checks CLI/docs parity and local Markdown links, which directly exercises this changed surface.
    • Dispatch: gh workflow run e2e.yaml --ref <pr-head-ref> --field jobs=docs-validation

Optional E2E targets

  • None.

Relevant changed files

  • docs/manage-sandboxes/lifecycle.mdx
  • docs/reference/commands-nemohermes.mdx
  • docs/reference/commands.mdx
  • src/commands/internal/uninstall/run-plan.ts
  • src/lib/actions/root-help.ts
  • src/lib/actions/uninstall/run-plan.ts
  • uninstall.sh

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Target Results — ✅ All requested jobs passed

Run: 28461728407
Workflow ref: fix/uninstall-yes-purge-flag
Requested targets: (default — all supported)
Requested jobs: docs-validation
Summary: 1 passed, 0 failed, 0 cancelled, 0 skipped

Job Result
docs-validation ✅ success

@jyaunches
jyaunches merged commit 2efe25b into main Jun 30, 2026
120 checks passed
@jyaunches
jyaunches deleted the fix/uninstall-yes-purge-flag branch June 30, 2026 18:16
@jyaunches jyaunches mentioned this pull request Jun 30, 2026
21 tasks
jyaunches added a commit that referenced this pull request Jun 30, 2026
<!-- markdownlint-disable MD041 -->
## Summary
Refreshes the public documentation for NemoClaw v0.0.71 after scanning
commits since v0.0.70. Adds release notes and fills the remaining doc
gaps for Windows bootstrap diagnostics, OpenClaw agent auto-relock
warnings, auto-pair cadence tuning, and plugin-install recovery hints.

## Changes
- `docs/about/release-notes.mdx`: adds the v0.0.71 release-note section,
grouped by gateway recovery, OpenShell auth, policy provenance, day-two
maintenance, messaging/inference, and Windows setup.
- `docs/get-started/windows-preparation.mdx`: documents sanitized WSL
install output and reboot gating in the Windows bootstrap.
- `docs/reference/commands.mdx`: documents the host `agent` wrapper's
shields auto-relock warning and OpenClaw auto-pair watcher tuning
variables.
- `docs/reference/troubleshooting.mdx`: adds plugin-install network
failure recovery guidance and updates Windows WSL troubleshooting for
sanitized install logs and reboot-required handling.

Source summary:
- #6065 -> `docs/about/release-notes.mdx`: Notes explicit model override
preservation and gateway-log guard-chain recovery diagnostics.
- #5874 -> `docs/about/release-notes.mdx`: Summarizes host-mediated
`recover` and `gateway restart`, linking to lifecycle, command,
troubleshooting, and trusted-boundary docs already added by the source
PR.
- #5596 -> `docs/about/release-notes.mdx`: Summarizes OpenShell 0.0.71
gateway auth, loopback binding, and compatibility-container docs already
added by the source PR.
- #5797 and #5798 -> `docs/about/release-notes.mdx`: Summarizes
`policy-list` provenance, Restricted tier suppression, and Balanced tier
weather behavior already reflected in policy docs.
- #5784 -> `docs/about/release-notes.mdx`: Summarizes
`--destroy-user-data` and the safe `--yes` uninstall behavior already
documented in lifecycle and command docs.
- #6034 -> `docs/about/release-notes.mdx`: Summarizes custom Dockerfile
warm-build cache behavior already documented in the command reference.
- #5951 -> `docs/reference/commands.mdx`: Documents the stderr-only host
`agent` wrapper warning after recent shields auto-relock.
- #5387 -> `docs/reference/commands.mdx`: Documents OpenClaw auto-pair
watcher cadence and fast-reentry tuning variables.
- #5835 -> `docs/reference/troubleshooting.mdx`: Adds recovery guidance
for OpenClaw plugin-install network failures.
- #5995 and #5956 -> `docs/about/release-notes.mdx`: Summarizes
Microsoft Teams final-message delivery and runtime mention hints already
covered by messaging docs.
- #5716 -> `docs/about/release-notes.mdx`: Summarizes non-interactive
Ollama loopback safety already covered by local inference docs.
- #5505, #5527, and #5528 -> `docs/about/release-notes.mdx`: Summarizes
compatible local endpoint, model task-fit, and model capability audit
docs.
- #6009 -> `docs/get-started/windows-preparation.mdx`,
`docs/reference/troubleshooting.mdx`: Documents sanitized Windows
bootstrap WSL output and reboot-required gating.
- #6055 -> no additional source doc page change needed beyond the
already-merged quickstart update; release notes did not duplicate
routine quickstart cleanup.

No matching v0.0.71 GitHub announcement discussion was found in the
latest 20 discussions, so this refresh is based on the commit scan and
existing source PR docs.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [x] Doc only (includes code sample changes)

## Quality Gates
<!-- Check all that apply. For any "covered by existing tests", "not
applicable", or waiver entry, add a brief justification on the same line
or in the Changes section. -->
- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: docs-only refresh with no
runtime behavior changes.
- [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
<!-- Check each item you ran and confirmed. Leave unchecked items you
skipped. Doc-only changes do not require npm test unless you ran it. -->
- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Git hooks passed during commit and push, or `npx prek run
--from-ref main --to-ref HEAD` passes
- [ ] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only)
- [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) — ran
`npm run docs`; Fern reported 0 errors and 2 existing 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)

---
<!-- DCO sign-off is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>


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

## Summary by CodeRabbit

* **Documentation**
* Added a new release-notes entry covering gateway recovery,
authentication, network policy/provenance output, uninstall safety,
Windows bootstrap diagnostics, messaging defaults, and inference setup
guidance.
* Clarified Windows preparation steps around reboot behavior and
redacting troubleshooting transcripts.
* Expanded command reference details for OpenClaw wrapper behavior and
new auto-pair tuning options.
* Improved troubleshooting guidance for plugin installation issues, WSL
repair/reboot cases, and install timing problems.

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

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
…VIDIA#5784)

<!-- markdownlint-disable MD041 -->
## Summary

`nemoclaw uninstall --yes` is non-destructive by design — it preserves
`~/.nemoclaw/rebuild-backups/`, `~/.nemoclaw/backups/`, and
`~/.nemoclaw/sandboxes.json`, leaving the state directory non-empty. The
only escape hatch today is the `NEMOCLAW_UNINSTALL_DESTROY_USER_DATA=1`
env var, which is not discoverable from `--help` or the usage banner.
Add a first-class `--destroy-user-data` CLI flag that mirrors the
env-var semantics so users who want a clean uninstall have a visible
flag to reach for, without changing the safe `--yes` default.

## Related Issue

Fixes NVIDIA#5780

## Changes

- `src/commands/internal/uninstall/run-plan.ts`: declare a
`destroy-user-data` boolean flag and forward it into
`UninstallRunOptions.destroyUserData`.
- `src/lib/actions/uninstall/run-plan.ts`: extend `UninstallRunOptions`
with `destroyUserData?: boolean`; `resolvePreserveSet` now checks the
flag before the env var and logs `--destroy-user-data set; purging user
data under ~/.nemoclaw/.` when it triggers; the non-interactive preserve
notice now mentions both the flag and the env var. **Note: the flag is
opt-in precisely to avoid changing the existing safe `--yes` default —
but the flag itself is destructive, so a user (or script) invoking it
without intent will lose the preserved user data.**
- `uninstall.sh`: extend the usage banner with the new flag.
- `src/lib/actions/uninstall/run-plan.test.ts`: four new tests — non-TTY
plus `--yes` plus `--destroy-user-data` purges, TTY plus flag purges
without prompting, flag takes precedence over
`NEMOCLAW_UNINSTALL_DESTROY_USER_DATA=1`, and the preserve hint mentions
both the flag and the env var.
- `docs/manage-sandboxes/lifecycle.mdx`, `docs/reference/commands.mdx`,
`docs/reference/commands-nemohermes.mdx`: add the new flag to the
uninstall flags table, the usage line, and the user-data decision
matrix.

## Type of Change

- [x] 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)

## Verification

- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Git hooks passed during commit and push, or `npx prek run
--from-ref main --to-ref HEAD` passes
- [x] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only)
- [x] Tests added or updated for new or changed behavior
- [x] No secrets, API keys, or credentials committed
- [x] Docs updated for user-facing behavior changes
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] 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: Tinson Lai <tinsonl@nvidia.com>


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

* **New Features**
* Added a `--destroy-user-data` option to uninstall flows, including the
CLI help and reference usage.
* Updated uninstall decision behavior to support full removal of
preserved `~/.nemoclaw/` user data.

* **Bug Fixes**
* Clarified that `--yes` only confirms; preserved `~/.nemoclaw/` data
remains unless `--destroy-user-data` (or the documented env override) is
provided.
* Improved prompts and messaging for interactive vs non-interactive
runs, including secondary confirmation behavior.

* **Documentation**
* Expanded uninstall lifecycle and command reference docs with the new
flag and decision matrix.

* **Tests**
  * Added/updated coverage for preservation vs full purge scenarios.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
<!-- markdownlint-disable MD041 -->
## Summary
Refreshes the public documentation for NemoClaw v0.0.71 after scanning
commits since v0.0.70. Adds release notes and fills the remaining doc
gaps for Windows bootstrap diagnostics, OpenClaw agent auto-relock
warnings, auto-pair cadence tuning, and plugin-install recovery hints.

## Changes
- `docs/about/release-notes.mdx`: adds the v0.0.71 release-note section,
grouped by gateway recovery, OpenShell auth, policy provenance, day-two
maintenance, messaging/inference, and Windows setup.
- `docs/get-started/windows-preparation.mdx`: documents sanitized WSL
install output and reboot gating in the Windows bootstrap.
- `docs/reference/commands.mdx`: documents the host `agent` wrapper's
shields auto-relock warning and OpenClaw auto-pair watcher tuning
variables.
- `docs/reference/troubleshooting.mdx`: adds plugin-install network
failure recovery guidance and updates Windows WSL troubleshooting for
sanitized install logs and reboot-required handling.

Source summary:
- NVIDIA#6065 -> `docs/about/release-notes.mdx`: Notes explicit model override
preservation and gateway-log guard-chain recovery diagnostics.
- NVIDIA#5874 -> `docs/about/release-notes.mdx`: Summarizes host-mediated
`recover` and `gateway restart`, linking to lifecycle, command,
troubleshooting, and trusted-boundary docs already added by the source
PR.
- NVIDIA#5596 -> `docs/about/release-notes.mdx`: Summarizes OpenShell 0.0.71
gateway auth, loopback binding, and compatibility-container docs already
added by the source PR.
- NVIDIA#5797 and NVIDIA#5798 -> `docs/about/release-notes.mdx`: Summarizes
`policy-list` provenance, Restricted tier suppression, and Balanced tier
weather behavior already reflected in policy docs.
- NVIDIA#5784 -> `docs/about/release-notes.mdx`: Summarizes
`--destroy-user-data` and the safe `--yes` uninstall behavior already
documented in lifecycle and command docs.
- NVIDIA#6034 -> `docs/about/release-notes.mdx`: Summarizes custom Dockerfile
warm-build cache behavior already documented in the command reference.
- NVIDIA#5951 -> `docs/reference/commands.mdx`: Documents the stderr-only host
`agent` wrapper warning after recent shields auto-relock.
- NVIDIA#5387 -> `docs/reference/commands.mdx`: Documents OpenClaw auto-pair
watcher cadence and fast-reentry tuning variables.
- NVIDIA#5835 -> `docs/reference/troubleshooting.mdx`: Adds recovery guidance
for OpenClaw plugin-install network failures.
- NVIDIA#5995 and NVIDIA#5956 -> `docs/about/release-notes.mdx`: Summarizes
Microsoft Teams final-message delivery and runtime mention hints already
covered by messaging docs.
- NVIDIA#5716 -> `docs/about/release-notes.mdx`: Summarizes non-interactive
Ollama loopback safety already covered by local inference docs.
- NVIDIA#5505, NVIDIA#5527, and NVIDIA#5528 -> `docs/about/release-notes.mdx`: Summarizes
compatible local endpoint, model task-fit, and model capability audit
docs.
- NVIDIA#6009 -> `docs/get-started/windows-preparation.mdx`,
`docs/reference/troubleshooting.mdx`: Documents sanitized Windows
bootstrap WSL output and reboot-required gating.
- NVIDIA#6055 -> no additional source doc page change needed beyond the
already-merged quickstart update; release notes did not duplicate
routine quickstart cleanup.

No matching v0.0.71 GitHub announcement discussion was found in the
latest 20 discussions, so this refresh is based on the commit scan and
existing source PR docs.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [x] Doc only (includes code sample changes)

## Quality Gates
<!-- Check all that apply. For any "covered by existing tests", "not
applicable", or waiver entry, add a brief justification on the same line
or in the Changes section. -->
- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: docs-only refresh with no
runtime behavior changes.
- [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
<!-- Check each item you ran and confirmed. Leave unchecked items you
skipped. Doc-only changes do not require npm test unless you ran it. -->
- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Git hooks passed during commit and push, or `npx prek run
--from-ref main --to-ref HEAD` passes
- [ ] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only)
- [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) — ran
`npm run docs`; Fern reported 0 errors and 2 existing 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)

---
<!-- DCO sign-off is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>


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

## Summary by CodeRabbit

* **Documentation**
* Added a new release-notes entry covering gateway recovery,
authentication, network policy/provenance output, uninstall safety,
Windows bootstrap diagnostics, messaging defaults, and inference setup
guidance.
* Clarified Windows preparation steps around reboot behavior and
redacting troubleshooting transcripts.
* Expanded command reference details for OpenClaw wrapper behavior and
new auto-pair tuning options.
* Improved troubleshooting guidance for plugin installation issues, WSL
repair/reboot cases, and install timing problems.

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

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: cli Command line interface, flags, terminal UX, or output bug-fix PR fixes a bug or regression NV QA Bugs found by the NVIDIA QA Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[All Platforms][CLI&UX] nemoclaw uninstall --yes preserves rebuild-backups/ and sandboxes.json leaving ~/.nemoclaw non-empty

4 participants