Skip to content

feat(machine-validation): add container registry credential support#3867

Merged
ianderson-nvidia merged 1 commit into
NVIDIA:mainfrom
ianderson-nvidia:encrypt_container_registry_auth
Jul 23, 2026
Merged

feat(machine-validation): add container registry credential support#3867
ianderson-nvidia merged 1 commit into
NVIDIA:mainfrom
ianderson-nvidia:encrypt_container_registry_auth

Conversation

@ianderson-nvidia

Copy link
Copy Markdown
Contributor

Introduce authenticated pulls of container images for machine validation tests, backed by private registries.

Credential storage:

  • Add CredentialKey::ContainerRegistry { registry } to the envelope-encrypted secrets journal, keyed at container_registries/<hostname>/auth
  • Add GetContainerRegistryCredential / SetContainerRegistryCredential RPCs with RBAC: Scout can read; only NicoAdminCLI can write
  • Add nico-admin-cli credential registry set to store credentials

Pull path:

  • create_forge_client now takes &self instead of consuming self, eliminating the caller-side clones throughout machine_validation.rs
  • pull_container resolves credentials from the NICO API before each pull and passes them to nerdctl login --password-stdin, keeping the password out of process arguments and logs
  • extract_registry parses the registry hostname from an OCI image reference and returns an error for bare names and Docker Hub shorthands that have no explicit registry component

Related issues

#3655

Type of Change

  • Add - New feature or capability
  • Change - Changes in existing functionality
  • Fix - Bug fixes
  • Remove - Removed features or deprecated functionality
  • Internal - Internal changes (refactoring, tests, docs, etc.)

Testing

  • Unit tests added/updated
  • Integration tests added/updated
  • Manual testing performed
  • No testing required (docs, internal refactor, etc.)

Additional Notes

@ianderson-nvidia
ianderson-nvidia requested a review from a team as a code owner July 22, 2026 21:01
@coderabbitai

coderabbitai Bot commented Jul 22, 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: 20eac074-3129-4e22-97ca-90550fb898c0

📥 Commits

Reviewing files that changed from the base of the PR and between 2b880c6 and ba3f3c7.

⛔ Files ignored due to path filters (2)
  • rest-api/proto/core/gen/v1/nico_nico.pb.go is excluded by !**/*.pb.go, !**/gen/**, !rest-api/**/*.pb.go
  • rest-api/proto/core/gen/v1/nico_nico_grpc.pb.go is excluded by !**/*.pb.go, !**/gen/**, !rest-api/**/*.pb.go, !rest-api/**/*_grpc.pb.go
📒 Files selected for processing (13)
  • crates/admin-cli/src/credential/mod.rs
  • crates/admin-cli/src/credential/registry/args.rs
  • crates/admin-cli/src/credential/registry/cmd.rs
  • crates/admin-cli/src/credential/registry/mod.rs
  • crates/admin-cli/src/rpc.rs
  • crates/api-core/src/api.rs
  • crates/api-core/src/auth/internal_rbac_rules.rs
  • crates/api-core/src/handlers/credential.rs
  • crates/machine-validation/src/machine_validation.rs
  • crates/rpc/build.rs
  • crates/rpc/proto/forge.proto
  • crates/secrets/src/credentials.rs
  • rest-api/proto/core/src/v1/nico_nico.proto
🚧 Files skipped from review as they are similar to previous changes (9)
  • crates/rpc/build.rs
  • crates/admin-cli/src/credential/registry/cmd.rs
  • crates/api-core/src/auth/internal_rbac_rules.rs
  • crates/admin-cli/src/rpc.rs
  • crates/rpc/proto/forge.proto
  • crates/api-core/src/api.rs
  • crates/api-core/src/handlers/credential.rs
  • crates/secrets/src/credentials.rs
  • crates/machine-validation/src/machine_validation.rs

Summary by CodeRabbit

  • New Features
    • Added a new CLI subcommand to manage container registry credentials (per-registry: registry, username, password).
    • Exposed API endpoints to fetch and update container registry credentials.
    • Machine validation can now authenticate to private registries using stored, per-registry credentials before pulling images.
  • Bug Fixes
    • Improved registry detection for hostnames, host:port, and localhost.
    • Container pulls proceed even if registry credential lookup, login, or pulling encounters errors.

Walkthrough

Adds container registry credential storage, Forge RPC endpoints, RBAC permissions, an admin CLI command, and machine-validation support for authenticated nerdctl image pulls.

Changes

Container registry credentials

Layer / File(s) Summary
Credential and RPC contracts
crates/secrets/src/credentials.rs, crates/rpc/proto/forge.proto, rest-api/proto/core/src/v1/nico_nico.proto, crates/rpc/build.rs
Defines container-registry credential key paths, protobuf messages and RPCs, generated serde attributes, and path validation coverage.
Forge credential API
crates/api-core/src/handlers/credential.rs, crates/api-core/src/api.rs, crates/api-core/src/auth/internal_rbac_rules.rs
Adds credential retrieval and storage handlers, connects them to Forge RPC implementations, maps errors and missing credentials, and registers permissions.
Admin CLI command
crates/admin-cli/src/credential/*, crates/admin-cli/src/rpc.rs
Adds credential registry set parsing and dispatches registry credentials through ApiClient.
Authenticated container pulls
crates/machine-validation/src/machine_validation.rs
Extracts registry hosts, resolves stored credentials, performs optional nerdctl login, continues with image pulls, updates client borrowing, and tests registry parsing.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant AdminCLI
  participant ApiClient
  participant ForgeAPI
  participant CredentialManager
  participant MachineValidation
  participant nerdctl

  AdminCLI->>ApiClient: Set registry credentials
  ApiClient->>ForgeAPI: SetContainerRegistryCredential
  ForgeAPI->>CredentialManager: Store username/password
  MachineValidation->>ForgeAPI: GetContainerRegistryCredential
  ForgeAPI->>CredentialManager: Read registry credentials
  CredentialManager-->>ForgeAPI: Credentials or not found
  ForgeAPI-->>MachineValidation: Credential response
  MachineValidation->>nerdctl: Login with password on stdin
  MachineValidation->>nerdctl: Pull container image
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: adding container registry credential support for machine validation.
Description check ✅ Passed The description is directly aligned with the changeset and accurately describes the new registry credential flow and machine-validation pull path.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
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

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ast-grep (0.44.1)
crates/rpc/build.rs

ast-grep timed out on this file


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

@github-actions

Copy link
Copy Markdown

🔐 TruffleHog Secret Scan

No secrets or credentials found!

Your code has been scanned for 700+ types of secrets and credentials. All clear! 🎉

🔗 View scan details

🕐 Last updated: 2026-07-22 21:05:02 UTC | Commit: 080edcb

@ianderson-nvidia
ianderson-nvidia force-pushed the encrypt_container_registry_auth branch 3 times, most recently from fac8d71 to b342a22 Compare July 22, 2026 21:11
@github-actions

Copy link
Copy Markdown

@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: 5

🧹 Nitpick comments (1)
crates/machine-validation/src/machine_validation.rs (1)

795-829: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Convert the parser tests to a table-driven case set.

These are input-to-output/error mappings and should share one table covering valid hosts, ports, localhost, bare names, and Docker Hub shorthands. As per coding guidelines, “Write tests in table-driven style”; as per path instructions, “Use table-driven tests.”

🤖 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 `@crates/machine-validation/src/machine_validation.rs` around lines 795 - 829,
Convert the separate extract_registry tests into one table-driven test covering
valid registries, port-bearing hosts, localhost, bare image names, and Docker
Hub shorthands. Define each case with its input and expected registry or error
outcome, then iterate through the cases while preserving the current assertions
and test coverage in extract_registry.

Sources: Coding guidelines, 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.

Inline comments:
In `@crates/admin-cli/src/credential/registry/args.rs`:
- Around line 40-41: Update the credential argument definition for password to
remove the secret-bearing --password command-line option and its help text.
Replace it with a secure hidden prompt and/or password-stdin input path,
ensuring registry credentials are never accepted or documented through argv
while preserving the existing password value flow.

In `@crates/api-core/src/handlers/credential.rs`:
- Around line 769-781: Update the credential handler around get_credentials to
validate registry before accessing the secret store, map lookup or decryption
failures to NicoError::Internal rather than InvalidArgument, and return missing
credentials as the project NotFound error converted with .into() instead of
constructing Status directly.

In `@crates/machine-validation/src/machine_validation.rs`:
- Line 465: Update the structured logging call for the nerdctl login failure to
rename the field from code to exit_code, while preserving the existing
status.code() value and log message.
- Around line 409-415: The registry-host detection logic should also recognize
the exact hostname “localhost” as an explicit registry. Update the condition in
the surrounding image-reference parsing function to accept first == "localhost"
alongside dotted or port-qualified hosts, and add or update tests covering
localhost/repository:tag credential lookup.
- Around line 449-460: Update the nerdctl login child-process handling around
child.stdin and child.wait to prevent indefinite blocking: drain or redirect the
piped stdout/stderr while waiting, enforce a timeout, and on expiry kill and
reap the child before returning. Preserve the existing password-write error
logging and normal exit-status handling.

---

Nitpick comments:
In `@crates/machine-validation/src/machine_validation.rs`:
- Around line 795-829: Convert the separate extract_registry tests into one
table-driven test covering valid registries, port-bearing hosts, localhost, bare
image names, and Docker Hub shorthands. Define each case with its input and
expected registry or error outcome, then iterate through the cases while
preserving the current assertions and test coverage in extract_registry.
🪄 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: 201eccad-a8bf-4932-a5ea-b8def4e071dd

📥 Commits

Reviewing files that changed from the base of the PR and between d2975fd and b342a22.

⛔ Files ignored due to path filters (2)
  • rest-api/proto/core/gen/v1/nico_nico.pb.go is excluded by !**/*.pb.go, !**/gen/**, !rest-api/**/*.pb.go
  • rest-api/proto/core/gen/v1/nico_nico_grpc.pb.go is excluded by !**/*.pb.go, !**/gen/**, !rest-api/**/*.pb.go, !rest-api/**/*_grpc.pb.go
📒 Files selected for processing (13)
  • crates/admin-cli/src/credential/mod.rs
  • crates/admin-cli/src/credential/registry/args.rs
  • crates/admin-cli/src/credential/registry/cmd.rs
  • crates/admin-cli/src/credential/registry/mod.rs
  • crates/admin-cli/src/rpc.rs
  • crates/api-core/src/api.rs
  • crates/api-core/src/auth/internal_rbac_rules.rs
  • crates/api-core/src/handlers/credential.rs
  • crates/machine-validation/src/machine_validation.rs
  • crates/rpc/build.rs
  • crates/rpc/proto/forge.proto
  • crates/secrets/src/credentials.rs
  • rest-api/proto/core/src/v1/nico_nico.proto

Comment thread crates/admin-cli/src/credential/registry/args.rs
Comment thread crates/api-core/src/handlers/credential.rs Outdated
Comment thread crates/machine-validation/src/machine_validation.rs
Comment thread crates/machine-validation/src/machine_validation.rs Outdated
Comment thread crates/machine-validation/src/machine_validation.rs Outdated
@ianderson-nvidia
ianderson-nvidia force-pushed the encrypt_container_registry_auth branch from b342a22 to ce1d2ee Compare July 22, 2026 21:41

@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 (2)
crates/machine-validation/src/machine_validation.rs (2)

480-481: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Avoid bare discarded Results.

Use the repository’s explicit intentional-ignore convention rather than let _ = for the kill/reap results. As per coding guidelines, “avoid discarding results with let _unused = foo(); use .ok() when failure is intentionally ignored.”

🤖 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 `@crates/machine-validation/src/machine_validation.rs` around lines 480 - 481,
Update the child cleanup calls to use the repository’s intentional-ignore
convention: replace the bare discarded Results from child.kill().await and
child.wait().await with .ok(), preserving the existing kill-then-wait order and
behavior.

Source: Coding guidelines


810-853: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consolidate registry parsing cases into a table-driven test.

These cases map inputs to successful values or errors and should use the repository’s scenario helpers in one table-driven test.

🤖 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 `@crates/machine-validation/src/machine_validation.rs` around lines 810 - 853,
Consolidate the separate registry extraction tests around
MachineValidation::extract_registry into one table-driven test using the
repository’s existing scenario helpers. Include successful expected values for
known registries, port-based and bare localhost, plus error expectations for
bare image names and Docker Hub shorthand; remove the redundant individual test
functions.

Source: Coding guidelines

🤖 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 `@crates/machine-validation/scripts/seed_go_health_validation.sql`:
- Around line 36-39: Update the documented post-apply CLI command in the seed
script to use the correctly spelled --show-unverified flag instead of
--show-un-verfied.

In `@crates/machine-validation/src/machine_validation.rs`:
- Around line 489-493: Update the image-pull command construction around
TokioCmd so it invokes nerdctl directly instead of launching sh with -c. Pass
"-n", "default", "pull", and image_name as separate arguments, ensuring
image_name remains a single argument and cannot be interpreted as shell syntax.

---

Nitpick comments:
In `@crates/machine-validation/src/machine_validation.rs`:
- Around line 480-481: Update the child cleanup calls to use the repository’s
intentional-ignore convention: replace the bare discarded Results from
child.kill().await and child.wait().await with .ok(), preserving the existing
kill-then-wait order and behavior.
- Around line 810-853: Consolidate the separate registry extraction tests around
MachineValidation::extract_registry into one table-driven test using the
repository’s existing scenario helpers. Include successful expected values for
known registries, port-based and bare localhost, plus error expectations for
bare image names and Docker Hub shorthand; remove the redundant individual test
functions.
🪄 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: 2c7a3865-05cc-482e-93d8-e2a0f292fc84

📥 Commits

Reviewing files that changed from the base of the PR and between b342a22 and ce1d2ee.

⛔ Files ignored due to path filters (2)
  • rest-api/proto/core/gen/v1/nico_nico.pb.go is excluded by !**/*.pb.go, !**/gen/**, !rest-api/**/*.pb.go
  • rest-api/proto/core/gen/v1/nico_nico_grpc.pb.go is excluded by !**/*.pb.go, !**/gen/**, !rest-api/**/*.pb.go, !rest-api/**/*_grpc.pb.go
📒 Files selected for processing (14)
  • crates/admin-cli/src/credential/mod.rs
  • crates/admin-cli/src/credential/registry/args.rs
  • crates/admin-cli/src/credential/registry/cmd.rs
  • crates/admin-cli/src/credential/registry/mod.rs
  • crates/admin-cli/src/rpc.rs
  • crates/api-core/src/api.rs
  • crates/api-core/src/auth/internal_rbac_rules.rs
  • crates/api-core/src/handlers/credential.rs
  • crates/machine-validation/scripts/seed_go_health_validation.sql
  • crates/machine-validation/src/machine_validation.rs
  • crates/rpc/build.rs
  • crates/rpc/proto/forge.proto
  • crates/secrets/src/credentials.rs
  • rest-api/proto/core/src/v1/nico_nico.proto
🚧 Files skipped from review as they are similar to previous changes (11)
  • crates/admin-cli/src/credential/registry/cmd.rs
  • crates/api-core/src/auth/internal_rbac_rules.rs
  • crates/admin-cli/src/credential/registry/mod.rs
  • crates/admin-cli/src/credential/registry/args.rs
  • crates/admin-cli/src/credential/mod.rs
  • crates/api-core/src/api.rs
  • crates/api-core/src/handlers/credential.rs
  • crates/rpc/proto/forge.proto
  • rest-api/proto/core/src/v1/nico_nico.proto
  • crates/admin-cli/src/rpc.rs
  • crates/secrets/src/credentials.rs

Comment thread crates/machine-validation/scripts/seed_go_health_validation.sql Outdated
Comment thread crates/machine-validation/src/machine_validation.rs Outdated
@ianderson-nvidia
ianderson-nvidia force-pushed the encrypt_container_registry_auth branch 2 times, most recently from d9b69c3 to 2b880c6 Compare July 22, 2026 22:03

@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)
crates/machine-validation/src/machine_validation.rs (1)

478-483: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Prefer .ok() over let _ = for intentionally discarded results.

As per coding guidelines, "avoid discarding results with let _unused = foo(); use .ok() when failure is intentionally ignored." Applies directly to the kill/wait cleanup on timeout.

♻️ Proposed fix
-                            let _ = child.kill().await;
-                            let _ = child.wait().await;
+                            child.kill().await.ok();
+                            child.wait().await.ok();
🤖 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 `@crates/machine-validation/src/machine_validation.rs` around lines 478 - 483,
Update the timeout cleanup in the nerdctl login handling to call `.ok()` on the
intentionally ignored results from `child.kill().await` and
`child.wait().await`, replacing both `let _ =` bindings while preserving the
existing cleanup order.

Source: Coding guidelines

🤖 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 `@crates/api-core/src/handlers/credential.rs`:
- Around line 794-802: Update set_container_registry_credential to validate
req.registry with the same non-empty guard used by
get_container_registry_credential before constructing
CredentialKey::ContainerRegistry. Return the matching invalid-argument error for
an empty registry, and preserve the existing credential persistence flow for
valid registries.

In `@crates/machine-validation/src/machine_validation.rs`:
- Around line 360-371: Update resolve_registry_credential to capture and log the
error returned by self.create_forge_client().await before returning None. Use
the existing error! logging style and include the forge-client build failure
details, while preserving the current unauthenticated fallback behavior.

---

Nitpick comments:
In `@crates/machine-validation/src/machine_validation.rs`:
- Around line 478-483: Update the timeout cleanup in the nerdctl login handling
to call `.ok()` on the intentionally ignored results from `child.kill().await`
and `child.wait().await`, replacing both `let _ =` bindings while preserving the
existing cleanup order.
🪄 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: cf31a780-83ae-4fdd-9544-1d0ef2ede024

📥 Commits

Reviewing files that changed from the base of the PR and between ce1d2ee and 2b880c6.

⛔ Files ignored due to path filters (2)
  • rest-api/proto/core/gen/v1/nico_nico.pb.go is excluded by !**/*.pb.go, !**/gen/**, !rest-api/**/*.pb.go
  • rest-api/proto/core/gen/v1/nico_nico_grpc.pb.go is excluded by !**/*.pb.go, !**/gen/**, !rest-api/**/*.pb.go, !rest-api/**/*_grpc.pb.go
📒 Files selected for processing (13)
  • crates/admin-cli/src/credential/mod.rs
  • crates/admin-cli/src/credential/registry/args.rs
  • crates/admin-cli/src/credential/registry/cmd.rs
  • crates/admin-cli/src/credential/registry/mod.rs
  • crates/admin-cli/src/rpc.rs
  • crates/api-core/src/api.rs
  • crates/api-core/src/auth/internal_rbac_rules.rs
  • crates/api-core/src/handlers/credential.rs
  • crates/machine-validation/src/machine_validation.rs
  • crates/rpc/build.rs
  • crates/rpc/proto/forge.proto
  • crates/secrets/src/credentials.rs
  • rest-api/proto/core/src/v1/nico_nico.proto
🚧 Files skipped from review as they are similar to previous changes (9)
  • crates/admin-cli/src/credential/registry/args.rs
  • crates/api-core/src/api.rs
  • crates/rpc/build.rs
  • crates/rpc/proto/forge.proto
  • crates/admin-cli/src/credential/registry/cmd.rs
  • crates/admin-cli/src/rpc.rs
  • rest-api/proto/core/src/v1/nico_nico.proto
  • crates/admin-cli/src/credential/registry/mod.rs
  • crates/secrets/src/credentials.rs

Comment thread crates/api-core/src/handlers/credential.rs
Comment thread crates/machine-validation/src/machine_validation.rs Outdated
Introduce authenticated container image pulls for machine validations
tests backed by private registries.

Credential storage:
- Add `CredentialKey::ContainerRegistry { registry }` to the
  envelope-encrypted secrets journal, keyed at
  `container_registries/<hostname>/auth`
- Add `GetContainerRegistryCredential` / `SetContainerRegistryCredential`
  RPCs with RBAC: Scout can read; only NicoAdminCLI can write
- Add `nico-admin-cli credential registry set` to store credentials
- Updated rest-api protobufs to match new rpc and message for
  ContainerRegistry

Pull path:
- `create_forge_client` now takes `&self` instead of consuming `self`,
  eliminating the caller-side clones throughout `machine_validation.rs`
- `pull_container` resolves credentials from the NICO API before each
  pull and passes them to `nerdctl login --password-stdin`, keeping the
  password out of process arguments and logs
- `extract_registry` parses the registry hostname from an OCI image
  reference and returns an error for bare names and Docker Hub shorthands
  that have no explicit registry component
@ianderson-nvidia
ianderson-nvidia force-pushed the encrypt_container_registry_auth branch from 2b880c6 to ba3f3c7 Compare July 22, 2026 22:20
@ianderson-nvidia
ianderson-nvidia merged commit 18ef368 into NVIDIA:main Jul 23, 2026
118 checks passed
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