Skip to content

test: prevent declarative config mirrors - #6718

Merged
cv merged 35 commits into
mainfrom
codex/6708-declarative-test-guard
Jul 12, 2026
Merged

test: prevent declarative config mirrors#6718
cv merged 35 commits into
mainfrom
codex/6708-declarative-test-guard

Conversation

@cv

@cv cv commented Jul 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

Replace the remaining raw declarative-config, workflow, registry, and package-shape mirrors with production-consumer, mutation, execution, or narrowly reviewed security and compatibility contracts. Extend the source-shape guard so future co-located tests, declarative imports, setup-hook reads, accessor projections, Node assertions, and aliasing bypasses are rejected.

Related Issue

Closes #6708

Changes

  • Remove generic workflow topology, policy inventory, manifest-array, and configuration-key assertions while preserving their security and compatibility invariants at executable boundaries.
  • Exercise shipped policy preparation, workflow validators, installer Git checkout, runtime entrypoints, registry consumers, and aggregate CI shell gates instead of mirroring source structure.
  • Require exact security or compatibility annotations for unavoidable direct contracts and lock all 90 reviewed exceptions by file, test title, and category.
  • Expand source-shape:check across co-located tests and cover declarative imports, setup hooks, raw accessors, projections, accumulators, assertion aliases, dynamic execution, and duplicate exception identities.
  • Document the behavior-oriented testing rule in CONTRIBUTING.md and ratchet the legacy installer test-file budget after splitting its new behavior test.

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
  • Docs not applicable — justification: Contributor-only testing guidance changed; documentation review found no user-facing runtime, command, schema, policy, or workflow change.
  • 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: Security and compatibility contracts were retained in an exact allowlist; repeated adversarial scanner review closed every reproduced bypass, and the full non-live matrix passed.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Verification

  • PR description includes the DCO sign-off declaration and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run check:diff passed when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — command/result or justification: Focused CLI, integration, installer-integration, and E2E-support runs passed, including 23 scanner tests, 95 installer preflight tests, and the split installer checkout test.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result: npm test passed 1,446 files and 16,337 tests with 40 intentional skips; config validation, project membership, title style, CLI/plugin typechecks, formatting, test-size, and source-shape checks also passed.
  • 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)

Signed-off-by: Carlos Villela cvillela@nvidia.com

Summary by CodeRabbit

  • New Features
    • Added installer integration coverage for cloning fully qualified refs into detached checkouts.
  • Documentation
    • Added guidance on testing declarative behavior with validators and synthetic fixtures, including stricter contract-exception expectations.
  • Tests
    • Expanded and refined source-shape scanning/reporting, contract-exception tracking, and security/compatibility boundary annotations across workflow and E2E tests.
    • Introduced a fixture-style assertion helper to enforce required workflow fields.
  • Chores
    • Broadened source-shape test-budget triggers, populated contract exception allowlists, updated Vitest project inclusion/exclusion, and adjusted a small test-file size budget.

cv added 29 commits July 12, 2026 01:47
<!-- markdownlint-disable MD041 -->
## Summary

E2E support tests now derive manifest, matrix, and dispatch expectations
from the production registries and workflow planner instead of copying
the current inventory. Focused malformed-selector, secret-bearing-job,
artifact, runner, and unsupported-target behavior remains explicit.

## Related Issue

Part of #6708.

## Changes

- Remove literal manifest count, target-field, and observability
snapshots.
- Verify every typed target resolves to a validated manifest path.
- Replace the hard-coded live matrix with supported-target, uniqueness,
runner-resolution, unsupported-selection, and CLI parity behavior.
- Collapse hundreds of repeated selector assertions into
registry-derived coverage while retaining invalid and mixed selector
cases.
- Replace exact workflow target-to-job literals with
referential-integrity checks against actual workflow jobs.

## Type of Change

- [x] 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

- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [ ] Docs updated for user-facing behavior changes
- [x] Docs not applicable — justification: Test methodology changes
only; E2E targets, workflows, commands, and runtime behavior are
unchanged.
- [x] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [x] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification: Test-only cleanup
preserves malformed selector rejection, secret-bearing job gating,
artifact-path rejection, runner resolution, and unsupported-target
evidence.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Verification

- [x] PR description includes the DCO sign-off declaration 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 — `vitest --project e2e-support`: 3
files and 30 tests passed; `npm run test:titles:check` passed.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result:
- [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)
- [ ] 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)

---
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
@cv cv self-assigned this Jul 12, 2026
@coderabbitai

coderabbitai Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: f421e8e7-edca-448d-89e3-acf4f85afe95

📥 Commits

Reviewing files that changed from the base of the PR and between 380c997 and 189faca.

📒 Files selected for processing (1)
  • test/e2e/support/e2e-workflow-trace.test.ts

📝 Walkthrough

Walkthrough

This PR replaces declarative source-shape mirrors with behavioral contracts, expands AST-based scanning and exception enforcement, refocuses workflow and policy tests on observable behavior, and adds installer-ref coverage with fixture-validation helpers.

Changes

Behavioral contract migration

Layer / File(s) Summary
AST source-shape analysis and enforcement
scripts/find-source-shape-tests.ts, test/source-shape-scanner.test.ts, CONTRIBUTING.md, ci/*, .pre-commit-config.yaml
Adds AST-based source tracking, declarative-load detection, contract annotations, exception reporting, allowlist validation, and focused scanner coverage.
Workflow and security boundary tests
test/*workflow*.test.ts, test/e2e/support/*, src/lib/actions/sandbox/*
Replaces source-text and manifest mirrors with runtime checks for permissions, pins, integrity, selectors, credential boundaries, and workflow ownership.
Installer, fixture, and project wiring
test/install-clone-ref.test.ts, test/e2e/support/require-fixture.ts, scripts/checks/vitest-project-overlap.ts, vitest.config.ts
Adds detached-ref installer coverage, centralizes required fixture assertions, and assigns the new test to the installer-integration project.
Effective sandbox policy behavior
test/validate-blueprint.test.ts
Retains digest trust-anchor checks and validates merged policies after production preparation and preset application.

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

Possibly related PRs

  • NVIDIA/NemoClaw#4777: Both changes exercise the runtime shell cleanup shim path and its associated tests.

Suggested labels: area: ci, area: security, refactor, chore

Suggested reviewers: cjagwani, ericksoa

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.91% 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 clearly reflects the main change: tightening tests around declarative config mirrors.
Linked Issues check ✅ Passed The changes replace declarative mirrors with behavioral and security contracts, and expand source-shape detection as requested.
Out of Scope Changes check ✅ Passed The added scanner, docs, tests, and config updates all support the same testing-boundary objective.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/6708-declarative-test-guard

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

@github-code-quality

github-code-quality Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage remains at 96%, unchanged from the main branch.

TypeScript / code-coverage/cli

The overall coverage in the codex/6708-declarati... branch remains at 79%, unchanged from the main branch.

Show a code coverage summary of the most impacted files.
File main 8acb280 codex/6708-declarati... 189faca +/-
src/lib/inferen...vider-models.ts 90% 79% -11%
src/lib/sandbox/config.ts 61% 59% -2%
src/lib/state/o...oard-session.ts 80% 83% +3%
src/lib/state/sandbox.ts 84% 88% +4%
src/lib/shields/index.ts 67% 74% +7%
src/lib/policy/index.ts 53% 60% +7%
src/lib/actions...ridge-policy.ts 57% 64% +7%
src/lib/onboard...eate-failure.ts 79% 88% +9%
src/lib/state/m...-acquisition.ts 80% 100% +20%
src/lib/actions...e-classifier.ts 65% 86% +21%

Updated July 12, 2026 17:48 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.

@github-actions

github-actions Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: cloud-onboard
Optional E2E: None

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • cloud-onboard (high): Changed onboard, trace timing, scorecard, or E2E workflow code can affect cloud onboard wall-clock behavior and should refresh the trusted cloud-onboard trace timing signal.

Optional E2E

  • None.

New E2E recommendations

  • None.

@github-actions

github-actions Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings

Merge posture: No blocking advisor findings
Primary next action: No advisor follow-up required beyond maintainer review.
Findings: 0 required · 0 warnings · 0 optional suggestions
Since last review: 0 prior items resolved · 0 still apply · 0 new items found

Workflow run details

This is an automated review. Required findings need action before merge. Warnings and optional suggestions do not require a response or follow-up. A human maintainer makes the final merge decision.

cv added 2 commits July 12, 2026 04:37
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Base automatically changed from codex/6708-package-version-contracts to main July 12, 2026 16:55
Signed-off-by: Carlos Villela <cvillela@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: 2

🧹 Nitpick comments (1)
test/pr-e2e-gate-workflow.test.ts (1)

166-198: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicate step-execution scaffolding between runStartStep and runCancelStep.

Both helpers repeat the same mkdtemp/fake-node/spawnSync/cleanup pattern, differing only in the target step, env vars, and command args. Consider extracting a shared runWorkflowStep(job, stepName, env) helper to avoid future drift between the two.

♻️ Sketch of a shared helper
+function runWorkflowStep(job: WorkflowJob, stepName: string, extraEnv: Record<string, string>) {
+  const target = step(job, stepName);
+  const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "nemoclaw-pr-e2e-gate-step-"));
+  const binDir = path.join(tempDir, "bin");
+  const argumentsPath = path.join(tempDir, "node-arguments");
+  fs.mkdirSync(binDir);
+  fs.writeFileSync(
+    path.join(binDir, "node"),
+    '#!/usr/bin/env bash\nset -euo pipefail\nprintf \'%s\\0\' "$@" > "$FAKE_NODE_ARGUMENTS"\n',
+    { mode: 0o755 },
+  );
+  try {
+    const result = spawnSync("bash", ["-e", "-o", "pipefail", "-c", target.run!], {
+      encoding: "utf8",
+      env: { ...process.env, FAKE_NODE_ARGUMENTS: argumentsPath, PATH: `${binDir}:${process.env.PATH ?? ""}`, ...extraEnv },
+      timeout: 5_000,
+    });
+    return { arguments: fs.readFileSync(argumentsPath, "utf8").split("\0").slice(0, -1), result };
+  } finally {
+    fs.rmSync(tempDir, { recursive: true, force: true });
+  }
+}
🤖 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/pr-e2e-gate-workflow.test.ts` around lines 166 - 198, Extract the
duplicated temporary-directory, fake-node setup, spawnSync execution, argument
capture, and cleanup from runStartStep and runCancelStep into a shared
runWorkflowStep(job, stepName, env) helper. Update both wrappers to select their
workflow step and provide only their step-specific environment or arguments,
while preserving the existing results and cleanup behavior.
🤖 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/cloudflared-update-check-workflow.test.ts`:
- Around line 123-131: Extend the test “keeps the update check read-only with a
credential-free checkout” to locate the step named “Compare reviewed pin with
the latest upstream release” and assert its run command remains “bash
scripts/checks/check-cloudflared-update.sh”. Preserve the existing permissions
and checkout assertions.

In `@test/macos-e2e-workflow-boundary.test.ts`:
- Around line 70-81: Extend the “runs final-destroy…” test around
readMacosWorkflow and the macos-docker-final-destroy job to restore behavioral
assertions for final-destroy cleanup wiring and failure-only log uploads. Keep
the existing runner, permissions, action SHA, and Docker version checks, and
verify uploads are conditional on failure and publish the expected log paths.

---

Nitpick comments:
In `@test/pr-e2e-gate-workflow.test.ts`:
- Around line 166-198: Extract the duplicated temporary-directory, fake-node
setup, spawnSync execution, argument capture, and cleanup from runStartStep and
runCancelStep into a shared runWorkflowStep(job, stepName, env) helper. Update
both wrappers to select their workflow step and provide only their step-specific
environment or arguments, while preserving the existing results and 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: c6bb852a-fa7c-46de-8114-861205b50081

📥 Commits

Reviewing files that changed from the base of the PR and between 8acb280 and 0f778b0.

📒 Files selected for processing (62)
  • .pre-commit-config.yaml
  • CONTRIBUTING.md
  • ci/source-shape-test-budget.json
  • ci/test-file-size-budget.json
  • scripts/checks/vitest-project-overlap.ts
  • scripts/find-source-shape-tests.ts
  • src/lib/actions/sandbox/mcp-bridge-input-validation.test.ts
  • src/lib/actions/sandbox/mcp-bridge-runtime-validation.test.ts
  • src/lib/agent/base-image-hermes.test.ts
  • src/lib/onboard/inference-providers/compatible-endpoint-gateway-route.test.ts
  • test/brev-nightly-workflow.test.ts
  • test/cloudflared-update-check-workflow.test.ts
  • test/code-scanning-workflow.test.ts
  • test/dcode-base-image-workflow.test.ts
  • test/dcode-start-keepalive.test.ts
  • test/e2e-advisor.test.ts
  • test/e2e-fixture-dependency-review.test.ts
  • test/e2e-release-gate-workflow.test.ts
  • test/e2e/live/hermes-e2e.test.ts
  • test/e2e/support/e2e-expected-state.test.ts
  • test/e2e/support/e2e-live-project-config.test.ts
  • test/e2e/support/e2e-live-registry-discovery.test.ts
  • test/e2e/support/e2e-live-skip-name-contract.test.ts
  • test/e2e/support/e2e-manifests.test.ts
  • test/e2e/support/e2e-matrix.test.ts
  • test/e2e/support/e2e-registry.test.ts
  • test/e2e/support/e2e-report-to-pr-workflow-boundary.test.ts
  • test/e2e/support/e2e-workflow.test.ts
  • test/e2e/support/mcp-workflow-boundary.test.ts
  • test/e2e/support/mcp-workflow-compatibility.test.ts
  • test/e2e/support/require-fixture.ts
  • test/e2e/support/spark-install-workflow-boundary.test.ts
  • test/e2e/support/tunnel-lifecycle-workflow-boundary.test.ts
  • test/fetch-guard-patch-regression.test.ts
  • test/hermes-mcp-config-transaction.test.ts
  • test/hermes-sandbox-workflow.test.ts
  • test/inference-options-docs.test.ts
  • test/install-clone-ref.test.ts
  • test/install-preflight.test.ts
  • test/label-merged-pr-release-target-workflow.test.ts
  • test/macos-e2e-workflow-boundary.test.ts
  • test/mcp-openshell-workflow.test.ts
  • test/openclaw-dependency-review.test.ts
  • test/openclaw-lifecycle-policy.test.ts
  • test/openclaw-real-patched-dist-harness.test.ts
  • test/plugin-vitest-project.test.ts
  • test/pr-e2e-gate-workflow.test.ts
  • test/pr-review-advisor-workflow-boundary.test.ts
  • test/pr-workflow-contract.test.ts
  • test/regression-e2e-workflow.test.ts
  • test/repro-4538-raw-doctor-perms.test.ts
  • test/repro-5978-policy-denial-hint.test.ts
  • test/runner.test.ts
  • test/source-shape-scanner.test.ts
  • test/test-boundary-guards.test.ts
  • test/validate-blueprint.test.ts
  • test/vitest-coverage-thresholds.test.ts
  • test/vitest-developer-feedback.test.ts
  • test/vitest-state-isolation.test.ts
  • test/vitest-temp-root.test.ts
  • test/vitest-watch-triggers.test.ts
  • vitest.config.ts
💤 Files with no reviewable changes (3)
  • test/hermes-sandbox-workflow.test.ts
  • src/lib/actions/sandbox/mcp-bridge-runtime-validation.test.ts
  • test/install-preflight.test.ts

Comment thread test/cloudflared-update-check-workflow.test.ts Outdated
Comment thread test/macos-e2e-workflow-boundary.test.ts Outdated
Signed-off-by: Carlos Villela <cvillela@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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
test/cloudflared-update-check-workflow.test.ts (1)

19-27: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Restore workflow trigger coverage.

The replacement contract no longer models or checks on.schedule / on.workflow_dispatch. A workflow with valid permissions, checkout, and a working script but no schedule or manual trigger could now pass while never running the update check. Keep this reachability contract in an aggregate or behavioral test.

As per path instructions, workflow tests should preserve observable execution behavior, not only remaining metadata checks.

Also applies to: 126-138

🤖 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/cloudflared-update-check-workflow.test.ts` around lines 19 - 27, Extend
the CloudflaredUpdateWorkflow contract and its aggregate or behavioral
assertions to model and validate the workflow’s on.schedule and
on.workflow_dispatch triggers. Ensure the test rejects workflows lacking both
reachable update-check triggers while preserving existing permission, checkout,
and script execution checks.

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.

Outside diff comments:
In `@test/cloudflared-update-check-workflow.test.ts`:
- Around line 19-27: Extend the CloudflaredUpdateWorkflow contract and its
aggregate or behavioral assertions to model and validate the workflow’s
on.schedule and on.workflow_dispatch triggers. Ensure the test rejects workflows
lacking both reachable update-check triggers while preserving existing
permission, checkout, and script execution checks.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 0b5a97cf-ae27-4457-ad6a-57b005bd1c87

📥 Commits

Reviewing files that changed from the base of the PR and between 0f778b0 and 55552bb.

📒 Files selected for processing (2)
  • test/cloudflared-update-check-workflow.test.ts
  • test/macos-e2e-workflow-boundary.test.ts

cv added 2 commits July 12, 2026 10:35
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test: replace declarative config mirrors with behavioral contracts

2 participants