Skip to content

test(e2e): migrate test-diagnostics.sh to vitest - #5347

Merged
cv merged 37 commits into
mainfrom
e2e-migrate/test-diagnostics
Jun 18, 2026
Merged

test(e2e): migrate test-diagnostics.sh to vitest#5347
cv merged 37 commits into
mainfrom
e2e-migrate/test-diagnostics

Conversation

@jyaunches

@jyaunches jyaunches commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Migrate test/e2e/test-diagnostics.sh with the simplest equivalent live Vitest coverage.

Legacy shell deletion and nightly shell lane retirement are deferred to #5098 Phase 11; this PR adds the replacement Vitest path beside the stable legacy lane.

Related Issues

Refs #5098

Contract mapping

  • Legacy assertion: nemoclaw --version exits 0 and prints semver.
    • Replacement: test/e2e-scenario/live/diagnostics.test.ts runs the repo CLI entrypoint and asserts semver output.
    • Boundary preserved: real built CLI process.
  • Legacy assertion: nemoclaw debug --quick --output creates a non-empty archive within the quick timeout.
    • Replacement: live Vitest invokes debug --quick --output and checks archive existence/size/time.
    • Boundary preserved: real debug command, host filesystem, tarball artifact path.
  • Legacy assertion: full nemoclaw debug --output creates an extractable tarball with no NVIDIA credential leaks.
    • Replacement: live Vitest creates/extracts the archive and scans extracted files for the exact key and nvapi-* patterns.
    • Boundary preserved: real debug command, tar, archive extraction, credential scanning.
  • Legacy assertion: registered --sandbox succeeds while unknown --sandbox fails, names the sandbox, reports not registered, and writes no partial tarball.
    • Replacement: live Vitest onboards a real sandbox, runs both debug paths, and checks the error/archive contract.
    • Boundary preserved: Docker/OpenShell sandbox registry and debug sandbox validation.
  • Legacy assertion: sandbox openclaw.json is readable and host status shows model/provider diagnostics.
    • Replacement: live Vitest uses real OpenShell sandbox exec plus nemoclaw <sandbox> status.
    • Boundary preserved: sandbox exec and host CLI status.
  • Legacy assertion: credentials list hides values and credentials reset removes the provider credential.
    • Replacement: live Vitest captures raw process output for leak assertions, then records redacted fixture artifacts and resets nvidia-prod when present.
    • Boundary preserved: OpenShell gateway-backed credential list/reset.

Simplicity check

  • Test shape: simple live Vitest test.
  • Original runner/lane: nightly-e2e.yaml job diagnostics-e2e via e2e-script.yaml, default ubuntu-latest, Docker/OpenShell, NVIDIA_API_KEY, NEMOCLAW_RECREATE_SANDBOX=1, 45-minute reusable timeout.
  • Replacement runner: same ubuntu-latest runner class with Docker/OpenShell and NVIDIA_API_KEY in e2e-vitest-scenarios.yaml job diagnostics-vitest.
  • New shared helpers: none; one-off helpers stay local to diagnostics.test.ts.
  • New framework/registry/ledger: none.
  • Workflow changes: add selective free-standing Vitest job and inventory mapping; preserve legacy shell wiring for Phase 11.
  • Selective dispatch: e2e-vitest-scenarios.yaml with jobs=diagnostics-vitest or scenarios=diagnostics.

Verification

Summary by CodeRabbit

  • Tests

    • Added an end-to-end live diagnostics scenario covering sandbox behavior, debug archive creation, and verification that secrets and API-credential patterns remain fully redacted.
    • Validates diagnostics archive acceptance/rejection and credential listing/reset flows.
  • Chores

    • Extended CI to run the new diagnostics job and include its results in PR reporting, with artifact collection for review.
    • Updated workflow boundary validation to enforce stricter security and artifact-upload policies for the diagnostics job.

Reserve Phase 4 E2E migration work for test-diagnostics.sh.

Refs #5098
@jyaunches jyaunches added area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance v0.0.65 labels Jun 12, 2026
@copy-pr-bot

copy-pr-bot Bot commented Jun 12, 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.

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 63948d1f-4e57-402a-a615-cb551d0caa1e

📥 Commits

Reviewing files that changed from the base of the PR and between 9c9b95d and 13e83de.

📒 Files selected for processing (3)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • tools/e2e-scenarios/workflow-boundary.mts
🚧 Files skipped from review as they are similar to previous changes (2)
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • tools/e2e-scenarios/workflow-boundary.mts

📝 Walkthrough

Walkthrough

Adds a new diagnostics-vitest free-standing CI job running a live Vitest E2E test that verifies nemoclaw debug archive creation, secret redaction, sandbox acceptance/rejection, status output, and credentials reset. A new workflow boundary validator enforces the job's structural and security constraints, and existing boundary/selector tests are extended to cover it.

Changes

diagnostics-vitest E2E scenario

Layer / File(s) Summary
Test helpers and constants
test/e2e-scenario/live/diagnostics.test.ts
Defines sandbox/model constants, raw command result type, stdout/stderr formatters, API-key redaction, spawnSync wrapper with kill semantics, live environment builder, bestEffort cleanup wrapper, and archive secret-leak scanner.
Live diagnostics scenario test body
test/e2e-scenario/live/diagnostics.test.ts
Full live test: CLI entrypoint and API-key validation, Docker check, temp HOME setup and cleanup registration, version assertion, quick and full debug archive creation, secret-leak extraction scan, sandbox debug acceptance/rejection, sandbox config and status verification, credentials list redaction and conditional reset, and scenario-result artifact writing.
validateDiagnosticsVitestJob boundary validator
tools/e2e-scenarios/workflow-boundary.mts
Adds validateDiagnosticsVitestJob enforcing runner, selector condition, timeout, required env vars, secret-exposure constraints, pinned steps, Vitest invocation/test path, and artifact upload config; wired into validateE2eVitestScenariosWorkflowBoundary.
CI workflow job wiring
.github/workflows/e2e-vitest-scenarios.yaml
Adds the diagnostics-vitest job with gating, env vars, standard setup steps, Vitest invocation, and always-run artifact upload; adds it to report-to-pr needs; adjusts gateway-drift-preflight-vitest command formatting.
Boundary and selector test coverage
test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
Extends dispatch-selector assertions for diagnostics/diagnostics-vitest; adds expected missing-job error to the unsafe-artifact test; adds a new boundary drift test covering Docker auth, secret env exposure, input interpolation, and artifact upload policy violations.

Sequence Diagram(s)

The live diagnostics test orchestrates several sequential phases of CLI execution and verification (shown in the hidden review stack layer diagram above): version checking, debug archive creation in quick and full modes, secret-leak scanning via extraction, sandbox-specific debug acceptance/rejection flows, sandbox configuration inspection, and credentials list/reset validation. This multi-phase flow is visualized in the "Live diagnostics test flow" diagram within the test body layer.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#5243: Extended the same Vitest jobs-selector infrastructure and report-to-pr wiring that this PR's diagnostics-vitest job builds on.
  • NVIDIA/NemoClaw#5346: Both PRs extend the shared validateE2eVitestScenariosWorkflowBoundary workflow-boundary validator to add new free-standing Vitest job contract checks and wire the new jobs into the e2e workflow reporting.
  • NVIDIA/NemoClaw#5370: The new validateDiagnosticsVitestJob and diagnostics job boundary wiring in tools/e2e-scenarios/workflow-boundary.mts directly builds on this PR's refactor that derives/validates free-standing selectors and workflow boundary inventory from the workflow YAML.

Suggested reviewers

  • cv

🐇 A new diagnostics job hops into the queue,
Checking debug archives for secrets askew.
Credentials reset, sandbox names verified right,
Boundary guards watch every step with delight.
No nvapi key shall escape in the night! 🔍✨

🚥 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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the primary change: migrating the diagnostics test from shell to vitest, which aligns with the file additions, workflow job creation, and boundary test assertions.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ 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 e2e-migrate/test-diagnostics

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

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: diagnostics-vitest, gateway-drift-preflight-vitest
Optional E2E: sandbox-survival-vitest, snapshot-commands-vitest

Dispatch hint: diagnostics-vitest,gateway-drift-preflight-vitest

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • diagnostics-vitest (high): This PR introduces the diagnostics live Vitest job and test. Run it to validate the new workflow selector, secret injection boundary, debug archive sanitization, install/onboard path, sandbox diagnostics, and credentials list/reset behavior.
  • gateway-drift-preflight-vitest (low): The workflow invocation for this existing free-standing job changed. Run it to confirm the edited command line still executes the intended gateway drift preflight test.

Optional E2E

  • sandbox-survival-vitest (high): Optional adjacent confidence for the same installer/OpenShell/sandbox lifecycle surfaces exercised by diagnostics, especially because the new scenario relies on sandbox registration and cleanup.
  • snapshot-commands-vitest (medium): Optional adjacent confidence for a similar free-standing live job with strict workflow-boundary validation, artifact upload, sandbox naming, and secret handling patterns.

New E2E recommendations

  • None.

Dispatch hint

  • Workflow: .github/workflows/e2e-vitest-scenarios.yaml
  • jobs input: diagnostics-vitest,gateway-drift-preflight-vitest

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Recommendation

Required Vitest E2E scenarios: diagnostics-vitest
Optional Vitest E2E scenarios: None

Dispatch required Vitest E2E scenarios:

  • gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=diagnostics-vitest

Workflow run

Full Vitest E2E advisor summary

Vitest E2E Scenario Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required Vitest E2E scenarios

  • diagnostics-vitest: Focused free-standing Vitest job wired for changed live test test/e2e-scenario/live/diagnostics.test.ts.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=diagnostics-vitest

Optional Vitest E2E scenarios

  • None.

Relevant changed files

  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/live/diagnostics.test.ts
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • tools/e2e-scenarios/workflow-boundary.mts

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor

Findings: 0 needs attention, 2 worth checking, 0 nice ideas
Since last review: 1 prior item resolved, 0 still apply, 1 new item found

Review findings

🛠️ Needs attention

  • None.

🔎 Worth checking

  • Source-of-truth review needed: Conditional credentials reset skip in diagnostics.test.ts: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: The test sets `providerCredentialAbsentBeforeReset = true` and writes `credentials-reset.skip.json` instead of failing when `nvidia-prod` is absent.
  • Credentials reset path can pass without exercising reset (test/e2e-scenario/live/diagnostics.test.ts:372): The new diagnostics scenario records the intended contract as `credentials reset removes the provider credential`, but it only runs `credentials reset nvidia-prod --yes` when `credentials list` already contains `nvidia-prod`. If install/onboard regresses and stops registering the provider, the test writes `credentials-reset.skip.json` and still passes, leaving the reset/removal behavior untested.
    • Recommendation: After install/onboard, assert that the expected `nvidia-prod` provider is present before the reset phase, then require the reset and post-reset absence checks to run. If an env-only/no-provider mode is genuinely supported for this lane, make that source-of-truth explicit in the scenario contract and add a separate assertion proving that mode is expected.
    • Evidence: `scenario.json` lists `credentials list hides secret values and credentials reset removes the provider credential`, but the implementation gates reset on `if (credentialsText.includes("nvidia-prod"))` and otherwise writes `credentials-reset.skip.json` with `providerCredentialAbsentBeforeReset = true`.

🌱 Nice ideas

  • None.
Consider writing more tests for
  • **Runtime validation** — In the diagnostics live scenario, assert that install/onboard with `NVIDIA_API_KEY` registers `nvidia-prod` in `credentials list` before running `credentials reset nvidia-prod --yes`.. The PR touches workflow and live sandbox infrastructure. It adds good support tests and a live scenario, but the credentials reset branch needs a behavior-specific assertion so the reset contract cannot be skipped silently.
  • **Runtime validation** — After `credentials reset nvidia-prod --yes`, assert a second raw `credentials list` exits zero, does not contain `nvidia-prod`, and still does not expose exact or `nvapi-*` credential values.. The PR touches workflow and live sandbox infrastructure. It adds good support tests and a live scenario, but the credentials reset branch needs a behavior-specific assertion so the reset contract cannot be skipped silently.
  • **Runtime validation** — If no-provider/env-only credentials are intentionally supported for diagnostics, add a separate explicit test case proving `No provider credentials registered.` is the expected source-of-truth state and that reset is not part of that mode.. The PR touches workflow and live sandbox infrastructure. It adds good support tests and a live scenario, but the credentials reset branch needs a behavior-specific assertion so the reset contract cannot be skipped silently.
  • **Acceptance clause:** Refs Epic: Migrate legacy bash E2E into the Vitest E2E system #5098 — add test evidence or identify existing coverage. The deterministic context did not include linked issue Epic: Migrate legacy bash E2E into the Vitest E2E system #5098 clauses or comments, so only PR-local contract text could be mapped.
  • **Acceptance clause:** Legacy assertion: sandbox `openclaw.json` is readable and host status shows model/provider diagnostics. — add test evidence or identify existing coverage. The new test reads `/sandbox/.openclaw/openclaw.json` through sandbox exec and asserts host status contains `Model`; it does not assert provider text, though the legacy script also accepted a generic `Model` field fallback.
  • **Acceptance clause:** Legacy assertion: `credentials list` hides values and `credentials reset` removes the provider credential. — add test evidence or identify existing coverage. The new test checks raw credentials output for exact-key and `nvapi-*` leaks, but the reset phase is conditional on `credentialsText.includes("nvidia-prod")` and can be skipped while the test still passes.
  • **Conditional credentials reset skip in diagnostics.test.ts** — Covered by the finding: require a live assertion that `nvidia-prod` is registered after install/onboard before exercising `credentials reset nvidia-prod --yes`, or add a separate explicit env-only mode test if that mode is intentional.. The test sets `providerCredentialAbsentBeforeReset = true` and writes `credentials-reset.skip.json` instead of failing when `nvidia-prod` is absent.
Since last review details

Current findings:

  • Source-of-truth review needed: Conditional credentials reset skip in diagnostics.test.ts: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: The test sets `providerCredentialAbsentBeforeReset = true` and writes `credentials-reset.skip.json` instead of failing when `nvidia-prod` is absent.
  • Credentials reset path can pass without exercising reset (test/e2e-scenario/live/diagnostics.test.ts:372): The new diagnostics scenario records the intended contract as `credentials reset removes the provider credential`, but it only runs `credentials reset nvidia-prod --yes` when `credentials list` already contains `nvidia-prod`. If install/onboard regresses and stops registering the provider, the test writes `credentials-reset.skip.json` and still passes, leaving the reset/removal behavior untested.
    • Recommendation: After install/onboard, assert that the expected `nvidia-prod` provider is present before the reset phase, then require the reset and post-reset absence checks to run. If an env-only/no-provider mode is genuinely supported for this lane, make that source-of-truth explicit in the scenario contract and add a separate assertion proving that mode is expected.
    • Evidence: `scenario.json` lists `credentials list hides secret values and credentials reset removes the provider credential`, but the implementation gates reset on `if (credentialsText.includes("nvidia-prod"))` and otherwise writes `credentials-reset.skip.json` with `providerCredentialAbsentBeforeReset = true`.

Workflow run details

This is an automated advisory review. A human maintainer must make the final merge decision.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27438057992
Workflow ref: e2e-migrate/test-diagnostics
Requested scenarios: (default — all supported)
Requested jobs: diagnostics-vitest
Summary: 1 passed, 1 failed, 22 skipped

Job Result
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
diagnostics-vitest ❌ failure
double-onboard-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

Failed jobs: diagnostics-vitest. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27445950567
Workflow ref: e2e-migrate/test-diagnostics
Requested scenarios: (default — all supported)
Requested jobs: diagnostics-vitest
Summary: 1 passed, 1 failed, 22 skipped

Job Result
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
diagnostics-vitest ❌ failure
double-onboard-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

Failed jobs: diagnostics-vitest. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27447165043
Workflow ref: e2e-migrate/test-diagnostics
Requested scenarios: (default — all supported)
Requested jobs: diagnostics-vitest
Summary: 2 passed, 0 failed, 22 skipped

Job Result
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
diagnostics-vitest ✅ success
double-onboard-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

# Conflicts:
#	tools/e2e-scenarios/free-standing-jobs.env
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27448996355
Workflow ref: e2e-migrate/test-diagnostics
Requested scenarios: (default — all supported)
Requested jobs: diagnostics-vitest
Summary: 2 passed, 0 failed, 23 skipped

Job Result
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
diagnostics-vitest ✅ success
double-onboard-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27451481008
Workflow ref: e2e-migrate/test-diagnostics
Requested scenarios: (default — all supported)
Requested jobs: diagnostics-vitest
Summary: 2 passed, 0 failed, 23 skipped

Job Result
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
diagnostics-vitest ✅ success
double-onboard-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

# Conflicts:
#	tools/e2e-scenarios/free-standing-jobs.env
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27452009591
Workflow ref: e2e-migrate/test-diagnostics
Requested scenarios: (default — all supported)
Requested jobs: diagnostics-vitest
Summary: 2 passed, 0 failed, 23 skipped

Job Result
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
diagnostics-vitest ✅ success
double-onboard-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27452769626
Workflow ref: e2e-migrate/test-diagnostics
Requested scenarios: (default — all supported)
Requested jobs: diagnostics-vitest
Summary: 2 passed, 0 failed, 23 skipped

Job Result
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
diagnostics-vitest ✅ success
double-onboard-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

@github-code-quality

github-code-quality Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in the e2e-migrate/test-dia... branch is 96%. Coverage data for the main branch is not yet available.

Show a code coverage summary of the most covered files.
File main e2e-migrate/test-dia... 13e83de +/-
nemoclaw/src/se...cret-scanner.ts 100%
nemoclaw/src/commands/slash.ts 100%
nemoclaw/src/li...bprocess-env.ts 100%
nemoclaw/src/bl...eprint/state.ts 98%
nemoclaw/src/onboard/config.ts 98%
nemoclaw/src/bl...int/snapshot.ts 97%
nemoclaw/src/bl...print/runner.ts 95%
nemoclaw/src/co...ration-state.ts 94%
nemoclaw/src/bl...ate-networks.ts 94%
nemoclaw/src/index.ts 94%

TypeScript / code-coverage/cli

The overall coverage in the e2e-migrate/test-dia... branch is 46%. Coverage data for the main branch is not yet available.

Show a code coverage summary of the most covered files.
File main e2e-migrate/test-dia... 13e83de +/-
src/lib/state/o...oard-session.ts 90%
src/lib/inference/local.ts 76%
src/lib/sandbox/config.ts 72%
src/lib/actions...dbox/rebuild.ts 67%
src/lib/onboard/preflight.ts 64%
src/lib/actions...licy-channel.ts 56%
src/lib/state/sandbox.ts 55%
src/lib/onboard...er-gpu-patch.ts 50%
src/lib/policy/index.ts 49%
src/lib/onboard.ts 18%

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

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27462517963
Workflow ref: e2e-migrate/test-diagnostics
Requested scenarios: (default — all supported)
Requested jobs: diagnostics-vitest
Summary: 2 passed, 0 failed, 35 skipped

Job Result
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
diagnostics-vitest ✅ success
double-onboard-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-2478-crash-loop-recovery-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-compatible-endpoint-vitest ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-inference-switch-vitest ⏭️ skipped
openclaw-skill-cli-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
sessions-agents-cli-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27463570996
Workflow ref: e2e-migrate/test-diagnostics
Requested scenarios: (default — all supported)
Requested jobs: diagnostics-vitest
Summary: 2 passed, 0 failed, 35 skipped

Job Result
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
diagnostics-vitest ✅ success
double-onboard-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-2478-crash-loop-recovery-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-compatible-endpoint-vitest ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-inference-switch-vitest ⏭️ skipped
openclaw-skill-cli-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
sessions-agents-cli-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27464207573
Workflow ref: e2e-migrate/test-diagnostics
Requested scenarios: (default — all supported)
Requested jobs: diagnostics-vitest
Summary: 2 passed, 0 failed, 35 skipped

Job Result
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
diagnostics-vitest ✅ success
double-onboard-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-2478-crash-loop-recovery-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-compatible-endpoint-vitest ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-inference-switch-vitest ⏭️ skipped
openclaw-skill-cli-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
sessions-agents-cli-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

@cv cv added v0.0.66 and removed v0.0.65 labels Jun 15, 2026
@copy-pr-bot

copy-pr-bot Bot commented Jun 16, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27594970645
Workflow ref: e2e-migrate/test-diagnostics
Requested scenarios: (default — all supported)
Requested jobs: diagnostics-vitest
Summary: 2 passed, 0 failed, 35 skipped

Job Result
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
diagnostics-vitest ✅ success
double-onboard-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
hermes-e2e-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-2478-crash-loop-recovery-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-compatible-endpoint-vitest ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
openclaw-inference-switch-vitest ⏭️ skipped
openclaw-skill-cli-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
sessions-agents-cli-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped

@cv
cv marked this pull request as ready for review June 16, 2026 05:02
…nostics

Signed-off-by: Carlos Villela <cvillela@nvidia.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

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

Inline comments:
In @.github/workflows/e2e-vitest-scenarios.yaml:
- Line 1990: The custom GPU runner label `linux-amd64-gpu-rtxpro6000-latest-1`
used in the `runs-on` field is not recognized by actionlint, causing workflow
linting to fail. Either add this custom runner label to the runner-label
configuration in the actionlint.yaml file, or update the `runs-on` value to use
your repository's standard self-hosted label syntax so that actionlint can
validate the workflow correctly.
🪄 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: 63948d1f-4e57-402a-a615-cb551d0caa1e

📥 Commits

Reviewing files that changed from the base of the PR and between 9c9b95d and 13e83de.

📒 Files selected for processing (3)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • tools/e2e-scenarios/workflow-boundary.mts
🚧 Files skipped from review as they are similar to previous changes (2)
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • tools/e2e-scenarios/workflow-boundary.mts

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

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

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 @.github/workflows/e2e-vitest-scenarios.yaml:
- Line 1990: The custom GPU runner label `linux-amd64-gpu-rtxpro6000-latest-1`
used in the `runs-on` field is not recognized by actionlint, causing workflow
linting to fail. Either add this custom runner label to the runner-label
configuration in the actionlint.yaml file, or update the `runs-on` value to use
your repository's standard self-hosted label syntax so that actionlint can
validate the workflow correctly.
🪄 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: 63948d1f-4e57-402a-a615-cb551d0caa1e

📥 Commits

Reviewing files that changed from the base of the PR and between 9c9b95d and 13e83de.

📒 Files selected for processing (3)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • tools/e2e-scenarios/workflow-boundary.mts
🚧 Files skipped from review as they are similar to previous changes (2)
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • tools/e2e-scenarios/workflow-boundary.mts
🛑 Comments failed to post (1)
.github/workflows/e2e-vitest-scenarios.yaml (1)

1990-1990: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Declare the custom GPU runner label in actionlint config (or use self-hosted label syntax).

Line 1990 introduces runs-on: linux-amd64-gpu-rtxpro6000-latest-1, and actionlint currently flags it as unknown. If this is a self-hosted label, add it to actionlint.yaml runner-label configuration (or switch to the repo’s accepted self-hosted runs-on form) so workflow linting does not fail.

🧰 Tools
🪛 actionlint (1.7.12)

[error] 1990-1990: label "linux-amd64-gpu-rtxpro6000-latest-1" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2025-vs2026", "windows-2022", "windows-11-arm", "ubuntu-slim", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xlarge", "macos-latest-large", "macos-26-intel", "macos-26-xlarge", "macos-26-large", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xlarge", "macos-14-large", "macos-14", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

🤖 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-vitest-scenarios.yaml at line 1990, The custom GPU
runner label `linux-amd64-gpu-rtxpro6000-latest-1` used in the `runs-on` field
is not recognized by actionlint, causing workflow linting to fail. Either add
this custom runner label to the runner-label configuration in the
actionlint.yaml file, or update the `runs-on` value to use your repository's
standard self-hosted label syntax so that actionlint can validate the workflow
correctly.

Source: Linters/SAST tools

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants