Skip to content

tools/health generator + make targets + public recipe-health matrix #1229

Description

@njhensley

Parent: #1224 (Epic: Recipe health tracking, ADR-009 V1)

Summary

Mirror the BOM generate-and-PR precedent (ADR-009 §5): a deterministic generator, make targets that splice into a marked region, and the public matrix doc — but hermetic/offline (no live Helm render, unlike tools/bom).

Scope

  • New tools/health/main.go paralleling tools/bom/main.go: flags -deterministic and -no-title, -out-dir, -aicr-version. Calls pkg/health.Compute() directly and renders the Markdown matrix (rolled-up status, Coverage column, and an Evidence column that is a literal pending for every recipe in V1).
  • Makefile targets cloning bom-docs/bom-check, named to avoid the existing check-health/check-health-all/component-health cluster-chainsaw family (the health-check vs check-health homophone is a footgun):
    • make recipe-health-docsgo run ./tools/health -deterministic -no-title, then awk-splice into docs/user/recipe-health.md between <!-- BEGIN AICR-HEALTH --> / <!-- END AICR-HEALTH -->.
    • make recipe-health-check → run the docs target, fail on git diff; advisory, not wired into make qualify (comment it like bom-check).
  • Compute-budget gate: a measurable assertion that the generator stays under the ADR-009 sub-minute target (e.g. a go test timing ceiling on Compute() over the full catalog), referenced by the epic acceptance criteria.
  • Committed-golden determinism: the staleness check is a regenerate-and-git diff against the committed recipe-health.md — the byte-stability backstop complementing pkg/health: core Compute() loop, resolves signal, rollup, determinism #1225's in-process marshal test.
  • docs/user/recipe-health.md: hand-written header (incl. a note on the uniform pending Evidence column and the layer-1-only chart_pinned meaning) + the marked region.
  • Register in docs/index.yml under User Guide (after Component Catalog); cross-link from docs/user/component-catalog.md.
  • CODEOWNERS: add tools/health/** and docs/user/recipe-health.md (→ @nvidia/aicr-maintainer). (pkg/health/** is pinned to pkg/health: core Compute() loop, resolves signal, rollup, determinism #1225.)

Out of scope

Committed recipe-health.json; committed internal detail doc (the weekly job writes per-dimension detail to $GITHUB_STEP_SUMMARY#1230).

Key files

tools/bom/main.go (structure minus the network render), pkg/bom/markdown.go (NoTitle/Deterministic), Makefile (bom-docs/bom-check region), docs/index.yml, docs/user/component-catalog.md, .github/CODEOWNERS.

Tests

tools/health golden test (-deterministic byte-stable across runs); recipe-health-check regenerate-and-diff; marker-presence guard; budget-timing test. Lychee (CI, on docs/**) validates the new doc's links.

Acceptance

make recipe-health-docs regenerates the marked region with no network; recipe-health-check flags staleness; budget gate holds; doc registered, cross-linked, owned.

Dependencies

Depends on #1226 and #1227 (so the first published matrix is fully graded). Blocks #1230.

Metadata

Metadata

Assignees

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions