test(e2e): retire priority 1 dedicated jobs - #7651
Conversation
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
|
Note Reviews pausedIt 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 Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThis change retires dedicated diagnostics and credential E2E jobs, narrows supported suites, relocates diagnostics and credential checks into existing tests, and updates deterministic E2E risk planning from ChangesE2E workflow retirement and suite updates
Estimated code review effort: 4 (Complex) | ~45 minutes Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage in commit 3c56a35 in the TypeScript / code-coverage/cliThe overall coverage in commit 3c56a35 in the Show a code coverage summary of the most impacted files.
Updated |
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
There was a problem hiding this comment.
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/live/cloud-inference.test.ts`:
- Around line 234-275: The sandbox secret scan in the secretProbe command
currently emits matching secret content and suppresses scan failures. Update it
to report only matching file paths or metadata, preserve the exclusion filters,
and ensure grep/find errors propagate while treating only the normal “no
matches” result as clean; remove the unconditional `|| true`. Apply the same
error-preservation requirement to the authProbe command by avoiding discarded
errors.
In `@test/package-contract/cli/debug-cli-command.test.ts`:
- Around line 80-100: Remove the shell if statements from the openshell and
docker fixtures in the debug CLI test, replacing their command-specific behavior
with linear fixture output or case-based dispatch. Preserve the existing outputs
and exit statuses for sandbox list, sandbox ssh-config, docker format checks,
and diagnostic commands while avoiding added shell conditionals.
🪄 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: cffbb8bf-f133-4b87-8d23-dce0866d9059
📒 Files selected for processing (31)
.github/workflows/brev-nightly-e2e.yaml.github/workflows/e2e-branch-validation.yaml.github/workflows/e2e.yamlci/source-shape-test-budget.jsonsrc/lib/security/credential-filter-secret-patterns.test.tstest/brev-nightly-workflow.test.tstest/brev-remote-vitest.test.tstest/e2e-recommendations.test.tstest/e2e/README.mdtest/e2e/brev-e2e.test.tstest/e2e/live/cloud-inference.test.tstest/e2e/live/cloud-onboard.test.tstest/e2e/live/credential-migration.test.tstest/e2e/live/credential-sanitization.test.tstest/e2e/live/diagnostics.test.tstest/e2e/mock-parity.jsontest/e2e/support/dockerhub-auth-workflow-boundary.test.tstest/e2e/support/e2e-operations-workflow-boundary.test.tstest/e2e/support/e2e-workflow.test.tstest/e2e/support/live-vitest-invocation.test.tstest/e2e/support/upload-e2e-artifacts-workflow-boundary.test.tstest/onboard-inference-reconciliation.test.tstest/package-contract/cli/debug-cli-command.test.tstest/pr-e2e-gate-dispatch-recovery.test.tstest/pr-e2e-gate-fork-approval.test.tstest/pr-e2e-gate-workflow.test.tstest/pr-e2e-gate.test.tstest/pr-risk-plan.test.tstools/advisors/risk-plan.mtstools/e2e/brev-remote-vitest.mtstools/e2e/workflow-boundary.mts
💤 Files with no reviewable changes (9)
- test/e2e/live/diagnostics.test.ts
- test/e2e/live/credential-sanitization.test.ts
- tools/e2e/brev-remote-vitest.mts
- test/e2e/live/credential-migration.test.ts
- ci/source-shape-test-budget.json
- .github/workflows/e2e.yaml
- tools/e2e/workflow-boundary.mts
- test/e2e/support/e2e-workflow.test.ts
- test/e2e/mock-parity.json
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
PR Review Advisor — No blocking findings reportedAdvisor assessment: No blocking advisor findings reported Model lanes
Nemotron output stays in workflow artifacts and does not change the assessment above. E2E guidanceAdvisory only. E2E / PR Gate selects and runs jobs independently. Recommended E2E: This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
There was a problem hiding this comment.
♻️ Duplicate comments (1)
test/e2e/live/cloud-inference.test.ts (1)
252-293: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick winPer-file error checks are dead code — pipe-into-
whileruns in a subshell.
printf '%s\n' "$filtered" | while IFS= read -r file; do ... doneplaces the loop body on the right side of a pipe, so in POSIXshit executes in a subshell. Theexit "$match_status"/exit "$unstripped_status"calls inside only terminate that subshell — the outer script (and thefor dirloop) continues unaffected, and the pipeline's own exit status is never captured. Any realgrepfailure while scanning an individual matched file (permission error, unreadable file, etc.) is therefore silently discarded, andsecretProbe.exitCodewill still report0with empty stdout — a false "clean" result for a security-sensitive credential-boundary check. This is a continuation of the previously flagged "swallows scan failures" concern; the secret-content emission part has been fixed (only filenames are now printed), but the failure-propagation guarantee is not actually achieved due to this shell semantics gotcha.Route the per-file loop through a temp file (or another non-pipe input) so it runs in the current shell and
exitactually propagates:🔒 Proposed fix using a temp file instead of a pipe
' case "$filter_status" in', - ` 0) printf '%s\\n' "$filtered" | while IFS= read -r file; do`, + ` 0) tmp_filtered=$(mktemp)`, + ` printf '%s\\n' "$filtered" > "$tmp_filtered"`, + ` while IFS= read -r file; do`, ` matching_lines=$(grep -IE 'nvapi-|ghp_|npm_' "$file")`, " match_status=$?", ' case "$match_status" in', ` 0) printf '%s' "$matching_lines" | grep -qv 'STRIPPED'`, " unstripped_status=$?", ' case "$unstripped_status" in', ` 0) printf '%s\\n' "$file" ;;`, " 1) ;;", - ' *) exit "$unstripped_status" ;;', + ' *) rm -f "$tmp_filtered"; exit "$unstripped_status" ;;', " esac", " ;;", " 1) ;;", - ' *) exit "$match_status" ;;', + ' *) rm -f "$tmp_filtered"; exit "$match_status" ;;', " esac", - " done", + ` done < "$tmp_filtered"`, + ` rm -f "$tmp_filtered"`, " ;;",Based on a previous review comment on this function noting the scan probes "discard errors" and can let "an unreadable state directory... pass as clean," which is only partially resolved by the current implementation.
🤖 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/live/cloud-inference.test.ts` around lines 252 - 293, Update the secretScanCommand loop around filtered to avoid piping printf into while, since that runs the loop in a subshell and discards per-file failures. Feed the filtered filenames through a temporary file or another non-pipeline input so the loop executes in the current shell and exit "$match_status" and exit "$unstripped_status" propagate to secretProbe.exitCode; preserve the existing filename filtering and STRIPPED handling.
🤖 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.
Duplicate comments:
In `@test/e2e/live/cloud-inference.test.ts`:
- Around line 252-293: Update the secretScanCommand loop around filtered to
avoid piping printf into while, since that runs the loop in a subshell and
discards per-file failures. Feed the filtered filenames through a temporary file
or another non-pipeline input so the loop executes in the current shell and exit
"$match_status" and exit "$unstripped_status" propagate to secretProbe.exitCode;
preserve the existing filename filtering and STRIPPED handling.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 3b22fc1d-36ae-449f-a83b-642ed71e340f
📒 Files selected for processing (2)
test/e2e/live/cloud-inference.test.tstest/package-contract/cli/debug-cli-command.test.ts
🚧 Files skipped from review as they are similar to previous changes (1)
- test/package-contract/cli/debug-cli-command.test.ts
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
|
Addressed the latest CodeRabbit shell-semantics follow-up in 77a3bbf. The filtered path list now feeds the per-file loop through a private temporary file, so the loop runs in the current shell and non-no-match grep statuses propagate to the probe exit code. Direct shell validation covered syntax, exclusions, STRIPPED handling, path-only output, and a simulated per-file grep status 2. |
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
|
Resolved the CLI shard regression in 0ffe7cc. The latest main branch added controller compatibility for retired selectors; this PR now registers credential-migration, credential-sanitization, and diagnostics with precise ordinary-test replacements and updates the candidate workflow gate. Focused planner/compatibility/workflow tests pass 74/74, and each P1 replacement command passes (migration 1/1, credential filter 13/13, diagnostics 1/1). |
There was a problem hiding this comment.
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/credential-migration-reconciliation.test.ts`:
- Around line 73-78: Update the reconciliation test around setupInference() to
stop manually calling removeLegacyCredentialsFile(). Exercise the actual mocked
gateway registration flow for both outcomes: verify the legacy credentials file
remains after registration failure and is removed after successful registration,
using assertions that validate production cleanup behavior.
🪄 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: 895e1edd-c1bc-4811-a332-ad5b220683c9
📒 Files selected for processing (7)
.github/workflows/e2e.yamltest/credential-migration-reconciliation.test.tstest/e2e/support/retired-selector-compatibility.test.tstest/e2e/support/workflow-plan.test.tstest/onboard-inference-reconciliation.test.tstools/e2e/retired-selector-compatibility.mtstools/e2e/workflow-boundary.mts
💤 Files with no reviewable changes (1)
- test/onboard-inference-reconciliation.test.ts
🚧 Files skipped from review as they are similar to previous changes (1)
- tools/e2e/workflow-boundary.mts
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
<!-- markdownlint-disable MD041 --> ## Summary Add the canonical dated changelog entry for NemoClaw v0.0.97 before the release plan captures `origin/main`. The entry groups the user-visible and maintainer-facing changes since v0.0.96 while preserving the Deferred dual-Station status, experimental runtime-identity boundary, and pending physical IGX validation. ## Changes - Add `docs/changelog/2026-07-28.mdx` with the parser-safe MDX SPDX comment and exact `## v0.0.97` heading. - Summarize the 43 merged PRs in the release range, omitting internal-only changes from the public entry and linking each grouped change to its most specific published documentation. - Keep the experimental Okta reference explicitly opt-in and outside normal onboarding, keep the two-Station path Deferred, and state that physical IGX Orin validation remains pending. ### Source summary - [#7440](#7440), [#7443](#7443), and [#7445](#7445) -> `docs/changelog/2026-07-28.mdx`: Document read-only host readiness reports and fail-closed platform qualification. - [#7030](#7030) -> `docs/changelog/2026-07-28.mdx`: Document the Deferred trusted two-Station vLLM evaluation. - [#7265](#7265) -> `docs/changelog/2026-07-28.mdx`: Document the bounded experimental direct-runner Okta runtime-identity reference. - [#7711](#7711) and [#7648](#7648) -> `docs/changelog/2026-07-28.mdx`: Document compatible-endpoint reasoning effort and retired NVIDIA Build model paths. - [#7746](#7746), [#7763](#7763), and [#7681](#7681) -> `docs/changelog/2026-07-28.mdx`: Document safe compatible-provider creation, replacement refusal, and narrow OpenShell bridge URL handling. - [#7641](#7641), [#7690](#7690), [#7631](#7631), and [#7710](#7710) -> `docs/changelog/2026-07-28.mdx`: Document paused-container recovery, recreation journaling, pre-mutation uninstall checks, and source-checkout OpenShell selection. - [#7624](#7624) and [#7762](#7762) -> `docs/changelog/2026-07-28.mdx`: Document Jetson release diagnostics and bounded render-device group propagation. - [#7639](#7639), [#7760](#7760), [#7721](#7721), and [#7761](#7761) -> `docs/changelog/2026-07-28.mdx`: Document Telegram, MCP media-type, Hermes image-mode, and locked-restart fixes. - [#7653](#7653) and [#7680](#7680) -> `docs/changelog/2026-07-28.mdx`: Document Deep Agents policy tasks and the bounded Claude Code OAuth path. - [#7679](#7679) -> `docs/changelog/2026-07-28.mdx`: Document the checksum-bound libssh2 and Python HTMLParser backports. - [#7655](#7655), [#7651](#7651), [#7664](#7664), [#7666](#7666), [#7670](#7670), [#7719](#7719), and [#7741](#7741) -> `docs/changelog/2026-07-28.mdx`: Document exact candidate E2E evidence, Launchable selection, diagnostic consolidation, and trusted WSL validation. ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [x] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Quality Gates - [ ] Tests added or updated for changed behavior - [x] Existing tests cover changed behavior — justification: `test/changelog-docs.test.ts` validates the dated changelog contract, MDX header, heading uniqueness, and release-entry structure. - [ ] Tests not applicable — justification: - [x] Docs updated for user-facing behavior changes - [ ] 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 — reviewer/approval link/justification: - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## Documentation Writer Review - [x] Documentation writer subagent reviewed the completed changes - Result: `docs-updated` - Evidence: The committed `docs/changelog/2026-07-28.mdx` blob exactly matches the reviewed file. Completeness, factual accuracy, link shape, parser-safe MDX header, one-sentence-per-line style, `.docs-skip` compliance, and bounded product claims passed. - Agent: Codex Desktop documentation writer subagent <!-- docs-review-head-sha: da6aa27 --> <!-- docs-review-agents-blob-sha: be20a09 --> ## DGX Station Hardware Evidence - [ ] Tested on DGX Station - Tested commit: Not applicable; this PR changes only the dated changelog. - Station profile/scenario: Not applicable. - Result: Not applicable. - Supporting evidence: Not applicable. ## Verification - [x] PR description includes a `Signed-off-by:` line and every commit appears as `Verified` in GitHub - [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or `npm run check:diff` passed when hooks were skipped or unavailable - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — `npx vitest run test/changelog-docs.test.ts` passed 6/6. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — not applicable to this doc-only release entry. - [x] Quality Gates section completed with required justifications or waivers - [x] No secrets, API keys, or credentials committed - [ ] `npm run docs` builds without warnings (doc changes only) — completed with 0 errors and 2 pre-existing Fern warnings. - [x] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) — native changelog entries use the required parser-safe MDX SPDX comment and intentionally have no frontmatter. --- Signed-off-by: Charan Jagwani <cjagwani@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added improved host readiness reporting and Jetson onboarding guidance. * Added controls for reasoning effort with compatible endpoints and enhanced managed MCP discovery. * Improved Deep Agents task publication and preset support. * **Bug Fixes** * Hardened provider switching, sandbox recovery, uninstall behavior, and Telegram connectivity. * Improved container image integrity checks, media-type handling, and checksum validation. * Enhanced vLLM evaluation behavior and release diagnostics. * **Documentation** * Added the NemoClaw v0.0.97 changelog. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Summary
Retire the dedicated diagnostics, credential-migration, and credential-sanitization live E2E jobs after relocating their stable assertions to normal coverage projects. The distinct real-sandbox checks now run inside the existing cloud-onboard and cloud-inference journeys, reducing scheduled runner work without dropping the security boundaries.
Related Issue
Fixes #7617
Changes
Type of Change
Quality Gates
test/e2e/README.mdinventory was updated.Documentation Writer Review
no-docs-neededtest/e2e/README.mdupdates the internal E2E control-plane job inventory..github/workflows/e2e-branch-validation.yamland.github/workflows/brev-nightly-e2e.yamlupdate internal suite comments and options. Follow-ups preserve the credential-migration live seam in cloud-onboard, harden retained test probes, and preserve controller compatibility for retired selectors through ordinary tests. The completed change reorganizes test coverage and CI selectors without changing supported user behavior; nodocs/page or release entry is needed.DGX Station Hardware Evidence
Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailable1/1compiled diagnostics contract;2/2focused migration lifecycle scenarios;174/174risk/controller tests;74/74focused E2E workflow/support tests; CLI and root type-checks, Vitest project membership, and E2E semantic phase checks passed.npm testwas attempted but stopped after this macOS host produced unrelated timeout and platform/plugin failures across untouched Linux-service, rollback, installer, and package-contract tests. The affected targeted projects and tests pass.npm run docsbuilds without warnings (doc changes only)Signed-off-by: Prekshi Vyas prekshiv@nvidia.com