🤖 feat: promote Claude Fable 5.1 as the fable model - #3988
Conversation
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e288521a98
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
This comment has been minimized.
This comment has been minimized.
|
@codex review Addressed both round-1 findings: legacy Fable 5 chain now seeded during the original seed pass for downgrade safety, and legacy tokenizer overrides retained for the retired fable-5/opus-4-8 ids. |
This comment has been minimized.
This comment has been minimized.
|
Codex Review: Didn't find any major issues. Breezy! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
d13f5e3 to
4f5de4e
Compare
4f5de4e to
83cd075
Compare
83cd075 to
9c427cc
Compare
This comment has been minimized.
This comment has been minimized.
## Summary Promotes Mythos 5.1 (`anthropic:claude-mythos-5-1`) to the `MYTHOS` known model, so the `mythos` alias and model picker route to the new id. Mythos 5 stays usable as the custom model string `anthropic:claude-mythos-5` and keeps its metadata entry and tokenizer approximation. This is the Mythos twin of the Fable 5.1 promotion (coder#3988) and is stacked on `mike/fable-5-1-drop` (this PR contains only the Mythos-side changes). Anthropic has announced Fable 5.1 / Mythos 5.1 ([What's new](https://platform.claude.com/docs/en/models/fable-5-1/whats-new-fable-5-1)), so the original merge gate is lifted and all previously-assumed numbers below are verified. The corresponding Fable 5.1 cache-read pricing fix landed on the base branch; this PR applies the same announced price to Mythos 5.1. ## Background Fable 5 and Mythos 5 shipped together in ba36c81; coder#3988 prepped the Fable 5.1 promotion and this PR is the Mythos twin, originally merge-gated as speculative prep and now verified against the announcement. ## Verified against the announcement - **API id**: `claude-mythos-5-1` ✓ (docs list it as the successor to Mythos 5, Project Glasswing–restricted). - **Envelope**: native 1M context (default and maximum), 128K max output ✓. - **Thinking/effort**: adaptive thinking always on, disabled thinking rejected, effort parameter with the full ladder ✓ — matches the existing Mythos-class wildcard matchers and off→low clamp. - **Tokenizer**: same as Fable 5 (Opus 4.7 tokenizer, unpublished upstream) ✓ — the Opus 4.5 approximation stays. - **Pricing**: $10/M input, $50/M output, cache write 1.25× ✓ — except cache reads dropped to 0.025× input ($0.25/M) from the assumed 0.1×; applied here for `claude-mythos-5-1` (the `claude-fable-5-1` fix is on the base branch). ### Breaking-changes audit (announcement vs Mux) - **Forced tool use returns 400** (`tool_choice: any/tool`): Mux never forces tool choice on Anthropic models — the only `toolChoice: "required"` path (`streamManager` first-step forcing) is xAI-only, and `workspaceTitleGenerator` deliberately relies on prompt + `tools.require`/`stopWhen` enforcement instead. No change needed. - **Thinking-block model binding / prefix-edit invalidation**: enforced only for accounts created on/after Aug 31, 2026, otherwise opt-in via the `thinking-binding-controls-2026-08-01` beta header, which Mux does not send; unreadable blocks on model switches are dropped server-side without error. No change needed for the model drop; adopting the beta controls (and `display: "updates"`, per-message effort, turn-scoped system messages) is follow-up feature work. - **Refusal fallback**: Mythos remains without a default chain (safeguards lifted; no Mythos key in `DEFAULT_MODEL_FALLBACKS`), so no `defaultModelFallbacksSeededMythos51` migration is needed and the migrations schema is untouched — trivially coexisting with `defaultModelFallbacksSeededFable51` and any sibling flags. ## Implementation Mirrors coder#3988 surface-for-surface, adapted to Mythos: - `knownModels.ts`: `MYTHOS` → `claude-mythos-5-1` (keeps the `mythos` alias; stays unwarmed since most users cannot access it and its tokenizer override is already warmed via FABLE). `LEGACY_TOKENIZER_MODEL_OVERRIDES` retains `anthropic:claude-mythos-5`, exactly like the retired `claude-fable-5` / `claude-opus-4-8` ids. - `models-extra.ts`: new `claude-mythos-5-1` entry with announced pricing (incl. $0.25/M cache reads); Mythos 5 entry retained. - `models.ts`: `claude-mythos-5-1` added to the native-1M patterns (anchored; the existing `claude-mythos-5` pattern tolerates date suffixes but not a `-1` minor). - No wire-format changes for thinking/effort/web-fetch: the Mythos-class wildcard matchers already match the new id; tests pin that. - Docs model table and built-in skill content regenerated, not hand-edited. - No WorkflowRunner fixture change: no fixture pins the `mythos` alias. ## Validation - Behavioral coverage for the new id: native-1M classification (direct + gateway-prefixed), display formatting (`Mythos 5.1`), 5-level thinking policy with off-clamp, provider options (adaptive + summarized display, no disabled thinking), native web-fetch support. - `make static-check` green; targeted suites (tokens, models, modelDisplay, policy, providerOptions, tools) and `config.test.ts` pass. ## Risks Low: additive registry/metadata changes. The user-visible effect is that the `mythos` alias routes to Mythos 5.1 (now live at the API) with announced pricing. Existing Mythos 5 selections keep working as custom model strings with unchanged token accounting. --- _Generated with `xum` • Model: `anthropic:claude-fable-5` • Thinking: `xhigh`_ <!-- mux-attribution: model=anthropic:claude-fable-5 thinking=xhigh -->
Summary
Prepares Xum for the Claude Fable 5.1 drop: promotes Fable 5.1 (
anthropic:claude-fable-5-1) to theFABLEknown model, so thefablealias, the/fablecommand, tokenizer warming, and the default refusal-fallback chain all route to the new model. Fable 5 stays usable as the custom model stringanthropic:claude-fable-5and keeps its metadata entry and tokenizer approximation.Note
Launch confirmed. Anthropic released Claude Fable 5.1 on September 1, 2026. All assumptions below were verified against the official model overview; the API id and $10/$50 pricing were correct as assumed. The one correction: cache reads are $0.25/M (0.025x input), a quarter of the assumed 0.1x ratio, fixed in
models-extra.ts.Background
This PR was prepared ahead of the drop (same play as the Opus 5 promotion in #3750), with assumptions confirmed on release day against the official docs:
claude-fable-5-1(dash form, dateless, matching the 5-generation convention ofclaude-sonnet-5/claude-opus-5and the dash style ofclaude-haiku-4-5).Implementation
knownModels.ts:FABLE->claude-fable-5-1(keeps thefablealias and tokenizer warming; tokenizer override stays on the Opus 4.5 approximation).models-extra.ts: newclaude-fable-5-1pricing/limits entry; the Fable 5 entry is retained.models.ts:claude-fable-5-1added to the native-1M patterns (the existingclaude-fable-5pattern only tolerates date suffixes, not-1).anthropicSupportsNativeXhigh,anthropicRejectsDisabledThinking) and native web-fetch id parsing already match the new id; tests now pin that.DEFAULT_MODEL_FALLBACKSis keyed by the FABLE id and the one-time seed is guarded bymigrations.defaultModelFallbacksSeeded, so already-seeded configs would never get a chain for the new source key. A second one-shot flag (defaultModelFallbacksSeededFable51) re-runs the gap-check once: pre-5.1 configs get the Fable 5.1 -> Opus chain, an existing 5.1 chain is never overwritten, and the legacy Fable 5 chain is left byte-identical on disk.defaultModelFallbacksSeeded, which pre-5.1 builds trust for their ownclaude-fable-5key. The original seed pass (and the fresh-install default config) now also carries aLEGACY_DEFAULT_MODEL_FALLBACKSchain foranthropic:claude-fable-5, so a downgrade still finds its expected default instead of silently losing refusal fallback.TOKENIZER_MODEL_OVERRIDESis derived from current KNOWN_MODELS ids, so retiring an id dropped its approximate-tokenizer mapping. ALEGACY_TOKENIZER_MODEL_OVERRIDESmap retainsanthropic:claude-fable-5and the identical pre-existing caseanthropic:claude-opus-4-8; exact-id lookup resolves both to the intended Opus 4.5 approximation instead of warning and falling back to the generic per-provider tokenizer.models-extra.tscache-read cost to the official $0.25/M; everything else matched the official model page.Validation
Fable 5.1), 5-level thinking policy with off-clamp, provider options (adaptive + summarized display, no disabled thinking), native web-fetch support, and the config seeding semantics (legacy chain carried by the original seed pass, 5.1 chain seeded once for pre-5.1 configs, existing 5.1 chains and deletions respected).fable-> 5.1) and was updated; remainingclaude-fable-5fixtures were audited and stay valid as explicit custom model strings.Risks
Low: additive registry/metadata changes plus config migration flags. The main user-visible effect is that the
fablealias and/fableroute to Fable 5.1. Until the model exists at the API, alias sends would fail, which is why the merge gate above matters. Existing Fable 5 selections and user-edited fallback chains are unaffected; note that with current ai-tokenizer data the legacy tokenizer fix changes no token counts (both approximations share theclaudeencoding), it removes warning spam and future drift risk.Generated with
xum• Model:anthropic:claude-fable-5• Thinking:xhigh• Cost:$45.64