Skip to content

fix(ci): use supported protected audit verifier flag - #11522

Merged
sandl99 merged 2 commits into
mainfrom
fix/protected-audit-verifier-flag
Sep 11, 2026
Merged

fix(ci): use supported protected audit verifier flag#11522
sandl99 merged 2 commits into
mainfrom
fix/protected-audit-verifier-flag

Conversation

@sandl99

@sandl99 sandl99 commented Sep 11, 2026

Copy link
Copy Markdown
Collaborator

Outcome

Protected managed-image builds can verify supplied mcporter audit evidence before the offline rebuild.

Reason

The trusted controller passes --legacy-npmjs, but the verifier accepts only --legacy-audit. It rejects valid evidence with verifier arguments has unexpected or missing keys before Docker starts. Manual PR E2E uses this controller from main, so repairing the candidate copy cannot unblock GPU qualification.

Related issues

Refs #11088. Prerequisite for #11156, following #11370.

Changes

Replace the obsolete verifier flag with the supported name. One line changes; no new mechanism or test scenario.

Verification

  • Executed the controller's evidence-validation function with a valid receipt and the real verifier: main exited 1; the one-line fix exited 0 and produced a clean policy result.
  • Existing controller and receipt tests: 46 passed.
  • npm run validate:pr: passed on 615eb8afdc9906d22d8eb360b33380122780aad4 against canonical main 189043e740fdab61c8c3fdf6fe9407f438e4d955.
  • No secrets, API keys, or credentials are in the diff.

Review notes

Self-review covered scripts/checks/build-protected-managed-images.sh at 615eb8afdc in NVIDIA/NemoClaw. Validation used an unprivileged Node 22.23.2 Linux container without host mounts, credentials, or a Docker socket. Independent review is pending. The GPU target remains owned by #11156.


Signed-off-by: San Dang sdang@nvidia.com

Summary by CodeRabbit

  • Bug Fixes
    • Updated audit receipt verification to use the correct legacy audit option, improving compatibility with protected managed image checks.

Signed-off-by: San Dang <sdang@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Sep 11, 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.

@coderabbitai

coderabbitai Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview 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: f862dfdf-4c24-4470-be36-7fb0e98601d3

📥 Commits

Reviewing files that changed from the base of the PR and between 0e14405 and 59f4a7b.

📒 Files selected for processing (1)
  • scripts/checks/build-protected-managed-images.sh

Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review.


📝 Walkthrough

Walkthrough

The protected managed image check now passes --legacy-audit true to the audit receipt verifier.

Changes

Audit policy verification

Layer / File(s) Summary
Update audit verifier option
scripts/checks/build-protected-managed-images.sh
The verifier invocation now uses --legacy-audit true instead of --legacy-npmjs true.

Priority: ⚪ Not assessed

Estimated code review effort: 1 (Trivial) | ~2 minutes

Change: Bug fix

Suggested reviewers: ericksoa

Merge Risk: ⚪ Minimal · up to 59f4a

The protected managed-image audit now uses the supported verifier option and is ready to merge.

🚥 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%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. 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 and concisely describes the main change: replacing an obsolete audit verifier flag with a supported flag in CI.
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.
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/protected-audit-verifier-flag

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

@github-code-quality

github-code-quality Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall line coverage in commit 59f4a7b in the fix/protected-audit-... branch remains at 96%, unchanged from commit 0e14405 in the main branch.


Updated September 11, 2026 06:01 UTC

@sandl99
sandl99 enabled auto-merge (squash) September 11, 2026 06:04
@sandl99
sandl99 merged commit 72c66fb into main Sep 11, 2026
75 of 78 checks passed
@sandl99
sandl99 deleted the fix/protected-audit-verifier-flag branch September 11, 2026 06:15
cv added a commit that referenced this pull request Sep 11, 2026
)

## Outcome

Protected OpenClaw rebuilds consume verified mcporter audit evidence
while networking is disabled. The fix reuses #11370's trusted controller
and preserves rejection of incomplete or mismatched evidence.

## Reason

The [failed GPU
job](https://github.com/NVIDIA/NemoClaw/actions/runs/34375097855/job/102555650142)
ran `npm audit` during an offline rebuild without supplied evidence.
Both attempts returned the same 206-byte `EAI_AGAIN` document with
missing metadata. GPU inference never started.

### Related issues

Fixes #11088. Uses merged prerequisites #11370 and #11522 (the
trusted-controller flag correction).

## Changes

- Share the receipt, raw-report, and trusted-policy consumer between
both Dockerfiles. Verify transport hashes; run a live audit only when
evidence is absent.
- Keep bounded, redacted diagnostics and the existing two-attempt limit
for recognized transient audit failures.
- Reuse the producer's policy output. Remove duplicate policy emission,
redundant workflow-shape coverage, and unrelated cache-export cleanup.
- Stub unrelated llama.cpp host discovery in the existing vLLM
serving-profile fixture after its CI timeout.
- Retain up to 64 KiB of redacted host gateway logs when managed-image
activation fails. The preceding failure retained no gateway explanation;
onboarding behavior and retry limits are unchanged.

The diff is reduced from 22 files and 1,137 added lines to 21 files and
917 added lines. No new test scenario or public documentation is added.

## Verification

Candidate: `ca72fcbfac849946db3552f2abff68b4627c6656`. Canonical
validation reference: `c5eee32476e90b7f200a2207a3fd3175a56b8d32`. PR
base: `e0273c244c0e96ab35bd1d3c962c3802633d67e7`.

- Initial audit-fix tests: 336 passed, 2 skipped across 11 files; CLI
and plugin builds passed. Those audit-fix paths remain unchanged.
- Existing vLLM fixture: four tests pass. A temporary 6-second
host-probe delay reproduced the prior 5-second timeout; the fixture
correction prevented that unrelated call. Temporary probe code was
removed. [CI passed on
`38fa1ebe5f`](https://github.com/NVIDIA/NemoClaw/actions/runs/34580969055),
including the previously failing shard 3.
- Existing diagnostic/redaction tests: 59 passed across
`managed-image-activation-diagnostics.test.ts`, `docker-probe.test.ts`,
`e2e-redaction-entry.test.ts`, and `e2e-redaction-parity.test.ts`, using
`npm exec -- vitest run --project e2e-support` with those four files.
- `npm run validate:pr`: all pre-commit code, formatting, repository,
and security checks passed. Commitlint reports the same five historical
message errors: three have a [recorded
exception](#11156 (comment)),
and the user authorized preserving the `31645fc` type and `a126c3f`
body-length errors. History is preserved; no code or security check is
waived.
- Separate pre-push CLI type checks passed. Validation uses Node 22.23.2
Linux as an unprivileged user, without host mounts, credentials, or a
Docker socket. No secrets are in the diff.

The [preceding image
run](https://github.com/NVIDIA/NemoClaw/actions/runs/34580969115) passed
every image build/publication and both MCP checks, but OpenClaw
activation entered OpenShell `Error` before a durable create identity
was available. The retained filtered Docker inventory was empty. The
underlying gateway cause remains unresolved; this revision adds the
missing failure evidence.

The workflow's existing `managed_image_revision` input can reuse the
[fully successful `1bd6e085e4` image
cohort](https://github.com/NVIDIA/NemoClaw/actions/runs/34575859333).
Only the existing unit-test fixture and E2E failure diagnostics changed
after that revision; image build sources are unchanged. Protected GPU
qualification still builds images from the latest candidate checkout and
must bind its result to that candidate. Ancestor cohort reuse does not
waive the current activation check.

Current CI, image qualification, and protected GPU/local-inference E2E
remain pending. The protected selector is
`jobs=managed-image-protected-runtime`, with empty targets and no
staging or Jetson dispatch.

## Review notes

Self-review covers the full candidate diff. CodeRabbit's receipt/raw
binding and strict JSON parsing corrections are retained. Advisor's
duplicate-policy finding is addressed; broader cache transactions and
duplicate test infrastructure are excluded.

All nine Advisor specialists completed for `38fa1ebe5f`; eight requested
no change. The verification specialist's extra YAML wiring scenario is
[declined with the coverage gap and rationale
recorded](#11156 (comment)).
Existing executable handoff tests and actual workflow qualification
remain required.

The human request for protected E2E evidence remains open. No review is
dismissed or merge requirement bypassed.

---
Signed-off-by: San Dang <sdang@nvidia.com>

---------

Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: Rebecca Sliter <571084+rsliter@users.noreply.github.com>
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Signed-off-by: Rebecca Sliter <sliterrm@gmail.com>
Co-authored-by: Rebecca Sliter <571084+rsliter@users.noreply.github.com>
Co-authored-by: Julie Yaunches <jyaunches@nvidia.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Rebecca Sliter <sliterrm@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants