Skip to content

docs: audit-driven dedup, drift fixes, and new guides#1334

Merged
mchmarny merged 1 commit into
mainfrom
docs/audit-cleanup-dedup
Jun 12, 2026
Merged

docs: audit-driven dedup, drift fixes, and new guides#1334
mchmarny merged 1 commit into
mainfrom
docs/audit-cleanup-dedup

Conversation

@mchmarny

Copy link
Copy Markdown
Member

Summary

Documentation audit cleanup focused on maximum reader value with minimal content: removes cross-file duplication, fixes version drift, trims bloat, adds two missing guides, and makes the audit repeatable as a project skill. Net -1,890 lines across 48 files.

Motivation / Context

A structured audit of all Markdown (README, docs/ persona trees, demos/, and root governance files) found the docs were structurally strong but carried significant duplication and version drift. This PR addresses the findings.

Fixes: N/A
Related: N/A

Type of Change

  • Documentation update
  • Build/CI/tooling (project skill + stale comment refs)

Component(s) Affected

  • Docs/examples (docs/, examples/)
  • Other: demos/, root governance docs, .claude/skills/, UAT comment refs

Implementation Notes

Duplication removed (canonical home + cross-link):

  • .github/copilot-instructions.md gutted ~880 → 23 lines (now a pointer to AGENTS.md / DEVELOPMENT.md).
  • SECURITY.md trimmed 676 → 137 lines; operational verification deep-dive relocated to new docs/integrator/supply-chain-verification.md.
  • Agent-deployment, recipe-evidence, and constraint-table content deduped across cli-reference, agent-deployment, kubernetes-deployment, validation, recipe-development, data-flow.
  • Six CUJ demos merged into demos/cuj1-training.md + demos/cuj2-inference.md; demos/ext.md deleted (subsumed); GKE TCPXO benchmark moved into docs/integrator/gke-tcpxo-networking.md.

Bloat trimmed: automation.md (-461; removed duplicate CI snippets + stub controller), kubernetes-deployment.md (-250; generic K8s boilerplate), data-flow.md (-267).

Drift fixed: version examples marked illustrative (point to Component Catalog / BOM); stale api-reference server + chart versions corrected; one pre-existing broken validator anchor fixed.

New docs (Diátaxis gaps): docs/user/tutorial.md (end-to-end) and docs/user/bundling.md (bundle how-to), wired into the hub and user index.

Style: removed manual TOCs (CONTRIBUTING/DEVELOPMENT, per the repo's auto-anchor rule); fixed CODE_OF_CONDUCT template placeholder; renamed terse demo files (data/valid/e2e) for discoverability.

Skills: prefixed all project skills with aicr- to avoid collision/improve discovery; added aicr-auditing-docs to make this audit repeatable.

Testing

# Doc-specific gates (no Go changed, so the Go test/lint/coverage gates do not apply)
./tools/check-agents-sync          # OK: AGENTS.md in sync with .claude/CLAUDE.md
make check-docs-filenames          # OK: kebab-case
make check-docs-mdx                # OK: MDX-safe
yamllint <edited workflow/test yaml>   # exit 0
# Custom intra-repo link+anchor check across docs/, demos/, root docs: all resolve

No Go source changed. Inbound links to renamed/deleted files and removed SECURITY.md anchors were verified clean repo-wide.

Risk Assessment

  • Low — Documentation-only (plus a project skill and comment-only edits in test/workflow YAML). Easy to revert.

Rollout notes: Renamed demos/* files and the .claude/skills/* directories; any external bookmarks to old paths should update. CI lychee will validate docs/** anchors on this PR.

Checklist

  • Tests pass locally (doc gates above; no Go changes)
  • Linter passes (yamllint + doc checks)
  • I did not skip/disable tests to make CI green
  • I added/updated tests for new functionality (N/A — docs only)
  • I updated docs if user-facing behavior changed
  • Changes follow existing patterns in the codebase
  • Commits are cryptographically signed (git commit -S)

Documentation audit cleanup focused on maximum reader value with minimal
content. Net -1,890 lines.

Duplication removed (canonical home + cross-link):
- copilot-instructions.md gutted to a pointer to AGENTS.md/DEVELOPMENT.md
  (was ~880 lines of duplicated rules/architecture/code).
- SECURITY.md trimmed 676->137 lines; operational verification deep-dive
  relocated to docs/integrator/supply-chain-verification.md.
- Agent-deployment, recipe-evidence, and constraint-table content deduped
  across cli-reference, agent-deployment, kubernetes-deployment, validation,
  recipe-development, and data-flow.
- Six CUJ demos merged into demos/cuj1-training.md + demos/cuj2-inference.md;
  demos/ext.md deleted (subsumed); GKE TCPXO benchmark moved to
  docs/integrator/gke-tcpxo-networking.md.

Bloat trimmed: automation.md (-461), kubernetes-deployment.md (-250),
data-flow.md (-267) — duplicate CI snippets, stub controller, generic K8s
boilerplate.

Drift fixed: marked version examples illustrative (point to Component
Catalog/BOM); fixed stale api-reference server version and chart versions;
fixed a pre-existing broken validator anchor.

New docs (Diataxis gaps): docs/user/tutorial.md (end-to-end) and
docs/user/bundling.md (bundle how-to), wired into the hub and user index.

Style: removed manual TOCs (CONTRIBUTING/DEVELOPMENT), fixed CODE_OF_CONDUCT
template placeholder, renamed terse demo files for discoverability.

Skills: prefixed all project skills with aicr- to avoid collision; added
aicr-auditing-docs to make this audit repeatable.

Also updated stale demo-path references in UAT test/workflow comments.
@mchmarny mchmarny requested review from a team as code owners June 12, 2026 14:30
@mchmarny mchmarny self-assigned this Jun 12, 2026
@mchmarny mchmarny added the theme/community Contributor onboarding, docs, and external engagement label Jun 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report ✅

Metric Value
Coverage 77.1%
Threshold 75%
Status Pass
Coverage Badge
![Coverage](https://img.shields.io/badge/coverage-77.1%25-green)

No Go source files changed in this PR.

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This pull request consolidates and reorganizes AICR documentation across multiple areas. The PR centralizes AI agent guidance by renaming Claude skills with an aicr- prefix and redirecting external documentation references from .github/copilot-instructions.md to the repository's canonical docs/ and governance files. Governance documents (CONTRIBUTING.md, DEVELOPMENT.md, CODE_OF_CONDUCT.md) are streamlined by removing Table of Contents sections and condensing inline content in favor of external references. Demo content is restructured by removing cloud-specific variants (cuj1-eks.md, cuj1-gke.md, etc.) and consolidating them into unified end-to-end workflows (cuj1-training.md with EKS/GKE command blocks and a config-driven variant; new cuj2-inference.md). User documentation expands with a new end-to-end tutorial, bundling guide, and updated CLI reference. Integrator documentation grows with a new supply-chain verification guide (covering SLSA/SBOM/attestations and offline verification), updated CI/CD automation patterns, streamlined Kubernetes deployment guidance, and GKE TCPXO networking benchmark procedures. SECURITY.md simplifies to a trust-guarantees model with references to dedicated operational documentation. Test configurations and workflow comments are updated to reference the new unified demo files.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • NVIDIA/aicr#1322: Both PRs update Claude agent guidance documentation (.claude/CLAUDE.md and AGENTS.md), with this PR consolidating references to canonical docs while the related PR regenerates agent rules from the Claude skill definitions.

Suggested labels

area/docs, size/M, theme/supply-chain

Suggested reviewers

  • ayuskauskas
  • njhensley
  • xdu31
🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: documentation audit-driven cleanup with deduplication, drift fixes, and new guides.
Description check ✅ Passed The description is comprehensive and directly related to the changeset, detailing the audit findings, duplication removal, bloat trimming, drift fixes, new docs added, and testing performed.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/audit-cleanup-dedup

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 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 `@CONTRIBUTING.md`:
- Around line 181-183: Add a blank line before the fenced code block following
the "Address Feedback" paragraph so the markdown linter MD031 passes; locate the
"3. **Address Feedback**" paragraph and insert an empty line immediately before
the triple-backtick fence that opens the bash example (`git commit -m "address
review: improve error handling"`) so the code block is separated from the
preceding text.

In `@docs/user/api-reference.md`:
- Around line 9-10: The version disclaimer currently only mentions sample
request/response versions but the local-server setup still uses the floating
image tag ghcr.io/nvidia/aicrd:latest; update the docs/user/api-reference.md by
either expanding the existing disclaimer to explicitly cover setup commands and
container image references or change the local-server snippet to use a pinned
tag (e.g., replace ghcr.io/nvidia/aicrd:latest with a specific version like
ghcr.io/nvidia/aicrd:<pin>) so examples do not drift; ensure the change
references the same snippet that contains ghcr.io/nvidia/aicrd:latest.

In `@docs/user/tutorial.md`:
- Around line 15-20: Update the wording around the local cluster sentence to
clarify the dry-run boundary: explicitly state that Kind/KWOK only supports the
recipe and bundle generation phases and cannot perform the deploy or validate
stages, and that steps 5-6 (the deploy and validate stages) require a live
GPU-capable cluster (EKS/GKE/AKS or similar) with kubectl configured; reference
the existing phrases "Kind/KWOK", "recipe/bundle", and "deploy and validate
stages" so readers know which steps cannot be completed locally.
🪄 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: ASSERTIVE

Plan: Enterprise

Run ID: 51a559f1-1ba2-4891-8bac-21c1ec9f9ac9

📥 Commits

Reviewing files that changed from the base of the PR and between 090eda2 and 2367db9.

📒 Files selected for processing (48)
  • .claude/CLAUDE.md
  • .claude/skills/aicr-analyzing-snapshots/SKILL.md
  • .claude/skills/aicr-auditing-docs/SKILL.md
  • .claude/skills/aicr-creating-guided-demos/SKILL.md
  • .claude/skills/aicr-creating-guided-demos/skeleton.sh
  • .claude/skills/aicr-creating-slide-decks/SKILL.md
  • .claude/skills/aicr-creating-slide-decks/skeleton.html
  • .claude/skills/aicr-managing-openvex/SKILL.md
  • .github/copilot-instructions.md
  • .github/workflows/uat-aws.yaml
  • .github/workflows/uat-gcp.yaml
  • AGENTS.md
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • DEVELOPMENT.md
  • SECURITY.md
  • demos/README.md
  • demos/cuj1-eks.md
  • demos/cuj1-gke.md
  • demos/cuj1-training.md
  • demos/cuj2-eks.md
  • demos/cuj2-gke.md
  • demos/cuj2-inference.md
  • demos/cuj2.md
  • demos/end-to-end-cli.md
  • demos/examples/CUJ2-Test-Report.md
  • demos/ext.md
  • demos/query.md
  • demos/recipe-data-architecture.md
  • demos/validation-acceptance.md
  • docs/README.md
  • docs/integrator/automation.md
  • docs/integrator/data-flow.md
  • docs/integrator/gke-tcpxo-networking.md
  • docs/integrator/index.md
  • docs/integrator/kubernetes-deployment.md
  • docs/integrator/recipe-development.md
  • docs/integrator/supply-chain-verification.md
  • docs/user/api-reference.md
  • docs/user/bundling.md
  • docs/user/cli-reference.md
  • docs/user/index.md
  • docs/user/tutorial.md
  • docs/user/validation.md
  • tests/chainsaw/cli/cuj1-training/chainsaw-test.yaml
  • tests/uat/aws/tests/cuj1-training/chainsaw-test.yaml
  • tests/uat/aws/tests/h100-training-config.yaml
  • tests/uat/gcp/tests/h100-training-config.yaml
💤 Files with no reviewable changes (6)
  • demos/cuj1-eks.md
  • demos/cuj2.md
  • demos/cuj2-gke.md
  • demos/cuj2-eks.md
  • demos/cuj1-gke.md
  • demos/ext.md

Comment thread CONTRIBUTING.md
Comment on lines +181 to +183
3. **Address Feedback** by pushing new commits (signed per [Developer Certificate of Origin](#developer-certificate-of-origin)):
```bash
git commit -s -m "address review: improve error handling" # external contributors
# or
git commit -S -m "address review: improve error handling" # NVIDIA org members / automation
git commit -m "address review: improve error handling"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add blank line before fenced code block (MD031).

Line 180 contains text, and line 181 immediately starts a code fence without a blank line in between. Markdown linting requires a blank line before fenced code blocks.

📝 Proposed fix
 3. **Address Feedback** by pushing new commits (signed per [Developer Certificate of Origin](`#developer-certificate-of-origin`)):
+
    ```bash
     git commit -m "address review: improve error handling"
     git push origin your-branch
     ```
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 182-182: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🤖 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 `@CONTRIBUTING.md` around lines 181 - 183, Add a blank line before the fenced
code block following the "Address Feedback" paragraph so the markdown linter
MD031 passes; locate the "3. **Address Feedback**" paragraph and insert an empty
line immediately before the triple-backtick fence that opens the bash example
(`git commit -m "address review: improve error handling"`) so the code block is
separated from the preceding text.

Source: Linters/SAST tools

Comment on lines +9 to +10
> Version numbers in the sample requests and responses below (server version, chart versions, driver versions) are illustrative. The authoritative, current versions are in the [Component Catalog](component-catalog.md) and the [Container Images BOM](container-images.md).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Broaden the version disclaimer or pin the startup image.

The page still uses ghcr.io/nvidia/aicrd:latest in the local-server snippet below, so the new note does not fully remove version drift. Either scope the disclaimer to setup commands too or switch that example to a pinned tag.

♻️ Suggested wording
-> Version numbers in the sample requests and responses below ...
+> Version numbers in the sample requests, responses, and setup commands below ...
🤖 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 `@docs/user/api-reference.md` around lines 9 - 10, The version disclaimer
currently only mentions sample request/response versions but the local-server
setup still uses the floating image tag ghcr.io/nvidia/aicrd:latest; update the
docs/user/api-reference.md by either expanding the existing disclaimer to
explicitly cover setup commands and container image references or change the
local-server snippet to use a pinned tag (e.g., replace
ghcr.io/nvidia/aicrd:latest with a specific version like
ghcr.io/nvidia/aicrd:<pin>) so examples do not drift; ensure the change
references the same snippet that contains ghcr.io/nvidia/aicrd:latest.

Comment thread docs/user/tutorial.md
Comment on lines +15 to +20
- A GPU-accelerated Kubernetes cluster you can deploy to (EKS, GKE, AKS, or a
local Kind/KWOK cluster for a dry run). `kubectl` configured to reach it.
- The `helm` binary on your `PATH` (the default `helm` deployer emits Helm
commands).
- About 15 minutes. No NVIDIA hardware is required to generate a recipe or a
bundle — only the deploy and validate stages touch a real cluster.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Clarify the dry-run boundary.

Kind/KWOK can only cover the recipe/bundle portion here; steps 5-6 still need a live GPU-capable cluster. As written, this reads like the entire tutorial can be completed locally, which will strand readers on deployment.

♻️ Suggested wording
-- A GPU-accelerated Kubernetes cluster you can deploy to (EKS, GKE, AKS, or a
-  local Kind/KWOK cluster for a dry run). `kubectl` configured to reach it.
+- A GPU-accelerated Kubernetes cluster you can deploy to (EKS, GKE, AKS).
+  `kubectl` configured to reach it. If you want a local Kind/KWOK dry run, you
+  can complete only the recipe/bundle steps; deployment and validation still
+  require a live cluster.
🤖 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 `@docs/user/tutorial.md` around lines 15 - 20, Update the wording around the
local cluster sentence to clarify the dry-run boundary: explicitly state that
Kind/KWOK only supports the recipe and bundle generation phases and cannot
perform the deploy or validate stages, and that steps 5-6 (the deploy and
validate stages) require a live GPU-capable cluster (EKS/GKE/AKS or similar)
with kubectl configured; reference the existing phrases "Kind/KWOK",
"recipe/bundle", and "deploy and validate stages" so readers know which steps
cannot be completed locally.

@mchmarny mchmarny merged commit e6d9301 into main Jun 12, 2026
35 of 36 checks passed
@mchmarny mchmarny deleted the docs/audit-cleanup-dedup branch June 12, 2026 14:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci area/docs area/tests size/XL theme/community Contributor onboarding, docs, and external engagement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants