fix(e2e): refresh Pi qualification receipts - #10390
Conversation
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
…or-image-changes # Conflicts: # test/platform/images/vllm-docker-storage.test.ts
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
Signed-off-by: San Dang <sdang@nvidia.com>
|
🌿 Preview your docs: https://nvidia-preview-pr-10390.docs.buildwithfern.com/nemoclaw |
cjagwani
left a comment
There was a problem hiding this comment.
Exact-head review at af4887f: four blockers remain in unchanged Pi qualification code. The event oracle accepts extra assistant messages when the final reply matches; the Pi artifact suite and live git-diff gate are unapproved source-shape owners; and removing the opaque-input watch mapping lets Pi policy, receipt, manifest, Dockerfile, authority, lockfile, or start-script edits skip their owning validator. Inline comments are on the unchanged a4325fb code. Exact-head verification passed build, CLI typecheck, 43 CLI tests, 152 integration tests, 6 E2E-support tests, source-shape scanner execution, and diff hygiene. Both receipts remain byte-identical to successful publication run 33355262414. All nine exact-head Advisor specialists completed; Test Design independently confirms the artifact source-shape blocker. DCO is green and the new merge commit is Verified; required CI and image gates are still running. Nine-category security verdict: secrets PASS; input validation FAIL because the qualification oracle can false-pass; authentication and authorization PASS; dependencies PASS; error handling and logging PASS; cryptography and data protection PASS; configuration PASS; security testing FAIL; holistic posture FAIL until these four validation blockers are resolved.
Signed-off-by: San Dang <sdang@nvidia.com>
cjagwani
left a comment
There was a problem hiding this comment.
Exact-head review at db06808: the event-order oracle and the two earlier test/live source-shape owners are resolved, but two blockers remain in their replacement repository check. It reimplements the canonical managed-image contract parser and parses candidate-authority.ts syntax instead of consuming the exported authority, and the resulting shipped-representation check still has no reviewed source-shape exception. Exact-head verification passed the CLI build during npm ci, CLI typecheck, 21 focused CLI tests, 70 integration tests, 6 E2E-support tests, the Pi artifact check, the source-shape scanner, and diff hygiene. The scanner reported zero source-shape cases, confirming this repository check currently sits outside that reviewed accounting. All nine exact-head Advisor specialists completed; Test Design, Design/Architecture, Dependency Use, and Code Reduction independently confirm these ownership blockers. CodeRabbit is green, DCO is green, the new commit is Verified, and all required CI and image gates are green. Nine-category security verdict: secrets PASS; input validation FAIL because release validation can drift from candidate activation; authentication and authorization PASS; dependencies WARNING because the check adds a redundant TypeScript AST dependency; error handling and logging PASS; cryptography and data protection PASS; configuration PASS; security testing FAIL; holistic posture FAIL until the two validation-ownership blockers are resolved.
cjagwani
left a comment
There was a problem hiding this comment.
Requesting changes on exact head d28c127. The previous duplicate-parser and source-shape blockers are resolved by deleting the redundant checker. One current-head P1 remains.
- Pi qualification no longer binds an accepted receipt to the commit under review. Both checked-in receipts identify source revision 6339fca, while this head is d28c127. The live target validates only the repository and records CLI/image revisions separately, so trusted stale receipt bytes can keep authorizing an older image after reviewed policy, startup, or image-source changes. Require fail-closed equality to the expected PR/head SHA before onboarding, carry one bound revision into evidence, and cover a digest-valid stale-revision receipt.
Accepted scope remains #10155 / #10059. All nine Advisor specialists completed; Trust reported this blocker. CodeRabbit has no new actionable feedback. DCO is green and all commits are GitHub Verified. Visible CI is green except one direct startup pass still pending.
Exact-head local evidence: CLI typecheck; 21 CLI, 70 integration, and 6 E2E-support tests; repository checks; source-shape scan; and diff hygiene all passed.
Nine-category security verdict: secrets PASS; input validation FAIL; authentication/authorization FAIL; dependencies PASS; error handling/logging PASS; cryptography/data PASS; configuration PASS; security testing FAIL; holistic review FAIL.
| @@ -349,26 +320,15 @@ test( | |||
| expect(receipt.contract.agent).toBe("pi"); | |||
| expect(receipt.contract.platform).toBe(platform); | |||
| expect(receipt.contract.source.repository).toBe("NVIDIA/NemoClaw"); | |||
There was a problem hiding this comment.
[P1] Bind qualification to the reviewed commit
Severity: P1. Impact: both accepted receipts currently name 6339fca while this head is d28c127; this check validates only the repository and later reports the two revisions separately, so a stale image remains qualified after current policy, startup, or image-source changes. Smallest safe fix: before any candidate onboarding, fail closed unless receipt.contract.source.revision equals the expected PR/head SHA, then emit that single bound value. Regression: a digest-valid receipt with a different source revision must fail before onboarding.
Signed-off-by: San Dang <sdang@nvidia.com>
|
PR Review Advisor finished for commit |
Maintainer handoff — latest PR commit
|
|
Reviewed at Checked
Open, suggested as follow-up
Not covered here
|
<!-- markdownlint-disable MD041 --> ## Outcome Changes to any checked-in source copied by the Pi Dockerfiles now select both AMD64 and ARM64 Pi qualification targets. A regression test reads the real Dockerfiles, so a future `COPY` input cannot silently reuse a stale candidate image receipt without selecting Pi validation. ## Reason Both Pi jobs in main E2E run 33111284865 rejected a stale image receipt after `nemoclaw-blueprint/scripts/nemotron-inference-fix.js` changed. The Pi targets only owned `agents/pi/`, so that copied blueprint source did not select either Pi qualification job on the introducing PR. ### Related issues Part of #10153 Follow-up to #10390 ## Changes - Add every current direct Pi Dockerfile `COPY` source to the shared Pi target ownership boundary. - Apply that boundary to both `pi-agent-qualification-amd64` and `pi-agent-qualification-arm64`. - Verify both targets own every real Pi image source using the canonical `directDockerfileCopySources` parser from #10390. - Verify the blueprint source that exposed this gap selects both architecture targets. ## Verification - `npx vitest run --project e2e-support test/e2e/support/pi-agent-qualification-events.test.ts` — 9 tests passed. - `npx vitest run --project integration test/automation/pull-requests/growth-guardrails.test.ts` — 33 tests passed. - Normal pre-commit and commit-msg hooks — passed. - Normal pre-push hook — CLI TypeScript passed. - `git diff --check` — passed. - Documentation writer review — no docs changes needed because this only changes internal E2E target selection and regression coverage. - GitHub verification — all three PR commits are Verified with reason `valid`. - Net diff inspection — exactly two files; no runtime parser change and no secrets, API keys, or credentials. ## Review notes #10390 is merged. This PR is now its narrow follow-up: it reuses the canonical Dockerfile parser and only changes Pi E2E target selection plus its regression test. --- Signed-off-by: Charan Jagwani <cjagwani@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Tests** * Improved end-to-end validation of Pi image sources derived from Dockerfiles. * Preserved `.dockerignore` coverage and added checks for target ownership. * **Refactor** * Centralized ownership tracking for files and directories included in Pi Docker images. * Both Pi qualification targets now use the shared ownership definition. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Charan Jagwani <cjagwani@nvidia.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Outcome
Pi candidate qualification binds onboarding and live qualification to the checked-in Linux AMD64 and Linux ARM64 receipts. The live gate now derives the Pi image input set from the canonical Dockerfile parser and refuses a receipt when any Dockerfile or direct
COPYsource differs from the published source revision.The exact PR candidate images build and validate on both platforms. The latest exact-commit Pi E2E run exercised the restored parity gate successfully on both platforms, but did not qualify the candidate because NVIDIA hosted inference returned
Service temporarily overloadedthrough all bounded attempts.Reason
Manual Pi qualification previously reached
Readybut the managed image rejected the Pi completion receipt because the checked-in image runtime bundle retained the older agent allowlist. Updating TypeScript alone was insufficient because the Pi Dockerfile copies the generated bundle. Later reduction work also removed the live source-parity binding; this PR restores that binding without restoring the deleted redundant repository checker.Relates to #10155. Product scope was established by merged PR #10059. The Pi bootstrap prerequisite from #10503 is merged.
Changes
imageSourceParity: trueonly aftergit diff --quietsucceeds for both Dockerfiles and all directCOPYsources.Verification
66f09fa8fb1a2b3714de38bdaafda63c17f9b33f(GitHub Verified); parity restoration commit:b069b75ce01b6e6c32f932152beae808caef34f4(GitHub Verified and DCO signed).CANDIDATE_QUALIFICATION_RECEIPT_DIGESTS.pi, and the production receipt reader returns the correct platform and digest-pinned reference for each.bddb5e11-17d5-4079-8d33-73bcc9ecae21, is bound to candidate66f09fa8fb1a2b3714de38bdaafda63c17f9b33fand workflow/base9b8c0511ad5eb2d537cf17ba21e65c3c88008b88.unhandledErrorsis zero, and artifact scans found no NVIDIA API key value.Review notes
Signed-off-by: San Dang sdang@nvidia.com