Skip to content

test(e2e): migrate test-tunnel-lifecycle.sh to vitest - #5587

Merged
jyaunches merged 18 commits into
mainfrom
e2e-migrate/test-tunnel-lifecycle-vitest
Jun 22, 2026
Merged

test(e2e): migrate test-tunnel-lifecycle.sh to vitest#5587
jyaunches merged 18 commits into
mainfrom
e2e-migrate/test-tunnel-lifecycle-vitest

Conversation

@jyaunches

@jyaunches jyaunches commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary

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

Related Issues

Refs #5098

Contract mapping

  • Legacy assertion: TC-DEPLOY-01a starts nemoclaw tunnel start and surfaces a trycloudflare URL in status.
    • Replacement: test/e2e-scenario/live/tunnel-lifecycle.test.ts starts the real tunnel and polls nemoclaw status for a trycloudflare URL.
    • Boundary preserved: real Docker/OpenShell onboarding, real nemoclaw CLI, real host cloudflared quick tunnel, and cloudflared.log diagnosis.
  • Legacy assertion: TC-DEPLOY-01b verifies the tunnel URL serves the OpenClaw dashboard.
    • Replacement: the Vitest test probes the public URL with retry/backoff and checks OpenClaw dashboard markers.
    • Boundary preserved: public Cloudflare quick-tunnel HTTP path plus local dashboard origin re-checks before external attribution.
  • Legacy assertion: TC-DEPLOY-01c stops the tunnel and verifies status no longer shows a tunnel URL.
    • Replacement: the Vitest test runs nemoclaw tunnel stop and polls nemoclaw status for URL removal.
    • Boundary preserved: real host service stop/PID/status behavior.

Simplicity check

  • Test shape: simple live Vitest test
  • Original runner/lane: nightly-e2e.yaml job tunnel-lifecycle-e2e via e2e-script.yaml, runs-on: ubuntu-latest, timeout 60, Docker/OpenShell, sudo-capable cloudflared install, NVIDIA_INFERENCE_API_KEY
  • Replacement runner: same runner class, e2e-vitest-scenarios.yaml job tunnel-lifecycle-vitest on ubuntu-latest
  • New shared helpers: none; one-off parsing, polling, classification, and cloudflared install are local to the test
  • New framework/registry/ledger: none
  • Workflow changes: add selective free-standing Vitest job tunnel-lifecycle-vitest; legacy shell deletion/workflow retirement deferred to Epic: Migrate legacy bash E2E into the Vitest E2E system #5098 Phase 11
  • Selective dispatch: e2e-vitest-scenarios.yaml with jobs=tunnel-lifecycle-vitest

Verification

  • npm ci --ignore-scripts
  • npm run build:cli
  • npx tsc --noEmit --allowImportingTsExtensions --moduleResolution bundler --module esnext --target es2022 --types node,vitest test/e2e-scenario/live/tunnel-lifecycle.test.ts
  • NEMOCLAW_RUN_E2E_SCENARIOS=1 npx vitest run --project e2e-scenarios-live test/e2e-scenario/live/tunnel-lifecycle.test.ts --silent=false --reporter=default (local no-secret path skips)
  • npx vitest run --project e2e-vitest-support test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts --silent=false --reporter=default
  • npm run typecheck:cli
  • git diff --check
  • PR: test(e2e): migrate test-tunnel-lifecycle.sh to vitest #5587
  • Same-runner selective run: https://github.com/NVIDIA/NemoClaw/actions/runs/27956783433 (queued)

Summary by CodeRabbit

  • Tests
    • Added a new live end-to-end “tunnel lifecycle” Vitest scenario runner with environment-configurable timeouts and more resilient startup/readiness polling.
    • Improved error handling to better distinguish transient tunnel issues and reduce flaky failures.
    • Expanded scenario-selection checks to confirm correct tunnel-lifecycle job mapping without triggering live runs unexpectedly.
  • CI/CD
    • Added a dedicated conditional tunnel-lifecycle job for continuous integration and included its status in pull request reporting, along with artifact upload support.

PR Review Advisor response

  • PRA-1 / PRA-2 (redirect boundary): removed curl -L from the public tunnel probe. The source boundary is the initial *.trycloudflare.com URL from nemoclaw status; redirects are not part of the migrated legacy contract, so a 3xx response is treated as probe output rather than followed to an off-allowlist host. Removal condition: only add explicit redirect target inspection if NemoClaw later documents same-host quick-tunnel redirects.
  • PRA-T1 runtime validation: same-runner live tunnel-lifecycle-vitest passed on current head 878e93a1 in run 27967747511, covering real install/onboard, Docker/OpenShell, host cloudflared, trycloudflare URL surfacing in nemoclaw status, public dashboard probe without redirect-following, tunnel stop, and status cleanup.
  • PRA-T2 / PRA-T3 Epic: Migrate legacy bash E2E into the Vitest E2E system #5098 acceptance mapping: trusted issue Epic: Migrate legacy bash E2E into the Vitest E2E system #5098 defines conversion as equivalent typed Vitest coverage, preserving shell/system boundaries, deterministic artifacts/cleanup/timeouts/redaction, PR contract mapping, same-runner workflow wiring, and explicit Phase 11 deferral for shell/workflow retirement. This PR maps that scope as:
    • equivalent typed coverage: test/e2e-scenario/live/tunnel-lifecycle.test.ts + test/e2e-scenario/live/tunnel-lifecycle-helpers.ts replace test/e2e/test-tunnel-lifecycle.sh;
    • preserved boundaries: install.sh onboarding, Docker/OpenShell sandbox, repo NemoClaw CLI, host cloudflared, trycloudflare probe, stop/status cleanup;
    • deterministic artifacts/cleanup/timeouts/redaction: live fixture artifacts and cleanup registrations plus hosted inference redaction;
    • same-runner wiring: tunnel-lifecycle-vitest in .github/workflows/e2e-vitest-scenarios.yaml runs on ubuntu-latest and passes in run 27967747511;
    • Phase 11 deferral: legacy shell deletion and legacy lane retirement are intentionally deferred per Epic: Migrate legacy bash E2E into the Vitest E2E system #5098 shell deletion governance.
  • PRA-T2 / PRA-T3 support coverage: added focused support tests proving classifyCloudflaredLog() returns nemoclaw_local for localhost/origin-refused logs and cloudflare for representative quick-tunnel transient registration failures.
  • Prior Docker-auth PRA-1: moved tunnel-lifecycle Docker auth out of job-level DOCKER_CONFIG and into the existing ${RUNNER_TEMP} setup-step pattern, with validator coverage rejecting job-level Docker auth and ${{ github.workspace }} drift.
  • Prior log fallback PRA-1 / PRA-3: removed the newest-log fallback. The source boundary is now the exact per-sandbox log /tmp/nemoclaw-services-${NEMOCLAW_SANDBOX_NAME}/cloudflared.log; if it is absent the contract reports nemoclaw_no_spawn instead of attributing another run's log.
  • Prior workflow/test follow-ups: extended validateTunnelLifecycleVitestJob() and support tests for checkout credential persistence, npm ci --ignore-scripts, artifact upload safety, Docker auth cleanup/location, unrelated cloudflared.log attribution, and no-redirect public probe construction.

@coderabbitai

coderabbitai Bot commented Jun 22, 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

Adds a new live Vitest end-to-end test that installs NemoClaw into a sandbox, starts a Cloudflare quick tunnel, probes the public endpoint, and verifies tunnel stop. Wires this as a free-standing tunnel-lifecycle-vitest CI job with Docker Hub auth and artifact upload, and validates dispatch selector behavior in the workflow support test.

Changes

Tunnel Lifecycle Live E2E Scenario

Layer / File(s) Summary
Test configuration, patterns, and diagnostic utilities
test/e2e-scenario/live/tunnel-lifecycle-helpers.ts
Sandbox and timeout configuration, regex patterns for tunnel URLs and dashboard markers, failure classification helpers, cloudflared.log discovery/reading/tail utilities, nemoclaw status parsing, curl probe output parsing with HTTP code extraction, and bestEffort cleanup error suppression wrapper.
Tunnel lifecycle test contract runner
test/e2e-scenario/live/tunnel-lifecycle-helpers.ts
Exports TUNNEL_LIFECYCLE_TEST_TIMEOUT_MS, initializes fixtures and writes contract artifact, registers cleanup hooks, checks Docker and cloudflared (graceful skip vs fail), verifies install.sh, runs install.sh with dashboard polling, starts tunnel with transient-fault detection and URL extraction, probes public endpoint with retry/backoff and concurrent local health checks, and verifies tunnel stop with status polling.
Vitest test registration and invocation
test/e2e-scenario/live/tunnel-lifecycle.test.ts
Registers the tunnel-lifecycle Vitest test case conditionally gated by shouldRunLiveE2EScenarios() with configured timeout, delegating execution to runTunnelLifecycleContract.
CI workflow job and report-to-pr wiring
.github/workflows/e2e-vitest-scenarios.yaml
Adds the tunnel-lifecycle-vitest free-standing job with conditional dispatch, per-job Docker config isolation, Docker Hub auth with retry/anonymous fallback, Vitest run, artifact upload, and explicit cleanup. Extends report-to-pr's needs list to include the new job.
Dispatch selector assertions
test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
Adds two toMatchObject expectations validating that tunnel-lifecycle scenario and tunnel-lifecycle-vitest job selections are valid, do not trigger live scenario runs, map to the free-standing job, and produce empty registryScenarios.

Sequence Diagram(s)

(Skipped — sequence diagram already embedded in the hidden review stack artifact.)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#5243: Introduced the free-standing job pattern and dispatch selector plumbing that this PR extends with the tunnel-lifecycle-vitest job.
  • NVIDIA/NemoClaw#5329: Implements the jobs-only selector rewrite that aligns with the PR's dispatch selector assertions for tunnel-lifecycle.

Suggested labels

area: e2e, chore, v0.0.66

Suggested reviewers

  • cv

Poem

🐇 A tunnel appears, then fades from sight,
The rabbit hops through the Cloudflare night.
Install, poll, probe — each step in line,
The dashboard glows with HTML so fine.
Stop the tunnel, check the status clear —
The lifecycle test is complete, my dear! 🎉

🚥 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
Title check ✅ Passed The pull request title 'test(e2e): migrate test-tunnel-lifecycle.sh to vitest' is clear, specific, and directly describes the main change: migrating a shell-based e2e test to Vitest.
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.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch e2e-migrate/test-tunnel-lifecycle-vitest

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

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27956783433
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 1 passed, 1 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
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
tunnel-lifecycle-vitest ❌ failure

Failed jobs: tunnel-lifecycle-vitest. Check run artifacts for logs.

@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 (2)
.github/workflows/e2e-vitest-scenarios.yaml (1)

2961-2961: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win

Use runner temp for Docker auth config instead of workspace.

DOCKER_CONFIG under ${{ github.workspace }} keeps registry auth material in the repo workspace. Prefer ${{ runner.temp }} (as done in adjacent jobs) to reduce accidental credential exposure surface.

Suggested diff
-      DOCKER_CONFIG: ${{ github.workspace }}/.docker-config-tunnel-lifecycle
+      DOCKER_CONFIG: ${{ runner.temp }}/docker-config-tunnel-lifecycle
🤖 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 2961, The DOCKER_CONFIG
environment variable is currently set to store the Docker auth config file in
the repo workspace, which creates a security risk for accidental credential
exposure. Change the DOCKER_CONFIG path from ${{ github.workspace
}}/.docker-config-tunnel-lifecycle to ${{ runner.temp
}}/.docker-config-tunnel-lifecycle to align with adjacent jobs and reduce the
surface area for exposing sensitive registry authentication material.
test/e2e-scenario/live/tunnel-lifecycle.test.ts (1)

407-424: 🧹 Nitpick | 🔵 Trivial | 💤 Low value

Consider explicit type narrowing instead of non-null assertions.

The expect().toBeTruthy() at line 407 doesn't narrow the TypeScript type, requiring ! assertions throughout. While logically safe (the loop always executes at least once), an explicit guard would be cleaner.

♻️ Suggested improvement
     expect(lastPublicProbe, "public tunnel probe should have run").toBeTruthy();
-    if (lastPublicProbe!.httpCode !== "200") {
+    if (!lastPublicProbe) {
+      throw new Error("unreachable: public tunnel probe should have run");
+    }
+    if (lastPublicProbe.httpCode !== "200") {
       if (
-        isCloudflareTransientHttpCode(lastPublicProbe!.httpCode) ||
-        isCloudflareTransientText(lastPublicProbe!.body) ||
+        isCloudflareTransientHttpCode(lastPublicProbe.httpCode) ||
+        isCloudflareTransientText(lastPublicProbe.body) ||
         isCloudflareTransientText(readCloudflaredLog())
       ) {
         skip(
-          `[Cloudflare fault] Tunnel URL never became reachable while local stayed healthy; last HTTP status ${lastPublicProbe!.httpCode}.`,
+          `[Cloudflare fault] Tunnel URL never became reachable while local stayed healthy; last HTTP status ${lastPublicProbe.httpCode}.`,
         );
       }
       throw new Error(
-        `[NemoClaw fault] Tunnel returned unexpected HTTP ${lastPublicProbe!.httpCode} while local stayed healthy; body prefix: ${lastPublicProbe!.body.slice(0, 200)}`,
+        `[NemoClaw fault] Tunnel returned unexpected HTTP ${lastPublicProbe.httpCode} while local stayed healthy; body prefix: ${lastPublicProbe.body.slice(0, 200)}`,
       );
     }
-    expect(lastPublicProbe!.body, "public tunnel must serve OpenClaw dashboard markers").toMatch(
+    expect(lastPublicProbe.body, "public tunnel must serve OpenClaw dashboard markers").toMatch(
       DASHBOARD_MARKER_PATTERN,
     );
🤖 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-scenario/live/tunnel-lifecycle.test.ts` around lines 407 - 424, The
code uses multiple non-null assertions on the `lastPublicProbe` variable (with
the `!` operator), but the initial `expect(lastPublicProbe, "public tunnel probe
should have run").toBeTruthy()` call doesn't narrow the TypeScript type. Add an
explicit guard clause immediately after the expect statement (such as `if
(!lastPublicProbe) throw new Error(...)`) to properly narrow the type for
TypeScript, then remove all the trailing `!` assertions on `lastPublicProbe`
references throughout the conditional blocks checking
`lastPublicProbe!.httpCode`, `lastPublicProbe!.body`, etc.
🤖 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-vitest-scenarios.yaml:
- Line 2961: The DOCKER_CONFIG environment variable is currently set to store
the Docker auth config file in the repo workspace, which creates a security risk
for accidental credential exposure. Change the DOCKER_CONFIG path from ${{
github.workspace }}/.docker-config-tunnel-lifecycle to ${{ runner.temp
}}/.docker-config-tunnel-lifecycle to align with adjacent jobs and reduce the
surface area for exposing sensitive registry authentication material.

In `@test/e2e-scenario/live/tunnel-lifecycle.test.ts`:
- Around line 407-424: The code uses multiple non-null assertions on the
`lastPublicProbe` variable (with the `!` operator), but the initial
`expect(lastPublicProbe, "public tunnel probe should have run").toBeTruthy()`
call doesn't narrow the TypeScript type. Add an explicit guard clause
immediately after the expect statement (such as `if (!lastPublicProbe) throw new
Error(...)`) to properly narrow the type for TypeScript, then remove all the
trailing `!` assertions on `lastPublicProbe` references throughout the
conditional blocks checking `lastPublicProbe!.httpCode`,
`lastPublicProbe!.body`, etc.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 5df7d70f-29ef-4889-b2a4-e6932035c106

📥 Commits

Reviewing files that changed from the base of the PR and between 14abc34 and f6b38ca.

📒 Files selected for processing (3)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/live/tunnel-lifecycle.test.ts
  • test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts

@github-code-quality

github-code-quality Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in the e2e-migrate/test-tun... 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-tun... ee4643f +/-
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-tun... 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-tun... ee4643f +/-
src/lib/state/o...oard-session.ts 91%
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/policy/index.ts 49%
src/lib/onboard...er-gpu-patch.ts 44%
src/lib/onboard.ts 18%

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

@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: tunnel-lifecycle-vitest
Optional E2E: diagnostics-vitest, sandbox-survival-vitest

Dispatch hint: tunnel-lifecycle-vitest

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • tunnel-lifecycle-vitest (high): This PR introduces the tunnel-lifecycle live E2E job and scenario; it should run to validate the new workflow wiring, cloudflared prerequisite installation, real sandbox onboarding, tunnel start/status/stop behavior, public tunnel probe, and artifact/cleanup boundaries.

Optional E2E

  • diagnostics-vitest (medium): Optional adjacent confidence for status/diagnostic behavior after adding a tunnel lifecycle flow that depends on status output and artifact diagnosis, but no product diagnostics implementation changed.
  • sandbox-survival-vitest (medium): Optional adjacent sandbox lifecycle confidence because the new tunnel scenario performs destructive cleanup around a real sandbox, though the PR primarily changes E2E coverage rather than sandbox runtime code.

New E2E recommendations

  • None.

Dispatch hint

  • Workflow: .github/workflows/e2e-vitest-scenarios.yaml
  • jobs input: tunnel-lifecycle-vitest

@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Recommendation

Required Vitest E2E scenarios: tunnel-lifecycle-vitest
Optional Vitest E2E scenarios: None

Dispatch required Vitest E2E scenarios:

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

Workflow run

Full Vitest E2E advisor summary

Vitest E2E Scenario Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required Vitest E2E scenarios

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

Optional Vitest E2E scenarios

  • None.

Relevant changed files

  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/live/tunnel-lifecycle-helpers.ts
  • test/e2e-scenario/live/tunnel-lifecycle.test.ts
  • test/e2e-scenario/support-tests/tunnel-lifecycle-helpers.test.ts
  • test/e2e-scenario/support-tests/tunnel-lifecycle-workflow-boundary.test.ts
  • test/e2e/lib/cloudflared-version-resolver.sh
  • tools/e2e-scenarios/workflow-boundary.mts

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27958247974
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 1 passed, 1 failed, 53 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ❌ failure
upgrade-stale-sandbox-vitest ⏭️ skipped

Failed jobs: tunnel-lifecycle-vitest. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27958773719
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 2 passed, 0 failed, 53 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ✅ success
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27959267892
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 2 passed, 0 failed, 53 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ✅ success
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — Changes requested

Merge posture: Do not merge yet
Primary next action: Resolve or justify PRA-1: Cloudflared prerequisite installs a floating third-party package as root before a secret-bearing step.
Open items: 0 required · 1 warning · 0 suggestions · 3 test follow-ups
Since last review: 1 prior item resolved · 0 still apply · 1 new item found

Action checklist

  • PRA-1 Resolve or justify: Cloudflared prerequisite installs a floating third-party package as root before a secret-bearing step in .github/workflows/e2e-vitest-scenarios.yaml:4443
  • PRA-T1 Add or justify test follow-up: Runtime validation
  • PRA-T2 Add or justify test follow-up: Runtime validation
  • PRA-T3 Add or justify test follow-up: Acceptance clause

Findings index

ID Severity Category Location Required action
PRA-1 Resolve/justify security .github/workflows/e2e-vitest-scenarios.yaml:4443 Prefer a vetted exact cloudflared version with an explicit trust check, such as enforcing a CI-pinned `CLOUDFLARED_VERSION` plus a checked signing-key fingerprint or vetted package cache. If the project intentionally accepts Cloudflare APT as the trust anchor for this live scenario, document that exception in the workflow/helper comments and extend the workflow-boundary validator so future drift cannot silently widen the trust boundary again.
Review findings by urgency: 0 required fixes, 1 item to resolve/justify, 0 in-scope improvements

⚠️ Resolve or justify before merge

Investigate these in the current review; either fix them, explain why they are not applicable, or document the accepted risk.

PRA-1 Resolve/justify — Cloudflared prerequisite installs a floating third-party package as root before a secret-bearing step

  • Location: .github/workflows/e2e-vitest-scenarios.yaml:4443
  • Category: security
  • Problem: The new `Install and verify cloudflared prerequisite` step fetches Cloudflare's APT signing key live, adds the Cloudflare repository, resolves the newest signed package above a floor, and installs `cloudflared=${cf_version}` with sudo. This is now correctly separated from the `NVIDIA_INFERENCE_API_KEY` env, but the package is installed as root on the same runner before the next step receives the NVIDIA credential.
  • Impact: If the Cloudflare key endpoint, repository metadata, or package content is compromised, root-installed code could persist on the runner into the later live test step where `NVIDIA_INFERENCE_API_KEY` is in scope. The previous direct co-scoping of the secret and installer is resolved, but the trusted-code boundary still depends on a floating third-party installer immediately before a secret-bearing workflow step.
  • Recommended action: Prefer a vetted exact cloudflared version with an explicit trust check, such as enforcing a CI-pinned `CLOUDFLARED_VERSION` plus a checked signing-key fingerprint or vetted package cache. If the project intentionally accepts Cloudflare APT as the trust anchor for this live scenario, document that exception in the workflow/helper comments and extend the workflow-boundary validator so future drift cannot silently widen the trust boundary again.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: Read `.github/workflows/e2e-vitest-scenarios.yaml` lines 4443-4463 and `test/e2e/lib/cloudflared-version-resolver.sh`; confirm the default path fetches `https://pkg.cloudflare.com/cloudflare-main.gpg\`, resolves from `apt-cache madison`, and does not enforce an exact default package version or key fingerprint before the subsequent `Run tunnel lifecycle live test` step receives `NVIDIA_INFERENCE_API_KEY`.
  • Missing regression test: Add a workflow-boundary support test that either requires the cloudflared prerequisite step to verify an expected Cloudflare key fingerprint and an explicit pinned package version, or requires a stable documented trust-exception marker in that step so reviewers notice and approve any future change to the installer trust boundary.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: Read `.github/workflows/e2e-vitest-scenarios.yaml` lines 4443-4463 and `test/e2e/lib/cloudflared-version-resolver.sh`; confirm the default path fetches `https://pkg.cloudflare.com/cloudflare-main.gpg\`, resolves from `apt-cache madison`, and does not enforce an exact default package version or key fingerprint before the subsequent `Run tunnel lifecycle live test` step receives `NVIDIA_INFERENCE_API_KEY`.
  • Evidence: Workflow lines 4443-4463 install cloudflared using a live Cloudflare APT repository and `sudo apt-get install -y "cloudflared=${cf_version}"`; lines 4465-4476 then run Vitest with `NVIDIA_INFERENCE_API_KEY`. The resolver validates Debian version syntax but intentionally selects the newest signed version above `CLOUDFLARED_DEFAULT_MIN_VERSION` unless an override is provided.

💡 In-scope improvements

These are lower-risk, not throwaway. Prefer fixing them in this PR when they are local to changed code; defer only with rationale or a linked follow-up.

  • None.
Test follow-ups to resolve or justify

If these cover changed behavior, prefer adding them in this PR; otherwise state why existing coverage is enough or link the follow-up.

  • PRA-T1 Runtime validation — Run or identify a targeted same-runner `tunnel-lifecycle-vitest` validation that proves the workflow prerequisite installs or verifies `cloudflared` before the `NVIDIA_INFERENCE_API_KEY` step, and that the live contract completes install/onboard/tunnel start/status URL/public dashboard probe/tunnel stop/status cleanup on the real runner.. Static and support tests cover many helper and workflow-boundary invariants, but the changed behavior spans live GitHub Actions step isolation, sudo cloudflared installation, Docker/OpenShell onboarding, install.sh, hosted inference credentials, a public trycloudflare tunnel, local dashboard readiness, and tunnel stop/status cleanup.
  • PRA-T2 Runtime validation — If the cloudflared installer trust boundary is changed, add or update `tunnel-lifecycle-workflow-boundary.test.ts` coverage so the workflow validator rejects an unpinned or undocumented Cloudflare APT prerequisite before a secret-bearing live test.. Static and support tests cover many helper and workflow-boundary invariants, but the changed behavior spans live GitHub Actions step isolation, sudo cloudflared installation, Docker/OpenShell onboarding, install.sh, hosted inference credentials, a public trycloudflare tunnel, local dashboard readiness, and tunnel stop/status cleanup.
  • PRA-T3 Acceptance clause — No trusted linked issue clauses were available in the deterministic context. — add test evidence or identify existing coverage. The validation context reported `linkedIssues: []`. PR body text references Epic: Migrate legacy bash E2E into the Vitest E2E system #5098, but issue body/comments were not available as trusted deterministic acceptance evidence, so linked-issue clauses could not be extracted literally.
Since last review details

Current findings, using the urgency labels above:

PRA-1 Resolve/justify — Cloudflared prerequisite installs a floating third-party package as root before a secret-bearing step

  • Location: .github/workflows/e2e-vitest-scenarios.yaml:4443
  • Category: security
  • Problem: The new `Install and verify cloudflared prerequisite` step fetches Cloudflare's APT signing key live, adds the Cloudflare repository, resolves the newest signed package above a floor, and installs `cloudflared=${cf_version}` with sudo. This is now correctly separated from the `NVIDIA_INFERENCE_API_KEY` env, but the package is installed as root on the same runner before the next step receives the NVIDIA credential.
  • Impact: If the Cloudflare key endpoint, repository metadata, or package content is compromised, root-installed code could persist on the runner into the later live test step where `NVIDIA_INFERENCE_API_KEY` is in scope. The previous direct co-scoping of the secret and installer is resolved, but the trusted-code boundary still depends on a floating third-party installer immediately before a secret-bearing workflow step.
  • Recommended action: Prefer a vetted exact cloudflared version with an explicit trust check, such as enforcing a CI-pinned `CLOUDFLARED_VERSION` plus a checked signing-key fingerprint or vetted package cache. If the project intentionally accepts Cloudflare APT as the trust anchor for this live scenario, document that exception in the workflow/helper comments and extend the workflow-boundary validator so future drift cannot silently widen the trust boundary again.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: Read `.github/workflows/e2e-vitest-scenarios.yaml` lines 4443-4463 and `test/e2e/lib/cloudflared-version-resolver.sh`; confirm the default path fetches `https://pkg.cloudflare.com/cloudflare-main.gpg\`, resolves from `apt-cache madison`, and does not enforce an exact default package version or key fingerprint before the subsequent `Run tunnel lifecycle live test` step receives `NVIDIA_INFERENCE_API_KEY`.
  • Missing regression test: Add a workflow-boundary support test that either requires the cloudflared prerequisite step to verify an expected Cloudflare key fingerprint and an explicit pinned package version, or requires a stable documented trust-exception marker in that step so reviewers notice and approve any future change to the installer trust boundary.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: Read `.github/workflows/e2e-vitest-scenarios.yaml` lines 4443-4463 and `test/e2e/lib/cloudflared-version-resolver.sh`; confirm the default path fetches `https://pkg.cloudflare.com/cloudflare-main.gpg\`, resolves from `apt-cache madison`, and does not enforce an exact default package version or key fingerprint before the subsequent `Run tunnel lifecycle live test` step receives `NVIDIA_INFERENCE_API_KEY`.
  • Evidence: Workflow lines 4443-4463 install cloudflared using a live Cloudflare APT repository and `sudo apt-get install -y "cloudflared=${cf_version}"`; lines 4465-4476 then run Vitest with `NVIDIA_INFERENCE_API_KEY`. The resolver validates Debian version syntax but intentionally selects the newest signed version above `CLOUDFLARED_DEFAULT_MIN_VERSION` unless an override is provided.

Workflow run details

This is an automated, non-binding review; it still expects maintainers and agents to respond to each required or warning item. Treat suggestions as current-PR improvements when they touch changed code; defer only with maintainer rationale or a linked follow-up. A human maintainer must make the final merge decision.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27960645101
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 2 passed, 0 failed, 53 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ✅ success
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27961313365
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 2 passed, 0 failed, 53 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ✅ success
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27962184227
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 1 passed, 0 failed, 53 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ⚠️ cancelled
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27962559753
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 2 passed, 0 failed, 53 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ✅ success
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27963563847
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 2 passed, 0 failed, 53 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ✅ success
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27964242839
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 2 passed, 0 failed, 53 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ✅ success
upgrade-stale-sandbox-vitest ⏭️ skipped

@cv cv added the v0.0.66 label Jun 22, 2026
…el-lifecycle-vitest

# Conflicts:
#	.github/workflows/e2e-vitest-scenarios.yaml
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27966300871
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 2 passed, 0 failed, 54 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ✅ success
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27967443514
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 1 passed, 0 failed, 54 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ⚠️ cancelled
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27967747511
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 2 passed, 0 failed, 54 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ✅ success
upgrade-stale-sandbox-vitest ⏭️ skipped

…el-lifecycle-vitest

# Conflicts:
#	test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27972261935
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 1 passed, 1 failed, 55 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
channels-stop-start-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ❌ failure
upgrade-stale-sandbox-vitest ⏭️ skipped

Failed jobs: tunnel-lifecycle-vitest. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27972545398
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 2 passed, 0 failed, 55 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
channels-stop-start-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ✅ success
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27973755879
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 2 passed, 0 failed, 55 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
channels-stop-start-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ✅ success
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27974607947
Workflow ref: e2e-migrate/test-tunnel-lifecycle-vitest
Requested scenarios: (default — all supported)
Requested jobs: tunnel-lifecycle-vitest
Summary: 2 passed, 0 failed, 55 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
channels-stop-start-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-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
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-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
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-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
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
tunnel-lifecycle-vitest ✅ success
upgrade-stale-sandbox-vitest ⏭️ skipped

@jyaunches
jyaunches merged commit c256f8f into main Jun 22, 2026
98 checks passed
@jyaunches
jyaunches deleted the e2e-migrate/test-tunnel-lifecycle-vitest branch June 22, 2026 18:30
cv added a commit that referenced this pull request Jun 26, 2026
## Summary
Restore issue #5800 parity package `P0-E` for merged bash-suite deltas
only.

## Related Issues
Refs #5800
Refs #5098
Refs #5197
Refs #5245
Refs #5508
Refs #5587

## Scope gate
- Package: `P0-E — Platform, tunnel, cloud-experimental, and docs parity
decisions`
- Included PRs all merged and touched `test/e2e`: yes — #5197, #5245,
#5508, #5587
- Out of scope: unmerged/non-bash PRs; shell lane retirement / PR #5756
cleanup

## Parity map
| ID | Source PR | Contract | Inference classification | Vitest
assertion / waiver | Status |
| --- | --- | --- | --- | --- | --- |
| E1 | #5197 | Deep Agents Code cloud-experimental Landlock check:
`.deepagents` and `/tmp` writable, `/usr` and `/etc` read-only. |
`hosted-compatible capable` |
`ubuntu-repo-cloud-langchain-deepagents-code` live scenario now runs
`05-deepagents-code-landlock-readonly.sh` after onboarding. | covered |
| E2 | #5197 | Deep Agents Code arbitrary Python egress permits
GitHub/PyPI and blocks Tavily/LangSmith/MCP/example.com absent explicit
policy. | `hosted-compatible capable` |
`ubuntu-repo-cloud-langchain-deepagents-code` live scenario now runs
`06-deepagents-code-python-egress.sh` after onboarding. | covered |
| E3 | #5245 | Trace timing signal is trusted summary only; raw
target-controlled traces are not uploaded. | `none` | Existing
`test/e2e-script-workflow.test.ts` and sanitizer tests cover trusted
trace summary, scorecard comparison, and redaction boundary. | covered |
| E4 | #5508 | GPU Local Ollama small-context config carries reduced
OpenClaw compaction reserve. | `none` / local inference |
`test/e2e-scenario/live/gpu-e2e.test.ts` now reads
`/sandbox/.openclaw/openclaw.json` and asserts `reserveTokens` /
`reserveTokensFloor` for small windows. | covered |
| E5 | #5508 | Interactive OpenClaw TUI first turn must not fail
auto-compaction. | `none` / local inference | No Vitest TUI fixture
exists yet; config-level assertion covers the deterministic contract and
the interactive smoke remains platform/manual-runner follow-up. Owner:
NemoClaw maintainers; date: 2026-06-25; tracked in #5800 closeout. |
waived/follow-up |
| E6 | #5587 | Cloudflared exact-version override validates Debian
version syntax before APT install. | `hosted-compatible capable` for
live tunnel job; resolver itself `none` | Existing
`test/cloudflared-version-resolver.test.ts`; tunnel workflow boundary
already requires resolver use before `apt-get install
cloudflared=${cf_version}`. | covered |

## Inference mode support
- Default mode for touched live targets: `hosted-compatible capable` for
Deep Agents Code and tunnel lifecycle; local Ollama/GPU uses local
inference; trace/resolver tests are `none`.
- Real inference support preserved: yes for Deep Agents Code scenario
via `NVIDIA_INFERENCE_API_KEY`; yes for tunnel lifecycle via existing
hosted-compatible route; local Ollama GPU remains local inference.
- Modes validated in this PR: local unit/support tests plus live
scenario selection without secret; selective hosted/GPU workflow
dispatch required after PR opens.
- If not validated with real inference: local machine lacks
`NVIDIA_INFERENCE_API_KEY`, GPU runner, and Docker daemon; selective
GitHub Actions will validate runner/secret boundaries.

## Validation
- [x] `npm run build:cli`
- [x] `npx vitest run
test/e2e-scenario/support-tests/e2e-scenario-matrix.test.ts
test/e2e-scenario/support-tests/e2e-scenario-registry.test.ts
test/langchain-deepagents-code-image.test.ts
test/ollama-local-openclaw-config-propagation.test.ts
test/cloudflared-version-resolver.test.ts --silent=false
--reporter=default`
- [x] `NEMOCLAW_RUN_E2E_SCENARIOS=1 npx vitest run --project
e2e-scenarios-live test/e2e-scenario/live/registry-scenarios.test.ts -t
'^ubuntu-repo-cloud-langchain-deepagents-code$' --silent=false
--reporter=verbose` (local result: skipped due missing
`NVIDIA_INFERENCE_API_KEY`, confirms scenario wiring)
- [ ] hosted/public selective E2E workflow, if required by
classification: pending PR dispatch

## Follow-ups / waivers
- E5: Interactive TUI first-turn smoke remains waived until a Vitest TUI
fixture exists. Owner: NemoClaw maintainers; date: 2026-06-25;
deterministic config contract is covered here.


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

* **New Features**
* Added a new cloud onboarding path for LangChain Deep Agents Code,
including dedicated fixtures and live scenario coverage.
* Surfaced new “cloud experimental” checks in live run planning and
scenario matrix output.
* **Bug Fixes**
* Improved GPU live E2E validation by asserting the reserve-token
compaction policy.
* Updated Deep Agents Code expected gateway health handling to be
optional.
* **Security/Policy**
* Expanded Deep Agents Code Python egress allowlists for approved
GitHub/PyPI hosts.
* **Tests**
* Updated E2E checks and assertions (including Python egress probe
behavior) and adjusted scenario/support-matrix expectations.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
## Summary
Restore issue NVIDIA#5800 parity package `P0-E` for merged bash-suite deltas
only.

## Related Issues
Refs NVIDIA#5800
Refs NVIDIA#5098
Refs NVIDIA#5197
Refs NVIDIA#5245
Refs NVIDIA#5508
Refs NVIDIA#5587

## Scope gate
- Package: `P0-E — Platform, tunnel, cloud-experimental, and docs parity
decisions`
- Included PRs all merged and touched `test/e2e`: yes — NVIDIA#5197, NVIDIA#5245,
NVIDIA#5508, NVIDIA#5587
- Out of scope: unmerged/non-bash PRs; shell lane retirement / PR NVIDIA#5756
cleanup

## Parity map
| ID | Source PR | Contract | Inference classification | Vitest
assertion / waiver | Status |
| --- | --- | --- | --- | --- | --- |
| E1 | NVIDIA#5197 | Deep Agents Code cloud-experimental Landlock check:
`.deepagents` and `/tmp` writable, `/usr` and `/etc` read-only. |
`hosted-compatible capable` |
`ubuntu-repo-cloud-langchain-deepagents-code` live scenario now runs
`05-deepagents-code-landlock-readonly.sh` after onboarding. | covered |
| E2 | NVIDIA#5197 | Deep Agents Code arbitrary Python egress permits
GitHub/PyPI and blocks Tavily/LangSmith/MCP/example.com absent explicit
policy. | `hosted-compatible capable` |
`ubuntu-repo-cloud-langchain-deepagents-code` live scenario now runs
`06-deepagents-code-python-egress.sh` after onboarding. | covered |
| E3 | NVIDIA#5245 | Trace timing signal is trusted summary only; raw
target-controlled traces are not uploaded. | `none` | Existing
`test/e2e-script-workflow.test.ts` and sanitizer tests cover trusted
trace summary, scorecard comparison, and redaction boundary. | covered |
| E4 | NVIDIA#5508 | GPU Local Ollama small-context config carries reduced
OpenClaw compaction reserve. | `none` / local inference |
`test/e2e-scenario/live/gpu-e2e.test.ts` now reads
`/sandbox/.openclaw/openclaw.json` and asserts `reserveTokens` /
`reserveTokensFloor` for small windows. | covered |
| E5 | NVIDIA#5508 | Interactive OpenClaw TUI first turn must not fail
auto-compaction. | `none` / local inference | No Vitest TUI fixture
exists yet; config-level assertion covers the deterministic contract and
the interactive smoke remains platform/manual-runner follow-up. Owner:
NemoClaw maintainers; date: 2026-06-25; tracked in NVIDIA#5800 closeout. |
waived/follow-up |
| E6 | NVIDIA#5587 | Cloudflared exact-version override validates Debian
version syntax before APT install. | `hosted-compatible capable` for
live tunnel job; resolver itself `none` | Existing
`test/cloudflared-version-resolver.test.ts`; tunnel workflow boundary
already requires resolver use before `apt-get install
cloudflared=${cf_version}`. | covered |

## Inference mode support
- Default mode for touched live targets: `hosted-compatible capable` for
Deep Agents Code and tunnel lifecycle; local Ollama/GPU uses local
inference; trace/resolver tests are `none`.
- Real inference support preserved: yes for Deep Agents Code scenario
via `NVIDIA_INFERENCE_API_KEY`; yes for tunnel lifecycle via existing
hosted-compatible route; local Ollama GPU remains local inference.
- Modes validated in this PR: local unit/support tests plus live
scenario selection without secret; selective hosted/GPU workflow
dispatch required after PR opens.
- If not validated with real inference: local machine lacks
`NVIDIA_INFERENCE_API_KEY`, GPU runner, and Docker daemon; selective
GitHub Actions will validate runner/secret boundaries.

## Validation
- [x] `npm run build:cli`
- [x] `npx vitest run
test/e2e-scenario/support-tests/e2e-scenario-matrix.test.ts
test/e2e-scenario/support-tests/e2e-scenario-registry.test.ts
test/langchain-deepagents-code-image.test.ts
test/ollama-local-openclaw-config-propagation.test.ts
test/cloudflared-version-resolver.test.ts --silent=false
--reporter=default`
- [x] `NEMOCLAW_RUN_E2E_SCENARIOS=1 npx vitest run --project
e2e-scenarios-live test/e2e-scenario/live/registry-scenarios.test.ts -t
'^ubuntu-repo-cloud-langchain-deepagents-code$' --silent=false
--reporter=verbose` (local result: skipped due missing
`NVIDIA_INFERENCE_API_KEY`, confirms scenario wiring)
- [ ] hosted/public selective E2E workflow, if required by
classification: pending PR dispatch

## Follow-ups / waivers
- E5: Interactive TUI first-turn smoke remains waived until a Vitest TUI
fixture exists. Owner: NemoClaw maintainers; date: 2026-06-25;
deterministic config contract is covered here.


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

* **New Features**
* Added a new cloud onboarding path for LangChain Deep Agents Code,
including dedicated fixtures and live scenario coverage.
* Surfaced new “cloud experimental” checks in live run planning and
scenario matrix output.
* **Bug Fixes**
* Improved GPU live E2E validation by asserting the reserve-token
compaction policy.
* Updated Deep Agents Code expected gateway health handling to be
optional.
* **Security/Policy**
* Expanded Deep Agents Code Python egress allowlists for approved
GitHub/PyPI hosts.
* **Tests**
* Updated E2E checks and assertions (including Python egress probe
behavior) and adjusted scenario/support-matrix expectations.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Carlos Villela <cvillela@nvidia.com>
@wscurran wscurran added the area: e2e End-to-end tests, nightly failures, or validation infrastructure label Aug 1, 2026
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants