docs: doc sweep for stale references, casing, and index gaps - #2335
Conversation
|
🌿 Preview your docs: https://nvidia-preview-docs-release-proofread-sweep.docs.buildwithfern.com/aicr |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Enterprise Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 12 included reviews per hour; 10 remain after this review. 📝 WalkthroughWalkthroughThe pull request updates documentation across contributor, integrator, and user guides. It corrects product and platform terminology, updates component listings and release-version examples, changes navigation links, adds contributor and user guide links, and revises validator helper documentation. It also removes an explicit Kubernetes version requirement from documented toolchain descriptions. Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This PR updates documentation references, terminology, navigation, and release-preparation content without changing code, schemas, build inputs, or runtime behavior. No actionable merge-blocking risk remains after normal checks and review. Suggested reviewers: 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
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 NVIDIA#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>
c956247 to
801a8c8
Compare
njhensley
left a comment
There was a problem hiding this comment.
Review method: three independent persona reviewers (docs-correctness/link-integrity, domain & architecture accuracy, release/CI-DX) in parallel, then adversarial meta-review of every finding against the resolved tree at head 801a8c8b.
Legend: 🔴 Blocker · 🟠 Major · 🟡 Minor · 🔵 Nitpick.
Overall assessment
A clean, well-scoped, low-risk documentation sweep. Every substantive factual claim in the diff was verified against the actual tree (not just the PR description):
- ✅
validators/helperpath fix is correct —pkg/validator/helperdoes not exist. - ✅
integrator/index.mdretarget + all 5 newly-added nav links exist on disk and are registered indocs/index.yml. - ✅ The api-reference component table now matches
recipes/registry.yamlexactly — all 43 components, alphabetized, 2 columns per row; spot-checked descriptions (k8s-aibom,slinky-topograph, the*-ocpvariants,mariadb-operator*) match the registry. - ✅ The reworded
recipe.md--dynamic/deployer paragraph is accurate: helm/flux/helmfile expose a closed dynamic-path surface;argocd-helmalone emits the structural template-time guard (pkg/bundler/deployer/argocdhelm/argocdhelm.go, theaicr-profile-locktemplate); plainargocdrejects--dynamic(bundler.go:763-766). - ✅ Dropping "Kubernetes 1.33+" is correct — deps are at
v0.36.3, kind imagev1.36.1, recipe floors span1.25–1.34, so a single pin was unsupportable in both directions. - ✅ All in-scope
aicr:/tarball tags normalized tov0.19.0with no stragglers; no residualTCPxO/ArgoCD;AGENTS.md↔.claude/CLAUDE.mdbyte-in-sync; all four doc gates green.
Recommendation: Approve. Two optional 🟡 minor follow-ups below — both in files this PR does not touch, so neither blocks; either fold them in or leave for a separate one-liner.
Findings (both non-blocking, out-of-diff)
🟡 F1 — GPU daemonsets prose left lowercase after the header was cased — docs/user/cli-reference.md L1529 & L1547.
The PR cased the table header (L1520) to GPU DaemonSets, but the same section's Note and bullet still read GPU daemonsets, a new within-section mismatch the edit created. Fix: case both to GPU DaemonSets.
🟡 F2 — Stale aicrd:v0.8.0 upgrade command missed by the version sweep — docs/integrator/kubernetes-deployment.md L612.
A copy-pasteable rolling-update command pins the server image aicrd to v0.8.0 (~11 releases old). The sweep normalized the client aicr: tags; the aicrd: server image slipped through the grep pattern. Bumping :v0.8.0 → :v0.19.0 would make the "normalize example tags" claim complete.
Confirmed non-issue (examined, dismissed)
🔵 v0.8.12 in the SBOM/attestation sample (docs/integrator/supply-chain-verification.md) — refuted. That tag is used consistently across 5 sites as one coherent, historically-captured attestation + SBOM example; a partial bump would break its internal consistency and a full bump is out of scope. Correct as-is.
Tier table
| 🔴 Blocker | 🟠 Major | 🟡 Minor | 🔵 Nitpick |
|---|---|---|---|
| 0 | 0 | 2 | 0 |
Recommendation: Approve (2 optional minor follow-ups).
Follow-up to the review on NVIDIA#2335, which flagged two non-blocking items that PR left behind. F1 — NVIDIA#2335 cased the "GPU DaemonSets" table header in cli-reference.md but left the same section's Note and bullet reading "GPU daemonsets", creating a within-section mismatch that was not there before. Both are now cased. Re-sweeping the file for the same class turned up two more prose instances in the DRA kubelet plugin section ("restarts the ... daemonset", "the daemonset restart"); those are fixed here too so the file does not need a third pass. Left lowercase deliberately: `--ignore-daemonsets` (a kubectl flag) and "CRD/namespace/daemonset create" (an RBAC resource-name list), where lowercase is correct. F2 — the rolling-update example in kubernetes-deployment.md pinned the server image to aicrd:v0.8.0, roughly eleven releases stale. NVIDIA#2335's version sweep matched `aicr:`/`aicr_`/`aicr@` and never matched `aicrd:`, so the server image slipped through. Bumped to v0.19.0. A broader re-sweep confirms this was the only stale aicrd tag in docs/. Untouched: the `aicrd:v1.0.0` placeholder in .github/actions/README.md (a parameter example, not a version claim) and the v0.8.12 SBOM sample in supply-chain-verification.md, which is one internally coherent captured attestation across five sites. Signed-off-by: Yuan Chen <yuanchen97@gmail.com>
Summary
Release-prep proofreading sweep over the root governance docs and the
docs/tree: stale version references, terminology casing, a wrong package path, and index/nav gaps. Documentation only — no code, schema, or build inputs changed.Motivation / Context
Ahead of cutting the next release, the user-facing docs needed a pass for errors, inconsistencies, and drift that had accumulated since the last sweep.
Generated artifacts (
THIRD_PARTY_NOTICES.md,docs/conformance/**evidence) and historical ADRs underdocs/design/were deliberately left untouched — the former are regenerated, the latter are historical records.Fixes: N/A
Related: #2336
Relationship to #2336. Reviewing this PR surfaced a matching stale
1.33in a Go comment ondefaults.MirrorDefaultKubeVersion, which claims to track the project's minimum supported Kubernetes version. That is almost certainly the same bad assumption this PR removes from the Tech Stack line, restated in code. It is pre-existing and untouched here, so it is fixed separately in #2336 rather than widening this docs-only diff. The two PRs are independent — they share no files and can merge in either order.Type of Change
Component(s) Affected
cmd/aicr,pkg/cli)cmd/aicrd,pkg/server)pkg/recipe)pkg/bundler,pkg/component/*)pkg/collector,pkg/snapshotter)pkg/validator)pkg/errors,pkg/k8s)docs/,examples/)AGENTS.md/.claude/CLAUDE.md(kept in sync)Implementation Notes
Correctness fixes.
pkg/validator/helper, which does not exist — the package isvalidators/helper. Description corrected as well.docs/README.md"Find Your Path" pointed the Integrator row atintegrator/automation.md, while the User and Contributor rows point at their section index. Nowintegrator/index.md.chore: init repo. Nothing in the tree matches it:k8s.io/{api,apimachinery,client-go}are atv0.36.3,kind_node_imageiskindest/node:v1.36.1, and recipe constraint floors are per-recipe (1.25 through 1.34). Rather than pick a number that would read as a support floor it cannot be, the version is unpinned from that line — the same treatment golangci-lint got in chore(docs): document make tools-update and unpin version from Tech Stack line #925, leaving.settings.yamlandgo.modas the single source of truth.docs/contributor/recipe.mdclaimed that deployers other thanargocd-helmhave no supported install-time value surface.--dynamicis supported onhelm,flux, andhelmfile(bundler.go); only plainargocdrejects it. Reworded to state the real split: the bundle-time gate is the whole enforcement for those three, whose install-time surface is closed to the paths--dynamicdeclares;argocd-helmneeds an additional template-time guard because it deliberately exposes the parent chart's.Valuesopenly; plainargocdhas no such surface. This matches the CLI contract already documented atcli-reference.md(--dynamicflag row, and theargocd-helmdeployer notes).Stale versions. Three example image/tarball tags had drifted apart (
0.15.0,v0.11.1,v0.1.0); normalized tov0.19.0, matching what the rest of the docs already use.Terminology. Each of these was a small minority against an already-dominant convention:
ArgoCD→Argo CD(3 sites vs 101 correct),TCPxO→TCPXO(3 vs 37),GPU Daemonsets→DaemonSets,vanilla kubernetes→Kubernetes. A sentence-initialArgocd-helmwas reworded to "Theargocd-helmdeployer".Completeness.
api-referencecomponent table was missing 7 registry components (k8s-aibom,slinky-topograph, and 5 OCP variants while including 6 others) and had themariadb-*rows out of alphabetical order. Now complete and sorted, with the "illustrative" caveat replaced by an accurate pointer to the catalog.docs/user/index.mdwas missingfabric-attached-training.md.docs/contributor/index.mdwas missing four pages that exist but were unlinked:uat.md,rekor-v2-signing.md,registry-egress.md,inference-perf-fluctuation.md.One change made and reverted.
docs/user/container-images.mdis the only user-facing page absent fromdocs/index.yml, so it was added — andcheck-docs-mdxcorrectly rejected it. The exclusion is deliberate: the file's<!-- BEGIN AICR-BOM -->markers are not MDX-safe, and the tool derives its scan list from the nav. Reverted; the page stays reachable fromdocs/user/index.md.Testing
Doc-only change, so the scoped gates were run rather than full
make qualify— no Go, YAML schema, or build inputs are touched, so tests, e2e, and Go lint cannot regress from this diff.Beyond the repo's own gates, the sweep was driven by mechanical checks across all 88 in-scope Markdown files, each re-run clean after the edits:
#anchorresolved against generated heading slugs.--flags andaicrsubcommands checked againstpkg/cli; criteria enums againstpkg/recipe/criteria.goand everyenum:block inapi/aicr/v1/server.yaml; component lists againstrecipes/registry.yaml; backticked repo paths against the tree.Risk Assessment
Rollout notes: N/A — prose, links, and table content only.
Checklist
make testwith-race) — N/A, no Go changes; scoped doc gates run instead (see Testing)make lint) — doc-lint subset run: filenames, MDX, MDX-parse, agents-sync, yamllintgit commit -S)