Fix: 1200 false deprecation alerts eliminated

2026-03-30

deprecation-detectormodel-intelligence-storeprovider-catalog

What We Built

Fixed two code paths that caused ~1200 false deprecation alerts on every boot cycle:

  1. Static catalog seeding set alive: true on all 1543 catalog models. When sentinel probes found only ~321 live, the rest got lastSeenAlive set but were missing from probes — triggering the deprecation detector on all of them.
  1. findMissing() reported ALL non-removed catalog models as missing when they weren't in probe results. This caused aliases like claude-3-5-haiku-latest (which Anthropic returns as dated IDs in /models) to get flagged after 3 probe cycles.

Also removed 70 genuinely dead models from the pricing catalog (text-davinci-_, claude-2.1, claude-3 originals, gpt-3.5-turbo-_, etc.) and 28 from the capabilities catalog.

Why It Matters

Every API response was getting X-BR-Deprecation, Deprecation: true, and Sunset headers for models that were perfectly alive. This was confusing clients and polluting telemetry.

How It Works

  • seedFromStaticCatalog() no longer sets alive: true — only sentinel-confirmed models get lastSeenAlive
  • findMissing() now requires lastSeenAlive to be set before reporting a model as missing
  • Both the deprecation detector scan AND the missing-models path now agree: only probe-confirmed models can be flagged

Lockstep Checklist

  • [x] API Routes: No changes.
  • [x] TS SDK: No changes.
  • [x] Python SDK: No changes.
  • [x] MCP Schemas: No changes.
  • [x] Master Record: Bug fix, no new capability.