Skip to content

fix(orchestrate): show the Fast switch for every model whose catalog offers fast mode - #326

Merged
Tryanks merged 1 commit into
mainfrom
fix/fast-catalog
Sep 5, 2026
Merged

Tryanks merged 1 commit into
mainfrom
fix/fast-catalog

Conversation

@Tryanks

@Tryanks Tryanks commented Sep 5, 2026

Copy link
Copy Markdown
Owner

Problem

In Settings → Orchestrate the Fast switch appeared only on some rows.

Two causes:

  • Claude catalog out of date. built_in_models declared fastMode on Opus 4.7, 4.6 and 4.5. Claude Code's fast mode is supported on Opus 5 and Opus 4.8 only (4.7 support was removed on 2026‑07‑24; Sonnet and Haiku never had it).
  • Codex rows never qualified. model/list advertises the fast tier as serviceTiers: [{id: "priority", name: "Fast", …}] (plus additionalSpeedTiers: ["fast"], which the catalog mapper drops when serviceTiers is non-empty). The switch predicate only accepted a choice whose value is literally fast, so gpt‑5.6‑sol and gpt‑6‑astra never showed it.

Reproduced with a copy of the reporter's settings in a throwaway data dir and the raw model/list output from codex app-server.

Fix

  • crates/agent/src/claude.rs: fastMode on exactly claude-opus-5 and claude-opus-4-8; a test pins that list.
  • crates/ui/src/orchestrate_settings.rs: capability check extracted to a pure model_fast_supported, which also accepts a serviceTier choice labelled "Fast"; the panel now re-renders on the Providers topic so rows update once catalogs finish loading. Test covers the real priority/Fast descriptor shape.
  • docs/DESIGN.md: visual contract for the Fast switch.

With the reporter's fleet the switch now shows on gpt‑5.6‑sol (both efforts), gpt‑6‑astra (both efforts), claude‑opus‑5 and claude‑opus‑4‑8, and not on claude‑sonnet‑5 or claude‑fable‑5.

cargo fmt --all --check, cargo clippy --workspace --all-targets -- -D warnings, cargo build, cargo test --workspace pass locally.

…offers fast mode

Claude: the built-in catalog declared fastMode on Opus 4.7/4.6/4.5, which
Claude Code no longer supports (fast mode is Opus 5 and Opus 4.8 only);
it is now declared on exactly those two.

Codex: model/list advertises the fast tier as serviceTiers
[{id: "priority", name: "Fast"}], so the catalog's serviceTier select
never had a choice whose value is literally "fast" and no Codex row ever
showed the switch. The capability check now also accepts a tier labelled
Fast. The Orchestrate panel also observes the Providers topic so rows
re-render once the catalogs finish loading.
@Tryanks
Tryanks merged commit 340d97f into main Sep 5, 2026
3 checks passed
@Tryanks
Tryanks deleted the fix/fast-catalog branch September 5, 2026 09:42
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