Repository navigation
feat(codex): expose declared Ultra Fast in the desktop speed picker - #6927
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
✅ Deterministic PR hygiene checks passed. |
⏳ DRAFT
What to do
Review readiness checklist
2/4 boxes ticked. Automatic draft conversion failed. Please convert this pull request to a draft manually until every box above is ticked. |
There was a problem hiding this comment.
Source review of exact head 3eeebc32b260abec27980bdd86beb8750846bdc7, based on current dev 9b6f4b2632492b3df637dccc009d6a01ed47c85d (six changed files). This is not an approval or CI authorization.
The new read-back is justified by the existing API contract: GET /api/settings emits a strict boolean ultraFastTier (config-routes.ts:423), whereas PUT persists the preference but omits that field from its success response. The component no longer treats the requested value as confirmation. It reconciles an observed mismatch/lost write response, blocks further writes after unreadable state, and uses both the target-keyed child mount and generation checks to fence stale loads and old-target write completions. The React state/ref ownership is appropriate here; I did not find a concrete source-level blocker in that changed flow.
I also checked the new DOM cases and all six file diffs. The 14 cases cover placement without custom ordering, non-boolean payloads, both toggle directions, duplicate clicks, mismatch/lost response, observation failure/retry, old polls and target changes. Existing locale keys are reused. The English/Korean docs distinguish retention preference from provider capability, picker choices and client acknowledgement, and the dashboard contract was updated without raising its line budget.
Validation limits remain important:
- 14 passing tests, typecheck/build/lint/docs checks and screenshot observations are the author's reported receipts, not executions I performed. I prepared an exact-head isolated worktree, but independent local execution is deferred because other Cargo/rustc workloads are active on the shared host; I will not overlap builds or raise CPU/RAM limits.
- The screenshots are component previews with a mocked API, not proof of the full Models page or a live provider/Codex reload. I have not independently inspected a rendered browser session.
- Current-head Cross-platform CI
38107921788and React Doctor38107921745areaction_required, not passing evidence. I have not authorized those runs or a security scan. The readiness checklist remains 0/4 and the PR remains Draft. The final UI decision remains with the project owner.
No contributor branch modification, sponsorship/waiver, readiness promotion, merge or deployment was performed. Please keep the current validation limits explicit when completing the readiness checklist.
Independent focused execution update — 2026-10-11
The initial admission deferral above is now superseded for the DOM file only. After the admission guard verified that foreign builds were absent, I executed the unchanged exact-head suite with Bun 1.4.0 (34cbb9a40), from gui/:
bun test --no-env-file --preload ../tests/preload.ts --isolate ./tests/ultrafast-tier-setting.test.tsx --timeout 1500014 passed / 0 failed / 60 assertions, complete file, 2.01 seconds. This is my measured independent result, not just the author's receipt. The mounted component tests use happy-dom and synthetic fetch responses; no live management/provider/native client was invoked. The cases include stale polls and old-target pending load/save, but do not establish a real-browser/network outcome or full Models page integration.
The ubuntu-owned isolated worktree used fresh private /tmp HOME/CODEX_HOME/OPENCODEX_HOME/TMPDIR and verified effective CPU75%, memoryHigh1280M/max1536M, swap0, tasks64, nice10, RuntimeMaxSec120. IOWeight20 is configured without delegated io-controller enforcement. The unit terminated successfully, with no overlapping own test workload, cap increase, local scan, build/install or live configuration change. Typecheck/build/lint/docs/screenshot receipts remain the author's, and hosted CI, full suites and owner UI acceptance remain separate holds. This review stays COMMENTED, not APPROVED.
Ingwannu
left a comment
There was a problem hiding this comment.
Re-reviewed the changed proposal at 446ba7e2c3d4e95f891fef777ae7bd313f49a95e against trusted dev 9b6f4b2632492b3df637dccc009d6a01ed47c85d: 13 files, backend catalog projection, not the previous six-file dashboard toggle. My previous 14 DOM passes apply only to the superseded 3eeebc32 UI proposal and do not validate this implementation.
The current implementation uses captured eligible service-tier policy and requires the explicit ultrafast -> ultrafast mapping. It strips stale discovery hints, excludes native/account/combo rows, gives conflicting duplicate declarations a conservative outcome, and runs after ordinary row admission. The exact-slug generated marker is used for revocation, not as authority to create a capability; the existing operator-retention helper strips the old tier before the configured choice is appended. The configured overlay also does not import an operator's old Ultra Fast default. Both retained-sync and convergence pass the captured set into the same merge.
The docs correctly distinguish a provider-wide mapping from a per-model supported subset, selectable menu metadata from access, and configured capability from the separate operator-retention setting. I cross-checked the current OpenAI API guide, including its HTTP alternative, and Codex access guide. They do not establish any third-party gateway's entitlement or measured performance. Your app-server receipt is catalog/model-list evidence, not rendered Desktop selection or a live successful Ultra Fast request.
No concrete source-level blocker found in the reviewed projection. The new test covers declaration withdrawal, retained/manual tiers, defaults, duplicates, aliases, disabled/selected rows and both writers using disposable configuration. I have not executed that new suite: foreign Cargo/rustc workloads currently prevent independent local admission under the serial resource rule. Your 436-test/typecheck/docs receipts remain author-reported, not mine.
Please keep this Draft until current-head readiness and required independent review/CI are complete. Cross-platform 38110693774, Catalog 38110693755 and React Doctor 38110693773 are action_required. Final client/menu acceptance remains an owner decision; this is not approval, sponsorship, CI authorization or a live configuration change.
8430c52 to
004fef7
Compare
Ingwannu
left a comment
There was a problem hiding this comment.
Refreshed the actual 13-file PR diff at 004fef7bda2c406f669763c0e031319e394d259e against its merge base, not an old UI proposal or unrelated commits added by rebasing.
The projection still requires captured eligible service-tier policy with the exact ultrafast wire mapping, fences conflicting duplicate declarations, and excludes combo/native authority. Both catalog writers pass captured exact routed slugs. The exact-slug generated marker revokes a withdrawn generated tier without converting it into operator-retention evidence; publishing a choice leaves the default unchanged. Existing independently supplied operator tiers remain a distinct opt-in contract. I found no concrete new source blocker in those boundaries.
I read the configured-picker regression including both writer children, but did not execute it or touch real catalog/cache/native clients in this pass. Old UI-only test receipts are not this implementation's coverage. The remaining project-owner decision and native picker/wire acceptance are not settled by a green rollup. Keep the Draft and documented limits; this is an ordinary source follow-up, not provider entitlement verification, policy acceptance, approval or a review waiver.
004fef7 to
f6fc95f
Compare
# Conflicts: # scripts/test-layout/layout.json # src/codex/catalog/build-entries.ts # structure/catalog.md
|
Maintainer integration into The branch was conflicting with Exact-head hosted evidence: Cross-platform CI |
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9d66fe199b
ℹ️ 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".
| || isNativeAliasCatalogEntry(entry) || isExactComboCatalogEntry(entry, exactComboSlugs) | ||
| || trustedAccountBoundNativeCatalogSlug(entry) !== undefined) continue; | ||
| preserveOperatorUltraFastTiers(entry, operatorRows.get(entry.slug), ultraFastTier); | ||
| applyConfiguredUltraFast(entry, operatorRows.get(entry.slug), configuredUltraFastSlugs.has(entry.slug), ultraFastTier); |
There was a problem hiding this comment.
Project Ultra Fast into live Codex catalogs
When a Codex client obtains its catalog from GET /v1/models?client_version=..., this overlay never runs: the branch in src/server/index/serve-options.ts builds and returns buildCatalogEntries(...) directly, while applyConfiguredUltraFast is only invoked by mergeCatalogEntriesFromObservedState. The gathered model carries supportsUltraFastTier, but the direct builder only projects supportsServiceTier, so live-discovery rows advertise Fast but not Ultra Fast and those clients cannot select the newly configured tier. Project the metadata in the shared entry derivation, or explicitly cover that HTTP path too.
AGENTS.md reference: src/AGENTS.md:L18-L18
Useful? React with 👍 / 👎.
| this choice. Ordinary Fast support, a GPT-like name, native/account rows and combo aliases | ||
| do not enable it. Removing the mapping or disabling that model's service-tier support | ||
| removes the generated choice from both the catalog and cache on the next successful sync. | ||
| The separate `ultraFastTier` setting still only retains hand-supplied catalog tiers. |
There was a problem hiding this comment.
Correct the ultraFastTier description for native rows
The ultraFastTier setting does not only retain hand-supplied tiers: for bare and account-bound gpt-6-astra and gpt-6.1-sol, mergeCatalogEntriesFromObservedState calls applyNativeUltraFastTier(e, ultraFastTier), which actively adds generated Ultrafast descriptors. This sentence can mislead users about what enabling the setting changes (and the Korean translation repeats the same claim), so qualify it as the routed-row behavior and document the native-row generation here as well.
AGENTS.md reference: docs-site/AGENTS.md:L7-L10
Useful? React with 👍 / 👎.
Summary
ultrafaston its service-tier wire, but generated routed models still advertise only Fast. Project that existing declaration into Codex Desktop's native speed menu, so operators configure the provider once and choose Ultra Fast in the app without repeatedly editing the generated catalog.ultrafasttoultrafast. Apply it after model admission, keep the current speed default, and track generated tier ownership so removing the mapping also removes stale catalog/cache choices. The separate exact-row operator-retention preference keeps its existing purpose.The provider-wide mapping applies to every Fast-eligible model in that provider. Use a separate provider entry for a supported subset and leave proxy Fast mode on Auto so the app's selected tier reaches the provider.
OpenAI now documents Ultrafast for GPT-6 Astra and GPT-6.1 Sol in its API guide and Codex speed guide. API and Codex plan/workspace access differ; menu metadata is a configured transport declaration, not proof of account entitlement or measured speed. This change leaves native/account rows, combo aliases, provider presets and the pinned upstream snapshot under their existing capability contracts.
Verification
On 2026-10-13, rebased onto the latest upstream
deve6d7e561f566ab343fbf545a6fa3e1b63012f817and pushed headf6fc95f707bfbd408f6620af12d138dca4b54bee. The branch contains that exact tip, with four PR commits and no commits behind it at publication; the upstream tip was checked again before pushing.After publication, the final upstream refresh found one newer
devcommit,d934632184d0596e09844ae5b65d97f72e3ee924(#7029). The current PR is one commit behind that tip and remains within the recent-dev checklist limit; the execution receipts above are for the documentede6d7e561base andf6fc95f7head.The rebase incorporates 45 newer
devcommits.git range-diff 8eb1fc3de365b019f9bacdcaacc6b7d284bd8d48..004fef7bda2c406f669763c0e031319e394d259e e6d7e561f566ab343fbf545a6fa3e1b63012f817..3bc47b6ba38cb830e3a504027b71a6bb3218fe69shows documentation conflict adjustments in the first two commits and an unchanged registration commit. Both conflicts came from the old dashboard proposal's quota paragraph; the resolutions preserve current upstream quota-retention documentation. The Ultra Fast source and its new regression file are unchanged by this rebase. There is no final GUI or dashboard-contract diff, and both test registries retain upstream additions.The expanded catalog run initially found one stale expectation in
tests/codex-integration/codex-catalog.test.ts: the complete-object assertion omitted the newly derivedsupportsUltraFastTier: falsefor a provider without the explicit mapping. The follow-up commit adds that expected field while preserving strict equality and the file's existing line count. The final PR is 14 files, 341 insertions and 7 deletions.Local validation of the final committed tree used the current repository test-runner pin, Bun 1.4.3 (c6da4a4d3), through the repository's isolated test wrapper:
origin/devto merge basee6d7e561f566ab343fbf545a6fa3e1b63012f817and selected all 23 supplied files. Together these two successful runs cover 1,310 tests across 39 distinct files.bun run typecheck,bun run structure:check,bun run privacy:scan,bun scripts/file-size-ratchet.ts, andgit diff --check origin/dev: passed.docs-site/,bun install --frozen-lockfilereported no package changes;bun run buildpassed with 569 pages and 79,375 internal links checked, 23.65 seconds.Full-suite scope exception: the repository has 2,268 backend test files; an exhaustive local run is disproportionate to this bounded catalog projection and expectation repair. The focused catalog regressions and all remaining direct hint consumers above completed. The full suite was not run, and the earlier interrupted broad
test:changedattempt is not counted as passing evidence. Whole-repository and cross-platform executable validation remain outstanding.Current-head hosted status (
f6fc95f707bfbd408f6620af12d138dca4b54bee): Cross-platform CI, Catalog async contracts, and React Doctor reportaction_required, awaiting maintainer authorization. These are not passing executable evidence. Metadata checks and CodeRabbit's successful skip status do not substitute for execution or review.The latest maintainer source follow-up reviewed the actual catalog projection at prior head
004fef7bda2c406f669763c0e031319e394d259eand found no concrete new source blocker. The reviewer read but did not execute the configured-picker regression or use real catalog/cache/native clients. This isCOMMENTED, not approval, policy acceptance, provider-entitlement verification or a review waiver. The local results above are author execution. Earlier 14 DOM passes apply only to the superseded dashboard proposal.Prior client evidence remains separate: a Windows Codex 0.162.0-alpha.17.2 app-server smoke on the earlier
446ba7e2cproposal, using an isolated profile and non-serving loopback provider, parsed the generated routed row through initialize +model/list, returningserviceTiers: [priority, ultrafast]anddefaultServiceTier: null. This proves catalog parsing only; rendered Desktop selection, a successful live provider request, entitlement and measured speed were not exercised.Reviews, issue comments, inline comments and review threads were rechecked on 2026-10-13; no new source-fix requests or unresolved threads were present. CodeRabbit explicitly skips this Draft. The PR stays Draft pending required review and current-head executable CI, plus the project owner's policy decision and native picker/wire acceptance. A green rollup alone does not settle those product and client contracts.
Maintainer update (2026-10-14): merged current dev
Head
9d66fe199merges currentdevinto this branch: first16d36fb92(de1ee9a2f), thenaca5ccfcc(#7024) cleanly. Three conflicts came from #7039's native Ultrafast overlay (native-ultrafast.ts), which landed after this branch's base:build-entries.ts: keeps both overlays.applyConfiguredUltraFasthandles routedprovider/modelrows.applyNativeUltraFastTierhandles bare and trusted account-boundgpt-6-astra/gpt-6.1-solrows. Their row sets and provenance markers do not overlap. The now unusedpreserveOperatorUltraFastTiersimport is dropped;configured-tiers.tsstill calls it.structure/catalog.md: this PR's configured/operator paragraphs plus dev's native-row paragraph, kept within the 600-line budget.scripts/test-layout/layout.json: registers bothconfigured-ultrafast-picker.test.tsandnative-ultrafast-picker.test.ts.Verification on this head:
bun run typecheck,bun run structure:check,bun run privacy:scanpass.bun testoverconfigured-ultrafast-picker,native-ultrafast-picker,ultrafast-tier-honesty,codex-catalog,vendor-context, both test-layout guards and the file-size ratchet: 437 pass, 0 fail. Exact-head hosted Cross-platform CI is the full-suite evidence.Co-authored-by: oocheol oocheol@users.noreply.github.com
Checklist
Review readiness checklist
This PR stays in draft until every box below is ticked. Tick all four boxes once the requirements are met: