Skip to content

fix(ci): wire 6 unwired E2E scripts into nightly pipeline - #2607

Merged
brandonpelfrey merged 1 commit into
NVIDIA:mainfrom
TruongNguyenG:fix/wire-unwired-e2e-scripts
Apr 28, 2026
Merged

fix(ci): wire 6 unwired E2E scripts into nightly pipeline#2607
brandonpelfrey merged 1 commit into
NVIDIA:mainfrom
TruongNguyenG:fix/wire-unwired-e2e-scripts

Conversation

@TruongNguyenG

@TruongNguyenG TruongNguyenG commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Summary

Wire 6 existing E2E test scripts into nightly-e2e.yaml that have never been part of any automated CI job despite being self-contained and actively maintained.

Related Issue

Fixes #2566
Fixes #2567

Changes

4 self-contained scripts (#2566):

  • test-double-onboard.sh — lifecycle recovery, repeat onboard reuses gateway, multi-sandbox coexistence
  • test-onboard-repair.sh — resume recreates missing sandbox, rejects conflicting name/provider/model
  • test-onboard-resume.sh — interrupted onboard → resume → verify completion
  • test-runtime-overrides.sh — NEMOCLAW_MODEL_OVERRIDE, CORS config, env-driven sandbox patching

2 security scripts (#2567):

  • test-credential-sanitization.sh — credential stripping from migration snapshots, auth-profiles.json deletion, blueprint digest verification, symlink traversal
  • test-telegram-injection.sh — command injection prevention through Telegram bridge message handling

All 6 scripts already exist in test/e2e/, were created March–April, and are actively maintained (last touched Apr 23 for e2e-timeout refactor). Each job has artifact upload on failure and is wired into notify-on-failure.

Type of Change

  • Code change (feature, bug fix, or refactor)

Verification

  • YAML validated: all 25 jobs (19 existing + 6 new) parse correctly on fork dispatch
  • No test script changes — only workflow wiring

AI Disclosure

  • AI-assisted — tool: Cursor

Signed-off-by: Truong Nguyen tgnguyen@nvidia.com

Made with Cursor

Summary by CodeRabbit

  • Chores
    • Enhanced nightly end-to-end testing workflow with additional automated test scenarios to improve quality assurance and failure tracking.

@coderabbitai

coderabbitai Bot commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 1903429b-5a4a-4611-aa97-b6006197755d

📥 Commits

Reviewing files that changed from the base of the PR and between 59fc4fd and 5f2204d.

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

📝 Walkthrough

Walkthrough

This pull request adds six new nightly E2E workflow jobs to the GitHub Actions workflow file. Four jobs (double-onboard-e2e, onboard-repair-e2e, onboard-resume-e2e, runtime-overrides-e2e) execute self-contained test scripts directly. Two jobs (credential-sanitization-e2e, telegram-injection-e2e) first set up a sandbox, then run security-focused tests. The notify-on-failure job's dependency list is updated to include all six new jobs.

Changes

Cohort / File(s) Summary
Nightly E2E Workflow Jobs
.github/workflows/nightly-e2e.yaml
Added six new nightly E2E test jobs: four self-contained jobs for double-onboard, onboard-repair, onboard-resume, and runtime-overrides tests; two sandbox-setup jobs for credential-sanitization and telegram-injection security tests. All jobs upload test logs on failure and are wired into the notify-on-failure job's needs list for failure notification.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Possibly related PRs

Poem

A rabbit hops through workflow files with glee,
Six new E2E tests, now running nightly!
From double-onboards to credential defense,
The nightly catches bugs before they're tense.
Security checked, sandboxes blessed,
More regressions caught than any test! 🐰✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'fix(ci): wire 6 unwired E2E scripts into nightly pipeline' directly and clearly describes the main change: wiring six existing E2E test scripts into the nightly CI workflow.
Linked Issues check ✅ Passed All coding requirements from both issues are met: all 6 E2E scripts are wired into nightly-e2e.yaml with proper environment variables, artifact uploads on failure, and all jobs are added to notify-on-failure needs list.
Out of Scope Changes check ✅ Passed All changes are directly related to wiring the 6 E2E scripts into CI workflows. Two additional manual workflow files are created to support manual testing, which falls within the scope of E2E test infrastructure.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@TruongNguyenG TruongNguyenG added CI/CD VRDC Issues and PRs submitted by NVIDIA VRDC test team. labels Apr 28, 2026

@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 the current code and only fix it if needed.

Inline comments:
In @.github/workflows/nightly-e2e.yaml:
- Around line 605-646: The two jobs credential-sanitization-e2e and
telegram-injection-e2e assume a pre-existing sandbox but lack dependencies or
sandbox bootstrapping; add either a needs: reference to the job that creates the
sandbox (e.g., needs: [test-full-e2e-setup] or the existing sandbox-creation job
name) or add steps to bootstrap a sandbox in each job (set
NEMOCLAW_SANDBOX_NAME, run the install/onboard/bootstrap script before running
test-*.sh), and ensure the environment variable NEMOCLAW_SANDBOX_NAME is
explicitly set in each job so sandbox_exec() targets the correct sandbox.
🪄 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: c3604c91-bc92-4592-86c0-6668cf01140a

📥 Commits

Reviewing files that changed from the base of the PR and between 0b49851 and a6412bb.

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

Comment thread .github/workflows/nightly-e2e.yaml
@TruongNguyenG
TruongNguyenG force-pushed the fix/wire-unwired-e2e-scripts branch from a6412bb to 2249e94 Compare April 28, 2026 12:15
@copy-pr-bot

copy-pr-bot Bot commented Apr 28, 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.

@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 the current code and only fix it if needed.

Inline comments:
In @.github/workflows/test-security-e2e-manual.yaml:
- Around line 17-24: The two workflow steps use the same NEMOCLAW_SANDBOX_NAME
("e2e-test"), causing sandbox name collisions; change each job's
NEMOCLAW_SANDBOX_NAME to be unique (e.g., include the job name or run id) so
parallel jobs don't race — update the occurrences referenced by the "Run
credential sanitization E2E test" job and the other E2E job to values like
"e2e-test-credential-sanitization" or "e2e-test-${{ github.run_id }}" (or
similar job-specific suffix) so each job creates/uses a distinct sandbox.
🪄 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: 6c188b70-fb8e-4028-8035-8153ce435a06

📥 Commits

Reviewing files that changed from the base of the PR and between 2249e94 and 7603662.

📒 Files selected for processing (2)
  • .github/workflows/test-onboard-e2e-manual.yaml
  • .github/workflows/test-security-e2e-manual.yaml

Comment on lines +17 to +24
NEMOCLAW_SANDBOX_NAME: "e2e-test"
run: bash install.sh --non-interactive --yes-i-accept-third-party-software
- name: Run credential sanitization E2E test
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
NEMOCLAW_SANDBOX_NAME: "e2e-test"

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.

⚠️ Potential issue | 🟠 Major

Use distinct sandbox names per security job to avoid cross-job collisions.

Line 17/24 and Line 47/54 use the same NEMOCLAW_SANDBOX_NAME (e2e-test). These jobs run independently and can execute in parallel, which can race on the same remote sandbox and cause flaky failures.

🔧 Proposed fix
   credential-sanitization-e2e:
     runs-on: ubuntu-latest
     timeout-minutes: 60
@@
       - name: Install NemoClaw and onboard sandbox
         env:
           NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
           NEMOCLAW_NON_INTERACTIVE: "1"
           NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
-          NEMOCLAW_SANDBOX_NAME: "e2e-test"
+          NEMOCLAW_SANDBOX_NAME: "e2e-security-credential-${{ github.run_id }}"
@@
       - name: Run credential sanitization E2E test
         env:
           NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
           NEMOCLAW_NON_INTERACTIVE: "1"
           NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
-          NEMOCLAW_SANDBOX_NAME: "e2e-test"
+          NEMOCLAW_SANDBOX_NAME: "e2e-security-credential-${{ github.run_id }}"
@@
   telegram-injection-e2e:
     runs-on: ubuntu-latest
     timeout-minutes: 60
@@
       - name: Install NemoClaw and onboard sandbox
         env:
           NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
           NEMOCLAW_NON_INTERACTIVE: "1"
           NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
-          NEMOCLAW_SANDBOX_NAME: "e2e-test"
+          NEMOCLAW_SANDBOX_NAME: "e2e-security-telegram-${{ github.run_id }}"
@@
       - name: Run telegram injection E2E test
         env:
           NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
           NEMOCLAW_NON_INTERACTIVE: "1"
           NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
-          NEMOCLAW_SANDBOX_NAME: "e2e-test"
+          NEMOCLAW_SANDBOX_NAME: "e2e-security-telegram-${{ github.run_id }}"

Also applies to: 47-54

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/test-security-e2e-manual.yaml around lines 17 - 24, The
two workflow steps use the same NEMOCLAW_SANDBOX_NAME ("e2e-test"), causing
sandbox name collisions; change each job's NEMOCLAW_SANDBOX_NAME to be unique
(e.g., include the job name or run id) so parallel jobs don't race — update the
occurrences referenced by the "Run credential sanitization E2E test" job and the
other E2E job to values like "e2e-test-credential-sanitization" or "e2e-test-${{
github.run_id }}" (or similar job-specific suffix) so each job creates/uses a
distinct sandbox.

@brandonpelfrey
brandonpelfrey enabled auto-merge (squash) April 28, 2026 16:40
4 self-contained scripts (NVIDIA#2566):
- test-double-onboard.sh (lifecycle recovery, multi-sandbox)
- test-onboard-repair.sh (resume repair, invalidation)
- test-onboard-resume.sh (interrupted onboard -> resume)
- test-runtime-overrides.sh (model override, CORS config)

2 security scripts (NVIDIA#2567):
- test-credential-sanitization.sh (credential stripping, digest)
- test-telegram-injection.sh (command injection prevention)

Each job bootstraps its own sandbox via install.sh before running
the test script. All 6 wired into notify-on-failure.

Fixes NVIDIA#2566
Fixes NVIDIA#2567
Signed-off-by: Truong Nguyen <tgnguyen@nvidia.com>
Made-with: Cursor
@TruongNguyenG
TruongNguyenG force-pushed the fix/wire-unwired-e2e-scripts branch from 59fc4fd to 5f2204d Compare April 28, 2026 18:38
@brandonpelfrey
brandonpelfrey merged commit 5aa9e5d into NVIDIA:main Apr 28, 2026
5 of 7 checks passed
brandonpelfrey pushed a commit that referenced this pull request Apr 28, 2026
## Summary

The 6 E2E jobs wired in #2607 (`double-onboard-e2e`,
`onboard-repair-e2e`, `onboard-resume-e2e`, `runtime-overrides-e2e`,
`credential-sanitization-e2e`, `telegram-injection-e2e`) were added
without the selective dispatch guard, breaking
`validate-e2e-coverage.test.ts` on main.

## Changes

- Adds the standard dispatch guard to all 6 jobs:
  ```yaml
  if: >-
    github.repository == 'NVIDIA/NemoClaw' &&
    (github.event_name != 'workflow_dispatch' ||
     inputs.jobs == '' ||
     contains(format(',{0},', inputs.jobs), ',<job-name>,'))
  ```
- Adds all 6 job names to the `workflow_dispatch.inputs.jobs`
description

## Why this matters

- **main is broken** — the `checks` CI job fails on every PR due to this
- Selective dispatch (`-f jobs=cloud-e2e`) currently runs these 6 jobs
unconditionally

## Type of Change

- Code change (bug fix)

## Verification

- YAML validated locally
- `validate-e2e-coverage.test.ts` should pass with these guards in place

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

## Summary by CodeRabbit

* **Chores**
* Updated CI/CD testing automation to enhance selective E2E test
execution. The workflow now supports independent execution of specific
test scenarios—including double-onboard, onboard-repair, onboard-resume,
runtime-overrides, credential-sanitization, and telegram-injection
tests—alongside full test suite options, configurable based on workflow
dispatch selections.

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

Signed-off-by: Jessica Yaunches <jyaunches@nvidia.com>
cv pushed a commit that referenced this pull request Apr 29, 2026
…d-resume tests (#2657)

## Summary

Fixes the persistent `onboard-repair-e2e` and `onboard-resume-e2e`
nightly failures by replacing a broken fault injection mechanism. **Zero
product code changes** — test-only fix.

## Problem

Both tests create interrupted onboard state by setting
`NEMOCLAW_POLICY_MODE=invalid`, expecting onboard to `process.exit(1)`
at the policy step. PR #2434 (merged Apr 24) intentionally changed this
behavior: invalid policy modes now `console.warn()` and fall back to
suggested presets instead of hard-failing. Onboard completes
successfully (exit 0) where the tests expect exit 1.

Both tests have failed in **every nightly run** since PR #2607 wired
them into the pipeline on Apr 28.

## Fix

Replace `NEMOCLAW_POLICY_MODE=invalid` with
`NEMOCLAW_POLICY_MODE=custom` (without setting
`NEMOCLAW_POLICY_PRESETS`). This uses a **real, stable validation path**
in `setupPoliciesWithSelection()`:

```typescript
if (policyMode === "custom" || policyMode === "list") {
  chosen = parsePolicyPresetEnv(process.env.NEMOCLAW_POLICY_PRESETS || "");
  if (chosen.length === 0) {
    console.error("  NEMOCLAW_POLICY_PRESETS is required when NEMOCLAW_POLICY_MODE=custom.");
    process.exit(1);  // ← still a hard exit, as it should be
  }
}
```

This is correct product behavior (custom mode requires presets), and it
triggers the same `process.exit(1)` → session `markStepFailed()` flow
the tests need.

## Changes

- `test/e2e/test-onboard-repair.sh`: Replace
`NEMOCLAW_POLICY_MODE=invalid` → `NEMOCLAW_POLICY_MODE=custom` +
`NEMOCLAW_POLICY_PRESETS=""`, update assertion
- `test/e2e/test-onboard-resume.sh`: Same change

## Testing

These tests run as `onboard-repair-e2e` and `onboard-resume-e2e` in the
nightly pipeline. Requesting a nightly dispatch to validate.

## Related

- #2573 — ci(nightly-e2e): add onboard negative-path E2E test (tracks
this fix)
- #2434 — fix(onboard): fall back to tier suggestions on bad
NEMOCLAW_POLICY_MODE (the change that broke the old injection)
- #2607 — fix(ci): wire 6 unwired E2E scripts into nightly pipeline
(wired these tests)
- #446 — nemoclaw onboard is not resumable (consolidated into #2573, now
closed)

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

* **Tests**
* Updated end-to-end flows to induce policy-step validation via a custom
mode with empty presets and expect the corresponding validation message.
* Broadened resume verification to accept either re-running or
explicitly skipping inference.
  * Made sandbox-creation checks more generic.
* Added an extra interrupted re-creation run to exercise
conflict-detection on resume.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
DemianHeyGen pushed a commit to DemianHeyGen/NemoClaw that referenced this pull request Apr 30, 2026
## Summary

Wire 6 existing E2E test scripts into `nightly-e2e.yaml` that have never
been part of any automated CI job despite being self-contained and
actively maintained.

## Related Issue

Fixes NVIDIA#2566
Fixes NVIDIA#2567

## Changes

**4 self-contained scripts (NVIDIA#2566):**
- `test-double-onboard.sh` — lifecycle recovery, repeat onboard reuses
gateway, multi-sandbox coexistence
- `test-onboard-repair.sh` — resume recreates missing sandbox, rejects
conflicting name/provider/model
- `test-onboard-resume.sh` — interrupted onboard → resume → verify
completion
- `test-runtime-overrides.sh` — NEMOCLAW_MODEL_OVERRIDE, CORS config,
env-driven sandbox patching

**2 security scripts (NVIDIA#2567):**
- `test-credential-sanitization.sh` — credential stripping from
migration snapshots, auth-profiles.json deletion, blueprint digest
verification, symlink traversal
- `test-telegram-injection.sh` — command injection prevention through
Telegram bridge message handling

All 6 scripts already exist in `test/e2e/`, were created March–April,
and are actively maintained (last touched Apr 23 for e2e-timeout
refactor). Each job has artifact upload on failure and is wired into
`notify-on-failure`.

## Type of Change

- Code change (feature, bug fix, or refactor)

## Verification

- YAML validated: all 25 jobs (19 existing + 6 new) parse correctly on
fork dispatch
- No test script changes — only workflow wiring

## AI Disclosure

- AI-assisted — tool: Cursor

---

Signed-off-by: Truong Nguyen <tgnguyen@nvidia.com>

Made with [Cursor](https://cursor.com)

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

* **Chores**
* Added six nightly end-to-end test jobs to broaden automated E2E
coverage across onboarding, runtime overrides, credential sanitization,
and injection scenarios.
* Nightly jobs upload logs on failure and are included in centralized
failure/cancel notifications.
* Added manually-triggered E2E workflows for onboarding and security
tests, each providing targeted test runs and conditional log uploads on
failure.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Truong Nguyen <tgnguyen@nvidia.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com>
DemianHeyGen pushed a commit to DemianHeyGen/NemoClaw that referenced this pull request Apr 30, 2026
…NVIDIA#2637)

## Summary

The 6 E2E jobs wired in NVIDIA#2607 (`double-onboard-e2e`,
`onboard-repair-e2e`, `onboard-resume-e2e`, `runtime-overrides-e2e`,
`credential-sanitization-e2e`, `telegram-injection-e2e`) were added
without the selective dispatch guard, breaking
`validate-e2e-coverage.test.ts` on main.

## Changes

- Adds the standard dispatch guard to all 6 jobs:
  ```yaml
  if: >-
    github.repository == 'NVIDIA/NemoClaw' &&
    (github.event_name != 'workflow_dispatch' ||
     inputs.jobs == '' ||
     contains(format(',{0},', inputs.jobs), ',<job-name>,'))
  ```
- Adds all 6 job names to the `workflow_dispatch.inputs.jobs`
description

## Why this matters

- **main is broken** — the `checks` CI job fails on every PR due to this
- Selective dispatch (`-f jobs=cloud-e2e`) currently runs these 6 jobs
unconditionally

## Type of Change

- Code change (bug fix)

## Verification

- YAML validated locally
- `validate-e2e-coverage.test.ts` should pass with these guards in place

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

## Summary by CodeRabbit

* **Chores**
* Updated CI/CD testing automation to enhance selective E2E test
execution. The workflow now supports independent execution of specific
test scenarios—including double-onboard, onboard-repair, onboard-resume,
runtime-overrides, credential-sanitization, and telegram-injection
tests—alongside full test suite options, configurable based on workflow
dispatch selections.

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

Signed-off-by: Jessica Yaunches <jyaunches@nvidia.com>
DemianHeyGen pushed a commit to DemianHeyGen/NemoClaw that referenced this pull request Apr 30, 2026
…d-resume tests (NVIDIA#2657)

## Summary

Fixes the persistent `onboard-repair-e2e` and `onboard-resume-e2e`
nightly failures by replacing a broken fault injection mechanism. **Zero
product code changes** — test-only fix.

## Problem

Both tests create interrupted onboard state by setting
`NEMOCLAW_POLICY_MODE=invalid`, expecting onboard to `process.exit(1)`
at the policy step. PR NVIDIA#2434 (merged Apr 24) intentionally changed this
behavior: invalid policy modes now `console.warn()` and fall back to
suggested presets instead of hard-failing. Onboard completes
successfully (exit 0) where the tests expect exit 1.

Both tests have failed in **every nightly run** since PR NVIDIA#2607 wired
them into the pipeline on Apr 28.

## Fix

Replace `NEMOCLAW_POLICY_MODE=invalid` with
`NEMOCLAW_POLICY_MODE=custom` (without setting
`NEMOCLAW_POLICY_PRESETS`). This uses a **real, stable validation path**
in `setupPoliciesWithSelection()`:

```typescript
if (policyMode === "custom" || policyMode === "list") {
  chosen = parsePolicyPresetEnv(process.env.NEMOCLAW_POLICY_PRESETS || "");
  if (chosen.length === 0) {
    console.error("  NEMOCLAW_POLICY_PRESETS is required when NEMOCLAW_POLICY_MODE=custom.");
    process.exit(1);  // ← still a hard exit, as it should be
  }
}
```

This is correct product behavior (custom mode requires presets), and it
triggers the same `process.exit(1)` → session `markStepFailed()` flow
the tests need.

## Changes

- `test/e2e/test-onboard-repair.sh`: Replace
`NEMOCLAW_POLICY_MODE=invalid` → `NEMOCLAW_POLICY_MODE=custom` +
`NEMOCLAW_POLICY_PRESETS=""`, update assertion
- `test/e2e/test-onboard-resume.sh`: Same change

## Testing

These tests run as `onboard-repair-e2e` and `onboard-resume-e2e` in the
nightly pipeline. Requesting a nightly dispatch to validate.

## Related

- NVIDIA#2573 — ci(nightly-e2e): add onboard negative-path E2E test (tracks
this fix)
- NVIDIA#2434 — fix(onboard): fall back to tier suggestions on bad
NEMOCLAW_POLICY_MODE (the change that broke the old injection)
- NVIDIA#2607 — fix(ci): wire 6 unwired E2E scripts into nightly pipeline
(wired these tests)
- NVIDIA#446 — nemoclaw onboard is not resumable (consolidated into NVIDIA#2573, now
closed)

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

* **Tests**
* Updated end-to-end flows to induce policy-step validation via a custom
mode with empty presets and expect the corresponding validation message.
* Broadened resume verification to accept either re-running or
explicitly skipping inference.
  * Made sandbox-creation checks more generic.
* Added an extra interrupted re-creation run to exercise
conflict-detection on resume.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@wscurran wscurran added area: ci CI workflows, checks, release automation, or GitHub Actions chore Build, CI, dependency, or tooling maintenance and removed CI/CD labels Jun 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci CI workflows, checks, release automation, or GitHub Actions chore Build, CI, dependency, or tooling maintenance VRDC Issues and PRs submitted by NVIDIA VRDC test team.

Projects

None yet

4 participants