Skip to content

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

Description

@vybe

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

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.
  • docs/memory/feature-flows/model-selection.md preset table + changelog updated.
  • 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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions