Repository navigation
fix(codex): offer Ultrafast for GPT-6 Astra and GPT-6.1 Sol in the speed picker - #7050
Conversation
…eed picker With the Ultra Fast switch on, the generated model catalog now adds the documented Ultrafast service tier to native gpt-6-astra and gpt-6.1-sol rows (bare and account-bound), so Codex Desktop and the CLI offer it next to Fast. Codex builds its speed menu from model_catalog_json, which replaces ChatGPT's plan-aware live list, and our catalog only carried the bundled priority tier. Disabling the switch withdraws the exact generated descriptor and leaves operator-written entries alone. Co-authored-by: 정우철 <oocheol@naver.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
|
✅ Deterministic PR hygiene checks passed. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: efda4991d8
ℹ️ 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".
…arker Withdrawing the tier no longer infers ownership from matching text, so an operator-written native Ultrafast entry identical to the generated one survives turning the switch off. Addresses Codex review on #7050.
Summary
Users on X reported that Ultrafast never shows up in the Codex Desktop speed picker for
gpt-6-astraorgpt-6.1-sol, even with opencodex's Ultra Fast switch (ultraFastTier) turned on. With this change, turning the switch on adds Ultrafast next to Fast for those two models.Cause. Codex builds its speed menu from each model's
service_tiers(codex-rsModelPreset/ModelInfo;additional_speed_tiersis the deprecated string mirror). ChatGPT's live model list adds Ultrafast for eligible plans, but oncemodel_catalog_jsonpoints at our generated catalog, Codex reads only that file. Our native rows carried only the bundledprioritytier, andultraFastTieronly kept a tier an operator had hand-written on a routed row, so the native picker never offered Ultrafast. (Checked against upstreamopenai/codex816fa702ec, 2026-10-13: bundledmodels.jsonlists onlypriorityfor both models, and Bedrock's catalog adds anultrafasttier for exactly these two slugs.)Change.
src/codex/catalog/native-ultrafast.ts. WhenultraFastTieris on, bare and trusted account-boundgpt-6-astra/gpt-6.1-solrows get{"id":"ultrafast","name":"Ultrafast","description":"Lower latency, increased usage; requires an eligible plan"}appended toservice_tiers, and"ultrafast"appended toadditional_speed_tiers. Both go after the existing Fast tier, and only when no Ultrafast entry is already there.mergeCatalogEntriesFromObservedStatepass, so retained sync, convergence,opencodex-catalog.jsonandmodels_cache.jsonall agree.opencodex_generated_service_tiersmarker on the row. Turning the switch off withdraws only marked fields, so an operator-written native Ultrafast entry survives even when its text matches the generated one.default_service_tier.ultraFastTierdoc comment,structure/catalog.mdand the CLI reference now say it adds the native picker choice and requires an eligible plan.Request path (verified, unchanged). On the canonical ChatGPT forward route, with
fastModeunset, a selectedservice_tier: "ultrafast"is forwarded verbatim; the default service-tier wire usesforeignCallerTiers: "verbatim", and the canonical-forward strips keepservice_tier.fastMode: truereplaces any tier withpriority, andfastMode: falsestrips the tier. So Ultrafast requests are not swallowed, butfastMode: trueoverrides them; the CLI reference now says to leave Fast mode unset to use Ultrafast.Relation to #6927. @oocheol's draft #6927 projects a provider's declared
ultrafastwire mapping onto routed rows. This PR covers the native OpenAI rows the reports are about, so the two are complementary and #6927 stays open on its own merits. Its OpenAI doc citations and its app-server evidence that Codex parsesserviceTiers: [priority, ultrafast]from a generated row informed this fix, and the commit carries aCo-authored-bytrailer for that.Limitation: when catalog materialization fails and Codex falls back to the online
GET /v1/modelslist, that path is not changed here.Verification
Exact head
27801823onorigin/deve05b8d3e7:tests/codex-integration/native-ultrafast-picker.test.ts(new, 12 tests):CODEX_HOME/OPENCODEX_HOME. Each enables twice, then disables, and the test assertsopencodex-catalog.jsonandmodels_cache.json, withgpt-6-sol/gpt-6-lunaleft on Fast only.handleResponsesto the ChatGPT backend with stubbedfetch, coveringfastModeabsent/true/false.build-entries.tsmakes exactly the three catalog-projection tests fail.27801823.bun run test:changedonefda4991d(1,305 files): 29,454 pass, 10 fail. The failures are all intests/service/service.test.ts,tests/service/service-sqlite-home.test.ts,tests/cli/cli-access-audio-live.test.tsandtests/cli/sibling-home-client-sync.test.ts. Rerun alone, those four files give the same result on this branch and on cleanorigin/dev: 284 pass, 1 fail (the existing 30 s Grok agent-bytes timeout). The other failures come from 4x parallel load on this host.bun run typecheck,bun run structure:check,bun run privacy:scan,bun scripts/file-size-ratchet.ts,bun run lint:gui,bun run skill:surface:check,git diff --check origin/dev: pass.bun run testwas not run locally; the 1,305-file changed-graph run above covers the import-connected surface. Whole-suite and cross-platform coverage is left to hosted CI.GUI change: the Ultra Fast card's description (rendered from this branch against an isolated proxy):
Checklist
Co-authored-by: 정우철 oocheol@naver.com
Summary by CodeRabbit