Recipe Health

View as Markdown

This page reports the structural health of every recipe AICR can resolve — one row per leaf criteria combination (service × accelerator × OS × intent × platform), plus any non-leaf coordinate retained because it carries published dashboard evidence (a plain coordinate that gained a platform sibling keeps its row so its Evidence link is never silently dropped). It answers “across the whole matrix, what is the current structural state of each recipe?” and is the catalog-wide complement to per-recipe conformance evidence. For a family carrying an ADR-015 configuration profile (gpuStack on AKS, GKE, and OKE), the row grades the composition resolved at the declaration default (azure-managed on AKS, gke-default on GKE, oci-managed on OKE); per-profile-value rows are a follow-up.

The matrix is computed hermetically and offline: every signal is a pure read of the resolved recipe — no Helm render, no GPU, no cluster, no network. It is regenerated from the recipe catalog by make recipe-health-docs and is kept current by a weekly bot PR. make recipe-health-check is an advisory staleness check (it is not wired into make qualify or the merge gate). The full design is recorded in ADR-009.

What the columns mean

Status is the rolled-up structural verdict per recipe:

  • pass — the recipe is structurally sound.
  • warn — a non-fatal structural concern was surfaced.
  • fail — a graded structural signal failed (e.g. the recipe does not resolve).
  • unknown — a transient resolver error (a re-runnable timeout) prevented a confident verdict; the recipe is held rather than penalized. unknown is never silently read as pass.

Structural soundness is not a validation verdict. A recipe that resolves cleanly is structurally sound, not validated and performant. Runtime/validation claims come only from signed conformance evidence, which is out of scope for this matrix today (see the Evidence column below).

chart_pinned (folded into Status). One of the graded signals behind Status checks that every resolved Helm component references an explicit chart version, per ADR-006. This is layer 1 only — the chart-version pin — not image-digest pinning, and it is a render-free read of the resolved recipe (it does not pull or template the chart).

Coverage is a descriptor — it is never graded, so a deliberately minimal recipe is never penalized for declaring fewer checks. It is a compact per-phase summary of the declared validation checks, in the form R:n D:n P:n C:n — the count of named checks declared for the readiness, deployment, performance, and conformance phases respectively.

Evidence deep-links each recipe that has a live dashboard presence to its coordinate on the AICR evidence dashboard at validation.aicr.run (/#/<group>/<dashboard>/<tab>, where group is the service, dashboard is <accelerator>-<os>, and tab is <intent>[-<platform>]). A recipe without a committed presence entry stays a literal pending — the column reports the absence of a committed linkable presence, not necessarily the absence of live evidence (profiled families’ entries are deliberately withheld until profile-aware links land, so their rows read pending even when the dashboard holds per-value evidence). Today the dashboard covers only the UAT-driven coordinates, so most rows are pending until real-hardware coverage broadens; this matrix does not gate on that.

The link is constructed hermetically and deterministically from the recipe’s resolved criteria using the shared pkg/recipe.CoordinateFor mapping — the generator makes no network call, and the coordinate carries no Kubernetes version, so a link is stable across k8s-version rolls. The Evidence cell is a link and nothing more: it points at the live board and carries no pass/fail state or count. Which recipes are linked is driven by a committed presence manifest (pkg/testgrid/presence.yaml); a weekly, warning-only bot keeps it honest by reporting any link that no longer resolves against the live dashboard data (it never blocks merges or edits this doc).

Community-source posture is author-asserted provenance, not independently-verified correctness. A coordinate’s tab placement and any community-sourced results on the dashboard are declared by the signing author; corroboration counts agreement at the same AICR version but does not itself certify runtime correctness. Read the linked board accordingly.

Today every committed pointer is community class; none is first-party. The signer classes are pinned per class in recipes/evidence/allowlist.yaml — first-party is the project’s own UAT workflows, community is individual external contributors, partner has nobody onboarded. Every pointer committed under recipes/evidence/ is community class, published from a contributor fork per evidence publishing, and admitted by maintainer review. The Evidence column does not render the class, so a deep-link here does not distinguish one from the other — read the class from the allowlist. Surfacing it per row is deferred alongside ADR-009’s in-cell freshness state (#2877).

The deep-link is the current Evidence rendering. It is distinct from — and coexists with — ADR-009’s deferred, verify-gated in-cell freshness state (unattested vs aged, derived from a signed attestation’s AttestedAt): the link points at the live board, and an optional freshness token can later annotate the same cell without replacing the link. See also the coverage matrix for the complementary breadth view.

Summary

  • Recipes: 58
  • Pass: 58 · Warn: 0 · Fail: 0 · Unknown: 0

Recipes

RecipeServiceAcceleratorOSIntentPlatformStatusCoverageEvidence
a100-any—a100———passR:0 D:4 P:0 C:0pending
b200-any—b200———passR:0 D:4 P:0 C:0pending
gb200-any—gb200———passR:0 D:4 P:0 C:0pending
gb300-any—gb300———passR:0 D:4 P:0 C:0pending
h100-any—h100———passR:0 D:4 P:0 C:0pending
h200-any—h200———passR:0 D:4 P:0 C:0pending
l40-any—l40———passR:0 D:4 P:0 C:0pending
l40s-any—l40s———passR:0 D:4 P:0 C:0pending
rtx-pro-6000-any—rtx-pro-6000———passR:0 D:4 P:0 C:0pending
monitoring-hpa—————passR:0 D:0 P:0 C:0pending
a100-aks-ubuntu-training-kubeflowaksa100ubuntutrainingkubeflowpassR:0 D:4 P:0 C:10pending
h100-aks-ubuntu-inference-dynamoaksh100ubuntuinferencedynamopassR:0 D:4 P:1 C:11pending
h100-aks-ubuntu-training-kubeflowaksh100ubuntutrainingkubeflowpassR:0 D:4 P:1 C:10pending
h100-aks-ubuntu-training-slurmaksh100ubuntutrainingslurmpassR:0 D:4 P:0 C:10pending
bcm-inferencebcm——inference—passR:0 D:0 P:0 C:5pending
h100-bcm-ubuntu-training-kubeflowbcmh100ubuntutrainingkubeflowpassR:0 D:4 P:0 C:6pending
a100-eks-ubuntu-training-kubefloweksa100ubuntutrainingkubeflowpassR:0 D:4 P:0 C:10pending
gb200-eks-ubuntu-inference-dynamoeksgb200ubuntuinferencedynamopassR:0 D:4 P:1 C:11eks/gb200-ubuntu/inference-dynamo
gb200-eks-ubuntu-training-kubefloweksgb200ubuntutrainingkubeflowpassR:0 D:4 P:2 C:10eks/gb200-ubuntu/training-kubeflow
gb200-eks-ubuntu-training-slurmeksgb200ubuntutrainingslurmpassR:0 D:4 P:0 C:11pending
gb300-eks-ubuntu-inference-dynamoeksgb300ubuntuinferencedynamopassR:0 D:4 P:1 C:11eks/gb300-ubuntu/inference-dynamo
gb300-eks-ubuntu-training-kubefloweksgb300ubuntutrainingkubeflowpassR:0 D:4 P:2 C:10eks/gb300-ubuntu/training-kubeflow
gb300-eks-ubuntu-training-slurmeksgb300ubuntutrainingslurmpassR:0 D:4 P:0 C:11pending
h100-eks-ubuntu-inference-dynamoeksh100ubuntuinferencedynamopassR:0 D:4 P:1 C:11eks/h100-ubuntu/inference-dynamo
h100-eks-ubuntu-inference-nimeksh100ubuntuinferencenimpassR:0 D:4 P:0 C:11pending
h100-eks-ubuntu-training-kubefloweksh100ubuntutrainingkubeflowpassR:0 D:4 P:1 C:10eks/h100-ubuntu/training-kubeflow
h100-eks-ubuntu-training-slurmeksh100ubuntutrainingslurmpassR:0 D:4 P:0 C:10pending
h200-eks-inferenceeksh200—inference—passR:0 D:4 P:0 C:5pending
h200-eks-training-kubefloweksh200—trainingkubeflowpassR:0 D:4 P:1 C:10pending
rtx-pro-6000-eks-ubuntu-inference-dynamoeksrtx-pro-6000ubuntuinferencedynamopassR:0 D:4 P:1 C:11pending
rtx-pro-6000-eks-ubuntu-inference-nimeksrtx-pro-6000ubuntuinferencenimpassR:0 D:4 P:0 C:11pending
rtx-pro-6000-eks-ubuntu-training-kubefloweksrtx-pro-6000ubuntutrainingkubeflowpassR:0 D:4 P:0 C:8pending
gb300-generic-ubuntu-traininggenericgb300ubuntutraining—passR:0 D:4 P:1 C:5pending
a100-gke-cos-training-kubeflowgkea100costrainingkubeflowpassR:0 D:4 P:0 C:10pending
b200-gke-cos-inference-dynamogkeb200cosinferencedynamopassR:0 D:4 P:0 C:11pending
b200-gke-cos-training-kubeflowgkeb200costrainingkubeflowpassR:0 D:4 P:0 C:10pending
gb200-gke-cos-inference-dynamogkegb200cosinferencedynamopassR:0 D:4 P:1 C:11pending
gb200-gke-cos-training-kubeflowgkegb200costrainingkubeflowpassR:0 D:4 P:1 C:10pending
gb200-gke-cos-training-slurmgkegb200costrainingslurmpassR:0 D:4 P:0 C:11pending
h100-gke-cos-inference-dynamogkeh100cosinferencedynamopassR:0 D:4 P:1 C:11pending
h100-gke-cos-training-kubeflowgkeh100costrainingkubeflowpassR:0 D:5 P:1 C:10pending
h100-gke-cos-training-slurmgkeh100costrainingslurmpassR:0 D:5 P:0 C:10pending
h200-k0s-ubuntu-trainingk0sh200ubuntutraining—passR:0 D:4 P:0 C:4k0s/h200-ubuntu/training
h100-kind-inference-dynamokindh100—inferencedynamopassR:0 D:4 P:0 C:11pending
h100-kind-training-kubeflowkindh100—trainingkubeflowpassR:0 D:4 P:0 C:10pending
h100-kind-training-slurmkindh100—trainingslurmpassR:0 D:4 P:0 C:10pending
rtx-pro-6000-lke-ubuntu-inferencelkertx-pro-6000ubuntuinference—passR:0 D:4 P:0 C:8pending
rtx-pro-6000-lke-ubuntu-training-kubeflowlkertx-pro-6000ubuntutrainingkubeflowpassR:0 D:4 P:0 C:9pending
ocp-inference-nimocp——inferencenimpassR:0 D:3 P:0 C:11pending
ocp-trainingocp——training—passR:0 D:3 P:0 C:1pending
a100-oke-ubuntu-training-kubeflowokea100ubuntutrainingkubeflowpassR:0 D:4 P:0 C:8pending
gb200-oke-ubuntu-inference-dynamookegb200ubuntuinferencedynamopassR:0 D:4 P:1 C:11pending
gb200-oke-ubuntu-training-kubeflowokegb200ubuntutrainingkubeflowpassR:0 D:4 P:2 C:10pending
l40s-oke-inferenceokel40solinference—passR:0 D:4 P:0 C:8pending
l40s-oke-training-kubeflowokel40soltrainingkubeflowpassR:0 D:4 P:0 C:9pending
vr200-rke2-ubuntu-inference-dynamorke2vr200ubuntuinferencedynamopassR:0 D:4 P:0 C:10rke2/vr200-ubuntu/inference-dynamo
vr200-rke2-ubuntu-trainingrke2vr200ubuntutraining—passR:0 D:4 P:1 C:8rke2/vr200-ubuntu/training
vr200-rke2-ubuntu-training-kubeflowrke2vr200ubuntutrainingkubeflowpassR:0 D:4 P:1 C:9rke2/vr200-ubuntu/training-kubeflow