ADR 0007: Keep rescheduled retirements as superseded plans¶
- Status: Accepted
- Date: 2026-10-08
Context¶
ADR 0006 assumed each model ID has one retirement. OpenAI's deprecations page shows that is false. Some models appear in two sections with different dates, because OpenAI changed the plan:
gpt-4-0314: announced 2023-06-13 with shutdown "at earliest 2024-06-13", then announced again on 2025-09-26 with shutdown 2026-03-26.gpt-4-1106-preview: shutdown 2026-03-26 (announced 2025-09-26), then 2026-10-23 (announced 2026-04-22).code-davinci-002: shutdown 2023-03-23 (announced 2023-03-20), then 2024-01-04 (announced 2023-07-06).
Google's page has a different problem: it gives no announcement dates, and says its shutdown dates are "the earliest possible dates on which a model might be retired".
Decision¶
- Each model has one entry. Its main fields describe the current plan, which is the newest section on the page.
- Older plans go in a
supersededlist (announced, shutdown,shutdown_is_earliest), oldest first. The schema rejects a superseded plan that is not older than the current one. shutdown_is_earliest: truemarks dates the provider only promises as a lower bound. Every Google entry has it.
Alternatives considered¶
- Keep only the newest plan: simple, but loses the fact that a date moved. That fact matters for the research: "migrated after shutdown" depends on which date a developer saw at the time.
- One entry per announcement: looking up an ID would return several answers, and the scanner would have to pick one each time.
Consequences¶
- Lookups stay simple: one ID gives one current plan.
- The research code can count how often providers postpone retirements, and test results against both the old and new dates.
- Status is always computed from the current plan, so a model whose old date has passed but whose new date has not is still reported as deprecated, not retired.