Prerequisites
Feature Summary
Add an opt-out flag (--no-health / --skip-health) to aicr recipe list that skips the per-leaf structural-health computation and renders only the #1208 enumeration columns/fields.
Problem / Use Case
As of #1228, aicr recipe list resolves every leaf overlay through pkg/health.Compute on every invocation to populate the STATUS/COVERAGE columns (table) and the health block (json/yaml). The previously-cheap catalog enumeration now always pays the full health-compute cost, with no way to opt out.
This is within ADR-009's sub-minute budget so it's acceptable for v1, but for purely interactive "what overlays exist?" lookups — or scripted/CI callers that only consume name/criteria/is_leaf/source — the health resolution is wasted latency.
Raised as a non-blocking follow-up in PR #1302 review (#1302).
Proposed Solution
Add a boolean flag to the recipe list command:
Wiring is minimal: gate the ComputeHealth call on the flag and pass an empty healthByName map to writeCatalogEntries when skipped. pkg/cli stays logic-free; no pkg/health or facade changes needed.
Success Criteria
Alternatives Considered
- Always compute (status quo): simplest, but no escape hatch for latency-sensitive callers.
- Lazy/cached health: more complex; caching across invocations is out of scope for a CLI that re-loads the catalog each run.
--columns selector: more general but heavier; a single opt-out flag is the minimal fix for the raised concern.
Component
CLI (aicr)
Prerequisites
Feature Summary
Add an opt-out flag (
--no-health/--skip-health) toaicr recipe listthat skips the per-leaf structural-health computation and renders only the #1208 enumeration columns/fields.Problem / Use Case
As of #1228,
aicr recipe listresolves every leaf overlay throughpkg/health.Computeon every invocation to populate theSTATUS/COVERAGEcolumns (table) and thehealthblock (json/yaml). The previously-cheap catalog enumeration now always pays the full health-compute cost, with no way to opt out.This is within ADR-009's sub-minute budget so it's acceptable for v1, but for purely interactive "what overlays exist?" lookups — or scripted/CI callers that only consume
name/criteria/is_leaf/source— the health resolution is wasted latency.Raised as a non-blocking follow-up in PR #1302 review (#1302).
Proposed Solution
Add a boolean flag to the
recipe listcommand:--no-health(or--skip-health): when set, skip theclient.ComputeHealth(...)call entirely and render the original feat(recipe): add aicr recipe list subcommand for catalog enumeration #1208 output:STATUSandCOVERAGEcolumns (or render-).healthblock (alreadyomitempty, so passing a nil/empty health map yields the pre-aicr recipe list: add structural-health + coverage columns #1228 shape).Wiring is minimal: gate the
ComputeHealthcall on the flag and pass an emptyhealthByNamemap towriteCatalogEntrieswhen skipped.pkg/clistays logic-free; nopkg/healthor facade changes needed.Success Criteria
aicr recipe list --no-healthrenders the feat(recipe): add aicr recipe list subcommand for catalog enumeration #1208 columns/fields only, with no health computation performed (verifiable: no per-leaf resolve cost).docs/user/cli-reference.md(flag table + a note).healthblock is absent in json when--no-healthis set.Alternatives Considered
--columnsselector: more general but heavier; a single opt-out flag is the minimal fix for the raised concern.Component
CLI (aicr)