perf(e2e): parallelize plugin EXDEV coverage#7449
Conversation
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
|
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. |
📝 WalkthroughWalkthroughThe 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. ChangesOpenClaw EXDEV validation
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
Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 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 commit 52abe0c in the TypeScript / code-coverage/cliThe overall coverage in commit 52abe0c in the Show a code coverage summary of the most impacted files.
Updated |
PR Review Advisor — InformationalAdvisor assessment: Informational / high confidence Model lanes
Nemotron output stays in workflow artifacts and does not change the assessment above. E2E guidanceAdvisory only. E2E / PR Gate selects and runs jobs independently. Recommended E2E: This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
There was a problem hiding this comment.
🧹 Nitpick comments (1)
test/e2e/live/openclaw-plugin-runtime-exdev.test.ts (1)
924-954: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick winGuard
fake.close()so the mock server is always torn down.If
fake.requests()orartifacts.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 intry/finallyso 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
📒 Files selected for processing (6)
.github/workflows/e2e.yaml.github/workflows/regression-e2e.yamltest/e2e/live/openclaw-plugin-runtime-exdev.test.tstest/e2e/support/openclaw-plugin-runtime-exdev-workflow-boundary.test.tstest/regression-e2e-workflow.test.tstools/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
left a comment
There was a problem hiding this comment.
Blocking approval at exact head 46934df7dd7ecb7ab06a323a964a56e25ee20677:
- 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 reportedheadShaMatches: falseandstatus: invalid. - 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>
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.github/workflows/e2e.yaml (1)
658-671: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winDuplicated
env:block across 8 identical steps.The
run:body is shared via the&trusted-hermes-e2e-swapYAML anchor/alias, but the 11-entryenv:block for thetrusted_hermes_swapstep 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.yamlYAML anchors section or a reusable block) and aliasing it the same way therun: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-envAlso 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
📒 Files selected for processing (1)
.github/workflows/e2e.yaml
|
Reviewed CodeRabbit’s current-head YAML-anchor nit. No PR change is needed: the repeated |
prekshivyas
left a comment
There was a problem hiding this comment.
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.
<!-- 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>
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-
mainbranch supersedes draft #7243 because repository rules disallow rewriting its stale, pre-squash history.Related Issue
Part of #7140. Supersedes #7243.
Changes
openclaw-plugin-runtime-exdevtarget for current lifecycle coverage and the existing regression dispatch selector.Type of Change
Quality Gates
Documentation Writer Review
no-docs-neededdocs/security/e2e-weather-plugin-fixture-dependency-review.md,docs/deployment/install-openclaw-plugins.mdx, andtest/e2e/README.mdremain behaviorally accurate; this revision changes only internal E2E lane scheduling, selector wiring, workflow contracts, and test-fixture cleanup.DGX Station Hardware Evidence
Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailablenpm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes — command/result: Targeted workflow, semantic, type, and push gates passed; GitHub CI is authoritative for the repository-wide gate.npm run docsbuilds without warnings (doc changes only)Signed-off-by: Apurv Kumaria akumaria@nvidia.com
Summary by CodeRabbit