Summary
When aicr validate --recipe receives a RecipeMetadata overlay file (instead of a hydrated RecipeResult), all validators are silently skipped (selected=0) with no error or warning.
Root Cause
The validation section in a RecipeMetadata overlay is nested under spec::
kind: RecipeMetadata
spec:
validation:
deployment:
checks: [...]
conformance:
checks: [...]
But the validator expects it at the top level (RecipeResult format):
kind: RecipeResult
validation:
deployment:
checks: [...]
conformance:
checks: [...]
When the overlay is passed directly, the validation config is never found, and all phases report selected=0 with no checks executed.
Reproduction
# This works (hydrated recipe):
aicr recipe --service eks --accelerator gb200 --intent inference -o recipe.yaml
aicr validate --recipe recipe.yaml # runs all checks
# This silently skips everything (overlay file):
aicr validate --recipe recipes/overlays/gb200-eks-ubuntu-inference-dynamo.yaml
# Output: selected=0 for all phases, no checks run, no error
Expected Behavior
When given a RecipeMetadata overlay, aicr validate should either:
- Detect the input kind and resolve overlays through the recipe builder before running validation, or
- Return a clear error indicating that a hydrated
RecipeResult is required
Summary
When
aicr validate --recipereceives aRecipeMetadataoverlay file (instead of a hydratedRecipeResult), all validators are silently skipped (selected=0) with no error or warning.Root Cause
The validation section in a
RecipeMetadataoverlay is nested underspec::But the validator expects it at the top level (
RecipeResultformat):When the overlay is passed directly, the validation config is never found, and all phases report
selected=0with no checks executed.Reproduction
Expected Behavior
When given a
RecipeMetadataoverlay,aicr validateshould either:RecipeResultis required