Skip to content

test(e2e): close platform and workflow parity decisions - #5823

Merged
cv merged 11 commits into
mainfrom
e2e-parity/p0-e-platform-parity
Jun 26, 2026
Merged

test(e2e): close platform and workflow parity decisions#5823
cv merged 11 commits into
mainfrom
e2e-parity/p0-e-platform-parity

Conversation

@jyaunches

@jyaunches jyaunches commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

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

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

  • npm run build:cli
  • 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
  • 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.

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.

@coderabbitai

coderabbitai Bot commented Jun 25, 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 the cloud-langchain-deepagents-code onboarding path, threads it through live scenario planning and registry checks, updates scenario and matrix expectations, expands DeepAgents Code egress policy coverage, and adds a GPU live e2e assertion for the sandbox OpenClaw compaction policy.

Changes

Cloud onboarding and live e2e support

Layer / File(s) Summary
Onboarding fixture support
test/e2e-scenario/fixtures/phases/onboarding.ts
The onboarding fixture accepts the new agent value, routes the new onboarding case, and implements the cloud onboarding handler with the new environment and return values.
Live plan and registry checks
test/e2e-scenario/live/run-plan.ts, test/e2e-scenario/live/registry-scenarios.test.ts
Live scenario planning adds e2eCloudExperimentalChecks for the new onboarding value, and the registry scenario consumes that list to run sandbox shell checks.
Support data and matrix expectations
test/e2e-scenario/scenarios/runtime-support.ts, test/e2e-scenario/scenarios/scenarios/baseline.ts, test/e2e-scenario/scenarios/expected-states.ts, test/e2e-scenario/support-tests/e2e-scenario-matrix.test.ts, test/e2e-scenario/support-tests/e2e-expected-state.test.ts
The onboarding value is marked supported, the canonical scenario gains the new suite ID, the deepagents expected state makes gateway checks optional, and the support tests cover the updated probes and matrix ordering.
DeepAgents egress policy checks
agents/langchain-deepagents-code/policy-additions.yaml, test/e2e/e2e-cloud-experimental/checks/06-deepagents-code-python-egress.sh, test/langchain-deepagents-code-image.test.ts
The DeepAgents Code network policy expands allowed Python interpreter paths, the egress shell probe tolerates probe failures while checking reachability, and the image tests assert the updated policy and script behavior.
GPU compaction-policy check
test/e2e-scenario/live/gpu-e2e.test.ts
The GPU live e2e scenario reads the sandbox OpenClaw config, writes the parsed JSON artifact, and asserts the compaction reserve-token policy from the model settings.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related issues

Possibly related PRs

  • NVIDIA/NemoClaw#5197 — It also threads Deep Agents Code support through onboarding and live scenario validation paths.

Suggested labels

area: e2e, area: onboarding, area: sandbox, area: messaging

Suggested reviewers

  • sandl99

Poem

A bunny hopped through sandbox snow,
To check the tokens, high and low.
🐇 New onboarding sprang to light,
And DeepAgents checks lined up just right.
Thump, thump — the OpenClaw stars glow.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the main change: e2e parity/test updates around platform and workflow decisions.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch e2e-parity/p0-e-platform-parity

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

@github-code-quality

github-code-quality Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in the e2e-parity/p0-e-plat... 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-parity/p0-e-plat... 334ca36 +/-
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-parity/p0-e-plat... branch is 47%. Coverage data for the main branch is not yet available.

Show a code coverage summary of the most covered files.
File main e2e-parity/p0-e-plat... 334ca36 +/-
src/lib/state/o...oard-session.ts 91%
src/lib/inference/local.ts 76%
src/lib/actions...dbox/rebuild.ts 72%
src/lib/sandbox/config.ts 72%
src/lib/onboard/preflight.ts 62%
src/lib/actions...licy-channel.ts 60%
src/lib/state/sandbox.ts 56%
src/lib/policy/index.ts 49%
src/lib/onboard...er-gpu-patch.ts 45%
src/lib/onboard.ts 19%

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

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 28203534004
Workflow ref: e2e-parity/p0-e-platform-parity
Requested scenarios: ubuntu-repo-cloud-langchain-deepagents-code
Requested jobs: (default — all default-enabled free-standing jobs; explicit-only jobs such as jetson-nvmap-gpu-vitest are skipped unless selected)
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped

Job Result
live-scenarios ❌ failure

Failed jobs: live-scenarios. Check run artifacts for logs.

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: ubuntu-repo-cloud-langchain-deepagents-code
Optional E2E: gpu-e2e-vitest, cloud-onboard-vitest

Dispatch hint: scenarios=ubuntu-repo-cloud-langchain-deepagents-code

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • ubuntu-repo-cloud-langchain-deepagents-code (high): This is the directly affected live typed scenario. It exercises the newly wired cloud-langchain-deepagents-code onboarding fixture, hosted inference credentials, Docker sandbox lifecycle, Deep Agents Code expected state, and the required cloud-experimental Landlock/Python egress checks that this PR adds to the run plan.

Optional E2E

  • gpu-e2e-vitest (very high): Useful confidence for the modified GPU Ollama live test and its new OpenClaw compaction-policy assertion. This is adjacent coverage only because the PR changes the E2E test harness, not GPU runtime source, and it requires a self-hosted GPU runner.
  • cloud-onboard-vitest (high): Optional adjacent hosted onboarding sanity check for the shared onboarding fixture path; the required Deep Agents Code scenario is the primary validation because it covers the new agent-specific fixture and policy checks.

New E2E recommendations

  • None.

Dispatch hint

  • Workflow: .github/workflows/e2e-vitest-scenarios.yaml
  • jobs input: scenarios=ubuntu-repo-cloud-langchain-deepagents-code

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Recommendation

Required Vitest E2E scenarios: gpu-e2e-vitest, e2e-scenarios-all
Optional Vitest E2E scenarios: None

Dispatch required Vitest E2E scenarios:

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

Workflow run

Full Vitest E2E advisor summary

Vitest E2E Scenario Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required Vitest E2E scenarios

  • gpu-e2e-vitest: Focused free-standing Vitest job wired for changed live test test/e2e-scenario/live/gpu-e2e.test.ts.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=gpu-e2e-vitest
  • e2e-scenarios-all: This PR changes Vitest scenario registry/runtime support, expected-state metadata, matrix expectations, live registry execution, run-plan generation, shared onboarding fixtures, and scenario-adjacent cloud-experimental checks. Those shared live scenario surfaces require the full Vitest scenario fan-out rather than a targeted scenario dispatch.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref>

Optional Vitest E2E scenarios

  • None.

Relevant changed files

  • test/e2e-scenario/fixtures/phases/onboarding.ts
  • test/e2e-scenario/live/cloud-experimental-check-list.ts
  • test/e2e-scenario/live/cloud-experimental-checks.ts
  • test/e2e-scenario/live/gpu-e2e.test.ts
  • test/e2e-scenario/live/registry-scenarios.test.ts
  • test/e2e-scenario/live/run-plan.ts
  • test/e2e-scenario/scenarios/expected-states.ts
  • test/e2e-scenario/scenarios/runtime-support.ts
  • test/e2e-scenario/scenarios/scenarios/baseline.ts
  • test/e2e-scenario/support-tests/e2e-expected-state.test.ts
  • test/e2e-scenario/support-tests/e2e-scenario-matrix.test.ts
  • test/e2e-scenario/support-tests/platform-parity-cloud-experimental.test.ts
  • test/e2e/e2e-cloud-experimental/checks/06-deepagents-code-python-egress.sh

@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

🧹 Nitpick comments (1)
test/e2e-scenario/live/registry-scenarios.test.ts (1)

142-156: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Drive the experimental checks from the run plan instead of duplicating the paths here.

buildLiveScenarioRunPlan() now owns this onboarding-specific list, but this branch re-declares the same paths again. That makes the planner and executor easy to drift out of sync if a check is added, renamed, or reordered later. Please read the list from the already-built run plan and gate on whether it is present here instead.

As per PR objectives, the registry scenario is supposed to consume the live-plan checks list.

🤖 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/registry-scenarios.test.ts` around lines 142 - 156,
The experimental checks for the cloud-langchain-deepagents-code onboarding are
being duplicated in the registry scenario instead of using the live run plan.
Update the registry scenario branch in registry-scenarios.test.ts to read the
checks from the existing buildLiveScenarioRunPlan() output (the live-plan
onboarding-specific list) and use that list for the fs.existsSync validation and
runE2eCloudExperimentalChecks call, so the executor stays aligned with the
planner and only gates on whether the plan contains checks.
🤖 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 `@test/e2e-scenario/live/gpu-e2e.test.ts`:
- Around line 45-58: The current model selection in gpu-e2e.test.ts is
order-dependent and can silently skip the assertion for non-small-context
models. Update the test logic around the provider/model scan so it explicitly
selects the active Ollama model instead of the first available model, and keep
the small-context expectation tied to that model. In the same area, replace the
early return on contextWindow > 28_000 with a failing assertion so the test
breaks if the scenario stops using a small-context model.

---

Nitpick comments:
In `@test/e2e-scenario/live/registry-scenarios.test.ts`:
- Around line 142-156: The experimental checks for the
cloud-langchain-deepagents-code onboarding are being duplicated in the registry
scenario instead of using the live run plan. Update the registry scenario branch
in registry-scenarios.test.ts to read the checks from the existing
buildLiveScenarioRunPlan() output (the live-plan onboarding-specific list) and
use that list for the fs.existsSync validation and runE2eCloudExperimentalChecks
call, so the executor stays aligned with the planner and only gates on whether
the plan contains checks.
🪄 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: 6387a3fb-49ed-447b-a367-ab0461df0149

📥 Commits

Reviewing files that changed from the base of the PR and between 4fae1c0 and 0d9560e.

📒 Files selected for processing (7)
  • test/e2e-scenario/fixtures/phases/onboarding.ts
  • test/e2e-scenario/live/gpu-e2e.test.ts
  • test/e2e-scenario/live/registry-scenarios.test.ts
  • test/e2e-scenario/live/run-plan.ts
  • test/e2e-scenario/scenarios/runtime-support.ts
  • test/e2e-scenario/scenarios/scenarios/baseline.ts
  • test/e2e-scenario/support-tests/e2e-scenario-matrix.test.ts

Comment thread test/e2e-scenario/live/gpu-e2e.test.ts Outdated
@github-actions

github-actions Bot commented Jun 25, 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: Source-of-truth review needed: Interactive OpenClaw TUI first-turn auto-compaction parity.
Open items: 0 required · 2 warnings · 0 suggestions · 5 test follow-ups
Since last review: 0 prior items resolved · 1 still applies · 0 new items found

Action checklist

  • PRA-1 Resolve or justify: Source-of-truth review needed: Interactive OpenClaw TUI first-turn auto-compaction parity
  • PRA-2 Resolve or justify: Interactive TUI first-turn contract is still covered only by a waiver/config assertion in test/e2e-scenario/live/gpu-e2e.test.ts:108
  • 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
  • PRA-T4 Add or justify test follow-up: Acceptance clause
  • PRA-T5 Add or justify test follow-up: Interactive OpenClaw TUI first-turn auto-compaction parity

Findings index

ID Severity Category Location Required action
PRA-1 Resolve/justify architecture Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
PRA-2 Resolve/justify acceptance test/e2e-scenario/live/gpu-e2e.test.ts:108 Either add an in-scope Vitest TUI smoke if a supported fixture already exists, or keep the waiver explicit with owner/tracking rationale and treat the interactive first-turn smoke as the concrete follow-up needed to fully close E5.
Review findings by urgency: 0 required fixes, 2 items 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 — Source-of-truth review needed: Interactive OpenClaw TUI first-turn auto-compaction parity

  • Location: not file-specific
  • Category: architecture
  • Problem: The advisor marked localized patch analysis as needs_followup.
  • Impact: A localized workaround can preserve or hide an invalid state when the source boundary is unclear.
  • Recommended action: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: Inspect the localized patch and source-of-truth review fields for a concrete invalid state, source boundary, source-fix constraint, regression test, and removal condition.
  • Missing regression test: Current regression coverage is `assertSmallContextCompactionPolicy` in `gpu-e2e.test.ts`; the missing source-level regression is an interactive TUI first-turn smoke that asserts no auto-compaction failure.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: Inspect the localized patch and source-of-truth review fields for a concrete invalid state, source boundary, source-fix constraint, regression test, and removal condition.
  • Evidence: `gpu-e2e.test.ts` line 108 records the waiver and lines 141-147 read and assert `/sandbox/.openclaw/openclaw.json` rather than interacting with the TUI.

PRA-2 Resolve/justify — Interactive TUI first-turn contract is still covered only by a waiver/config assertion

  • Location: test/e2e-scenario/live/gpu-e2e.test.ts:108
  • Category: acceptance
  • Problem: Acceptance clause E5 says: "Interactive OpenClaw TUI first turn must not fail auto-compaction." The diff adds a deterministic OpenClaw config assertion for the small-context compaction budget, but the changed live GPU test explicitly records that the interactive first-turn smoke remains waived until a TUI fixture exists. That means the runtime path that actually renders/uses the TUI first turn is not exercised by this PR.
  • Impact: A regression in the interactive TUI first-turn path could still pass this PR's config-level check if the config is correct but the TUI runtime, prompt submission, or auto-compaction integration fails when driven interactively.
  • Recommended action: Either add an in-scope Vitest TUI smoke if a supported fixture already exists, or keep the waiver explicit with owner/tracking rationale and treat the interactive first-turn smoke as the concrete follow-up needed to fully close E5.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: Read `test/e2e-scenario/live/gpu-e2e.test.ts` around lines 106-147: it records the waiver and asserts `/sandbox/.openclaw/openclaw.json`, but does not launch or drive the OpenClaw TUI.
  • Missing regression test: Add a Vitest live GPU test/fixture named for the behavior, e.g. `OpenClaw TUI first turn on small-context Ollama completes without auto-compaction failure`, that starts the interactive TUI, submits the first prompt, and asserts no auto-compaction error is emitted.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: Read `test/e2e-scenario/live/gpu-e2e.test.ts` around lines 106-147: it records the waiver and asserts `/sandbox/.openclaw/openclaw.json`, but does not launch or drive the OpenClaw TUI.
  • Evidence: `delegatedLegacyContracts` says the interactive TUI first-turn smoke remains waived, while the implemented assertion is `assertSmallContextCompactionPolicy(config.stdout)` against the baked config.

💡 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 — OpenClaw TUI first turn on small-context Ollama completes without auto-compaction failure. The unit/support coverage is strong for matrix wiring, expected-state mapping, minimal env propagation, required-check skip rejection, and the Python-egress negative oracle. The highest-value remaining confidence gap is a true runtime interaction: the interactive OpenClaw TUI first-turn path is still waived and cannot be proven by static config inspection alone.
  • PRA-T2 Runtime validation — Deep Agents Code live cloud scenario runs required Landlock and Python egress checks without SKIP after onboarding. The unit/support coverage is strong for matrix wiring, expected-state mapping, minimal env propagation, required-check skip rejection, and the Python-egress negative oracle. The highest-value remaining confidence gap is a true runtime interaction: the interactive OpenClaw TUI first-turn path is still waived and cannot be proven by static config inspection alone.
  • PRA-T3 Acceptance clause — Included PRs all merged and touched `test/e2e`: yes — feat(agents): add Deep Agents Code harness #5197, feat(ci): add nightly onboard trace timing summaries #5245, fix(inference): keep first Local Ollama TUI turn under OpenClaw compaction budget (#5468) #5508, test(e2e): migrate test-tunnel-lifecycle.sh to vitest #5587 — add test evidence or identify existing coverage. The current diff includes parity evidence for contracts attributed to those PRs, but validating historical PR merge state is outside the read-only code review surface.
  • PRA-T4 Acceptance clause — E5 | fix(inference): keep first Local Ollama TUI turn under OpenClaw compaction budget (#5468) #5508 | Interactive OpenClaw TUI first turn must not fail auto-compaction. — add test evidence or identify existing coverage. `gpu-e2e.test.ts` adds deterministic config-level coverage but explicitly records that the interactive TUI first-turn smoke remains waived until a TUI fixture exists; no changed test drives the interactive TUI.
  • PRA-T5 Interactive OpenClaw TUI first-turn auto-compaction parity — Current regression coverage is `assertSmallContextCompactionPolicy` in `gpu-e2e.test.ts`; the missing source-level regression is an interactive TUI first-turn smoke that asserts no auto-compaction failure.. `gpu-e2e.test.ts` line 108 records the waiver and lines 141-147 read and assert `/sandbox/.openclaw/openclaw.json` rather than interacting with the TUI.
Since last review details

Current findings, using the urgency labels above:

PRA-1 Resolve/justify — Source-of-truth review needed: Interactive OpenClaw TUI first-turn auto-compaction parity

  • Location: not file-specific
  • Category: architecture
  • Problem: The advisor marked localized patch analysis as needs_followup.
  • Impact: A localized workaround can preserve or hide an invalid state when the source boundary is unclear.
  • Recommended action: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: Inspect the localized patch and source-of-truth review fields for a concrete invalid state, source boundary, source-fix constraint, regression test, and removal condition.
  • Missing regression test: Current regression coverage is `assertSmallContextCompactionPolicy` in `gpu-e2e.test.ts`; the missing source-level regression is an interactive TUI first-turn smoke that asserts no auto-compaction failure.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: Inspect the localized patch and source-of-truth review fields for a concrete invalid state, source boundary, source-fix constraint, regression test, and removal condition.
  • Evidence: `gpu-e2e.test.ts` line 108 records the waiver and lines 141-147 read and assert `/sandbox/.openclaw/openclaw.json` rather than interacting with the TUI.

PRA-2 Resolve/justify — Interactive TUI first-turn contract is still covered only by a waiver/config assertion

  • Location: test/e2e-scenario/live/gpu-e2e.test.ts:108
  • Category: acceptance
  • Problem: Acceptance clause E5 says: "Interactive OpenClaw TUI first turn must not fail auto-compaction." The diff adds a deterministic OpenClaw config assertion for the small-context compaction budget, but the changed live GPU test explicitly records that the interactive first-turn smoke remains waived until a TUI fixture exists. That means the runtime path that actually renders/uses the TUI first turn is not exercised by this PR.
  • Impact: A regression in the interactive TUI first-turn path could still pass this PR's config-level check if the config is correct but the TUI runtime, prompt submission, or auto-compaction integration fails when driven interactively.
  • Recommended action: Either add an in-scope Vitest TUI smoke if a supported fixture already exists, or keep the waiver explicit with owner/tracking rationale and treat the interactive first-turn smoke as the concrete follow-up needed to fully close E5.
  • Expected follow-up: Resolve in this PR or explain why the risk is acceptable.
  • Verification: Read `test/e2e-scenario/live/gpu-e2e.test.ts` around lines 106-147: it records the waiver and asserts `/sandbox/.openclaw/openclaw.json`, but does not launch or drive the OpenClaw TUI.
  • Missing regression test: Add a Vitest live GPU test/fixture named for the behavior, e.g. `OpenClaw TUI first turn on small-context Ollama completes without auto-compaction failure`, that starts the interactive TUI, submits the first prompt, and asserts no auto-compaction error is emitted.
  • Done when: The risk is fixed or explicitly justified in the PR. Verification: Read `test/e2e-scenario/live/gpu-e2e.test.ts` around lines 106-147: it records the waiver and asserts `/sandbox/.openclaw/openclaw.json`, but does not launch or drive the OpenClaw TUI.
  • Evidence: `delegatedLegacyContracts` says the interactive TUI first-turn smoke remains waived, while the implemented assertion is `assertSmallContextCompactionPolicy(config.stdout)` against the baked config.

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 — ❌ Some jobs failed

Run: 28203681619
Workflow ref: e2e-parity/p0-e-platform-parity
Requested scenarios: ubuntu-repo-cloud-langchain-deepagents-code
Requested jobs: (default — all default-enabled free-standing jobs; explicit-only jobs such as jetson-nvmap-gpu-vitest are skipped unless selected)
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped

Job Result
live-scenarios ❌ failure

Failed jobs: live-scenarios. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 28204042928
Workflow ref: e2e-parity/p0-e-platform-parity
Requested scenarios: ubuntu-repo-cloud-langchain-deepagents-code
Requested jobs: (default — all default-enabled free-standing jobs; explicit-only jobs such as jetson-nvmap-gpu-vitest are skipped unless selected)
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped

Job Result
live-scenarios ❌ failure

Failed jobs: live-scenarios. 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.

Actionable comments posted: 2

🤖 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 `@test/e2e/e2e-cloud-experimental/checks/06-deepagents-code-python-egress.sh`:
- Around line 64-65: The blocked-host check in python_probe handling is too
permissive because it ignores probe failures and passes when REACHED: is absent.
Update the e2e script logic around python_probe and the grep check so a
blocked-host test only passes on an explicit positive blocked signal (for
example, a dedicated BLOCKED/denied marker from python_probe), and treat probe
execution failures or missing Python as test failures instead of success.

In `@test/langchain-deepagents-code-image.test.ts`:
- Around line 222-224: Scope the path assertions in the test to the `github` and
`pypi` policy blocks instead of checking the full YAML string, because the
current `expect(policy).toContain(...)` checks can pass due to matching
`managed_inference` entries. Update
`test/langchain-deepagents-code-image.test.ts` around the existing `policy`
assertions to parse or target the specific `github` and `pypi` sections, and
then verify `/usr/bin/python3*`, `/usr/local/bin/python3*`, and
`/usr/local/lib/python3.13/**` only within those blocks so the test fails if the
new binary entries are removed.
🪄 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: 55e5bdeb-e46a-41b5-9265-442b1c966b4d

📥 Commits

Reviewing files that changed from the base of the PR and between 1f29222 and f13533b.

📒 Files selected for processing (3)
  • agents/langchain-deepagents-code/policy-additions.yaml
  • test/e2e/e2e-cloud-experimental/checks/06-deepagents-code-python-egress.sh
  • test/langchain-deepagents-code-image.test.ts

Comment thread test/e2e/e2e-cloud-experimental/checks/06-deepagents-code-python-egress.sh Outdated
Comment thread test/langchain-deepagents-code-image.test.ts Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 28204517774
Workflow ref: e2e-parity/p0-e-platform-parity
Requested scenarios: ubuntu-repo-cloud-langchain-deepagents-code
Requested jobs: (default — all default-enabled free-standing jobs; explicit-only jobs such as jetson-nvmap-gpu-vitest are skipped unless selected)
Summary: 0 passed, 1 failed, 0 cancelled, 0 skipped

Job Result
live-scenarios ❌ failure

Failed jobs: live-scenarios. 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.

Actionable comments posted: 1

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

Inline comments:
In `@test/e2e/e2e-cloud-experimental/checks/06-deepagents-code-python-egress.sh`:
- Line 35: The egress probe in the sandbox_exec Python snippet is treating every
urllib.request.urlopen exception as a policy block, which can hide successful
connections that return HTTPError or unrelated network failures. Update the
probe logic in the deepagents code egress check so it distinguishes an actual
sandbox denial from other exceptions by handling urlopen outcomes more
specifically and only emitting BLOCKED when the failure clearly indicates
outbound traffic was denied.
🪄 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: ec782d00-3bbb-474d-965c-16c719f29236

📥 Commits

Reviewing files that changed from the base of the PR and between f13533b and 7e0bff0.

📒 Files selected for processing (2)
  • test/e2e/e2e-cloud-experimental/checks/06-deepagents-code-python-egress.sh
  • test/langchain-deepagents-code-image.test.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • test/langchain-deepagents-code-image.test.ts

Comment thread test/e2e/e2e-cloud-experimental/checks/06-deepagents-code-python-egress.sh Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All selected jobs passed

Run: 28204874388
Workflow ref: e2e-parity/p0-e-platform-parity
Requested scenarios: ubuntu-repo-cloud-langchain-deepagents-code
Requested jobs: (default — all default-enabled free-standing jobs; explicit-only jobs such as jetson-nvmap-gpu-vitest are skipped unless selected)
Summary: 1 passed, 0 failed, 0 cancelled, 0 skipped

Job Result
live-scenarios ✅ success

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All selected jobs passed

Run: 28205441400
Workflow ref: e2e-parity/p0-e-platform-parity
Requested scenarios: ubuntu-repo-cloud-langchain-deepagents-code
Requested jobs: (default — all default-enabled free-standing jobs; explicit-only jobs such as jetson-nvmap-gpu-vitest are skipped unless selected)
Summary: 1 passed, 0 failed, 0 cancelled, 0 skipped

Job Result
live-scenarios ✅ success

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All selected jobs passed

Run: 28206026948
Workflow ref: e2e-parity/p0-e-platform-parity
Requested scenarios: ubuntu-repo-cloud-langchain-deepagents-code
Requested jobs: (default — all default-enabled free-standing jobs; explicit-only jobs such as jetson-nvmap-gpu-vitest are skipped unless selected)
Summary: 1 passed, 0 failed, 0 cancelled, 0 skipped

Job Result
live-scenarios ✅ success

cv added 2 commits June 25, 2026 17:51
# Conflicts:
#	agents/langchain-deepagents-code/policy-additions.yaml
#	test/e2e/e2e-cloud-experimental/checks/06-deepagents-code-python-egress.sh
#	test/langchain-deepagents-code-image.test.ts
@cv

cv commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

Addressing the remaining PR Review Advisor warning for interactive OpenClaw TUI first-turn auto-compaction parity:

  • Invalid state: a small-context local Ollama OpenClaw config can leave the TUI first turn with an oversized compaction reserve and fail before producing the first reply.
  • Source boundary: the runtime failure is in the interactive OpenClaw TUI path; this PR is only retiring/wiring E2E shell parity and does not introduce a supported Vitest TUI fixture.
  • Source-fix constraint: without that fixture, a real interactive first-turn smoke would be broader than this PR. The in-scope regression guard now selects the active Ollama model in openclaw.json, fails if it drifts off the small-context lane, and asserts the baked compaction reserve directly.
  • Follow-up/removal condition: replace the delegated waiver in gpu-e2e.test.ts with an actual Vitest TUI first-turn smoke once the TUI fixture exists; then remove the waiver/tracking rationale.

The previous Deep Agents /usr/local Python review warning is no longer applicable after resolving conflicts with current main: the default policy now scopes Deep Agents Python egress to /opt/venv and project venv paths, with the no-marker blocked-probe regression covered in platform-parity-cloud-experimental.test.ts.

@cv
cv merged commit 38964bd into main Jun 26, 2026
40 checks passed
@cv
cv deleted the e2e-parity/p0-e-platform-parity branch June 26, 2026 01:16
@cv cv added the v0.0.69 label Jun 26, 2026
@coderabbitai coderabbitai Bot mentioned this pull request Jun 26, 2026
21 tasks
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 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 integration: dcode LangChain Deep Code integration behavior labels Aug 1, 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 area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance integration: dcode LangChain Deep Code integration behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants