You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
bug: selectable model catalog is stale — Claude Fable 5.1 (claude-fable-5-1) not selectable anywhere; tier labels + alias help text behind the current lineup #2726
The selectable Claude-model catalog is behind Anthropic's current lineup. Claude Fable 5.1 (claude-fable-5-1) — Anthropic's most capable widely released model, the successor to Fable 5 in the same tier at the same price — cannot be selected anywhere in Trinity: not in the operator model picker, not as the admin fleet default, not as a per-agent public-channel override (the server-validated allow-list rejects it with 422), and not in the Workspace composer dropdown.
Every list is mutually consistent and CI is green, because they all derive from one source — but that source has not moved since Fable 5.1 shipped. This is exactly the source-vs-reality staleness that #2086 documents as the one remaining human control ("when Anthropic ships a selectable Claude model, add one entry and re-run codegen").
Current Anthropic lineup, verified against the claude-api reference rather than stated from memory (the catalog's own rule): Fable 5.1 (claude-fable-5-1, current — most capable), Fable 5 (claude-fable-5, still served, now prior-gen in its tier), Opus 5, Opus 4.8 / 4.7 / 4.6, Sonnet 5, Sonnet 4.6, Haiku 4.5. Claude Mythos 5.1 is access-gated (Project Glasswing) and does not belong in a general catalog.
Two adjacent copies of model-generation wording have gone stale with it: the picker's tier notes (the "(latest)" markers on Opus 5 / Fable 5 / Sonnet 5 — Fable 5 is no longer the latest in its tier) and the agent-server chat router's alias help text, which still says the opus alias means Opus 4.8.
Acceptance Criteria
Claude Fable 5.1 (claude-fable-5-1) is selectable end-to-end: operator model picker, admin fleet-default dropdown, per-agent public-channel override (PUT /api/agents/{name}/public-channel-model returns 200, not 422), and the Workspace composer.
Tier notes / "(latest)" markers reflect the current lineup — Fable 5.1 is the latest in its tier; Fable 5 is no longer labelled as such.
The agent-server alias help text (opus / sonnet / haiku / fable) names the generation each alias currently resolves to.
Model ids are the exact undated ids (claude-fable-5-1 — never a date-suffixed variant).
The generated frontend mirror and the catalog parity guard (tests/unit/test_2086_model_catalog_parity.py) are in sync; CI green.
No default changes. The platform default (PLATFORM_DEFAULT_MODEL_VALUE) and the recommended marker stay where they are — that is a cost/latency policy call, explicitly out of scope for this issue.
Technical Notes
Single source of truth: src/backend/services/model_catalog.py; the frontend mirror src/frontend/src/constants/modelCatalog.js is generated by scripts/gen_model_catalog.py (never hand-edited). The file's own docstring describes the whole maintenance surface.
Alias help text lives in docker/base-image/agent_server/routers/chat.py (base-image change → note the image rebuild).
Summary
The selectable Claude-model catalog is behind Anthropic's current lineup. Claude Fable 5.1 (
claude-fable-5-1) — Anthropic's most capable widely released model, the successor to Fable 5 in the same tier at the same price — cannot be selected anywhere in Trinity: not in the operator model picker, not as the admin fleet default, not as a per-agent public-channel override (the server-validated allow-list rejects it with 422), and not in the Workspace composer dropdown.Every list is mutually consistent and CI is green, because they all derive from one source — but that source has not moved since Fable 5.1 shipped. This is exactly the source-vs-reality staleness that #2086 documents as the one remaining human control ("when Anthropic ships a selectable Claude model, add one entry and re-run codegen").
Context
claude-apireference rather than stated from memory (the catalog's own rule): Fable 5.1 (claude-fable-5-1, current — most capable), Fable 5 (claude-fable-5, still served, now prior-gen in its tier), Opus 5, Opus 4.8 / 4.7 / 4.6, Sonnet 5, Sonnet 4.6, Haiku 4.5. Claude Mythos 5.1 is access-gated (Project Glasswing) and does not belong in a general catalog.opusalias means Opus 4.8.Acceptance Criteria
claude-fable-5-1) is selectable end-to-end: operator model picker, admin fleet-default dropdown, per-agent public-channel override (PUT /api/agents/{name}/public-channel-modelreturns 200, not 422), and the Workspace composer.opus/sonnet/haiku/fable) names the generation each alias currently resolves to.claude-fable-5-1— never a date-suffixed variant).tests/unit/test_2086_model_catalog_parity.py) are in sync; CI green.docs/memory/feature-flows/model-selection.mdpreset table + changelog updated.PLATFORM_DEFAULT_MODEL_VALUE) and therecommendedmarker stay where they are — that is a cost/latency policy call, explicitly out of scope for this issue.Technical Notes
src/backend/services/model_catalog.py; the frontend mirrorsrc/frontend/src/constants/modelCatalog.jsis generated byscripts/gen_model_catalog.py(never hand-edited). The file's own docstring describes the whole maintenance surface.docker/base-image/agent_server/routers/chat.py(base-image change → note the image rebuild).