Why this matters
A single bad model field made diagnostics blame the whole provider block, so operators could not see which leaf was wrong.
Evidence
Tip 0771fafeb0d73018852e6f7cc870d4c881cea5ab (base v2):
- Leaf:
packages/core/src/config/normalize.ts
- Live:
cd packages/core && bun test test/config/normalization.test.ts → 28/28 pass
- Evidence class: BEHAVIORAL
Invariant: invalid leaf → localized diagnostic path; siblings retained when possible.
Ask (design, light) — prospective; non-blocking
- Should every config recovery path share one “diagnose the invalid leaf, keep siblings” contract?
- For never-again: are whole-object diagnostics banned when a leaf schema fails?
Fork mirror of a sealed OSS review draft. Not posted upstream.
Why this matters
A single bad model field made diagnostics blame the whole provider block, so operators could not see which leaf was wrong.
Evidence
Tip
0771fafeb0d73018852e6f7cc870d4c881cea5ab(basev2):packages/core/src/config/normalize.tscd packages/core && bun test test/config/normalization.test.ts→ 28/28 passInvariant: invalid leaf → localized diagnostic path; siblings retained when possible.
Ask (design, light) — prospective; non-blocking
Fork mirror of a sealed OSS review draft. Not posted upstream.
0771fafeb0d73018852e6f7cc870d4c881cea5abbun test test/config/normalization.test.ts→ 28/28 pass (incl. localizes the field that invalidates a native provider model)anomalyco/opencode#50832