Skip to content

perf(e2e): parallelize plugin EXDEV coverage#7449

Merged
apurvvkumaria merged 5 commits into
mainfrom
codex/e2e-exdev-parallel-lanes-refresh
Jul 24, 2026
Merged

perf(e2e): parallelize plugin EXDEV coverage#7449
apurvvkumaria merged 5 commits into
mainfrom
codex/e2e-exdev-parallel-lanes-refresh

Conversation

@apurvvkumaria

@apurvvkumaria apurvvkumaria commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

Summary

Runs the exact v0.0.71 OpenClaw plugin baseline and the current restart/recreate/rebuild EXDEV lifecycle in independent jobs, reducing the critical path without dropping regression assertions. This clean current-main branch supersedes draft #7243 because repository rules disallow rewriting its stale, pre-squash history.

Related Issue

Part of #7140. Supersedes #7243.

Changes

  • Split the combined live test into independently selectable release-baseline and current-lifecycle cases.
  • Add independent scheduled and regression-workflow jobs with distinct sandbox names, target IDs, artifact roots, and bounded timeouts.
  • Preserve the historical builder digest for the release fixture while rewriting the cloned fixture to the current reviewed builder digest for current-lifecycle validation.
  • Preserve the existing openclaw-plugin-runtime-exdev target for current lifecycle coverage and the existing regression dispatch selector.
  • Extend workflow boundary tests to protect both jobs, selectors, credential revocation, immutable action pins, artifact uploads, and result reporting.

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: This restructures internal E2E coverage; plugin behavior, public commands, and the external regression selector are unchanged. Existing fixture security and plugin-install documentation remains accurate.
  • 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: Workflow boundary tests require secret-free runtime steps, immediate Docker credential revocation, immutable action pins, read-only permissions, independent sandbox/artifact identities, and reviewed artifact upload actions for both lanes.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Documentation Writer Review

  • Documentation writer subagent reviewed the completed changes
  • Result: no-docs-needed
  • Evidence: Existing docs/security/e2e-weather-plugin-fixture-dependency-review.md, docs/deployment/install-openclaw-plugins.mdx, and test/e2e/README.md remain behaviorally accurate; this revision changes only internal E2E lane scheduling, selector wiring, workflow contracts, and test-fixture cleanup.
  • Agent: Codex documentation writer subagent

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

  • PR description includes a Signed-off-by: line and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run check:diff passed when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — The current-head EXDEV workflow boundary passed 2 tests, the regression workflow boundary passed 5 tests, semantic validation passed 124 tests across 82 files, and CLI build/typecheck plus the pre-push gate passed.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result: Targeted workflow, semantic, type, and push gates passed; GitHub CI is authoritative for the repository-wide gate.
  • 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)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

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

Summary by CodeRabbit

  • Tests
    • Expanded end-to-end and regression coverage for OpenClaw custom-plugin EXDEV scenarios across release-baseline and current-lifecycle runs.
    • Strengthened runtime assertions for pinned plugin loading, restart/recreate/rebuild, and cross-device dependency replacement.
    • Updated secret-free workflow boundary checks, including multi-job contract validation and the revised runtime proof budget.
  • Chores
    • Added a scheduled release-baseline E2E run with release-pinned fixtures, dedicated artifacts, Docker auth handling/cleanup, and PR reporting integration.
    • Reduced EXDEV job timeouts and narrowed execution using explicit lifecycle selectors for faster feedback.

Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
@apurvvkumaria apurvvkumaria added integration: openclaw OpenClaw integration behavior area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance v0.0.93 labels Jul 23, 2026
@copy-pr-bot

copy-pr-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@apurvvkumaria apurvvkumaria self-assigned this Jul 23, 2026
@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The PR separates OpenClaw EXDEV coverage into release-baseline and current-lifecycle workflow jobs, refactors the live test around selectors and artifact assertions, and validates both jobs through contract-driven workflow checks.

Changes

OpenClaw EXDEV validation

Layer / File(s) Summary
Live test variants and artifact reporting
test/e2e/live/openclaw-plugin-runtime-exdev.test.ts
Pinned builder images, shared setup helpers, selector-specific tests, cleanup handling, and release/lifecycle artifact assertions are added.
Workflow job wiring
.github/workflows/e2e.yaml, .github/workflows/regression-e2e.yaml
Release-baseline jobs are added, current-lifecycle selectors and timeout changes are applied, artifacts are uploaded, and release results are added to reporting.
Multi-job workflow contracts
tools/e2e/openclaw-plugin-runtime-exdev-workflow-boundary.mts
Validation becomes contract-driven for both jobs, covering permissions, environment, pinned actions, Docker preparation, selectors, credentials, ordering, and uploads.
Workflow regression assertions
test/regression-e2e-workflow.test.ts, test/e2e/support/openclaw-plugin-runtime-exdev-workflow-boundary.test.ts
Contract tests validate release-job wiring, secret-free commands, selectors, permissions, and updated timeout budgets.

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

Sequence Diagram(s)

sequenceDiagram
  participant Scheduler
  participant WorkflowJob
  participant Vitest
  participant ArtifactUpload
  Scheduler->>WorkflowJob: start release-baseline or current-lifecycle job
  WorkflowJob->>Vitest: run selected EXDEV test variant
  Vitest->>ArtifactUpload: upload e2e-artifacts
  WorkflowJob->>Scheduler: report job result
Loading

Possibly related PRs

  • NVIDIA/NemoClaw#7280: Updates the pinned release builder image digest validated by the same workflow-boundary logic.

Suggested labels: area: performance, feature

Suggested reviewers: cv, prekshivyas, cjagwani

🚥 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 is concise and accurately captures the main change: parallelizing EXDEV e2e coverage.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/e2e-exdev-parallel-lanes-refresh

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

@github-code-quality

github-code-quality Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit 52abe0c in the codex/e2e-exdev-para... branch remains at 96%, unchanged from commit b51168d in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit 52abe0c in the codex/e2e-exdev-para... branch remains at 80%, unchanged from commit b51168d in the main branch.

Show a code coverage summary of the most impacted files.
File main b51168d codex/e2e-exdev-para... 52abe0c +/-
src/lib/onboard...ndbox-create.ts 83% 33% -50%
src/lib/onboard...-create-plan.ts 88% 75% -13%
src/lib/onboard...ndbox-create.ts 91% 83% -8%
src/lib/platform.ts 89% 84% -5%
src/lib/state/m...-acquisition.ts 86% 84% -2%
src/lib/state/g...way-registry.ts 95% 94% -1%
src/lib/messagi...nnels/policy.ts 100% 100% 0%
src/lib/sandbox...rce-identity.ts 87% 87% 0%
src/lib/securit...ntial-filter.ts 93% 93% 0%
src/lib/shields/index.ts 71% 72% +1%

Updated July 24, 2026 04:08 UTC

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — Informational

Advisor assessment: Informational / high confidence
Next action: No advisor follow-up needed.
Findings: 0 blockers · 0 warnings · 0 suggestions
Status: No actionable findings remain in the canonical review ledger.

Model lanes

  • GPT-5.6 Terra (primary): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Nemotron 3 Ultra (second opinion): Completed · high confidence · 0 blockers · 3 warnings · 0 suggestions
  • Model comparison: normalized findings differ; normalized E2E selections match; Nemotron reported the same number of blockers, 3 more warnings, the same number of suggestions.

Nemotron output stays in workflow artifacts and does not change the assessment above.

E2E guidance

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

Recommended E2E: cloud-onboard, credential-sanitization, security-posture, openclaw-plugin-runtime-exdev

Workflow run details

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

@cv cv added v0.0.95 and removed v0.0.95 labels Jul 23, 2026
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
@apurvvkumaria
apurvvkumaria marked this pull request as ready for review July 23, 2026 23:20
@apurvvkumaria
apurvvkumaria requested a review from cv July 23, 2026 23:29

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

🧹 Nitpick comments (1)
test/e2e/live/openclaw-plugin-runtime-exdev.test.ts (1)

924-954: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Guard fake.close() so the mock server is always torn down.

If fake.requests() or artifacts.writeJson(...) throws inside this cleanup entry, fake.close() is never awaited, leaking the spawned server child process and its temp dir. Wrap the artifact write in try/finally so termination always runs.

♻️ Proposed fix
   cleanup.add("close EXDEV compatible endpoint mock", async () => {
-    await artifacts.writeJson("fake-openai-compatible-requests.json", fake.requests());
-    await fake.close();
+    try {
+      await artifacts.writeJson("fake-openai-compatible-requests.json", fake.requests());
+    } finally {
+      await fake.close();
+    }
   });
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/e2e/live/openclaw-plugin-runtime-exdev.test.ts` around lines 924 - 954,
Update the cleanup callback registered in startDeploymentFixture so fake.close()
is always awaited. Wrap the fake.requests() artifact write in a try/finally
block, placing fake.close() in the finally section while preserving the existing
request artifact and cleanup labels.
🤖 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.

Nitpick comments:
In `@test/e2e/live/openclaw-plugin-runtime-exdev.test.ts`:
- Around line 924-954: Update the cleanup callback registered in
startDeploymentFixture so fake.close() is always awaited. Wrap the
fake.requests() artifact write in a try/finally block, placing fake.close() in
the finally section while preserving the existing request artifact and cleanup
labels.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 2b86b260-8687-4f07-96bf-8d7a2a3efa7d

📥 Commits

Reviewing files that changed from the base of the PR and between 0670d20 and 59b3ed4.

📒 Files selected for processing (6)
  • .github/workflows/e2e.yaml
  • .github/workflows/regression-e2e.yaml
  • test/e2e/live/openclaw-plugin-runtime-exdev.test.ts
  • test/e2e/support/openclaw-plugin-runtime-exdev-workflow-boundary.test.ts
  • test/regression-e2e-workflow.test.ts
  • tools/e2e/openclaw-plugin-runtime-exdev-workflow-boundary.mts

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

@prekshivyas prekshivyas 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 approval at exact head 46934df7dd7ecb7ab06a323a964a56e25ee20677:

  1. The documentation-writer receipt is stale. The PR still records reviewed head 93e9fe18e; repository policy requires rerunning the documentation-writer review after every head-changing commit and refreshing the hidden receipt metadata. The prior exact-head receipt explicitly reported headShaMatches: false and status: invalid.
  2. Current-head CI and E2E coordination are still in progress. Please let the exact-head gates finish green before approval.

The implementation/security pass found no blocking code issue. Commit 59c0c1b79 correctly makes fake.close() unconditional with try/finally, resolving the cleanup observation. The current merge result passed 21 focused tests and git diff --check; all four commits are GitHub-verified.

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
.github/workflows/e2e.yaml (1)

658-671: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicated env: block across 8 identical steps.

The run: body is shared via the &trusted-hermes-e2e-swap YAML anchor/alias, but the 11-entry env: block for the trusted_hermes_swap step is copy-pasted verbatim into all 8 jobs. Any future change to these env vars (e.g. adding a new trusted-dispatch check) requires updating all 8 sites, risking drift.

Consider promoting the shared env: map to its own top-level anchor (e.g. under a .github/workflows/e2e.yaml YAML anchors section or a reusable block) and aliasing it the same way the run: body already is:

♻️ Example refactor
# Define once, near the first occurrence:
env: &trusted-hermes-e2e-swap-env
  BASH_ENV: /dev/null
  CHECKOUT_SHA: ${{ inputs.checkout_sha }}
  DISPATCH_SHA: ${{ github.sha }}
  ENV: /dev/null
  EVENT_NAME: ${{ github.event_name }}
  EXPECTED_WORKFLOW_SHA: ${{ inputs.workflow_sha }}
  LC_ALL: C
  REF: ${{ github.ref }}
  REPOSITORY: ${{ github.repository }}
  RUNNER_ARCH_KIND: ${{ runner.arch }}
  RUNNER_ENVIRONMENT_KIND: ${{ runner.environment }}
  RUNNER_OS_KIND: ${{ runner.os }}
  WORKFLOW_SHA: ${{ github.workflow_sha }}

# Reuse elsewhere:
        env: *trusted-hermes-e2e-swap-env

Also applies to: 1337-1350, 1479-1492, 1986-1999, 2326-2339, 2692-2705, 3660-3673, 4943-4956

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/e2e.yaml around lines 658 - 671, Define the shared
trusted_hermes_swap environment map once as a YAML anchor near its first use,
then replace the duplicated env mappings in all eight trusted_hermes_swap steps
with aliases to that anchor. Preserve every existing variable and expression
while ensuring all listed occurrences reuse the same definition.
🤖 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.

Nitpick comments:
In @.github/workflows/e2e.yaml:
- Around line 658-671: Define the shared trusted_hermes_swap environment map
once as a YAML anchor near its first use, then replace the duplicated env
mappings in all eight trusted_hermes_swap steps with aliases to that anchor.
Preserve every existing variable and expression while ensuring all listed
occurrences reuse the same definition.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 89ba900e-fa34-4381-a512-bf35b557712a

📥 Commits

Reviewing files that changed from the base of the PR and between 46934df and 52abe0c.

📒 Files selected for processing (1)
  • .github/workflows/e2e.yaml

@prekshivyas

Copy link
Copy Markdown
Collaborator

Reviewed CodeRabbit’s current-head YAML-anchor nit. No PR change is needed: the repeated trusted_hermes_swap environment blocks are identical in base b51168d190c285d9038a3a345215258de03da135 and head 52abe0c9345332242282a3e16e917d3ae3fe70ee; they arrived from the main synchronization and are outside this PR’s EXDEV-lane patch. Refactoring that shared trusted-workflow code here would broaden scope and invalidate otherwise clean exact-head evidence, so it should be handled separately if maintainers want the cleanup.

@prekshivyas prekshivyas 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 exact head 52abe0c after code, security, focused-test, CI, CodeRabbit, and advisor review. The final selected E2E job and required gate are still running and remain merge requirements.

@apurvvkumaria
apurvvkumaria merged commit a495d47 into main Jul 24, 2026
105 of 109 checks passed
@apurvvkumaria
apurvvkumaria deleted the codex/e2e-exdev-parallel-lanes-refresh branch July 24, 2026 04:41
prekshivyas added a commit that referenced this pull request Jul 24, 2026
<!-- markdownlint-disable MD041 -->
## Summary

This PR adds the canonical dated release entry for NemoClaw v0.0.94
before the tag is cut.
The entry reconciles all 26 commits since v0.0.93 and links each
user-visible change to its owning documentation.

## Changes

- Add `docs/changelog/2026-07-24.mdx` with the exact `## v0.0.94`
heading, parser-safe SPDX comment, release summary, and detailed
bullets.
- Record sandbox restore and update behavior, onboarding and inference
changes, network policy behavior, security evidence, Hermes build
performance, DGX Station guidance, and E2E validation changes.
- Preserve `docs/` as the source of truth without changing the AI-agent
documentation routing skill.
- Use [E2E run
30075443016](https://github.com/NVIDIA/NemoClaw/actions/runs/30075443016)
for release QA evidence at exact tested SHA
`04e6dfa883071dda9df429c66e73168e1a995cba`.

### Source summary

- [#7461](#7461) ->
`docs/changelog/2026-07-24.mdx`: Record the ownership-preserving Hermes
image layer reduction and hosted timing comparison.
- [#7460](#7460) ->
`docs/changelog/2026-07-24.mdx`: Record removal of candidate Hermes swap
setup from E2E validation.
- [#7458](#7458) ->
`docs/security/fern-5.80.1-dependency-review.md`,
`docs/changelog/2026-07-24.mdx`: Record the reviewed Fern CLI update.
- [#7457](#7457) ->
`docs/changelog/2026-07-24.mdx`: Record periodic runner-pressure
telemetry.
- [#7455](#7455) ->
`docs/changelog/2026-07-24.mdx`: Record non-blocking absent Fern
previews.
- [#7450](#7450) ->
`docs/changelog/2026-07-24.mdx`: Record stable cancellation handling for
live-test child processes.
- [#7449](#7449) ->
`docs/changelog/2026-07-24.mdx`: Record parallel plugin EXDEV coverage.
- [#7448](#7448) ->
`docs/changelog/2026-07-24.mdx`: Record isolated long-running E2E lanes.
- [#7444](#7444) ->
`docs/changelog/2026-07-24.mdx`: Record exact-head Hermes swap
validation.
- [#7437](#7437) ->
`docs/manage-sandboxes/backup-restore.mdx`,
`docs/changelog/2026-07-24.mdx`: Record gateway pairing and
authenticated verification after cross-sandbox restore.
- [#7436](#7436) ->
`docs/manage-sandboxes/backup-restore.mdx`,
`docs/reference/commands.mdx`, `docs/changelog/2026-07-24.mdx`: Record
selected stale-state cleanup and Hermes virtual-environment access
repair.
- [#7385](#7385) ->
`docs/network-policy/customize-network-policy.mdx`,
`docs/changelog/2026-07-24.mdx`: Record the read-only agent-variant
route check.
- [#7371](#7371) ->
`docs/changelog/2026-07-24.mdx`: Record host-artifact verification for
session exports.
- [#7359](#7359) ->
`docs/changelog/2026-07-24.mdx`: Record platform validation for managed
vLLM model overrides.
- [#7356](#7356) ->
`docs/changelog/2026-07-24.mdx`: Record token-shaped value redaction for
`sandbox doctor --json`.
- [#7354](#7354) ->
`docs/security/advisory-early-warning.md`,
`docs/changelog/2026-07-24.mdx`: Record advisory correlation and
retained audit provenance.
- [#7352](#7352) ->
`docs/network-policy/customize-network-policy.mdx`,
`docs/network-policy/integration-policy-examples.mdx`,
`docs/reference/commands.mdx`, `docs/changelog/2026-07-24.mdx`: Record
preset reapplication and bounded `tls: skip` guidance.
- [#7345](#7345) ->
`docs/security/openclaw-2026.6.10-dependency-review.md`,
`docs/security/openclaw-2026.7.1-dependency-review.md`,
`docs/changelog/2026-07-24.mdx`: Record reviewed npm audit exception
enforcement.
- [#7340](#7340) ->
`docs/network-policy/customize-network-policy.mdx`,
`docs/changelog/2026-07-24.mdx`: Record the repaired CLI-reference
route.
- [#7334](#7334) ->
`docs/get-started/dgx-station-preparation.mdx`,
`docs/changelog/2026-07-24.mdx`: Record the qualified OTA metadata
fallback and narrowed override wording.
- [#7322](#7322) ->
`docs/changelog/2026-07-24.mdx`: Reconcile the gateway source tag added
to plugin registration banners.
- [#7284](#7284) ->
`docs/manage-sandboxes/update-sandboxes.mdx`,
`docs/changelog/2026-07-24.mdx`: Record read-only `upgrade-sandboxes
--check` behavior and recorded-gateway selection.
- [#7277](#7277) ->
`docs/changelog/2026-07-24.mdx`: Reconcile deterministic gateway TCP
refusal coverage.
- [#7234](#7234) ->
`docs/reference/troubleshooting.mdx`, `docs/changelog/2026-07-24.mdx`:
Record preserved DGX Spark managed vLLM Express intent on resume.
- [#7185](#7185) ->
`docs/reference/troubleshooting.mdx`, `docs/changelog/2026-07-24.mdx`:
Record IPv4 fallback DNS selection and exact resolver probing.
- [#6820](#6820) ->
`docs/reference/commands.mdx`, `docs/changelog/2026-07-24.mdx`: Record
the versioned, redacted `--events=jsonl` onboarding stream.

## Type of Change

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

## Quality Gates

- [ ] Tests added or updated for changed behavior
- [x] Existing tests cover changed behavior — justification: `npx vitest
run test/changelog-docs.test.ts` passed 6/6 tests.
- [ ] Tests not applicable — justification:
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [ ] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [ ] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification:
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Documentation Writer Review

- [x] Documentation writer subagent reviewed the completed changes
- Result: `docs-updated`
- Evidence: `docs/changelog/2026-07-24.mdx`; the writing rules,
documentation style, exact release range, skip terms, published routes,
and product scope were reviewed; the changelog test passed 6/6; `npm run
docs` passed with route checking OK, zero errors, and two existing
warnings.
- Agent: Codex Desktop
<!-- docs-review-head-sha: 65368f9 -->
<!-- docs-review-agents-blob-sha: 9c9b36d -->

## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit: Not applicable
- Station profile/scenario: Not applicable
- Result: Not applicable
- Supporting evidence: Not applicable. This PR does not change
`scripts/prepare-dgx-station-host.sh`.

## Verification

- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run check:diff` passed when hooks were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — `npx vitest run
test/changelog-docs.test.ts` passed 6/6 tests.
- [ ] 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
dated changelog entry.
- [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). The
build passed with zero errors and two existing Fern 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). Native dated changelog entries use the required parser-safe MDX
SPDX comment and no frontmatter.

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


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

## Summary by CodeRabbit

* **Documentation**
  * Added the v0.0.94 release changelog.
  * Documented improvements to sandbox snapshot and restore behavior.
* Added updates for gateway selection, policy comparisons, onboarding
event output, and DGX recovery workflows.
* Documented enhanced diagnostics redaction, npm audit provenance, image
assembly performance, and validation stability improvements.


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

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

Labels

area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance integration: openclaw OpenClaw integration behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants