Skip to content

fix(security): close managed runtime audit gaps - #8156

Merged
cv merged 32 commits into
NVIDIA:mainfrom
jyaunches:codex/fix-openclaw-brace-expansion-5-0-9
Aug 4, 2026
Merged

fix(security): close managed runtime audit gaps#8156
cv merged 32 commits into
NVIDIA:mainfrom
jyaunches:codex/fix-openclaw-brace-expansion-5-0-9

Conversation

@jyaunches

@jyaunches jyaunches commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Close the high-severity npm audit gaps in the managed OpenClaw and mcporter production boundaries.
This keeps the existing OpenClaw 2026.7.1 product scope and replaces only reviewed vulnerable dependency identities.
PR #8126 is merged into this branch so San Dang and Apurv Kumaria retain their original root-remediation commits and authorship.

Changes

  • Upgrade the OpenClaw locked runtime to brace-expansion@5.0.9, fast-uri@3.1.5, undici@8.10.0, and ip-address@10.3.1 with exact registry URLs and SRI values.
  • Upgrade the mcporter lock to fast-uri@3.1.5 and ip-address@10.3.1 through exact manifest overrides.
  • Remediate Discord's direct and bundled undici@8.5.0 across its manifest, shrinkwrap, bundledDependencies, and physical node_modules tree.
  • Fail closed when any reviewed source identity, dependency edge, engine, replacement archive, deterministic tree digest, or committed lock digest changes.
  • Update the security review records and regression contracts for the final advisory set and audit evidence.

Type of Change

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

Quality Gates

  • Tests added or updated for changed behavior
  • Existing tests cover changed behavior — justification:
  • Tests not applicable — justification:
  • Docs updated for user-facing behavior changes
  • Docs not applicable — justification:
  • 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: nine-category review completed on the exact diff; dependency provenance warnings are recorded below and no code-security blocker was found.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: no exception is currently recorded; required CI is authoritative on exact head 1d28516eac51effbd690f8bf1847e59571ac5118.

Documentation Writer Review

  • Documentation writer subagent reviewed the completed changes
  • Result: docs-updated
  • Evidence: agents/openclaw/dependency-review.md, docs/security/openclaw-2026.7.1-dependency-review.md, and docs/security/sandbox-base-2026-07-25-dependency-review.md; their content is unchanged from the exact head where npm run docs passed. The final doctor-boundary test passed 1/1, the load-timed-out setup test passed 1/1 in isolation, and normal pre-commit and commit-msg hooks passed. The final test-only hardening requires no additional documentation.
  • Agent: Codex Desktop

Dependency Review

Concern Verdict Evidence
brace-expansion@5.0.9 PASS Exact registry archive, SRI, corrected Node engine, source range, and deterministic lock/tree boundaries verified.
fast-uri@3.1.5 WARNING Full source range and exact BSD-3-Clause no-dependency archive verified; registry signature is valid, but the archive has no registry attestation.
undici@8.10.0 WARNING Exact MIT no-dependency archive, signatures, SLSA provenance, and source ranges verified. Upstream release CI had one flaky Node 24 test; 1,502 tests and the Node 22, types, lint, fuzz, release, and Scorecard lanes passed. NemoClaw's exact runtime tests and audit provide compensating proof.
ip-address@10.3.1 WARNING Full non-shallow v10.2.0..v10.3.1 range, exact MIT no-dependency archive, two registry signatures, SLSA provenance, content-identical source build, and 3,571 upstream tests verified. The annotated tag is unsigned.
Trusted lock transition PASS PR #8165 merged the governance-approved transition into main. The OpenClaw lock 759b31779f40867f35f15065b582eb1d3efb8fddb1fe43c207507c905fa2a421 and mcporter lock 962dee34f6b0a493521d1619d1cf030e2630cbdfce8bf0598217202f57078793 are now each the sole trusted lockSha256; temporary successor fields were removed.

Licenses remain compatible: MIT, BSD-3-Clause, and the existing graph licenses. No replacement adds a runtime dependency or lifecycle script.

Security Review

Category Verdict Evidence
Secrets and Credentials PASS No secret-bearing values or credential paths changed; gitleaks passed.
Input Validation and Data Sanitization PASS Archive paths, package identities, dependency edges, engines, bundled trees, deterministic tree hashes, and lock hashes reject drift.
Authentication and Authorization PASS No authentication or authorization behavior changed.
Dependencies and Third-Party Libraries WARNING Every affected production graph is outside the disclosed high-severity ranges; upstream signing and release-CI limitations are recorded in the concern ledger.
Error Handling and Logging PASS Failures identify the exact source, replacement, tree, or lock boundary without exposing secrets.
Cryptography and Data Protection PASS SHA-512 artifact integrity and SHA-256 lock binding remain mandatory; registry signatures and available provenance were verified.
Configuration and Security Headers PASS Docker guards and reviewed-audit policy use the exact new locks; users, permissions, ports, and headers are unchanged.
Security Testing PASS Source-shape rejection, physical bundled-tree replacement, deterministic tree integrity, installed-lock verification, registry audit, and signature checks passed.
System Security PASS Managed images remove the high findings without weakening sandbox isolation or image hardening.

DGX Station Hardware Evidence

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

Verification

  • PR description includes a Signed-off-by: line and every pushed commit appears as Verified in GitHub
  • 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
  • Targeted behavior tests pass for the current change set — 105/105 exact-head focused integration tests passed after merging fix(security): bound reviewed lock transition #8165; 57/57 dependency and audit-documentation tests passed again after the final remote/main reconciliation. The package-contract probe also passed after increasing its Mac-local npm pack timeout from 90 to 120 seconds.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result: not applicable to the reviewed dependency and integrity-boundary update; required CI remains authoritative.
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • npm run docs builds without warnings (doc changes only) — 0 errors and 2 existing hidden Fern warnings.
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Additional validation:

  • Exact Node 22.23.1 reviewed npm audit exited 0:
    • reviewed archive graph: 0 high, 0 critical, 13 moderate;
    • OpenClaw locked graph: 0 high, 0 critical, 7 moderate;
    • mcporter locked graph: 0 high, 0 critical, 1 moderate.
  • Registry signature checks completed for both locked graphs; mcporter reports 120/120 signed packages and 14 attestations.
  • npm run build:cli, npm run typecheck:cli, npm run checks:repository, focused documentation tests, and npm run docs passed.
  • Normal pre-commit and commit-message hooks passed, including Biome, hadolint, gitleaks, markdownlint, repository checks, and source/test budgets.
  • Live E2E was not run locally. Required image-build CI provides the platform-specific proof.
  • PR fix(security): bound reviewed lock transition #8165 merged the base-trusted audit transition. This head removes the temporary successor hashes and retains each remediated lock as the sole trusted lockSha256.

Signed-off-by: Julie Yaunches jyaunches@nvidia.com
Signed-off-by: Prekshi Vyas prekshiv@nvidia.com

Summary by CodeRabbit

  • Security

    • Updated bundled and runtime dependencies to patched versions, including brace-expansion, fast-uri, undici, and ip-address.
    • Expanded protection for additional runtime and Discord-related dependencies.
    • Refreshed vulnerability reviews, integrity metadata, provenance records, and audit results.
  • Bug Fixes

    • Improved dependency validation and fail-closed checks for affected package versions.
  • Tests

    • Expanded coverage for patched packages, lockfile integrity, remediation behavior, and supply-chain validation.

@jyaunches jyaunches added dependencies Pull requests that update a dependency file area: security Security controls, permissions, secrets, or hardening labels Aug 3, 2026
@jyaunches jyaunches self-assigned this Aug 3, 2026
@coderabbitai

coderabbitai Bot commented Aug 3, 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

The change updates npm remediation to newer reviewed versions, adds OpenClaw Discord graph patching, refreshes lockfile and package integrity metadata, and expands security documentation and tests.

Changes

OpenClaw dependency remediation

Layer / File(s) Summary
brace-expansion remediation
scripts/patch-bundled-npm-brace-expansion.mts, Dockerfile*, agents/*/Dockerfile.base, docs/security/sandbox-base-2026-07-25-dependency-review.md, test/*brace-expansion*
Updates the fixed package to brace-expansion@5.0.9 and accepts 5.0.8 as a reviewed previous version.
OpenClaw and Discord patching
scripts/lib/openclaw-npm-remediation.mts
Adds undici remediation, ip-address validation, and Discord package-graph patching.
Integrity and review records
Dockerfile*, ci/reviewed-npm-audit.json, agents/openclaw/*, docs/security/openclaw-2026.7.1-dependency-review.md
Refreshes lock hashes, dependency overrides, package metadata, provenance records, and remediation boundaries.
Validation coverage
test/openclaw-npm-remediation.test.ts, test/openclaw-locked-install.test.ts, test/openclaw-dependency-review.test.ts, test/mcporter-supply-chain.test.ts
Verifies updated versions, integrity values, package graphs, Discord patching, and rejection of unreviewed graphs.

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

Possibly related PRs

Suggested labels: integration: openclaw, bug-fix

Suggested reviewers: cv, senthilr-nv

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the PR's primary change: remediating security audit gaps in managed runtimes.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@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 `@scripts/patch-bundled-npm-brace-expansion.mts`:
- Around line 28-32: Update inspectBundledNpmBraceExpansion to accept
brace-expansion version 5.0.8 as a valid replaceable input, while retaining
5.0.9 as the only replacement output. Extend the associated tests to cover the
5.0.8-to-5.0.9 transition.
🪄 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: 277e9169-fef3-4860-8eff-967321502a43

📥 Commits

Reviewing files that changed from the base of the PR and between c63e7eb and 0e191e7.

⛔ Files ignored due to path filters (1)
  • agents/openclaw/openclaw-runtime/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (12)
  • Dockerfile
  • Dockerfile.base
  • agents/hermes/Dockerfile.base
  • agents/langchain-deepagents-code/Dockerfile.base
  • ci/reviewed-npm-audit.json
  • docs/security/openclaw-2026.7.1-dependency-review.md
  • docs/security/sandbox-base-2026-07-25-dependency-review.md
  • scripts/lib/openclaw-npm-remediation.mts
  • scripts/patch-bundled-npm-brace-expansion.mts
  • test/bundled-npm-brace-expansion-dockerfile-contract.test.ts
  • test/openclaw-locked-install.test.ts
  • test/openclaw-npm-remediation.test.ts

Comment thread scripts/patch-bundled-npm-brace-expansion.mts
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings reported

Advisor assessment: No blocking advisor findings reported
Next action: No advisor follow-up needed.
Findings: 0 blockers · 0 warnings · 0 suggestions

Model lanes

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

Second-opinion terminology and E2E selections are advisory. They do not change the primary assessment or E2E / PR Gate.

2 semantic terminology decisions

Terminology decisions are advisory. They affect the assessment only when a separate finding identifies concrete semantic impact.

  • established — remediated package tree at docs/security/openclaw-2026.7.1-dependency-review.md:50: Keep this established term for the validated replacement tree.
  • justified — reviewed dependency remediation at docs/security/openclaw-2026.7.1-dependency-review.md:24: Keep the modifier because it identifies the review boundary.

E2E guidance

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

Recommended E2E: cloud-inference, cloud-onboard, full-e2e, hermes-e2e, hermes-inference-switch, security-posture, ubuntu-repo-cloud-langchain-deepagents-code

Workflow run details

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

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

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

Approved. Verified brace-expansion 5.0.9 across the OpenClaw locked runtime and npm-private copy used by OpenClaw, Hermes, and Deep Agents Code. The exact registry SRI and lock guards match, the 5.0.8-to-5.0.9 transition is covered, focused tests pass (45/45), and the CodeRabbit finding is resolved. No blocking security findings; remaining CI must complete successfully.

@senthilr-nv

Copy link
Copy Markdown
Collaborator

Follow-up: the managed-image production remediation looks correct, but this is not merge-ready yet. reviewed-npm-audit fails because trusted base policy expects OpenClaw lock SHA 82489f62..., while this PR correctly produces fdbee91a.... Please update the supported audit/control-plane path so the new reviewed lock can be validated. Also, if the intended scope is literally all repository copies, root package-lock.json still contains brace-expansion 5.0.5, 5.0.6, and 2.1.0; the current PR covers the shipped image/runtime copies only.

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

Blocking until the requested remediation is complete. The managed-image copies are updated, but root package-lock.json still resolves affected brace-expansion 5.0.5, 5.0.6, and 2.1.0 instead of the fixed 5.0.9/2.1.4 boundaries. The required reviewed-npm-audit check also fails because the trusted base expects the previous OpenClaw lock SHA. Please resolve both scope and audit-gate issues before merge.

Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
jyaunches added a commit that referenced this pull request Aug 3, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Allow the trusted reviewed npm audit to recognize an explicitly reviewed
lock transition.
This lets the current OpenClaw runtime lock and the pending
`brace-expansion@5.0.9` lock pass the same base-trusted policy without
accepting any unreviewed lock bytes.

## Related Issue

Prerequisite for #8156.

## Changes

- Advance the reviewed npm audit configuration to schema 3 and replace
each single lock digest with a nonempty, unique list of reviewed
digests.
- Select the exact target lock digest only when it appears in that
trusted list, then pass the selected digest through the existing strict
source-lock and installed-package verification.
- Temporarily list both the current and pending OpenClaw runtime lock
digests; keep the mcporter graph restricted to its current digest.
- Update focused contracts to cover accepted and rejected transition
locks and the shared OpenClaw audit authority.

## 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: This changes an internal
base-trusted CI audit policy and no supported user-facing behavior.
- [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: The exact-head review
confirmed the trusted-base boundary remains intact, unlisted lock bytes
fail closed, and both existing strict lock verifiers receive one exact
selected digest.
- [ ] 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: `no-docs-needed`
- Evidence: The schema transition is internal CI policy and does not
change a supported API, CLI, user configuration, workflow, default, or
user-facing error.
- Agent: Codex Desktop
<!-- docs-review-head-sha: e7d2be9 -->
<!-- docs-review-agents-blob-sha: 3dd7c24 -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit:
- Station profile/scenario:
- Result:
- Supporting evidence:

## 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:
`vitest` focused integration tests passed, 22/22.
- [ ] 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 this
narrow audit-control change.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] 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)

Additional validation:

- `npm run source-shape:check` passed.
- `npm run build:cli` and `npm run typecheck` passed.
- Biome, test title, and Vitest project membership checks passed.
- Normal pre-commit and commit-message hooks passed.

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


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

## Summary by CodeRabbit

* **Security**
* Improved dependency audit verification to support multiple approved
lockfile revisions.
* Added stricter validation to detect unapproved or mismatched
dependency lockfiles before and after installation.
* Enhanced error reporting to clearly identify expected and actual
lockfile checksums.

* **Tests**
* Expanded coverage for approved lockfile selection and checksum
mismatch scenarios.

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

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

cv commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Commit SHA 1e30bc1a4 still has two blocking issues.

  1. The committed OpenClaw runtime lock records brace-expansion@5.0.9 with engines.node = "18 || 20 || >=22".
    The published 5.0.9 package uses 20 || >=22.
    Correcting that exact entry changes the runtime lock SHA-256 from fdbee91a3f3a0222ec2e8e34864d09dfcff4711e86ac6bfa4d475af0593acd51 to 847f68ac46f18d17efcd47dd3d8a5944b9dbcd205bc4d1e821ff82aa543eec20.
    The Docker guards, audit configuration, remediation validation, documentation, and tests must use the corrected artifact identity.

  2. The latest commit adds root package-lock.json remediation and root-lock tests.
    The later maintainer direction on fix(security): upgrade vulnerable production dependencies #8126 assigns the root production-lock update to fix(security): upgrade vulnerable production dependencies #8126 and trusted root-audit enforcement to a separate follow-up: fix(security): upgrade vulnerable production dependencies #8126 (comment).
    Please keep this PR scoped to the managed-image and OpenClaw runtime remediation, and remove the overlapping root-lock changes.

PR #8157 currently authorizes the stale fdbee91a... digest and its reviewed-npm-audit check fails on GHSA-rgw5-rvv9-x895 in the base lock.
That exposes a circular gate: the transition policy PR audits the vulnerable base lock, while this PR cannot introduce the corrected lock until the policy is in the base SHA.
Do not bypass or waive that failed security check.
The trusted-policy bootstrap path needs explicit repository-governance direction before either PR can merge.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
@ericksoa

ericksoa commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Addressed at exact head 5a8f3f85aac41c9564ecde0a68c0473c0db7da05.

  • OpenClaw now uses the published brace-expansion@5.0.9 engine (20 || >=22), fast-uri@3.1.5, undici@8.10.0, and ip-address@10.3.1. The last item closes GHSA-mwp4-54f8-5fhr, which was published after the original review comment.
  • Discord's direct and bundled undici@8.5.0 copies are replaced as well; the manifest, shrinkwrap, bundledDependencies, and physical package tree are all checked fail-closed.
  • Final committed lock SHA-256 values are OpenClaw 759b31779f40867f35f15065b582eb1d3efb8fddb1fe43c207507c905fa2a421 and mcporter 962dee34f6b0a493521d1619d1cf030e2630cbdfce8bf0598217202f57078793.
  • Canonical remediated tree digests are OpenClaw sha512-ugtX/U1jNS+ZlZqEXa+Y9nN+wlhPxeZJrx6tJZFLcGspWPFhsC5qOjTkzBbOda9lEZF6TWKt6wU9m9p2tidqdQ== and Discord sha512-w+F8FrRl0wPd0EN2RnLyu6yfixel7BT8Iex4wLLQDvfIac8rLhuksNpFU4uZa8W9wXgh47hguq0F9NSN0BZfOQ==.
  • PR fix(security): upgrade vulnerable production dependencies #8126 is merged into this branch, so San Dang's and Apurv Kumaria's original commits and authorship are retained.
  • PR fix(security): bound reviewed lock transition #8165 has landed on main; this branch now records each final lock as the sole trusted lockSha256. No audit exception, bootstrap bypass, or waiver was added.

I did not use the proposed OpenClaw lock hash 2631dd...: reproducing it required changing the balanced-match@4.0.4 engine metadata while leaving the brace-expansion@5.0.9 engine stale. The final lock above preserves balanced-match's published 18 || 20 || >=22 metadata and applies 20 || >=22 only to brace-expansion.

Validation on the reconciled head:

  • exact Node 22.23.1/npm 10.9.4 reviewed audit exited 0: archive graph 0 high/critical (13 moderate), OpenClaw 0 high/critical (7 moderate), mcporter 0 high/critical (1 moderate), with registry signature verification;
  • 105/105 focused integration tests passed, followed by 57/57 dependency/audit-documentation tests after the final remote/main reconciliation;
  • npm run validate:pr, npm run docs, the package-contract probe, and the independent documentation review passed.

Thanks for catching the engine metadata and the moving advisory set.

@ericksoa
ericksoa requested review from cv and senthilr-nv August 3, 2026 22:54

@apurvvkumaria apurvvkumaria left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-reviewed the expanded dependency-remediation revision at head 5a8f3f8. Registry URLs and SHA-512 identities are pinned; archive extraction rejects traversal, duplicate, symlink, and special-file entries; package identities, engines, and dependency edges are checked; replacement is transactional and revalidated. The trusted-base schema-2 audit transition permits only the old and new exact lock digests, so this branch does not self-authorize its own audit evidence. Focused changed-area validation passed 57 tests. Current CI is still running; the visible coordination failure belongs to a cancelled superseded attempt. Any recurrence of the fake npm-pack fixture failure is nonblocking test-infrastructure work, not supported-product breakage. No blocking correctness, security, compatibility, or regression defect found.

Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
@ericksoa

ericksoa commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

CI follow-up: the target-tree audit result above is reproducible, but the authoritative PR job correctly runs the remediator and exception registry from the base SHA. That trusted-base run still materializes undici@8.5.0 in the archive graph and blocks GHSA-4cwx-7wf7-3272 (1 high); I am therefore not treating the PR as green.

The repository-governed bridge is #8172 at exact head 4d2d5709aba270dfd5f700883f0f207382721ee2. It adds seven exact, expiring transition entries for the currently deployed graphs, fails closed on unused or mismatched entries, and requires #8156 to remove them when the already authorized successor locks and updated archive remediator land. I reviewed that exact head and its focused policy/docs/MCP contract suite passes 50/50.

#8156 remains blocked on that base-trusted transition landing. After it lands, this branch must merge the new main, retain the empty exception registry from #8156, rerun the exact-head trusted audit, and only then request final review.

@jyaunches
jyaunches dismissed senthilr-nv’s stale review August 3, 2026 23:08

Dismissed as stale after the requested scope and trusted-audit changes landed. The root production lock now uses brace-expansion 5.0.9 and 2.1.4; the remaining 5.0.6 entry is dev-only, consistent with the later npm audit --omit=dev scope recorded on #8126. Merged #8165 supplies the base-owned schema-2 lock authority, and the current trusted run accepts both final locks: OpenClaw and mcporter locked graphs are clean. The remaining reviewed archive-graph failure is a separate trusted-base bootstrap issue, not the previous lock-SHA mismatch; this dismissal does not waive that CI check.

@apurvvkumaria apurvvkumaria left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-reviewed the test-hardening delta at head ced321f. It makes the trusted locked-graph contract exact, applies legacy-field rejection to every graph, and independently exercises the OpenClaw core and Discord shrinkwrap and bundled-undici validation paths. The delta changes tests only and directly closes the current automated-review coverage gaps; it does not alter runtime behavior. No blocking correctness, security, compatibility, or regression defect found. CI remains authoritative while the new run completes.

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

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

Approved at verified head ced321f. The independent Undici shrinkwrap and bundled-package rejection paths now have direct coverage, and the reviewed lock authority rejects extra or duplicate graphs while checking every entry. Focused integration tests pass 47/47, npm run validate:pr passes, npm run docs passes, the documentation writer receipt matches this head, and no blocking security finding remains. The current DGX Station revoked-host-key installer test failure is outside this PR's changed paths; required CI remains authoritative for merge.

@apurvvkumaria
apurvvkumaria enabled auto-merge (squash) August 3, 2026 23:17
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
@cv
cv disabled auto-merge August 4, 2026 00:32
@cv
cv merged commit 15069f9 into NVIDIA:main Aug 4, 2026
62 of 76 checks passed
prekshivyas added a commit that referenced this pull request Aug 4, 2026
<!-- markdownlint-disable MD041 -->
## Summary

The sandbox serving watchdog previously recovered an alive but unusable
OpenClaw gateway only after an uninterrupted sequence of
connection-refused health probes. A listener can also become unusable
when a socket accepts and stalls, accepts and drops the connection, or
answers `/health` with an error status. The watchdog treated each of
those results as evidence that a listener existed. It rearmed without a
log entry or recovery, so the gateway remained unable to serve. The
watchdog now uses the same response requirement as the boot-time
readiness check: `/health` must answer `200` or `401`. It recovers each
not-serving result. It still does not act before a gateway has served or
when the probe cannot run.

## Related Issue

Fixes #7377

## Changes

- `scripts/nemoclaw-start.sh`: added `gateway_watchdog_probe_gateway`,
which classifies a health probe as serving (`/health` answered `200` or
`401`), not serving (refused, timed out, reset, empty reply, or an HTTP
error status), or inconclusive (the probe itself could not run). The
watchdog now counts every not-serving outcome toward one threshold
instead of requiring consecutive `curl` exit 7 results.
- `scripts/nemoclaw-start.sh`: inconclusive probes hold the watchdog's
armed state and streak rather than rearming it, so a missing or failing
`curl` can never escalate into a kill loop against a healthy gateway.
The watchdog also exits early with a message when `curl` is absent.
- `scripts/nemoclaw-start.sh`: each failed probe now logs the cause it
observed, such as `connection refused`, `probe timeout`, `connection
reset`, or `HTTP 503`. An operator can distinguish a refused port from a
listener that accepts connections but cannot serve.
- `docs/reference/troubleshooting.mdx`: documented the serving
definition, the wedge symptoms users see (`gateway_transport_error`,
`1006 abnormal closure`, container `running` with no restarts, replies
still arriving over the embedded fallback route), and what a `health
probe inconclusive` line means.
- `test/gateway-serving-watchdog.test.ts` (new) and
`test/nemoclaw-start-gateway.test-helpers.ts` (new): the watchdog suite
moved to its own file with the shared shell-harness helpers extracted,
keeping both files inside `ci/test-file-size-budget.json`.
- `test/gateway-serving-watchdog.test.ts`: the PID-swap regression now
emits HTTP `200` on the predecessor's successful probe, so it proves
that the replacement gateway does not inherit the predecessor's armed
state.

The arming rule (never act until the gateway has served at least once),
the PID-identity and cmdline checks before signalling, the
respawn-marker handshake, and the `NEMOCLAW_GATEWAY_WATCHDOG_*`
environment variable names are all unchanged.

### Why the reported sandboxes never recovered

The old counter required four *consecutive* connection-refused probes. A
wedge that alternated between refused and any other failure mode reset
that counter on every other probe, which is why the reporter's manual
`curl` showed `(7)` while the watchdog had still never escalated. That
path is now covered by a regression test.

The non-refused outcomes were previously delegated to the Docker
`HEALTHCHECK`. Nothing restarts an unhealthy OpenShell sandbox
container, which matches the reported "container restart count: 0" with
the gateway wedged indefinitely.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [x] 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:
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [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: Codex Desktop
exact-head security review PASS for head
`e0c4d7ef9efdadfd19ec494e19edfcad8947d76a` against base
`e9fb170a2e3e4c4dcfa19e398232f71b8f2bace6`; all nine categories pass
with no findings. The serving prerequisite, strict 200/401 classifier,
inconclusive fail-safe, PID start-identity check, gateway command-line
check, and signal-time identity revalidation remain intact.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
no check is accepted, skipped, or waived. The current sandbox-image and
reviewed npm-audit failures are hard blockers from dependency advisories
on the current base and are being remediated by #8156; this PR must
rerun and pass those gates before merge.

## Documentation Writer Review

- [x] Documentation writer subagent reviewed the completed changes
- Result: `docs-updated`
- Evidence: `docs/reference/troubleshooting.mdx`; verified the watchdog
behavior, user-visible impact, recovery instructions, and lifecycle
limits against the exact implementation and focused tests. Documentation
build passed with 0 errors and 2 baseline Fern warnings.
- Agent: Codex Desktop
<!-- docs-review-head-sha: e0c4d7e -->
<!-- docs-review-agents-blob-sha: 3dd7c24 -->

## 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 — `npm run validate:pr` passed at exact head
`e0c4d7ef9efdadfd19ec494e19edfcad8947d76a`; the final maintainer commit
also passed normal pre-commit and commit-msg hooks.
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result: `npx vitest run
--project integration test/gateway-serving-watchdog.test.ts` → 18
passed. The combined watchdog and gateway-health run passed 41 of 42
tests; the sole failure is the neighboring lock-cleanup fixture invoking
GNU `timeout`, which is absent on this macOS host. CI remains
authoritative for the full Linux run.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — not claimed locally. Exact-head `npm run
validate:pr`, CLI build, plugin build, focused tests, `git diff
--check`, and `npm run docs` passed; required GitHub CI and E2E must
pass before merge.
- [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) —
completed with 0 errors and 2 pre-existing non-blocking Fern warnings
(local Fern authentication and light-mode accent contrast).
- [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)
— no new doc pages.

### How the fix was verified against the reported failure

Each wedge signature was driven through the real watchdog loop with a
scripted probe sequence and a real background process standing in for
the gateway. Before the change, only the pure-refused sequence produced
any output at all; timeout, reset, empty-reply, HTTP-error, and
alternating sequences produced complete silence and no recovery. After
the change, each not-serving sequence reaches the recovery threshold. A
gateway that has not served, a `401` response, a recovering gateway, and
an unrunnable probe leave the gateway process running.

---

Signed-off-by: Tony Luo <xialuo@nvidia.com>


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

* **Bug Fixes**
* Improved gateway health monitoring to distinguish serving, failed, and
inconclusive checks.
* Recognizes successful and authentication responses, connection
failures, timeouts, resets, empty replies, and HTTP errors.
* Restarts unresponsive gateways after the configured
consecutive-failure threshold while avoiding action on inconclusive
checks.
* Validates the gateway process before triggering a restart and applies
safe defaults for invalid settings.

* **Documentation**
* Expanded troubleshooting guidance for health checks, transport errors,
fallback behavior, and recovery limitations.

* **Tests**
* Added comprehensive coverage for monitoring, recovery thresholds,
status handling, process validation, and restart races.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Tony Luo <xialuo@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Co-authored-by: Prekshi Vyas <prekshiv@nvidia.com>
prekshivyas added a commit that referenced this pull request Aug 4, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Keep the reviewed npm-audit provenance tests fail-closed after #8156
merged the clean root, OpenClaw, and mcporter dependency graphs.

Derive the expected mcporter audit status and advisory list from the
parsed checked-in exception policy instead of hard-coding one policy
state. Keep generic audit tests independent from that production file
while separately asserting that the checked-in registry remains empty.

## Related Issue

Post-remediation contract follow-up to #8156. The separate MCP discovery
runtime remediation remains owned by #8177 and #8180.

## Changes

- Derive mcporter base-provenance fixtures and mocked audit results from
the checked-in exception policy.
- Keep the generic empty-policy fixture immutable and independently
assert that `ci/npm-audit-exceptions.json` contains no entries.
- Remove all seven temporary transition exceptions and all duplicated
MCP dependency changes from this PR now that #8156 is on `main` and
#8180 owns the MCP fix.

## 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: the effective diff changes
test fixtures and assertions only; no supported API, CLI, configuration,
workflow, default, error, or user-facing behavior changes.
- [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: the exact effective
diff only derives expected audit provenance from the parsed checked-in
policy and retains fail-closed mismatch coverage. The production policy
remains empty and no exception or enforcement behavior changes.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue: no exception is
requested; exact-head CI is authoritative.

## Documentation Writer Review

- [x] Documentation writer subagent reviewed the completed changes
- Result: `no-docs-needed`
- Evidence: The independent writer reviewed the two-file effective diff
and confirmed that it changes test fixtures and assertions only. The
checked-in exception registry remains empty. The focused provenance and
reviewed-audit suites pass 84/84, and `git diff --check` passes.
- Agent: Codex Desktop, independent documentation-writer subagent
<!-- docs-review-head-sha: 76ef46a -->
<!-- docs-review-agents-blob-sha:
3dd7c24 -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit: Not applicable; DGX Station preparation is unchanged.
- Station profile/scenario: Not applicable.
- Result: Not applicable.
- Supporting evidence: Not applicable.

## Verification

- [x] PR description includes a `Signed-off-by:` line and every pushed
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 — 84/84
tests passed across the reviewed-audit and OpenClaw integrity-pin
suites.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — not applicable to this two-test-file
contract hardening; required CI remains authoritative.
- [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) — not
applicable; no documentation changes remain in the effective diff.
- [x] Doc pages follow the style guide (doc changes only) — not
applicable.
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

Additional evidence:

- Current base: merged #8156 commit
`15069f9262d52b74d8916b7a0d7969a9ae4d3ee1`.
- Effective diff: `test/openclaw-integrity-pin-suite.ts` and
`test/reviewed-npm-audit.test.ts` only.
- Checked-in `ci/npm-audit-exceptions.json`: schema version 1 with an
empty `exceptions` array.
- No MCP manifest, lock, dependency-review, audit exception, or runtime
file changes remain in this PR.

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

---------

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: J. Yaunches <jmyaunch@gmail.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Julie Yaunches <jyaunches@nvidia.com>
senthilr-nv added a commit that referenced this pull request Aug 4, 2026
## Summary

Starting a stopped Shields-protected sandbox could leave the Docker
container running while OpenShell remained outside Ready. NemoClaw
waited for image-level Docker health before it restored startup state,
and non-root OpenClaw startup could not inspect optional credential
paths once the state tree was sealed. This change hands a running
container to trusted startup recovery, restores the narrow traversal
permission needed for an empty credentials directory, and then verifies
gateway and host-forward readiness.

## Related Issue

Fixes #8112

## Changes

- Add an internal `runtime-running` recovery boundary for the explicit
Docker lifecycle `start` consumer. Other recovery callers retain the
stricter Docker-health boundary.
- Restore locked startup access before process recovery and final
gateway verification, using the existing Shields mutation lock and a
descriptor-safe state guard.
- Give only an empty sealed `credentials` directory `root:sandbox 0710`;
keep it non-listable and non-writable, and restore `root:root 0700` when
entries exist.
- Preserve sealed gateway-token and auth-profile state during non-root
startup, failing closed when required state is missing or unsafe.
- Add CLI, shell, state-guard, documentation, and live E2E regression
coverage for OpenClaw and Hermes with Shields enabled and disabled.
- Document the two-stage start sequence and the sealed credential-access
boundary.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [x] 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:
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [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: NemoClaw security
review passed all nine categories with no findings. The helper is
descriptor-safe, no-follow, same-device, lock-protected, bounded, and
fail-closed. Only an empty sealed directory receives group search
permission; populated storage stays root-only. The live test confirmed
traversal is allowed while listing and writing remain denied.
- [x] Non-success, skipped, or missing CI check accepted by maintainer —
`reviewed-npm-audit` and its dependent `checks`/E2E coordination
results; approval:
#8146 (comment);
follow-up: #8116 and #8156.

## Documentation Writer Review

- [x] Documentation writer subagent reviewed the completed changes
- Result: `docs-updated`
- Evidence: `docs/manage-sandboxes/run-sandboxes.mdx`,
`docs/security/best-practices.mdx`, and generated OpenClaw, Hermes, and
Deep Agents guide variants; variant sync, 9 focused documentation tests,
and the full docs build passed with 0 errors and 2 existing warnings.
- Agent: Codex Desktop
<!-- docs-review-head-sha: e9735c3 -->
<!-- docs-review-agents-blob-sha: 3dd7c24 -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit:
- Station profile/scenario:
- Result:
- Supporting evidence:

## 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 — after refreshing from current `main`,
seven focused files passed 208 tests with one skip; state-guard,
documentation, shell syntax, Python compilation, type-check, and
repository checks passed.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result:
- [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)
- [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)

Live Brev Linux validation on `nemoclaw-launchable-433-aug03` for commit
`b5db426864a19754db7ee737113a82663df24163`:

- Compiled the candidate CLI and matched the installed startup script to
the candidate source.
- Stopped and restarted `issue-8112-openclaw`; startup restored sandbox
state before gateway and host-forward verification and exited
successfully.
- OpenShell reported Ready, Docker reported running and healthy, and the
OpenClaw gateway was running.
- The empty credentials directory was `root:sandbox 0710`; the sandbox
user could traverse a known path but could not list or write the
directory.
- A populated disposable credentials directory was restored to
`root:root 0700`, with sandbox metadata access denied.

---
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>

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

## Summary by CodeRabbit

* **Bug Fixes**
* Improved sandbox recovery after container restarts, including
restoration of managed startup processes.
* Sandboxes can now become ready as soon as the runtime is running,
without waiting for Docker health checks to complete.
* Improved recovery validation for OpenClaw, Hermes, and Shields
configurations.

* **Documentation**
* Updated sandbox startup documentation to describe process recovery and
runtime readiness checks.

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

---------

Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Co-authored-by: Julie Yaunches <jyaunches@nvidia.com>
apurvvkumaria added a commit that referenced this pull request Aug 4, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Prepares the canonical v0.0.102 release documentation from the current
release-labeled scope.
The change adds a dated changelog for all 38 user-facing shipping PRs
and corrects the OpenClaw agent command reference for the behavior
delivered by #8191.

## Changes

- Add `docs/changelog/2026-08-04.mdx` with the v0.0.102 release summary,
detailed behavior changes, support boundaries, security evidence links,
and links to durable documentation.
- Update `docs/reference/commands.mdx` to describe non-JSON OpenClaw
output capture, its combined limit, marker handling, stream suppression,
recovery guidance, and exit behavior.
- [#8167](#8167) ->
`docs/changelog/2026-08-04.mdx`: Records authenticated attachment of
operator-managed llama.cpp servers.
- [#8129](#8129) ->
`docs/changelog/2026-08-04.mdx`: Records the Experimental managed vLLM
profile for two DGX Spark systems.
- [#7983](#7983) ->
`docs/changelog/2026-08-04.mdx`: Records qualification of the May 2026
GB300WS factory image.
- [#8207](#8207) ->
`docs/changelog/2026-08-04.mdx`: Records the qualified DGX Station
driver transaction.
- [#8208](#8208) ->
`docs/changelog/2026-08-04.mdx`: Records mode-bound Express resume
state.
- [#8158](#8158) ->
`docs/changelog/2026-08-04.mdx`: Records recovery of host-global
dual-Station runtime ownership.
- [#8145](#8145) ->
`docs/changelog/2026-08-04.mdx`: Records Windows-host Ollama validation
from Docker Desktop's network context.
- [#8190](#8190) ->
`docs/changelog/2026-08-04.mdx`: Records HTTP model pulls when WSL has
no local Ollama executable.
- [#8195](#8195) ->
`docs/changelog/2026-08-04.mdx`: Records reuse of a healthy
installer-managed CLI.
- [#8053](#8053) ->
`docs/changelog/2026-08-04.mdx`: Records early rejection of incompatible
OpenShell gateway versions.
- [#8098](#8098) ->
`docs/changelog/2026-08-04.mdx`: Records the bounded
package-service-to-standalone gateway recovery transition.
- [#8216](#8216) ->
`docs/changelog/2026-08-04.mdx`: Records the final dashboard port
selected during multi-sandbox onboarding.
- [#8146](#8146) ->
`docs/changelog/2026-08-04.mdx`: Records managed startup-state
restoration for stopped sandboxes.
- [#8092](#8092) ->
`docs/changelog/2026-08-04.mdx`: Records gateway watchdog recovery for
classified not-serving states.
- [#8182](#8182) ->
`docs/changelog/2026-08-04.mdx`: Records consistent managed-recovery
wait configuration.
- [#8040](#8040) ->
`docs/changelog/2026-08-04.mdx`: Records Docker sandbox rollback
authority through late validation.
- [#8130](#8130) ->
`docs/changelog/2026-08-04.mdx`: Records bounded Shields deadline
recovery and durable containment.
- [#8086](#8086) ->
`docs/changelog/2026-08-04.mdx`: Records repair of narrowly validated
permission-only configuration drift.
- [#8122](#8122) ->
`docs/changelog/2026-08-04.mdx`: Records prompt failure and guidance for
corrupt transition locks.
- [#8124](#8124) ->
`docs/changelog/2026-08-04.mdx`: Records policy restoration flags,
previews, and target revalidation.
- [#7886](#7886) ->
`docs/changelog/2026-08-04.mdx`: Records explicit destruction after
pre-delete Shields hardening failures while preserving recovery
authority.
- [#7901](#7901) ->
`docs/changelog/2026-08-04.mdx`: Records multi-port uninstall behavior
and shared-resource preservation.
- [#7984](#7984) ->
`docs/changelog/2026-08-04.mdx`: Records one classified transient remote
MCP startup retry.
- [#7954](#7954) ->
`docs/changelog/2026-08-04.mdx`: Records bounded hosted-inference probe
replies.
- [#7574](#7574) ->
`docs/changelog/2026-08-04.mdx`: Records preservation of validated
reasoning capabilities through onboarding.
- [#8089](#8089) ->
`docs/changelog/2026-08-04.mdx`: Records proxy routing for Hermes
WhatsApp pairing and media traffic.
- [#7682](#7682) ->
`docs/changelog/2026-08-04.mdx`: Records native Hermes session deletion
and identifier validation.
- [#8150](#8150) ->
`docs/changelog/2026-08-04.mdx`: Records corporate CA trust for
LangChain Deep Agents Code image builds.
- [#8156](#8156) ->
`docs/changelog/2026-08-04.mdx`: Records reviewed managed runtime
dependency remediation.
- [#8180](#8180) ->
`docs/changelog/2026-08-04.mdx`: Records reviewed MCP discovery runtime
dependency updates.
- [#8196](#8196) ->
`docs/changelog/2026-08-04.mdx`: Records private npm dependency
remediation across managed images.
- [#8203](#8203) ->
`docs/changelog/2026-08-04.mdx`: Records reviewed Hermes and LangChain
Deep Agents Code Python dependency updates.
- [#8125](#8125) ->
`docs/changelog/2026-08-04.mdx`: Records bounded diagnostics for invalid
enumerated CLI values.
- [#8193](#8193) ->
`docs/changelog/2026-08-04.mdx`: Records bounded diagnostics for
unresolved sandbox base images.
- [#8118](#8118) ->
`docs/changelog/2026-08-04.mdx`: Records bounded diagnostics for changed
gateway authority.
- [#8191](#8191) ->
`docs/changelog/2026-08-04.mdx`, `docs/reference/commands.mdx`: Records
output capture, marker handling, recovery guidance, and exit behavior
for non-JSON OpenClaw agent commands.
- [#8187](#8187) ->
`docs/changelog/2026-08-04.mdx`: Records the aligned
interactive-installation start across supported agents.
- [#8153](#8153) ->
`docs/changelog/2026-08-04.mdx`: Records current product capabilities
and support boundaries.

## 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
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: This documentation-only
release preparation does not change executable behavior. Existing
changelog and published-route tests pass.
- [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: Independently reviewed `docs/changelog/2026-08-04.mdx` and
`docs/reference/commands.mdx` at commit `b89913780`. All 38 user-facing
v0.0.102 PRs are represented, #8191 behavior matches the implementation,
and the writing rules, documentation style, controlled terminology,
route structure, and skip policy pass review. Targeted tests pass 36/36
and the documentation build completes with 0 errors.
- Agent: Codex Desktop independent documentation writer
<!-- docs-review-head-sha: b899137 -->
<!-- docs-review-agents-blob-sha: 3dd7c24 -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit: Not applicable
- 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 — `npx vitest run --project integration
test/changelog-docs.test.ts test/check-docs-published-routes.test.ts`
passed 36/36.
- [x] Applicable broad gate passed — not applicable to
documentation-only changes; `npm run docs` completed successfully with 0
errors.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only) —
completed with 0 errors and 2 existing Fern warnings.
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [x] New doc pages include SPDX header and frontmatter (new pages only)
— the native dated changelog uses the required parser-safe MDX SPDX
comment and intentionally has no frontmatter.

---
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>


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

## Summary by CodeRabbit

- **Documentation**
- Added release notes for v0.0.102, covering authentication, hardware
setup, WSL, installer recovery, sandbox resilience, policy management,
inference reliability, CLI improvements, and unified quickstarts.
- Updated command documentation to explain how non-JSON agent output is
collected, replayed, and reported.

- **Bug Fixes**
- Improved command-output recovery guidance when output exceeds limits
or contains unsupported fallback markers.
- Preserved accurate command exit-status reporting after output
processing.

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

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

Labels

area: security Security controls, permissions, secrets, or hardening dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants