Add retirement_date field and backfill it across all first-party labs#1923
Open
Tangerg wants to merge 2 commits into
Open
Add retirement_date field and backfill it across all first-party labs#1923Tangerg wants to merge 2 commits into
Tangerg wants to merge 2 commits into
Conversation
Adds an optional `retirement_date` field to the model schema (same YYYY-MM / YYYY-MM-DD format as release_date/last_updated) so the database can record when a model stops being served, not just that it is deprecated. OpenAI calls this the "shutdown date" and Anthropic the "retirement date"; the existing `status = "deprecated"` lifecycle value is reused unchanged. Backfills 15 first-party OpenAI and Anthropic models from official sources (OpenAI deprecations page and Anthropic model deprecations page). Wrapper/mirror providers inherit the dates automatically via symlinks and `extends`. Docs updated: README field reference + example, AGENTS.md field table. Refs anomalyco#1921 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1dc0b7d to
0f899d7
Compare
Extends the retirement_date coverage beyond OpenAI/Anthropic to every other first-party lab in the repo that publishes an official model deprecation/retirement schedule: - Google (Gemini): 11 models, from ai.google.dev deprecations page (these are Google's "earliest possible" shutdown dates) - Mistral: 14 legacy models, from docs.mistral.ai models page - Cohere: aya-expanse-8b / aya-vision-8b (retired 2026-04-04) - DeepSeek: deepseek-chat / deepseek-reasoner (discontinued 2026-07-24) - Moonshot/Kimi: 5 kimi-k2 models (discontinued 2026-05-25) status = "deprecated" is set for models already retired or clearly superseded; still-active models with only a future earliest-possible date get retirement_date without a status change. Mirror/aggregator providers inherit via symlinks and extends. Providers checked with no official retirement schedule for tracked models (left unchanged): xAI, Perplexity, Alibaba/Qwen, Amazon Bedrock, NVIDIA, Zhipu/GLM, StepFun, MiniMax, Upstage, Sarvam. Refs anomalyco#1921 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Strong +1. Keeping retirement_date orthogonal to status = "deprecated" is the key insight here — "announced but still callable" and "actually shut off" are genuinely different states, and only the latter is a hard deadline. The 3-month OpenAI example in the description makes the case well. Backfilling from official provider pages (rather than guessing) is exactly the right level of rigor for this repo. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements the feature proposed in #1921: there was no way to record when a model stops being served by the provider — only that it is
deprecated.Why a separate
retirement_date? Isn'tstatus = "deprecated"enough?No — they describe two different things, and providers treat them as two distinct events:
Every major lab publishes both a deprecation announcement and a later shutdown date, with a deliberate migration buffer in between. For example, OpenAI's 2026-04-22 notice:
computer-use-preview→gpt-5.4-miniThat ~3-month gap is the window developers get to migrate.
status = "deprecated"alone tells you a model is on its way out but not when it actually disappears — which is exactly the information consumers need to plan migrations, warn users, or hide soon-dead models.So this PR keeps the two orthogonal:
status = "deprecated"→ the lifecycle state (announced, still served).retirement_date→ the date it is (or was) shut off.A model can be
deprecatedtoday with a futureretirement_date(still usable, but scheduled to die), e.g.gpt-3.5-turbo→ 2026-10-23. No newstatusvalue is introduced; the existingdeprecatedis reused. OpenAI calls this the "shutdown date" and Anthropic the "retirement date";retirement_datewas chosen as the neutral name.What's in this PR
packages/core/src/schema.ts) — adds an optionalretirement_datefield, same^\d{4}-\d{2}(-\d{2})?$format asrelease_date/last_updated.README.mdand the field table inAGENTS.md.The field flows through to
api.jsonautomatically, and all mirror/aggregator providers (Vertex, Bedrock, OpenRouter, Vercel, Azure, …) inherit it via symlinks andextends.Convention
retirement_dateis set whenever the provider publishes an official date.status = "deprecated"is set only when the model is already retired or clearly superseded. Still-active models that merely have a future published date getretirement_datewithout a status change.Coverage by provider (official sources only)
gpt-3.5-turbo,gpt-4,gpt-4-turbo,gpt-4o-2024-05-13,o1-preview,o1-mini)claude-3*,claude-3-5*,claude-3-7-sonnet,claude-sonnet-4-20250514,claude-opus-4-20250514)c4ai-aya-expanse-8b,c4ai-aya-vision-8b→ 2026-04-04)deepseek-chat,deepseek-reasoner→ 2026-07-24)kimi-k2-*→ 2026-05-25)Checked, no official retirement schedule for tracked models (left unchanged)
xAI (Grok), Perplexity (Sonar), Alibaba (Qwen / Model Studio), Amazon Bedrock, NVIDIA, Zhipu (GLM), StepFun, MiniMax, Upstage, Sarvam. For these, the provider either publishes no formal schedule, or the only dated retirements concern model IDs not tracked in this repo.
Notes for reviewers
retirement_dateis open to bikeshedding.Validation
bun run validatepasses;retirement_dateis present in the generated output for the affected models and their mirrors.