fix(sandbox): warn host agent CLI after shields auto-relock - #5951
Conversation
…5922) When a shields auto-restore timer fires mid-session the next `agent` invocation fails with a cryptic missing-scope error from OpenClaw because NemoClaw has no post-call window to intercept it (execSandbox uses stdio:inherit + process.exit). Fix: scan the audit JSONL in reverse before every agent dispatch. If a shields_auto_restore entry for this sandbox appeared within the last 10 minutes, emit a warning on stderr with the original timeout so the user knows how to extend: ⚠ Shields auto-relocked after 20s — run `nemoclaw sb shields down --timeout 20s` to extend. The timeout is recovered by continuing the backwards scan to find the preceding shields_down entry which carries timeout_seconds. Falls back to --timeout 60s when no preceding entry is found. Refs #5922 Signed-off-by: Dongni Yang <dongniy@nvidia.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:
📝 WalkthroughWalkthroughAdds ChangesShields Auto-Relock Warning
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related issues
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage in the Show a code coverage summary of the most covered files.
TypeScript / code-coverage/cliThe overall coverage in the Show a code coverage summary of the most covered files.
Updated |
PR Review Advisor (Nemotron Ultra) — Changes requestedMerge posture: Do not merge yet Action checklist
Findings index
🚨 Required before mergeAddress these before merging unless a maintainer explicitly overrides the advisor with rationale.
|
E2E Advisor RecommendationRequired E2E: Dispatch hint: Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
Dispatch hint
|
Vitest E2E Scenario RecommendationRequired Vitest E2E scenarios: Dispatch required Vitest E2E scenarios:
Full Vitest E2E advisor summaryVitest E2E Scenario AdvisorBase: Required Vitest E2E scenarios
Optional Vitest E2E scenarios
Relevant changed files
|
There was a problem hiding this comment.
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 `@src/lib/actions/sandbox/agent/passthrough.test.ts`:
- Around line 492-496: The no-warning test in runAgentPassthrough is not
actually capturing stderr because the mock proc from makeProcMock() is created
but not passed into the runAgentPassthrough call, so writes can stay empty even
if a warning is emitted. Update the test to wire the proc mock through the
runAgentPassthrough invocation so the stderr collector is used, and verify the
existing assertion against writes reflects the real process behavior.
🪄 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: a48292ef-0135-4f15-b10f-15d198afa0ae
📒 Files selected for processing (4)
src/lib/actions/sandbox/agent/passthrough.test.tssrc/lib/actions/sandbox/agent/passthrough.tssrc/lib/shields/audit.test.tssrc/lib/shields/audit.ts
PR Review Advisor — Changes requestedMerge posture: Do not merge yet Action checklist
Findings index
Review findings by urgency: 0 required fixes, 1 item to resolve/justify, 0 in-scope improvements
|
PRA-5: mock readRecentShieldsAutoRestore at module level in passthrough tests so existing tests that do not inject getRecentShieldsAutoRestore cannot read the developer's live audit log. PRA-4: validate recovered timeout_seconds against shields bounds (finite integer, 1..1800) before surfacing it to the caller; values outside that range produce timeoutSeconds:null so the safe fallback suggestion is used instead. Add a test covering all out-of-bounds cases. PRA-6: extend passthrough.ts removal-conditions comment to cover the shields-relock warning (remove when OpenClaw exposes a distinct exit code or NemoClaw implements extend-on-activity); update regression-test inventory comment. Refs #5922 Signed-off-by: Dongni Yang <dongniy@nvidia.com>
|
PRA-3 — scope justification: The issue title is "breaks chat" which refers to PRA-4 — addressed: PRA-5 — addressed: Added PRA-6 — addressed: Added removal condition to |
There was a problem hiding this comment.
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 `@src/lib/shields/audit.test.ts`:
- Around line 180-190: The table-driven case in audit.test.ts is including
Number.NaN and Number.POSITIVE_INFINITY, but JSON.stringify converts them to
null so the loop does not actually test non-finite numeric input. Update the
loop near the shields audit test to remove those values, or move them into a
separate raw malformed-JSONL test that writes the payload without
JSON.stringify; keep the existing auditPath write logic and related test case
structure intact.
🪄 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: 4b2eebbd-c956-429f-8c53-d6b6b45292a3
📒 Files selected for processing (4)
src/lib/actions/sandbox/agent/passthrough.test.tssrc/lib/actions/sandbox/agent/passthrough.tssrc/lib/shields/audit.test.tssrc/lib/shields/audit.ts
🚧 Files skipped from review as they are similar to previous changes (3)
- src/lib/actions/sandbox/agent/passthrough.test.ts
- src/lib/actions/sandbox/agent/passthrough.ts
- src/lib/shields/audit.ts
CR-1: no-warning passthrough test was creating a proc mock but not passing it to runAgentPassthrough — writes was never populated, so the assertion was vacuously true. Wire proc into the deps object. CR-2: JSON.stringify(NaN) and JSON.stringify(Infinity) both serialize to null, so the out-of-bounds loop wasn't testing non-finite values at all. Split into two tests: one for finite out-of-range values (JSON.stringify works correctly) and one for NaN/Infinity/-Infinity that writes the raw JSONL string directly so the parser sees a genuinely invalid JSON number token. Refs #5922 Signed-off-by: Dongni Yang <dongniy@nvidia.com>
…eck (#5922) PRA-4: the timestamp window check only enforced restoreMs >= cutoff, allowing a future-dated shields_auto_restore entry to trigger the warning indefinitely. Add restoreMs <= now and Number.isFinite(restoreMs) guards so only plausible past events within the window are accepted. Parse the timestamp once per candidate entry instead of three times. Add a test covering a +60s future-dated entry. Refs #5922 Signed-off-by: Dongni Yang <dongniy@nvidia.com>
|
PRA-3 — scope narrowed explicitly: The VDR5 repro sequence in the issue body is: That path — "TUI" in the issue's expected-result clause refers to the terminal output surface, not the OpenClaw interactive TUI process ( PR scope accepted as: PRA-4 — addressed: |
Refs #5922 Signed-off-by: Dongni Yang <dongniy@nvidia.com>
Vitest E2E Scenario Results — ✅ All requested jobs passedRun: 28347763460
|
Vitest E2E Scenario Results — ✅ All requested jobs passedRun: 28347761878
|
PRA-6: Extract emitShieldsRelockWarning as a pure function so the shields-relock warning logic is auditable in isolation rather than inline in runAgentPassthrough. PRA-5: Add runShieldsWarningTest helper in passthrough.test.ts to reduce the duplicated getSandboxMock + makeProcMock setup across the three shields-warning tests. PRA-7/PRA-10: Update readRecentShieldsAutoRestore JSDoc with explicit fail-open justification (blocking on audit I/O errors would be a DoS vector) and future-date rejection rationale (clock-skew defense). PRA-4: Add comment in parseEntry catch explaining the intentional resilient skip — a malformed JSONL line must not prevent finding valid surrounding entries. PRA-2/PRA-8: Add JSDoc note justifying why unbounded readFileSync is acceptable (user-owned file, ~200 bytes/entry, warning-only path). PRA-9/PRA-11: Add timer.ts:295–302 traceability reference to the shields-relock removal condition in the passthrough header comment. PRA-3/PRA-15: Add inline comment documenting the 10-min window rationale (2x buffer over the max 30-min timeout; adjust if upstream bounds change). PRA-12: Add audit.test.ts case -- malformed JSONL line between shields_down and shields_auto_restore still yields correct timeoutSeconds. PRA-13: Add audit.test.ts case -- multiple shields_down entries; assert immediately-preceding entry is used. Refs #5922 Signed-off-by: Dongni Yang <dongniy@nvidia.com>
|
PRA follow-up — commit 5363d0f Required items addressed in this commitPRA-6 (extract pure function): PRA-5 (test monolith): Added PRA-7 / PRA-10 (fail-open justification): PRA-4 (silent malformed skip): Added comment in PRA-9 / PRA-11 (timer.ts traceability): Removal condition 5 in the passthrough header now references PRA-3 / PRA-15 (10-min window): Added inline comment explaining the 10-min window is a 2× buffer over the max 30-min timeout, and notes where to adjust if upstream bounds change. PRA-12 (malformed JSONL between entries): New audit test: PRA-13 (multiple shields_down): New audit test: two PRA-T1–T8 justificationThe PRA test follow-ups (PRA-T1–T8) request runtime validation of the full Unit-layer tests (PRA-T2–T8) for subsidiary runtime behaviors (e.g., timer fires, audit entry appended, passthrough reads it) are each exercised in isolation: the timer-appends-entry path is tested in PRA-2 / PRA-8 (unbounded readFileSync): Justified in JSDoc — the file is user-owned, entries are ~200 bytes each, and the function is only called at |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
E2E Target RecommendationRequired E2E targets: None Full E2E target advisor summaryE2E Target AdvisorBase: Required E2E targets
Optional E2E targets
Relevant changed files
|
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Vitest E2E Scenario Results — ❌ Some jobs failedRun: 28429860476
|
Vitest E2E Scenario Results —
|
| Job | Result |
|---|---|
| shields-config-vitest |
|
Maintainer follow-up at
|
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Vitest E2E Scenario Results — ✅ All requested jobs passedRun: 28430367523
|
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
|
Nemotron follow-up at
Both required live jobs passed on runtime parent |
Vitest E2E Scenario Results — ✅ All requested jobs passedRun: 28431109592
|
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
|
Nemotron follow-up at
Focused validation is 69/69 plus CLI typecheck, Biome, test-size and conditional budgets, full commit hooks, and pre-push hooks. Exact-head required E2E is running in 28432160812. |
Vitest E2E Scenario Results —
|
| Job | Result |
|---|---|
| sandbox-operations-vitest | |
| shields-config-vitest |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
|
GPT advisor follow-up at
Focused coverage is 70/70, with CLI typecheck, Biome, budgets, full commit hooks, and pre-push hooks green. A single exact-head required E2E run is active: 28432672398. |
Vitest E2E Scenario Results — ✅ All requested jobs passedRun: 28432672398
|
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
|
Nemotron structural follow-up at
Focused validation is 72/72; CLI typecheck, Vitest project-disjointness, Biome, file-size/conditional budgets, full commit hooks, and pre-push hooks pass. Required E2E run 28432672398 passed both jobs on runtime-identical parent |
prekshivyas
left a comment
There was a problem hiding this comment.
Shields relock warning logic is well-defended — timestamp validation, 1 MiB read cap, stale suppression, correct shell-quoting. LGTM.
<!-- 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>
) <!-- markdownlint-disable MD041 --> ## Summary After shields auto-restore, the next host `nemoclaw <sb> agent` invocation can fail with OpenClaw's cryptic `missing scope: operator.write` error. This PR adds a bounded, non-authoritative audit check that emits actionable recovery context on stderr before host CLI dispatch without contaminating JSON stdout. ## Related Issue and Scope Refs NVIDIA#5922 **Partial host-CLI fix:** this PR covers only the host `nemoclaw <sb> agent` dispatch path and does not close NVIDIA#5922. An already-running in-sandbox OpenClaw TUI has no host interception point, so the TUI/extend-on-activity acceptance clause remains open in NVIDIA#5922. ## Changes - `src/lib/shields/audit.ts` reads at most the last 1 MiB of audit JSONL and returns explicit `event`, `none`, or `unreadable` results. The reader validates restore chronology, timestamps, and timeout bounds; treats oversized unterminated records as degraded visibility; and suppresses stale relock context after a newer same-sandbox `shields_down`. Audit history remains advisory and never establishes current policy state. - `src/lib/actions/sandbox/agent/passthrough-shields-warning.ts` contains the OpenClaw-only warning lookup and rendering. Suggested commands shell-quote sandbox names, invalid timeout values use a safe fallback, and unreadable history emits generic status guidance without blocking dispatch. - `src/lib/actions/sandbox/agent/passthrough.ts` makes one pre-dispatch call after readiness and selector validation. Terminal runtimes are excluded, and the source-boundary comment documents why an already-running TUI remains outside this host wrapper. - Focused tests cover real-file audit-to-JSON passthrough, stderr/stdout separation, timeout validation, malformed and oversized audit input, chronology ordering, stale-warning suppression, shell metacharacters, absent/unreadable history, and terminal-runtime exclusion. ## 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) ## Quality Gates - [x] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [ ] Tests not applicable — justification: - [ ] Docs updated for user-facing behavior changes - [x] Docs not applicable — justification: focused runtime recovery copy; the canonical TUI/extend-on-activity work remains tracked in NVIDIA#5922 - [x] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [x] Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: read-only, bounded, fail-open advisory input; no credential, authorization, policy, or shield-state mutation - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## Verification - [x] PR description includes the DCO sign-off declaration and every pushed commit appears as `Verified` in GitHub - [x] Normal commit and push hooks passed - [x] Focused tests pass for changed behavior (72/72) - [x] CLI typecheck, Biome, test-size budget, and conditional scan pass - [x] Required `shields-config-vitest` and `sandbox-operations-vitest` passed in run 28432672398 on runtime head `6341d0385`; final `7b20a6470` changes only tests and source-boundary comments - [x] No secrets, API keys, or credentials committed - [ ] Full `npm test` passes (broad runtime changes only) - [ ] `npm run docs` builds without warnings (doc changes only) --- Signed-off-by: Dongni Yang <dongniy@nvidia.com> --------- Signed-off-by: Dongni Yang <dongniy@nvidia.com> Signed-off-by: Carlos Villela <cvillela@nvidia.com> Co-authored-by: Carlos Villela <cvillela@nvidia.com>
<!-- 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>
Summary
After shields auto-restore, the next host
nemoclaw <sb> agentinvocation can fail with OpenClaw's crypticmissing scope: operator.writeerror. This PR adds a bounded, non-authoritative audit check that emits actionable recovery context on stderr before host CLI dispatch without contaminating JSON stdout.Related Issue and Scope
Refs #5922
Partial host-CLI fix: this PR covers only the host
nemoclaw <sb> agentdispatch path and does not close #5922. An already-running in-sandbox OpenClaw TUI has no host interception point, so the TUI/extend-on-activity acceptance clause remains open in #5922.Changes
src/lib/shields/audit.tsreads at most the last 1 MiB of audit JSONL and returns explicitevent,none, orunreadableresults. The reader validates restore chronology, timestamps, and timeout bounds; treats oversized unterminated records as degraded visibility; and suppresses stale relock context after a newer same-sandboxshields_down. Audit history remains advisory and never establishes current policy state.src/lib/actions/sandbox/agent/passthrough-shields-warning.tscontains the OpenClaw-only warning lookup and rendering. Suggested commands shell-quote sandbox names, invalid timeout values use a safe fallback, and unreadable history emits generic status guidance without blocking dispatch.src/lib/actions/sandbox/agent/passthrough.tsmakes one pre-dispatch call after readiness and selector validation. Terminal runtimes are excluded, and the source-boundary comment documents why an already-running TUI remains outside this host wrapper.Type of Change
Quality Gates
missing scope: operator.writeand no user-facing warning #5922Verification
Verifiedin GitHubshields-config-vitestandsandbox-operations-vitestpassed in run 28432672398 on runtime head6341d0385; final7b20a6470changes only tests and source-boundary commentsnpm testpasses (broad runtime changes only)npm run docsbuilds without warnings (doc changes only)Signed-off-by: Dongni Yang dongniy@nvidia.com