Skip to content

Commit 801a8c8

Browse files
committed
docs: fix stale references, casing, and index gaps ahead of release
Release-prep proofreading sweep over the root governance docs and the docs/ tree. Generated artifacts (THIRD_PARTY_NOTICES.md, conformance evidence) and historical ADRs under docs/design/ were left untouched. Correctness: - Key Packages listed pkg/validator/helper, which does not exist; the package is validators/helper. - docs/README.md "Find Your Path" pointed the Integrator row at integrator/automation.md instead of the section index. - Tech Stack claimed "Kubernetes 1.33+", unchanged since repo init while k8s.io/api moved to v0.36.3 and kindest/node to v1.36.1. Unpinned from that line, as golangci-lint already was in #925. - contributor/recipe.md claimed deployers other than argocd-helm have no supported install-time value surface. --dynamic is supported on helm, flux, and helmfile; only plain argocd rejects it. Reworded to describe the actual split: the bundle-time gate is the whole enforcement for those three (closed surface, only declared paths), argocd-helm needs an additional template-time guard because it exposes the parent chart's .Values openly, and plain argocd has no such surface. Stale versions: three example image/tarball tags had drifted apart (0.15.0, v0.11.1, v0.1.0); normalized to v0.19.0. Terminology: ArgoCD -> Argo CD (3 sites vs 101 already correct), TCPxO -> TCPXO (3 vs 37), GPU Daemonsets -> DaemonSets, vanilla kubernetes -> Kubernetes, and a sentence-initial "Argocd-helm" reworded. Completeness: the api-reference component table was missing 7 registry components and had the mariadb-* rows out of order; user/index.md was missing fabric-attached-training.md; contributor/index.md was missing four pages that exist but were unlinked. Dropped an agent attribution from an investigation-doc byline. Signed-off-by: Yuan Chen <yuanchen97@gmail.com>
1 parent 31970aa commit 801a8c8

16 files changed

Lines changed: 41 additions & 24 deletions

.claude/CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ NVIDIA AI Cluster Runtime (AICR) generates validated GPU-accelerated Kubernetes
2828
state config vs actual manifests
2929
```
3030

31-
**Tech Stack:** Go 1.26, Kubernetes 1.33+, golangci-lint, Ko for images (pinned versions in `.settings.yaml`)
31+
**Tech Stack:** Go 1.26, Kubernetes, golangci-lint, Ko for images (pinned versions in `.settings.yaml`)
3232

3333
## Commands
3434

@@ -116,7 +116,7 @@ workspace paths. Use local file paths only when explicitly requested.
116116
| `pkg/snapshotter` | System state snapshot orchestration | Yes |
117117
| `pkg/k8s/client` | Singleton Kubernetes client | Yes |
118118
| `pkg/k8s/pod` | Shared K8s Job/Pod utilities (wait, logs, ConfigMap URIs) | Yes |
119-
| `pkg/validator/helper` | Shared validator helpers (PodLifecycle, test context) | Yes |
119+
| `validators/helper` | Shared validator helpers (PodLifecycle, GPU/resource utilities) | Yes |
120120
| `pkg/defaults` | Centralized timeout and configuration constants | Yes |
121121

122122
**Critical Architecture Principle:**

AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ NVIDIA AI Cluster Runtime (AICR) generates validated GPU-accelerated Kubernetes
2828
state config vs actual manifests
2929
```
3030

31-
**Tech Stack:** Go 1.26, Kubernetes 1.33+, golangci-lint, Ko for images (pinned versions in `.settings.yaml`)
31+
**Tech Stack:** Go 1.26, Kubernetes, golangci-lint, Ko for images (pinned versions in `.settings.yaml`)
3232

3333
## Commands
3434

@@ -116,7 +116,7 @@ workspace paths. Use local file paths only when explicitly requested.
116116
| `pkg/snapshotter` | System state snapshot orchestration | Yes |
117117
| `pkg/k8s/client` | Singleton Kubernetes client | Yes |
118118
| `pkg/k8s/pod` | Shared K8s Job/Pod utilities (wait, logs, ConfigMap URIs) | Yes |
119-
| `pkg/validator/helper` | Shared validator helpers (PodLifecycle, test context) | Yes |
119+
| `validators/helper` | Shared validator helpers (PodLifecycle, GPU/resource utilities) | Yes |
120120
| `pkg/defaults` | Centralized timeout and configuration constants | Yes |
121121

122122
**Critical Architecture Principle:**

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ AICR recipes compose components from the following groups:
7272
| Group | Examples |
7373
|-------|----------|
7474
| **GPU stack** | GPU Operator, DRA GPU Driver, Network Operator, NFD, NVSentinel |
75-
| **Cloud integration** | AWS EFA, AWS EBS CSI, GKE NCCL TCPxO |
75+
| **Cloud integration** | AWS EFA, AWS EBS CSI, GKE NCCL TCPXO |
7676
| **Node tuning** | Nodewright Operator and customizations, cert-manager |
7777
| **Observability** | kube-prometheus-stack, Prometheus Operator CRDs, Prometheus Adapter, ephemeral-storage metrics |
7878
| **Training platforms** | Kubeflow Trainer, Slinky Slurm Operator, KAI Scheduler, Kueue |

ROADMAP.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ so future changes can warn before they break.
7474
**Bundle output as a stable surface.** The bundle is what downstream consumers
7575
integrate against; v1 hardens it as a first-class contract. This includes a generic
7676
Helm bundle format that is deployer-neutral, deferring teardown to the deployer's
77-
native uninstall path (helm, ArgoCD, Flux) rather than shipping bundle-side
77+
native uninstall path (helm, Argo CD, Flux) rather than shipping bundle-side
7878
scripts, and decoupling environment specifics (e.g., StorageClass) from recipe
7979
content so bundles are portable.
8080

docs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ overview, see the [repository README](https://github.com/NVIDIA/aicr).
1515
| If you are a... | Start here |
1616
|-----------------|-----------|
1717
| **User** — operator deploying AICR to provision or validate a cluster | [User Guide](user/index.md) |
18-
| **Integrator** — engineer embedding AICR in a CI/CD pipeline, GitOps flow, or larger platform | [Integrator Guide](integrator/automation.md) |
18+
| **Integrator** — engineer embedding AICR in a CI/CD pipeline, GitOps flow, or larger platform | [Integrator Guide](integrator/index.md) |
1919
| **Contributor** — developer extending AICR or shipping recipes | [Contributor Guide](contributor/index.md) |
2020

2121
### User Guide

docs/contributor/index.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,10 @@ By contributor task:
315315
- **Publishing the evidence dashboard to GitHub Pages (GP5)**[evidence-dashboard-publish.md](evidence-dashboard-publish.md)
316316
- **Maintaining recipes and cutting releases**[maintaining.md](maintaining.md)
317317
- **Writing or running tests (unit, chainsaw, KWOK, e2e)**[tests.md](tests.md)
318+
- **Requesting a real-hardware UAT run or adding a reservation**[uat.md](uat.md)
319+
- **Signing with Rekor v2**[rekor-v2-signing.md](rekor-v2-signing.md)
320+
- **Allowlisting registry egress for CI and air-gapped builds**[registry-egress.md](registry-egress.md)
321+
- **Investigating inference-perf run-to-run fluctuation**[inference-perf-fluctuation.md](inference-perf-fluctuation.md)
318322
- **Using the project's Claude skills (snapshot analysis, docs audit, demos, decks, OpenVEX, release notes)**[skills.md](skills.md)
319323

320324
By reference:

docs/contributor/inference-perf-fluctuation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Inference-Perf Validation — TTFT Fluctuation & Worker-Stall Investigation
22

33
**Date:** 2026-06-04
4-
**Author:** Yuan Chen (with Claude Code)
4+
**Author:** Yuan Chen
55
**Related:** NVIDIA/aicr #1192, #1193, #1194, #1196
66
**Status:** root cause characterized; mitigations shipped/in-PR; long-term fix proposed
77

docs/contributor/recipe.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,13 @@ profile-owned values. Bundle and mirror compare final candidate state with the
261261
hydrated recipe before creating output. Exact, ancestor, or descendant dynamic
262262
paths reject unconditionally; static writes reject only when the effective
263263
three-state observation (present bytes, absent, or blocked) diverges.
264-
Argocd-helm emits the corresponding structural template-time guard. Other
265-
deployers have no supported install-time value surface.
264+
That bundle-time rejection is the whole enforcement for `helm`, `flux`, and
265+
`helmfile`, whose install-time surface is closed — only the paths `--dynamic`
266+
declares. The `argocd-helm` deployer additionally emits a structural
267+
template-time guard, because it exposes component values through the parent
268+
chart's `.Values`, an open-ended surface the bundle-time gate cannot
269+
enumerate. Plain `argocd` rejects `--dynamic` and has no install-time value
270+
surface.
266271

267272
Unprofiled compositions retain the legacy apiVersion and byte shape.
268273
Generation-side driver auto-detection skips a path owned by the selected

docs/contributor/uat.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,12 @@ Semantics: **`main` is never gated** (it is built from source and carries the ne
8989
The `deployer` input picks which deployer variant of the intent's test config the pipeline consumes. Set to `helmfile` (the default), the pipeline resolves `tests/uat/<cloud>/tests/<accelerator>-<intent>-config.yaml` — the config every existing cell has always run against. Any other value (currently only `argocd`) resolves `<accelerator>-<intent>-<deployer>-config.yaml` — for example `deployer=argocd` on `aws-h100` training loads `tests/uat/aws/tests/h100-training-argocd-config.yaml`.
9090

9191
```bash
92-
# ArgoCD variant of the aws-h100 training cell (issue #2194)
92+
# Argo CD variant of the aws-h100 training cell (issue #2194)
9393
gh workflow run uat-run.yaml --repo NVIDIA/aicr --ref main \
9494
-f reservation=aws-h100 -f intent=training -f deployer=argocd
9595
```
9696

97-
The AICRConfig field `spec.bundle.deployment.deployer` is the source of truth `phase_prep`/`phase_install` read; the workflow input is only how the correct config file is *selected*. `phases.sh:phase_install` dispatches to `install_helmfile` (helmfile lane, unchanged) or `install_argocd` (Argo CD install + repo-creds Secret from `GITHUB_TOKEN` + `kubectl apply` of the `nvidia-stack` app-of-apps + terminal-pass wait on every `Application`). The post-install readiness gate is deployer-agnostic — it validates deployed cluster state (`aicr validate --phase deployment`), not the deployment mechanism — so a green ArgoCD cell means the GitOps deploy path converges on the same operator-managed stack the helmfile lane validates.
97+
The AICRConfig field `spec.bundle.deployment.deployer` is the source of truth `phase_prep`/`phase_install` read; the workflow input is only how the correct config file is *selected*. `phases.sh:phase_install` dispatches to `install_helmfile` (helmfile lane, unchanged) or `install_argocd` (Argo CD install + repo-creds Secret from `GITHUB_TOKEN` + `kubectl apply` of the `nvidia-stack` app-of-apps + terminal-pass wait on every `Application`). The post-install readiness gate is deployer-agnostic — it validates deployed cluster state (`aicr validate --phase deployment`), not the deployment mechanism — so a green Argo CD cell means the GitOps deploy path converges on the same operator-managed stack the helmfile lane validates.
9898

9999
**How the bundle reaches Argo CD.** `phase_prep` calls `aicr bundle --output oci://ghcr.io/nvidia/aicr-bundle-scratch/<config-metadata-name>:run-<id> --repo oci://ghcr.io/nvidia/aicr-bundle-scratch/<config-metadata-name>` — the path segment is the AICRConfig's `metadata.name` (yq-read from the test-config in `phase_prep`), not the recipe coordinate. The `--output` flag pushes the rendered bundle to GHCR (the job already has `packages: write`), and `--repo` sets the `source.repoURL` baked into every generated `Application`. `install_argocd` provisions a prefix-matched `argocd.argoproj.io/secret-type: repo-creds` Secret from `GITHUB_TOKEN` so Argo CD's repo-server can pull the pushed artifact. Concurrent runs on the same recipe are isolated by the `:run-<id>` tag.
100100

docs/integrator/components/nodewright.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Nodewright and nodewright-customizations are two halves of the integration. [Nodewright](https://github.com/NVIDIA/nodewright) is a Kubernetes Operator that applies [nodewright packages](https://github.com/NVIDIA/nodewright-packages) with consistent, repeatable, and tested lifecycles within a cluster. Nodewright-customizations are instances of the [Skyhook Custom Resource](https://github.com/NVIDIA/nodewright/blob/main/chart/templates/skyhook-crd.yaml) that define one or more nodewright packages to deploy. These packages were selected to provide two main functions:
44
1. Optimize a node for inference or training workloads via grub, sysctl and systemd service settings.
5-
2. Be able to install all of the necessary software to bring a vanilla kubernetes node to the AICR spec.
5+
2. Be able to install all of the necessary software to bring a vanilla Kubernetes node to the AICR spec.
66

77
## References
88

0 commit comments

Comments
 (0)