Skip to content

🤖 feat: promote Claude Fable 5.1 as the fable model - #3988

Merged
ibetitsmike merged 4 commits into
mainfrom
mike/fable-5-1-drop
Sep 1, 2026
Merged

🤖 feat: promote Claude Fable 5.1 as the fable model#3988
ibetitsmike merged 4 commits into
mainfrom
mike/fable-5-1-drop

Conversation

@ibetitsmike

@ibetitsmike ibetitsmike commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Prepares Xum for the Claude Fable 5.1 drop: promotes Fable 5.1 (anthropic:claude-fable-5-1) to the FABLE known model, so the fable alias, the /fable command, tokenizer warming, and the default refusal-fallback chain all route to the new model. Fable 5 stays usable as the custom model string anthropic:claude-fable-5 and 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:

  • API id: claude-fable-5-1 (dash form, dateless, matching the 5-generation convention of claude-sonnet-5 / claude-opus-5 and the dash style of claude-haiku-4-5).
  • Pricing: unchanged from Fable 5 for input/output, $10/M input, $50/M output, cache write 1.25x input. Cache read turned out cheaper at launch: $0.25/M (0.025x input), corrected in this PR.
  • Envelope: unchanged, native 1M context, 128K max output, full effort ladder with native xhigh and max, adaptive thinking only (disabled thinking rejected), safeguard classifiers retained so the refusal fallback stays relevant.

Implementation

  • knownModels.ts: FABLE -> claude-fable-5-1 (keeps the fable alias and tokenizer warming; tokenizer override stays on the Opus 4.5 approximation).
  • models-extra.ts: new claude-fable-5-1 pricing/limits entry; the Fable 5 entry is retained.
  • models.ts: claude-fable-5-1 added to the native-1M patterns (the existing claude-fable-5 pattern only tolerates date suffixes, not -1).
  • No wire-format changes needed for thinking/effort: the Mythos-class wildcard matchers (anthropicSupportsNativeXhigh, anthropicRejectsDisabledThinking) and native web-fetch id parsing already match the new id; tests now pin that.
  • Fallback seed migration: DEFAULT_MODEL_FALLBACKS is keyed by the FABLE id and the one-time seed is guarded by migrations.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.
  • Downgrade safety (Codex round 1): completing the original seed pass claims defaultModelFallbacksSeeded, which pre-5.1 builds trust for their own claude-fable-5 key. The original seed pass (and the fresh-install default config) now also carries a LEGACY_DEFAULT_MODEL_FALLBACKS chain for anthropic:claude-fable-5, so a downgrade still finds its expected default instead of silently losing refusal fallback.
  • Legacy tokenizer overrides (Codex round 1): TOKENIZER_MODEL_OVERRIDES is derived from current KNOWN_MODELS ids, so retiring an id dropped its approximate-tokenizer mapping. A LEGACY_TOKENIZER_MODEL_OVERRIDES map retains anthropic:claude-fable-5 and the identical pre-existing case anthropic: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.
  • Docs model table and built-in skill content regenerated.
  • Launch-day verification: rebased onto main and corrected the models-extra.ts cache-read cost to the official $0.25/M; everything else matched the official model page.

Validation

  • Behavioral coverage added for the new id: native-1M classification, display formatting (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).
  • The WorkflowRunner alias-mapping test caught the alias flip (fable -> 5.1) and was updated; remaining claude-fable-5 fixtures 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 fable alias and /fable route 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 the claude encoding), it removes warning spam and future drift risk.


Generated with xum • Model: anthropic:claude-fable-5 • Thinking: xhigh • Cost: $45.64

@mintlify

mintlify Bot commented Aug 27, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
Mux 🟢 Ready View Preview Aug 27, 2026, 2:57 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@ibetitsmike

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread src/node/config/index.ts
Comment thread src/common/constants/knownModels.ts
@chatgpt-codex-connector

This comment has been minimized.

Copy link
Copy Markdown
Contributor Author

@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.

@chatgpt-codex-connector

This comment has been minimized.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Breezy!

Reviewed commit: 116066c324

ℹ️ 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".

@chatgpt-codex-connector

This comment has been minimized.

@ibetitsmike
ibetitsmike added this pull request to the merge queue Sep 1, 2026
Merged via the queue into main with commit 145003e Sep 1, 2026
36 of 39 checks passed
@ibetitsmike
ibetitsmike deleted the mike/fable-5-1-drop branch September 1, 2026 19:19
asm pushed a commit to asm/mux that referenced this pull request Sep 2, 2026
## 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 -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant