Repository navigation
This release brings 12 new recipes with coverage for Nebius B300, GB300 on GKE, Amazon Linux 2023 on EKS, and topology-aware scheduling with Kueue, adds SLES support on RKE2, introduces Terraform and Rancher Fleet deployers, and adds graded opt-in NVSentinel remediation and least-privilege cluster access, alongside updated component pins.
Highlights
New Recipes and OS Support - 12 new recipes expand service, accelerator, OS, and scheduling coverage, with additional SLES support through a shared RKE2 base:
- Nebius MK8s B300 - Nebius Managed Service for Kubernetes (
--service mk8s) and B300 (--accelerator b300) join the criteria, with a B300 Ubuntu Dynamo inference recipe (NVIDIA/aicr#3278) - GB300 (A4X Max) on GKE - bare-metal COS recipes for training, Kubeflow training, inference, and Dynamo inference (NVIDIA/aicr#2811)
- Amazon Linux 2023 on EKS -
--os amazonlinuxinference recipes for H100, GB200, GB300, and RTX PRO 6000 (NVIDIA/aicr#2743) - SUSE Linux Enterprise Server on RKE2 -
--os sles, anos-slesmixin, and a sharedrke2-slesbase add SLES support with SUSE precompiled NVIDIA driver containers (NVIDIA/aicr#3040) - Topology-aware scheduling - opt-in
platform: kueuerecipes for H100 on Kind, GKE, and EKS install Topograph alongside Kueue, so Kueue has the node topology labels it needs to place pods (NVIDIA/aicr#3147)
NVSentinel Remediation Mixins - Remediation is now opt-in in graded steps: nvsentinel-observe (dry run), nvsentinel-quarantine (cordon and drain), and nvsentinel-remediation (repair, capped at three attempts) (NVIDIA/aicr#3137). Live remediation requires the health-events analyzer, which flags a node that keeps getting repaired without the fault going away (NVIDIA/aicr#3248). Every Slurm recipe now turns Slurm health-check drains into NVSentinel health events, and nvsentinel-slinky-drainer drains a faulty node through Slurm so running jobs finish first (NVIDIA/aicr#3211).
Updated Recipes
- GPU Operator moves to v26.7.2, Network Operator to 26.7.0, NodeWright to v0.20.0, NVSentinel to v1.28.0 (NVIDIA/aicr#3312), and NVCRE to v0.6.0
- Kueue moves to 0.19.6, Slinky to 1.2.2, and the MariaDB operator to 26.10.1, with the MariaDB database image used by Slurm accounting held at 11.8.8 by tag and digest (NVIDIA/aicr#2891). KAI Scheduler remains at v0.16.9 by default; the Nebius B300 recipe uses v0.17.1.
- NicClusterPolicy, NodeFeatureRule, and NodeFeatureDiscovery CRs now update in place instead of being deleted and recreated as Helm hooks. Affected Flux installations need a one-time migration; see Upgrade Notes below (NVIDIA/aicr#3237).
- NFD uninstall no longer prunes node labels, preserving labels used by GPU, network, and DRA workloads. Permanent NFD removal now requires explicit label cleanup (NVIDIA/aicr#3233).
- Controller memory limits now cover clusters of about 2,500 nodes, and nfd-worker publishes labels instead of raw features to cut nfd-master memory (NVIDIA/aicr#3212)
- OKE fabric recipes fail qualification when Oracle's managed
NvidiaNetworkOperatoradd-on is present (NVIDIA/aicr#3216) - A new opt-in mixin wires a separately managed
NVIDIADriverCR (NVIDIA/aicr#2942)
Terraform Deployer - aicr bundle --deployer terraform renders a recipe containing Helm components as a Terraform configuration, or as a module to call from your own. Each component becomes a module call and the recipe's dependency graph becomes depends_on, so charts install in parallel where the graph allows and terraform plan shows every release before anything changes. Recipes containing Kustomize components are rejected (NVIDIA/aicr#3217).
Rancher Fleet Deployer - aicr bundle --deployer fleet generates GitRepo bundles by default, or HelmOp resources with --fleet-mode helmop. Fleet reconciles the generated bundles in installation order, with each waiting for its predecessor to become ready (NVIDIA/aicr#3043).
Least-Privilege Operation - aicr validate --validator-service-account-name runs validator Jobs as an administrator-provisioned ServiceAccount, so the caller no longer needs permission to grant cluster-admin (NVIDIA/aicr#3226). aicr snapshot deploys its agent into an existing namespace without cluster-scoped namespace create (NVIDIA/aicr#3255), and --discover-network is now read-only, shrinking its ClusterRole from nine mutating rules to one read (NVIDIA/aicr#3242).
Cluster Upgrades - aicr recipe --inherit-from <prior-recipe-or-bundle> --inherit=namespace regenerates a recipe using component namespaces recorded in the prior artifact while taking other settings from the new release (NVIDIA/aicr#3114). aicr upgrade-check --from cluster reads only metadata in its at-risk scan and counts Helm-labeled pre-upgrade and post-upgrade hooks as owned (NVIDIA/aicr#3205). It also names Argo CD Applications it could not place (NVIDIA/aicr#3203).
Other Improvements
- Recipe evidence can be signed with a KMS key (
--signing-key) and checked withaicr evidence verify --key, for private use (NVIDIA/aicr#3241) aicr bundle --vendor-chartsrefuses a pulled chart whose bytes differ from a digest pinned in the registry's newhelm.defaultDigestfield (NVIDIA/aicr#3221)aicr validate --image-refswrites the pushed evidence digest to a file, and bothvalidateandbundlecan write it to a Job's termination-message file (NVIDIA/aicr#3232)- Five validator checks record redaction-safe outcomes in CTRF
extra, and every in-pod skip names its reason, so a redacted evidence bundle still shows what was measured and why a check skipped (NVIDIA/aicr#3284) - The opt-in Cluster Readiness Engine check
nccl-cre-all-reduce-bwis qualified on EKS H100.cre-training-goodputis registered but skips on every target because its workload does not run on pinned CRE v0.6.0 (NVIDIA/aicr#3133). - Shared DaemonSets, including NFD workers and EBS CSI nodes, receive the union of keyed system and accelerated-node tolerations, fixing scheduling across separately tainted node pools (NVIDIA/aicr#3141).
- Dynamo performance validation matches runtime images to the recipe's
dynamo-platformchart version, honorsAICR_VALIDATOR_IMAGE_REGISTRY, propagates image-pull credentials to its workloads, and identifies the pod and image on image-pull timeouts (NVIDIA/aicr#3258). - The bundler skips the DRA migration probe when GPU Operator manages no driver, fixing a v1.0.0 regression (NVIDIA/aicr#3115), and NodeWright no longer hangs on reboot (NVIDIA/aicr#3101)
--set nv-sentinel:enabled=falseworks again on GKE and OKE bundles, andaicr snapshot --max-nodes-per-entrynow takes effect in Job mode- Published OpenVEX statements document why aiperf-bench is
not_affectedby five libexpat1 HIGH findings, based on analysis of the affected library's reachability (a18cb56).
Upgrade Notes
- Flux network-operator migration: affected releases originally installed client-side require Flux v2.8+ for the one-time migration, for both Git and OCI bundles. The general Flux OCI prerequisite remains v2.7+ (NVIDIA/aicr#3293); follow the network-operator migration procedure.
- MariaDB operator and accounting database: when upgrading from 26.3.0 or 26.6.0, enable
updateStrategy.autoUpdateDataPlaneon HA MariaDB instances before upgrading CRDs and then the operator; disable it after the data plane updates. AICR's default non-HA accounting database needs no such flag change. The new image digest pin causes one restart of an existing accounting database and temporarily interrupts slurmdbd's database connection, so plan a quiet upgrade window (upgrade procedure). - Kueue with topology-aware scheduling disabled: also set
TASPartialSlices=falsealongside existing TAS subgate overrides, in the same change that upgrades Kueue to 0.19.6. Earlier controllers reject this new gate. Default configurations are unaffected (NVIDIA/aicr#2891).
Thanks to @abonillabeeche, @ArangoGutierrez, @atif1996, @awolde, @EronWright, @ezhang3333, @katepallewarprathmesh-sketch, @kky-fury, @La1itchauhan, @lockwobr, @mikecook, @mohityadav8, @ravisoundar, @rawsocket, @rorajani, @SammyTourani, @srao-nv, @varmesh, @yuanchen8911, and @mchmarny.
Changelog
New Features
- 05a2288: feat(bundle): read a warnings list in bundle-info.yaml ahead of writing it (#3262) (@mchmarny)
- f469caf: feat(bundle): verify vendored charts against a registry-pinned digest (#3261) (@mchmarny)
- 159b460: feat(bundle): write --image-refs in place when the target is a mount point (#3259) (@mchmarny)
- e898b8d: feat(bundler): add Rancher Fleet deployer (GitRepo and HelmOp modes) (#3043) (@abonillabeeche)
- c97d38f: feat(bundler): add a terraform deployer that keeps the recipe's DAG (#3217) (@EronWright)
- c3ff643: feat(evidence): KMS-key signing and verification for recipe evidence (#3241) (@mchmarny)
- aaa1ca3: feat(evidence): publish VR200 RKE2 evidence from v1.0.0-rc2 (#3112) (@yuanchen8911)
- 7279237: feat(nvcre): bound the Certification driver, guard the opt-in wiring (#3132) (@rorajani)
- 904e879: feat(recipe): Topology Aware Scheduling with Kueue + Topograph (#3147) (@ravisoundar)
- 30f5b5f: feat(recipe): add Nebius MK8s B300 inference support (#3278) (@kky-fury)
- a0e7aad: feat(recipe): support namespace-only inheritance (#3114) (@ezhang3333)
- 04dcfd9: feat(recipes): add graded opt-in NVSentinel remediation mixins (#3137) (@varmesh)
- 3925bd9: feat(recipes): add opt-in NVIDIADriver CR wiring (#2942) (@awolde)
- ee0f1a6: feat(recipes): bump nodewright to v0.20.0, reject bad taint keys (#3210) (@lockwobr)
- 8da4676: feat(recipes): correlate NVSentinel health events with the analyzer (#3248) (@varmesh)
- 291e0f1: feat(recipes): drain Slurm nodes through Slinky with slinky-drainer (#3211) (@varmesh)
- 71bdb81: feat(recipes): enable NVSentinel Slurm drain monitor on Slurm leaves (#3094) (@varmesh)
- c161849: feat(recipes): gate OKE fabric leaves on NvidiaNetworkOperator add-on (#3216) (@mikecook)
- 603debb: feat(recipes): inventory NVCRE workload closure, move to v0.6.0 (#3087) (@rorajani)
- 7c3614d: feat(recipes): support SUSE Linux Enterprise Server (os: sles) on RKE2 (#3040) (@abonillabeeche)
- d8d6d9b: feat(sdk): model CNCF evidence collection on the pkg/client/v1 facade (#3064) (@mikecook)
- fc88517: feat(snapshot): use an existing namespace without cluster-scoped create (#3255) (@mchmarny)
- 6fbd6ab: feat(uat): add GB300 UAT lane on AWS RelEng capacity (#2937) (@rorajani)
- 5179d85: feat(uat): run faultinject Stages 2-3 on an opt-in remediation recipe (#3206) (@yuanchen8911)
- fb45393: feat(uat): validate NVSentinel GPU health monitors on the sim lane (#3019) (@ArangoGutierrez)
- 7ed1b9b: feat(upgrade): gate pinned versions on transition record coverage (#3142) (@lockwobr)
- e139416: feat(validator): add opt-in CRE NCCL and training goodput checks (#3133) (@rorajani)
- 3630316: feat(validator): disclose check outcomes in CTRF extra (#3284) (@mikecook)
- ea49aa3: feat(validator): make self-installed Kubeflow Trainer version configurable (#3134) (@mikecook)
- 993e19c: feat(validator): run validator Jobs under a pre-provisioned ServiceAccount (#3226) (@mchmarny)
- 4080866: feat(validator): write the pushed evidence digest to --image-refs (#3232) (@mchmarny)
Bug Fixes
- 16523f9: fix(bundler): skip DRA migration probe when gpu-operator manages no driver (#3116) (@rorajani)
- 86b236c: fix(bundler): union tolerations on paths shared by both tiers (#3141) (@atif1996)
- 82e2968: fix(bundler): validate node scheduling input at the input boundary (#3100) (@mikecook)
- 64fd7f7: fix(ci): derive license URLs for vanity hosts that omit go-import tags (@mchmarny)
- de1332c: fix(ci): keep cluster-create off anonymous Docker Hub pulls (@mchmarny)
- ce3bab0: fix(ci): pin image SBOMs to CycloneDX 1.6 (#3234) (@yuanchen8911)
- 1d18791: fix(ci): pre-pull ctlptl registry image with mirror.gcr.io fallback (@mchmarny)
- 6f905d1: fix(ci): pull validator BuildKit and base images through mirror.gcr.io (@mchmarny)
- 540f5d3: fix(ci): recheck rate-limited raw license probes on github.com (@mchmarny)
- e85152a: fix(ci): resolve E2E Docker Hub base images through mirror.gcr.io (@mchmarny)
- 145c396: fix(ci): withhold drift candidates published before the current pin (#3204) (@mchmarny)
- d8e679e: fix(cli): resolve working directory symlinks for OCI bundle staging (#3167) (@mikecook)
- 9ec9a13: fix(collector): make --discover-network read-only via l8k DiscoverReadOnly (#3242) (@atif1996)
- 5d83be1: fix(deps): bump Go to 1.27.2 and upgrade Go modules (@mchmarny)
- 803e634: fix(inventory): list at-risk metadata only and treat Helm hooks as owned (#3205) (@mikecook)
- 09c1eda: fix(kwok): clean kube-system releases between recipes (#3225) (@ezhang3333)
- f4e99c2: fix(recipes): Add GB300/A4X Max GKE bare-metal training and inference recipes (#2811) (@rawsocket)
- a555231: fix(recipes): Update comments in recipes and test (#3146) (@rawsocket)
- 3a6e860: fix(recipes): add AL2023 EKS inference overlays for amazonlinux os (#2743) (@mohityadav8)
- 6715453: fix(recipes): allow disabling nvsentinel on GKE and OKE bundles (#3213) (@yuanchen8911)
- 6be2b89: fix(recipes): bump nvsentinel to v1.28.0 (#3312) (@varmesh)
- e990393: fix(recipes): cover v1.25.0 in the nvsentinel v1.28.0 upgrade record (#3315) (@varmesh)
- 6a48dcf: fix(recipes): disable nfd post-delete prune hook (#3233) (@mikecook)
- 7f3ca29: fix(recipes): pin nvcre image by digest and guard opt-in wiring (#2808) (@rorajani)
- f9828b9: fix(recipes): raise controller memory limits for large clusters (#3212) (@yuanchen8911)
- d995975: fix(recipes): run nvsentinel metadata-collector in NRI plugin mode on RKE2 (#3254) (@yuanchen8911)
- 40d7a63: fix(recipes): size the GB300 NIC configuration daemon from values (#3236) (@mikecook)
- ff1661e: fix(recipes): update NicClusterPolicy and NFD CRs in place, not as delete-and-recreate hooks (#3237) (@atif1996)
- 31e71a2: fix(recipes): use POSIX loop in nccl-tcpxo pre-installation script (#3171) (@yuanchen8911)
- a18cb56: fix(security): VEX libexpat1 HIGHs on aiperf-bench (@mchmarny)
- ee6e60e: fix(security): bump aiperf-bench base to CPython 3.13.16 (@mchmarny)
- 370a90e: fix(snapshot): honor AICR_MAX_NODES_PER_ENTRY in the agent pod (#3276) (@mchmarny)
- bd1414f: fix(tests): assert git-recorded file modes in releasepolicy (#3177) (@mchmarny)
- 0335358: fix(tools): bold same-version chart changes in the upgrade-matrix grid (#3066) (@SammyTourani)
- 0206ec7: fix(tools): derive gopkg.in license URLs when gopkg.in is down (#3191) (@mchmarny)
- 86d5e0f: fix(tools): install macOS oasdiff and detect wrong-OS tool binaries (#3166) (@mikecook)
- fa30fca: fix(tools): make the moved-repository license URL remap work on bash 3.2 (#3260) (@mchmarny)
- 0d29521: fix(tools): match exact API groups in cleanup CRD phase (#3119) (@yuanchen8911)
- 09c18c3: fix(uat): pre-pull the sim lane's monitor image and correct its docs (#3118) (@ArangoGutierrez)
- a3f12e0: fix(upgrade): count and name unplaced Argo Applications (#3203) (@mikecook)
- 9760ed0: fix(validator): gate H100 GKE NCCL launcher on worker sshd readiness (#3123) (@yuanchen8911)
- 24211af: fix(validator): gate NCCL launcher on worker sshd readiness (#3122) (@yuanchen8911)
- cd13bc3: fix(validator): pin NCCL mpirun launcher to the worker node cohort (@mchmarny)
- a5f4a83: fix(validator): single source of truth for Dynamo runtime image (#3258) (@mikecook)
- 85fe767: fix(validators): don't misreport a stale NVreg mount-failure event as driver-absent (#3151) (@mohityadav8)
- 633c358: fix(validators): name driver-absent nodes, test NVreg pod lifecycle (#3139) (@mohityadav8)
- a136484: fix: bump gpu-operator to v26.7.2 (#3215) (@yuanchen8911)
- 3e76ccc: fix: recognize namePrefix Percona installs and refresh NVSentinel docs (#3161) (@varmesh)
Other Tasks
- 1b7a4ed: chore(deps): Update dependency anchore/syft to v1.54.0 (#3073) (@github-actions[bot])
- 5e042bc: chore(deps): Update dependency goreleaser/goreleaser to v2.18.3 (#3270) (@github-actions[bot])
- 985ac20: chore(deps): Update dependency oasdiff/oasdiff to v1.33.0 (#3074) (@github-actions[bot])
- 496ff15: chore(deps): Update docker.io/alpine/kubectl:1.37.1 Docker digest to b568e8b (#3178) (@github-actions[bot])
- 4de583d: chore(deps): Update docker.io/alpine/kubectl:1.37.1 Docker digest to b57b3bd (#3069) (@github-actions[bot])
- 29ea554: chore(deps): Update docker.io/percona/pmm-client Docker tag to v3.9.1 (#3184) (@github-actions[bot])
- c4281dd: chore(deps): Update golang-x (#3208) (@github-actions[bot])
- 95d1f4d: chore(deps): Update ministackorg/ministack Docker tag to v1.5.21 (#3126) (@github-actions[bot])
- 312f00f: chore(deps): Update ministackorg/ministack Docker tag to v1.5.22 (#3150) (@github-actions[bot])
- 23ce5f6: chore(deps): Update module github.com/urfave/cli/v3 to v3.14.0 (#3075) (@github-actions[bot])
- e6096e0: chore(deps): Update nvcr.io/nvidia/distroless/static:v4.1.3 Docker digest to e6eb65c (#3070) (@github-actions[bot])
- a10862f: chore(deps): Update supply-chain (#3218) (@github-actions[bot])
- 45460de: chore(deps): Update testing-tools (#3072) (@github-actions[bot])
- 6cd65de: chore(deps): Update testing-tools (#3180) (@github-actions[bot])
- 342fe97: chore(deps): Update testing-tools (#3219) (@github-actions[bot])
- 2971f2b: chore(deps): Update testing-tools (#3308) (@github-actions[bot])
- aa87c93: chore(deps): Update ubuntu:26.04 Docker digest to f144425 (#3071) (@github-actions[bot])
- ecf8296: chore(deps): bump helm testing pin to v4.3.1 (@mchmarny)
- bcb73fe: chore(deps): bump psmdb-operator to 1.23.2 and Percona sidecar images (#3189) (@mchmarny)
- 4e67b31: chore(deps): bump sigstore, oras-go, rekor-monitor and ministack (@mchmarny)
- de047da: chore(deps): cap goldmark below v2 in Renovate (@mchmarny)
- 9512726: chore(deps): upgrade Go modules, holding kube-openapi and cel-go (@mchmarny)
- 9889fcb: chore(fern): register v1.0.0 (#3113) (@github-actions[bot])
- 791b940: chore(recipes): bump kueue, slinky-slurm and MariaDB pins (#2891) (@ArangoGutierrez)
- 717454f: chore(recipes): bump network operator to 26.7.0 (#2941) (@awolde)
- 728231e: chore(recipes): bump nodewright-operator to v0.19.1 (#3110) (@lockwobr)
- 0af7942: chore(renovate): cap kustomize below v0.21.3 until k8s 0.38 (#3274) (@mchmarny)
- bacba9b: chore(security): resolve OpenVEX deferred checks, re-anchor nvsentinel exclusion (@mchmarny)
- 5b768ee: chore(security): resolve the OpenVEX rev 20 weekly-scan check (@mchmarny)
- bdf49ea: chore: deps: bump actions/attest-build-provenance in /.github/actions/sbom-and-attest (#3230) (@dependabot[bot])
- 64e666e: chore: deps: bump actions/cache in /.github/actions/install-karpenter-kwok (#3197) (@dependabot[bot])
- cf71912: chore: deps: bump actions/cache/restore in /.github/actions/cli-e2e (#3198) (@dependabot[bot])
- 98b015b: chore: deps: bump actions/download-artifact from 8.0.1 to 8.0.2 (#3187) (@dependabot[bot])
- ddef064: chore: deps: bump actions/download-artifact in /.github/actions/kwok-test (#3196) (@dependabot[bot])
- 7d55dff: chore: deps: bump actions/setup-go in /.github/actions/chainsaw (#3192) (@dependabot[bot])
- 32e5fbc: chore: deps: bump actions/setup-node from 7.0.0 to 7.1.0 (#3188) (@dependabot[bot])
- 1bb8427: chore: deps: bump actions/upload-artifact from 7.0.1 to 7.0.2 (#3186) (@dependabot[bot])
- 46af9db: chore: deps: bump actions/upload-artifact in /.github/actions/e2e (#3195) (@dependabot[bot])
- 839d165: chore: deps: bump anchore/sbom-action in /.github/actions/sbom-and-attest (#3229) (@dependabot[bot])
- 98adac3: chore: deps: bump anchore/sbom-action/download-syft in /.github/actions/setup-build-tools (#3231) (@dependabot[bot])
- 977c94a: chore: deps: bump anchore/scan-action in /.github/actions/security-scan (#3200) (@dependabot[bot])
- 1f23671: chore: deps: bump docker/login-action in /.github/actions/ghcr-login (#3227) (@dependabot[bot])
- 92184ad: chore: deps: bump docker/setup-buildx-action in /.github/actions/docker-manifest (#3199) (@dependabot[bot])
- fa705ec: chore: deps: bump github/codeql-action/upload-sarif in / (#3305) (@dependabot[bot])
- d7b694b: chore: deps: bump github/codeql-action/upload-sarif in /.github/actions/malware-scan (#3201) (@dependabot[bot])
- a2da89b: chore: deps: bump golangci/golangci-lint-action in /.github/actions/go-lint (#3228) (@dependabot[bot])
- daf4c44: chore: deps: bump goreleaser/goreleaser-action in / (#3243) (@dependabot[bot])
- 8c8a163: chore: deps: bump goreleaser/goreleaser-action in /.github/actions/cli-e2e (#3194) (@dependabot[bot])
- e383e22: chore: deps: bump renovatebot/github-action from 46.3.6 to 46.3.7 (#3136) (@dependabot[bot])
- 35231e2: chore: deps: bump renovatebot/github-action in / (#3244) (@dependabot[bot])
- 2970ee8: chore: deps: bump sigstore/cosign-installer in /.github/actions/cli-e2e (#3193) (@dependabot[bot])
- 94da847: chore: deps: bump the codeql-action group with 3 updates (#3185) (@dependabot[bot])
- a0125e5: ci(docs): gate links on published pages against the Fern nav (#3290) (@mikecook)
- e8f18da: ci: declare the Docker Hub pull mirror once in .settings.yaml (#3172) (@mchmarny)
- a100ad2: ci: let Dependabot update action pins in composite actions (@mchmarny)
- 90480fc: ci: pin GitHub-hosted runners to ubuntu-24.04 (#3280) (@ArangoGutierrez)
- e4b160b: ci: route setup-build-tools version inputs through env, not inline interpolation (#3168) (@mohityadav8)
- 8e4cf9e: docs(adr): ADR-018 configurable classes discussion (#3130) (@yuanchen8911)
- d099fa7: docs(demos): add KubeCon variants of the overview and e2e image prompts (#3202) (@yuanchen8911)
- 68746c4: docs(demos): list slinky-slurm-gpu-access in the Slurm journey (#3121) (@yuanchen8911)
- c2eb64f: docs(evidence): GB300 EKS training + inference-dynamo on v1.1.0-rc2 (#3319) (@yuanchen8911)
- 5f8423c: docs(evidence): GKE H100 training-kubeflow on v1.1.0-rc2 (#3320) (@mchmarny)
- b32fa27: docs(evidence): gb300-generic-ubuntu-training on Mistral GB300 (rc1) (#3102) (@atif1996)
- e78a2c6: docs(flux): scope helm-controller v1.5.0 to network-operator migration (#3293) (@La1itchauhan)
- b8ecdd4: docs(release): document RC-to-GA promotion and trim RELEASE.md (@mchmarny)
- cec182d: docs(roadmap): replace v1 exit gates with post-v1 focus areas (#3164) (@mchmarny)
- b95ce9d: docs(upgrade-check): name the in-cluster address Argo reads as local (#3067) (@SammyTourani)
- 4fd6bd5: feat(testgrid-publish): record the UAT run URL as aicr_run_url (#3143) (@srao-nv)
- e140300: fix(nvcre-closure): follow nested template splices and record source commit (#3173) (@mikecook)
- df93fb0: fix(tests/e2e): push OCI bundle with --plain-http and rename aicrd_URL variable (#3125) (@katepallewarprathmesh-sketch)
- 2d147e1: perf(nfd): publish labels, not raw features, from nfd-worker (#3127) (@ArangoGutierrez)
- b8a6479: test(e2e): raise signing test timeout above the Sigstore budget (#3235) (@yuanchen8911)
- 06699aa: test(errors): assert reported codes, not chain membership (#3124) (@mikecook)
- 7d8e48e: test(recipe): read Percona pins from values in remediation image test (#3190) (@mchmarny)
- d37ce8f: test(recipes): check health-check chart claims against registry pins (#2948) (@SammyTourani)
- 6cf6643: test(tools): abort cleanup harness when stubs do not shadow kubectl (#3120) (@yuanchen8911)