What's wrong with this entry?
Model pricing is now baked into the model catalog at build time rather than fetched at runtime, with validation that every catalog entry has complete pricing data.
- A new pricing-tier resolver (
BVo) maps model entries to their pricing shapes, supporting both direct pricing objects and shared tier references. - Pricing requires
input,output,cache_write_5m,cache_read, andweb_searchfields; missing fields throw at startup: "model catalog entry '{id}' has incomplete pricing — baked entries need the full ModelCosts shape." - Model IDs must be registered in
CATALOG_MODEL_IDS; unregistered IDs throw: "model catalog id '{id}' missing from CATALOG_MODEL_IDS — regenerate with 'bun run generate:model-catalog'." - The first-party billing UI uses the catalog pricing to display per-token costs in the model picker.
- Claude Sonnet 5 can show promotional pricing text when a promo expiry date is set (search for
"promo through").
Validation error (search for "baked entries need the full ModelCosts shape"); catalog check (search for "model catalog id missing from CATALOG_MODEL_IDS")
Strings lifted out of the shipped bundle, so the claim above can be checked against them.