diff --git a/docs/design/INDEX.md b/docs/design/INDEX.md index 4379ff8..446a5ca 100644 --- a/docs/design/INDEX.md +++ b/docs/design/INDEX.md @@ -748,7 +748,14 @@ lib API is retained: `rank_by`/`optimize` keep live consumers (`optimize` backs walk-forward's in-sample step, `rank_by` backs `runs family … rank`); `append`/ `load` (the flat-store half) remain public API with **no in-tree caller** after this retire — tested, available to external consumers, a latent dead-code surface -a later sweep may revisit. +a later sweep may revisit. **Unknown-id contract (ratified, Runway fieldtest +2026-06).** `aura runs family ` treats an unknown-but-well-formed id as an +*empty family* (prints nothing, exit 0) — the same treat-as-empty discipline as +`Registry::load` reading a missing store as `Ok(empty)`, and deliberately +distinct from the retired `list`/`rank` exit-2, which is argv-shape rejection +*before* any store access, not a found-nothing lookup. Tightening to a non-zero +`no such family ` exit (typo-safety) is an available future UX choice, not a +current contract. ### C19 — Bootstrap: blueprint → instance (recursive) **Guarantee.** Construction is a distinct phase, recursive at every level. Each