What
A proactive sweep to bump stale/outdated model references to current-generation
values across examples/*.yaml, pkg/config/auto.go + auto_test.go, and
provider/docs pages. Follow-up to #4121
(models.dev snapshot refresh, unrelated/already merged) — this is a separate,
dedicated arc.
Policy
Keep two generations live per model family where the provider actually
has two majors: the latest major's newest minor, and the previous major's
newest minor. Never an arbitrary older minor. When a family has two valid
anchors and a given file uses neither, split by cost/fallback signal in the
key/file name: keys/files signalling cost or fallback (budget,
budget-model, fast, discounted-sonnet, claude_fast) get the previous
anchor; everything else gets the latest anchor. Already-valid anchor values
are left untouched.
Established anchors (live-verified against real provider catalogs)
| Family |
Latest (current major) |
Previous (prior major) |
| Anthropic Sonnet |
claude-sonnet-5 |
claude-sonnet-4-6 |
| Anthropic Opus |
claude-opus-5 |
claude-opus-4-8 |
| Anthropic Haiku |
claude-haiku-4-5 (single, no split) |
— |
| Anthropic Fable |
claude-fable-5-1 (single, no split) |
— |
| Bedrock Sonnet/Opus |
global.anthropic.claude-{sonnet-5,opus-5} |
global.anthropic.claude-{sonnet-4-6,opus-4-8} |
| OpenAI flagship |
gpt-5.6-sol |
gpt-4.1 |
| OpenAI mini |
gpt-5.6-terra |
gpt-4.1-mini |
| OpenAI nano |
gpt-5.6-luna |
gpt-4.1-nano |
| Google flash |
gemini-3.8-flash |
gemini-2.5-flash |
| Google flash-lite |
gemini-3.5-flash-lite |
gemini-2.5-flash-lite |
| OpenRouter Llama |
meta-llama/llama-4-maverick |
meta-llama/llama-3.3-70b-instruct |
| Moonshot Kimi |
kimi-k3 |
n/a |
| xAI Grok |
grok-4.5 (single default) |
— |
| Baseten DeepSeek |
deepseek-ai/DeepSeek-V4-Pro |
deepseek-ai/DeepSeek-V3.1 |
Judgement call: docs/providers/anthropic/index.md's claude-opus-4-7 row
That row's wording ("Previous Opus flagship; supports task budget") is
literally documenting the still-supported previous generation, and
claude-opus-5 already occupies the "highest-capability" row directly above
it — so the row is bumped to claude-opus-4-8 (the previous-generation Opus
anchor), not claude-opus-5. This differs from examples/task_budget.yaml,
which has no such generation-labelling context and no cost/fallback signal on
its opus-bounded/opus-bounded-tight keys, so it moves to claude-opus-5
(the latest anchor) instead.
Scope
examples/*.yaml — ~60 files, mapping below.
pkg/config/auto.go DefaultModels + the mirroring assertions in
pkg/config/auto_test.go.
docs/providers/*/index.md and docs/configuration/flavors/index.md.
examples/*.yaml (old → new)
See the implementation PR (linked below) for the full per-file diff; summary
of the anchors applied: every claude-sonnet-4-5 → claude-sonnet-5 (except
files signalling a cheaper/fallback tier, which get claude-sonnet-4-6),
every plain claude-opus-4-6 → claude-opus-5, claude-fable-5 →
claude-fable-5-1, every bare gpt-4o/gpt-5 used as a "just give me a
capable model" default → gpt-5.6-sol, gpt-4o-mini/gpt-5-mini →
gpt-5.6-terra, grok-4.3 → grok-4.5, kimi-k2-0905-preview → kimi-k3,
meta-llama/llama-3.3-70b-instruct → meta-llama/llama-4-maverick, dated
Bedrock/Anthropic pins dropped in favour of the bare anchor.
examples/task_budget.yaml and examples/thinking_budget.yaml needed
individual review (task budget semantics / thinking-effort tiers are
version-sensitive) — see the judgement call above and the PR description.
pkg/config/auto.go DefaultModels
| Provider |
Old |
New |
| anthropic |
claude-sonnet-4-6 |
claude-sonnet-5 |
| google |
gemini-3.5-flash |
gemini-3.8-flash |
| openrouter |
meta-llama/llama-3.3-70b-instruct |
meta-llama/llama-4-maverick |
| baseten |
deepseek-ai/DeepSeek-V3.1 |
deepseek-ai/DeepSeek-V4-Pro |
| moonshot |
kimi-k2-0905-preview |
kimi-k3 |
| amazon-bedrock |
global.anthropic.claude-sonnet-4-5-20250929-v1:0 |
global.anthropic.claude-sonnet-5 |
pkg/config/auto_test.go's mirroring assertions are updated identically
(mechanical, no independent judgement).
Explicitly excluded
Acceptance
What
A proactive sweep to bump stale/outdated model references to current-generation
values across
examples/*.yaml,pkg/config/auto.go+auto_test.go, andprovider/docs pages. Follow-up to #4121
(models.dev snapshot refresh, unrelated/already merged) — this is a separate,
dedicated arc.
Policy
Keep two generations live per model family where the provider actually
has two majors: the latest major's newest minor, and the previous major's
newest minor. Never an arbitrary older minor. When a family has two valid
anchors and a given file uses neither, split by cost/fallback signal in the
key/file name: keys/files signalling cost or fallback (
budget,budget-model,fast,discounted-sonnet,claude_fast) get the previousanchor; everything else gets the latest anchor. Already-valid anchor values
are left untouched.
Established anchors (live-verified against real provider catalogs)
claude-sonnet-5claude-sonnet-4-6claude-opus-5claude-opus-4-8claude-haiku-4-5(single, no split)claude-fable-5-1(single, no split)global.anthropic.claude-{sonnet-5,opus-5}global.anthropic.claude-{sonnet-4-6,opus-4-8}gpt-5.6-solgpt-4.1gpt-5.6-terragpt-4.1-minigpt-5.6-lunagpt-4.1-nanogemini-3.8-flashgemini-2.5-flashgemini-3.5-flash-litegemini-2.5-flash-litemeta-llama/llama-4-maverickmeta-llama/llama-3.3-70b-instructkimi-k3grok-4.5(single default)deepseek-ai/DeepSeek-V4-Prodeepseek-ai/DeepSeek-V3.1Judgement call:
docs/providers/anthropic/index.md'sclaude-opus-4-7rowThat row's wording ("Previous Opus flagship; supports task budget") is
literally documenting the still-supported previous generation, and
claude-opus-5already occupies the "highest-capability" row directly aboveit — so the row is bumped to
claude-opus-4-8(the previous-generation Opusanchor), not
claude-opus-5. This differs fromexamples/task_budget.yaml,which has no such generation-labelling context and no cost/fallback signal on
its
opus-bounded/opus-bounded-tightkeys, so it moves toclaude-opus-5(the latest anchor) instead.
Scope
examples/*.yaml— ~60 files, mapping below.pkg/config/auto.goDefaultModels+ the mirroring assertions inpkg/config/auto_test.go.docs/providers/*/index.mdanddocs/configuration/flavors/index.md.examples/*.yaml (old → new)
See the implementation PR (linked below) for the full per-file diff; summary
of the anchors applied: every
claude-sonnet-4-5→claude-sonnet-5(exceptfiles signalling a cheaper/fallback tier, which get
claude-sonnet-4-6),every plain
claude-opus-4-6→claude-opus-5,claude-fable-5→claude-fable-5-1, every baregpt-4o/gpt-5used as a "just give me acapable model" default →
gpt-5.6-sol,gpt-4o-mini/gpt-5-mini→gpt-5.6-terra,grok-4.3→grok-4.5,kimi-k2-0905-preview→kimi-k3,meta-llama/llama-3.3-70b-instruct→meta-llama/llama-4-maverick, datedBedrock/Anthropic pins dropped in favour of the bare anchor.
examples/task_budget.yamlandexamples/thinking_budget.yamlneededindividual review (task budget semantics / thinking-effort tiers are
version-sensitive) — see the judgement call above and the PR description.
pkg/config/auto.go
DefaultModelsclaude-sonnet-4-6claude-sonnet-5gemini-3.5-flashgemini-3.8-flashmeta-llama/llama-3.3-70b-instructmeta-llama/llama-4-maverickdeepseek-ai/DeepSeek-V3.1deepseek-ai/DeepSeek-V4-Prokimi-k2-0905-previewkimi-k3global.anthropic.claude-sonnet-4-5-20250929-v1:0global.anthropic.claude-sonnet-5pkg/config/auto_test.go's mirroring assertions are updated identically(mechanical, no independent judgement).
Explicitly excluded
examples/fireworks.yaml/docs/providers/fireworks/index.md— theconfigured Fireworks model ID doesn't exist in any generation on
models.dev; tracked separately in Fireworks default/example model reference (kimi-k2-instruct) doesn't exist in models.dev, silently skipped by CI #4132.
examples/nebius.yaml— already removed via Remove the nebius example #4130 (merged).Acceptance
task build,task test,task lintpass.