Skip to content

ci(e2e): add exact-SHA Brev Launchable E2E lane#7043

Closed
cjagwani wants to merge 40 commits into
mainfrom
codex/launchable-image-manifest-handoff
Closed

ci(e2e): add exact-SHA Brev Launchable E2E lane#7043
cjagwani wants to merge 40 commits into
mainfrom
codex/launchable-image-manifest-handoff

Conversation

@cjagwani

@cjagwani cjagwani commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds one explicit Brev Launchable lane to the existing E2E workflow. The lane builds or reuses the staging CPU image for the exact candidate SHA, proves what the Launchable actually booted, runs the existing full E2E suite from the baked checkout, and deletes the workspace.

This revision removes the standalone qualification workflow, controller, state machine, evidence ledger, and generalized image-manifest protocol. Those layers are not needed for this workflow.

Related Issue

Fixes #6943.

Changes

  • Adds the explicitly selected staging-brev-launchable job directly to .github/workflows/e2e.yaml.
  • Dispatches the existing brevdev/nemoclaw-image staging build for the exact candidate SHA and waits for that exact producer run.
  • Deploys the configured standing staging Launchable, verifies the baked NemoClaw SHA and actual immutable GCP boot-image labels, and fails before testing on mismatch.
  • Runs the existing test/e2e/live/full-e2e.test.ts suite in preinstalled-launchable mode.
  • Always deletes the exact workflow-created Brev workspace and uploads redacted E2E evidence.
  • Removes the separate qualification workflow, controller, manifest validation protocol, state/evidence machinery, and their fixtures/tests.
  • Does not rsync a checkout, invoke install.sh, install dependencies, rebuild, relink, promote an image, or repoint a Launchable.

Target release: v0.0.91.

Type of Change

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

Quality Gates

  • Tests added or updated for changed behavior
  • Existing tests cover changed behavior — justification:
  • Tests not applicable — justification:
  • Docs updated for user-facing behavior changes — the maintainer-operated E2E contract and required inputs are documented in test/e2e/README.md
  • Docs not applicable — justification:
  • Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging)
  • Sensitive-path review completed or maintainer-approved waiver recorded — formal human review is still requested
  • Non-success, skipped, or missing CI check accepted by maintainer — no waiver requested

Verification

  • PR description includes a Signed-off-by: line; GitHub commit verification is checked after each push
  • Normal pre-commit, commit-msg, and pre-push hooks passed
  • Targeted behavior tests pass for the current change set — runtime/watch integration: 15 tests; E2E workflow/planner support: 59 tests; npm run test:changed; CLI typecheck; Vitest project membership; source-shape; ShellCheck; shfmt; Biome; git diff --check
  • Applicable broad gate passed — the authorized live run did not reach Vitest because the configured Launchable did not boot a baked NemoClaw image
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Live E2E status

Run 29785815949 built the fresh exact-SHA image successfully, deployed a READY/HEALTHY workspace, and confirmed cleanup after failure. It did not reach Vitest: the VM had no service-account token for the attempted cloud image lookup, and a bounded follow-up deploy confirmed the configured Launchable currently supplies neither /etc/nemoclaw/provision.json nor $HOME/NemoClaw.

This PR is closed as superseded by #7270. The remaining external dependency is a standing Launchable that actually boots the staging-family image; the live evidence and simplified v0.0.91 acceptance criteria are recorded in the closing comment.


Signed-off-by: Charan Jagwani cjagwani@nvidia.com
Signed-off-by: Julie Yaunches jyaunches@nvidia.com

Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
@cjagwani cjagwani self-assigned this Jul 16, 2026
@copy-pr-bot

copy-pr-bot Bot commented Jul 16, 2026

Copy link
Copy Markdown

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

Contributors can view more details about this message here.

@github-code-quality

github-code-quality Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit 4b95fa4 in the codex/launchable-ima... branch remains at 96%, unchanged from commit 65d78ee in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit 4b95fa4 in the codex/launchable-ima... branch remains at 80%, unchanged from commit 65d78ee in the main branch.

Show a code coverage summary of the most impacted files.
File main 65d78ee codex/launchable-ima... 4b95fa4 +/-
src/lib/onboard...ider-cleanup.ts 100% 88% -12%
src/lib/domain/.../connect-env.ts 97% 89% -8%
src/lib/platform.ts 89% 84% -5%
src/lib/inference/local.ts 80% 80% 0%
src/lib/inferen...lama-version.ts 100% 100% 0%
src/lib/messagi...nnels/policy.ts 100% 100% 0%
src/lib/sandbox...rce-identity.ts 91% 91% 0%
src/lib/securit...ntial-filter.ts 93% 93% 0%
src/lib/inferen...time-context.ts 92% 93% +1%
src/lib/adapter...shell/client.ts 88% 90% +2%

Updated July 20, 2026 23:15 UTC

@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — Blocking findings reported

Advisor assessment: Blockers require maintainer review
Next action: Review the blockers below.
Findings: 2 blockers · 1 warning · 0 suggestions

Model lanes

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

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

E2E guidance

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

Recommended E2E: cloud-onboard, credential-sanitization, security-posture, full-e2e

2 optional E2E recommendations
  • onboard-negative-paths
  • network-policy

Blockers

PRA-1 Blocker — Run Launchable orchestration from trusted workflow code

  • Location: .github/workflows/e2e.yaml:205
  • Category: acceptance
  • Problem: The protected `staging-brev-launchable` job checks out `inputs.checkout_sha` and later executes `tools/e2e/brev-launchable-runtime.sh` from that checkout. For an authorized PR run this is PR-controlled code, but the job exposes image-dispatch, Brev, and inference secrets before invoking it. The trusted controller validation only validates dispatch inputs; it does not create a trusted worktree or make this script immutable.
  • Impact: An authorized PR candidate can modify the runtime script to read or exfiltrate protected credentials, dispatch arbitrary image work, or alter workspace operations, violating the required boundary that candidate code is data rather than trusted orchestration.
  • Fix: Check out the controller-validated `inputs.workflow_sha` into a separate trusted worktree and invoke the Launchable orchestration script only from that worktree; keep the candidate checkout, if needed, as data only.
  • Verification: Inspect the staging job checkout refs and the paths used by its deploy/run/cleanup steps; for a PR dispatch, confirm no credential-bearing step executes a file from `inputs.checkout_sha`.
  • Test coverage: Add a workflow-boundary mutation test that fails if `staging-brev-launchable` checks out the candidate ref for orchestration or invokes `tools/e2e/brev-launchable-runtime.sh` outside a checkout pinned to `inputs.workflow_sha` during PR dispatch.
  • Evidence: .github/workflows/e2e.yaml:205-208 checks out `ref: ${{ inputs.checkout_sha || github.sha }}`. .github/workflows/e2e.yaml:326,333,351 invoke `tools/e2e/brev-launchable-runtime.sh` after the protected environment and secret-bearing steps. Linked issue Run NemoClaw E2E against an exact staging Brev Launchable #6943 states that candidate code remains data and records the trusted-workflow-SHA PR-candidate pattern in its collaborator decision.

PRA-3 Blocker — Register the Launchable lane with the trusted job selector

  • Location: .github/workflows/e2e.yaml:189
  • Category: workflow
  • Problem: The workflow adds a free-standing `staging-brev-launchable` job and accepts it in `inputs.jobs`, but the checked-in E2E inventory does not include that ID among its allowed job selectors. The trusted controller therefore cannot select this lane through the supported selector contract.
  • Impact: The new lane is unreachable from trusted risk-plan/controller selection, so a control-plane plan cannot dispatch its intended exact-image qualification job even though the workflow itself contains the job.
  • Fix: Add `staging-brev-launchable` to the canonical free-standing E2E job inventory and extend its contract tests so trusted controller selection and workflow job selection remain aligned.
  • Verification: Compare the job condition in `.github/workflows/e2e.yaml` with the checked-in `allowedJobIds` inventory and the workflow-selector contract tests; verify the new ID is recognized by the trusted planner/controller path.
  • Test coverage: Add a selector-contract test that requires `staging-brev-launchable` to be present in the canonical allowed-job inventory and selectable by the trusted controller.
  • Evidence: .github/workflows/e2e.yaml:189 accepts `inputs.jobs` containing `staging-brev-launchable`. The tests/operations context's checked-in E2E inventory lists free-standing allowed job IDs and omits `staging-brev-launchable`. The risk plan requires the controller to select only trusted jobs and bind results to the intended PR commit.
1 warning · 0 suggestions

Warnings

Warnings do not block.

PRA-2 Warning — Use literal-safe runtime-log redaction

  • Location: .github/workflows/e2e.yaml:344
  • Category: security
  • Problem: The runtime-log redaction constructs a `sed` substitution directly from `NVIDIA_INFERENCE_API_KEY` but only escapes the `|` delimiter. Backslashes, newlines, and sed replacement metacharacters in a valid secret can make the expression fail or prevent a literal match; the subsequent always-upload then can publish the raw runtime log.
  • Impact: A credential-bearing Launchable run can upload an inference API key in its E2E log, expanding the credential exposure surface to artifact readers.
  • Recommendation: Replace the interpolated `sed` expression with a literal-safe redaction implementation that handles arbitrary secret bytes supported by the secret contract, and fail the upload path closed when redaction cannot be completed.
  • Verification: Inspect the `Redact the runtime log` step with test values containing backslashes, ampersands, delimiters, and line breaks, then confirm the resulting uploaded candidate log contains no original value.
  • Test coverage: Add a workflow/helper regression test that supplies delimiter, backslash, ampersand, and multiline secret fixtures and asserts redaction succeeds and no fixture value remains in the artifact-bound log.
  • Evidence: .github/workflows/e2e.yaml:344 runs `sed "s|${NVIDIA_INFERENCE_API_KEY//|/\\|}|[REDACTED]|g"` and escapes only the delimiter. .github/workflows/e2e.yaml:353-355 uploads evidence unconditionally after the redaction step. The log is created by the credential-bearing remote E2E command in tools/e2e/brev-launchable-runtime.sh:188-218.

Workflow run details

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

Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
@coderabbitai

coderabbitai Bot commented Jul 16, 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 an exact-SHA staging qualification pipeline covering manifest validation, GitHub producer orchestration, Brev deployment and runtime smoke checks, cleanup, evidence publication, workflow integration, and extensive end-to-end tests.

Changes

Exact image qualification

Layer / File(s) Summary
Manifest contract and validation
tools/e2e/exact-image-manifest.mts, tools/e2e/validate-exact-image-manifest.mts, test/e2e/support/*
Defines exact image manifests, provenance and identity validation, secure file handling, normalization, typed failures, fixtures, and CLI tests.
Controller contracts and durable dispatch binding
tools/e2e/exact-image-qualification-controller.mts, tools/advisors/github.mts, test/helpers/*, test/exact-image-qualification-controller.test.ts
Adds request authorization, producer dispatch binding, durable state and intent, reconciliation, cancellation recovery, GitHub request controls, and related tests.
Bound qualification execution and evidence
tools/e2e/exact-image-qualification-controller.mts, test/exact-image-qualification-controller.test.ts
Adds producer polling, artifact and archive integrity checks, manifest extraction, evidence finalization, cancellation, CLI modes, and deadline-focused tests.
Brev staging runtime qualification
tools/e2e/brev-launchable-runtime.sh, test/brev-launchable-runtime.test.ts, test/e2e/live/*
Adds Brev workspace deployment, readiness polling, baked identity verification, runtime smoke checks, cleanup, live invocation, and hermetic fake-runtime coverage.
Reusable workflow integration and contract coverage
.github/workflows/*, test/exact-image-qualification-workflow.test.ts, test/*watch-triggers*, test/e2e/mock-parity.json, ci/source-shape-test-budget.json
Adds manual and reusable workflow entrypoints, E2E delegation and reporting, evidence redaction/upload, cleanup, watch triggers, mock parity, and workflow contract checks.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#6242 — Both changes update .github/workflows/e2e.yaml E2E result-job reporting wiring.

Suggested labels: feature, area: security, area: packaging

Suggested reviewers: jyaunches, cv, apurvvkumaria

Sequence Diagram(s)

sequenceDiagram
  participant E2EWorkflow
  participant QualificationWorkflow
  participant QualificationController
  participant ProducerWorkflow
  participant Brev
  participant StagingRuntime
  E2EWorkflow->>QualificationWorkflow: invoke with candidate SHA and reason
  QualificationWorkflow->>QualificationController: preflight and start
  QualificationController->>ProducerWorkflow: dispatch exact-image build
  QualificationWorkflow->>QualificationController: wait, download, validate, finalize
  QualificationWorkflow->>Brev: authenticate and bind staging workspace
  QualificationWorkflow->>StagingRuntime: deploy and qualify Launchable
  StagingRuntime-->>QualificationWorkflow: return runtime evidence
  QualificationWorkflow->>Brev: clean up workspace
  QualificationWorkflow-->>E2EWorkflow: publish qualification evidence
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the new exact-SHA Brev Launchable qualification lane added to E2E and its reuse of the existing workflow.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/launchable-image-manifest-handoff

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

cjagwani added 3 commits July 16, 2026 12:08
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
@cjagwani
cjagwani requested a review from jyaunches July 16, 2026 21:12
@wscurran wscurran added area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance labels Jul 17, 2026
@jyaunches
jyaunches marked this pull request as ready for review July 17, 2026 16:00
@jyaunches jyaunches added the v0.0.86 Release target label Jul 17, 2026
@wscurran wscurran added v0.0.88 and removed v0.0.86 Release target labels Jul 17, 2026
@jyaunches jyaunches changed the title ci(e2e): add exact image qualification handoff ci(e2e): prepare exact-SHA staging images for Brev Launchable tests Jul 17, 2026
@jyaunches jyaunches changed the title ci(e2e): prepare exact-SHA staging images for Brev Launchable tests ci(e2e): test exact-SHA images on staging Brev Launchables Jul 17, 2026
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Comment thread test/exact-image-qualification-controller.test.ts Fixed
Comment thread test/exact-image-qualification-controller.test.ts Fixed
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🧹 Nitpick comments (1)
test/brev-launchable-runtime.test.ts (1)

44-55: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Exercise remote host commands instead of matching substrings.

The fake returns success whenever a command contains expected text, without executing its shell syntax. Broken quoting or malformed pipelines would still pass. Keep Brev and NVIDIA services mocked, but run --host commands under Bash with fake sudo, curl, openshell, and related tools.

As per path instructions, flag broad mocks that bypass the behavior under test.

Also applies to: 94-112

🤖 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/brev-launchable-runtime.test.ts` around lines 44 - 55, Replace the broad
substring-based command handling in the exec mock with Bash execution for --host
commands, using fake sudo, curl, openshell, and related service tools while
retaining Brev and NVIDIA service responses. Ensure the mocked commands execute
their actual shell syntax so quoting and pipeline errors surface, and update the
corresponding setup also covered around lines 94-112.

Source: Path instructions

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

Inline comments:
In @.github/workflows/brev-launchable-qualification.yaml:
- Around line 225-239: Move the staging Launchable deploy and qualification
journey out of the standalone workflow steps and into a focused Vitest E2E test
that invokes the existing shell/runtime boundaries. Update the unified Vitest
workflow to select this test, and revise the source-shape contract plus its
allowed exception so the standalone workflow is no longer an additional E2E
path.

In @.github/workflows/e2e.yaml:
- Around line 192-196: Update the reusable workflow invocation calling
brev-launchable-qualification.yaml to replace secrets: inherit with an explicit
secrets mapping containing only NEMOCLAW_IMAGE_DISPATCH_TOKEN, BREV_API_KEY,
BREV_ORG_ID, and NVIDIA_INFERENCE_API_KEY, preserving each caller secret’s
value.

In `@tools/e2e/brev-launchable-runtime.sh`:
- Around line 113-125: Update the provision metadata validation near the jq
check and provision_sha extraction to require a non-empty producer-supported
abbreviated Git SHA format before accepting the metadata. Ensure the prefix
comparison only runs for a valid SHA and add a regression case covering empty
gitSha metadata, while preserving the existing candidate and full repository SHA
checks.
- Around line 82-84: Update the workspace existence check around
workspace_record so failures or malformed brev ls responses are treated as fatal
rather than as an empty inventory. Ensure the script only proceeds to brev
create after successfully validating that the requested workspace name is
unused, and call die with an appropriate error for inventory failures.

In `@tools/e2e/exact-image-qualification-controller.mts`:
- Around line 679-696: Update both persisted dispatch-intent validators to
accept any positive safe requester run attempt instead of requiring 1, and
remove the candidateSha/workflowSha equality check while retaining individual
SHA validation. Add regression coverage in the exact-image qualification
controller tests verifying start and cleanup succeed for both an attempt above 1
and differing candidate/workflow SHAs.

---

Nitpick comments:
In `@test/brev-launchable-runtime.test.ts`:
- Around line 44-55: Replace the broad substring-based command handling in the
exec mock with Bash execution for --host commands, using fake sudo, curl,
openshell, and related service tools while retaining Brev and NVIDIA service
responses. Ensure the mocked commands execute their actual shell syntax so
quoting and pipeline errors surface, and update the corresponding setup also
covered around lines 94-112.
🪄 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: d5278ccd-4a39-4fc6-a0ba-26214ba23307

📥 Commits

Reviewing files that changed from the base of the PR and between e7e8b67 and 8cd0ad5.

📒 Files selected for processing (17)
  • .github/workflows/brev-launchable-qualification.yaml
  • .github/workflows/e2e.yaml
  • ci/source-shape-test-budget.json
  • test/brev-launchable-runtime.test.ts
  • test/e2e/support/exact-image-manifest-cli.test.ts
  • test/e2e/support/exact-image-manifest-fixture.ts
  • test/e2e/support/exact-image-manifest.test.ts
  • test/exact-image-qualification-controller.test.ts
  • test/exact-image-qualification-workflow.test.ts
  • test/helpers/exact-image-qualification-controller-fixture.ts
  • test/helpers/vitest-watch-triggers.ts
  • test/vitest-watch-triggers.test.ts
  • tools/advisors/github.mts
  • tools/e2e/brev-launchable-runtime.sh
  • tools/e2e/exact-image-manifest.mts
  • tools/e2e/exact-image-qualification-controller.mts
  • tools/e2e/validate-exact-image-manifest.mts

Comment thread .github/workflows/brev-launchable-qualification.yaml Outdated
Comment thread .github/workflows/e2e.yaml Outdated
Comment thread tools/e2e/brev-launchable-runtime.sh Outdated
Comment thread tools/e2e/brev-launchable-runtime.sh Outdated
Comment thread tools/e2e/exact-image-qualification-controller.mts Outdated
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
@jyaunches jyaunches added v0.0.90 Release target and removed v0.0.89 labels Jul 20, 2026
@cjagwani

Copy link
Copy Markdown
Collaborator Author

The Phase 4 design pattern is now recorded as accepted in #6943: standing staging-family Launchable, post-boot exact image/SHA verification, preinstalled E2E, and cleanup, with the older per-candidate Launchable revision/browser/pre-provision/TTL requirements deferred for this slice.

The implementation remains inactive by default and all exact-head code gates are complete. The remaining pre-merge action is formal human approval on this PR. Activation remains separate and must wait for the protected environments, WIF, standing Launchable configuration, operational ownership, and the required live built and reused qualification evidence.

cjagwani and others added 3 commits July 20, 2026 12:31
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
@jyaunches jyaunches changed the title ci(e2e): test exact-SHA images on staging Brev Launchables ci(e2e): reuse full E2E for exact-SHA Brev Launchable qualification Jul 20, 2026
jyaunches and others added 2 commits July 20, 2026 15:58
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
@cjagwani

Copy link
Copy Markdown
Collaborator Author

Exact-head gate update for 68d004f8ad66337fb1e1919b92a9536609a643b4:

I filed #7266 with the exact evidence and a narrowly bounded, fail-closed retry design for maintainer consideration. I have not rerun the same SHA, rebased solely to mint a new revision, or weakened the gate.

Maintainer disposition requested: either accept #7266 as a separate fix to land before #7043 is refreshed and revalidated, or explicitly accept this exact non-success gate with #7266 as the follow-up. Formal PR approval remains separately required. The Launchable qualification feature is still inactive by default.

@jyaunches jyaunches added v0.0.91 Release target and removed v0.0.90 Release target labels Jul 20, 2026
jyaunches and others added 3 commits July 20, 2026 17:26
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
@cjagwani

Copy link
Copy Markdown
Collaborator Author

Closing as superseded by the narrowed, authoritative scope in #6943.

#6943 now calls for one focused lane in the existing e2e.yaml and explicitly lists a standalone qualification workflow/controller, state machine, evidence ledger, and generalized manifest protocol as non-goals. This PR's 6,600+ line implementation no longer matches that accepted scope, and its current trigger boundary also excludes the authorized PR-candidate path required by the issue.

The actual Launchable coverage is still required: exact candidate -> existing #80 staging producer -> standing Launchable -> baked SHA and boot-image verification -> existing full E2E in preinstalled mode -> unconditional cleanup and minimal redacted evidence. That will be handled as a smaller direct E2E change rather than preserving this qualification subsystem.

The Brev v0.6.330 interface findings and focused runtime tests in this branch remain available for the smaller replacement. #7266 remains a separate forwarding bug and is not part of that replacement.

@cjagwani cjagwani closed this Jul 20, 2026
cjagwani and others added 3 commits July 20, 2026 14:45
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
…NVIDIA/NemoClaw into codex/pr-7043-simplify

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>

# Conflicts:
#	test/brev-launchable-runtime.test.ts
…handoff' into codex/pr-7043-simplify

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
@jyaunches jyaunches changed the title ci(e2e): reuse full E2E for exact-SHA Brev Launchable qualification ci(e2e): add exact-SHA Brev Launchable E2E lane Jul 20, 2026
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
@jyaunches jyaunches reopened this Jul 20, 2026
@cjagwani

Copy link
Copy Markdown
Collaborator Author

Superseded by #7270, which implements the accepted one-focused-E2E-lane design within the agreed line budgets. Closing this larger draft to avoid parallel or generalized implementations.

@cjagwani cjagwani closed this Jul 20, 2026
timeout "${BREV_COPY_TIMEOUT_SECONDS:-300}" \
brev copy "$INSTANCE_NAME:$remote_artifact_dir/" "$local_artifact_dir/" --host
local result="$local_artifact_dir/$result_relative"
[ -f "$result" ] && [ ! -L "$result" ] || die "full E2E result is missing"
@jyaunches

Copy link
Copy Markdown
Contributor

The accepted scope in #6943 has been reduced to exactly what this E2E lane needs. We do not need an image-qualification subsystem.

The issue now requires one direct path in the existing e2e.yaml:

  1. dispatch the existing staging producer for the exact candidate SHA and wait for that returned run;
  2. deploy the configured standing Brev Launchable;
  3. require the baked provision metadata and clean baked NemoClaw checkout to report that exact SHA;
  4. run the existing full-e2e.test.ts in preinstalled mode; and
  5. always delete the workspace and confirm it is absent.

The standalone qualification workflow/controller, state machine, evidence ledger, generalized manifest protocol, and in-guest cloud image-ID lookup are explicit non-goals. The issue and this PR were moved to v0.0.91.

The 6.6k-line implementation on this branch was reduced to 912 additions / 69 deletions across 10 files before this PR was closed as superseded by #7270.

Live evidence from exact head 4b95fa41d1848cc87b17e06efc8fa117f93a7b05:

  • NemoClaw run 29785815949 dispatched and bound producer run 29786083984; the fresh image build passed.
  • The configured Launchable created a READY/HEALTHY workspace, but the run did not reach Vitest. GCE project/zone/disk metadata were readable, while the default service-account token endpoint returned 404, so the in-guest Compute API image lookup is not a usable contract.
  • A separate bounded deploy of the same configured Launchable confirmed the resulting VM has neither /etc/nemoclaw/provision.json nor $HOME/NemoClaw. Despite the Launchable description naming the staging family, it currently boots a generic/stale image.
  • Workflow cleanup succeeded and confirmed the workspace absent 17m23s after deletion was requested. This validates the 20-minute cleanup allowance and disproves the older 10-minute deadline.

So the workflow code and fresh producer path are exercised, but the new E2E has not passed. The remaining blocker is external Launchable configuration: it must actually boot the staging-family image before the existing full E2E can start. #7270 currently retains the same unavailable service-account image lookup and 10-minute cleanup deadline, so this live evidence should be applied there if #7270 remains the replacement.

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

Labels

area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance v0.0.91 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Run NemoClaw E2E against an exact staging Brev Launchable

6 participants