Skip to content

[Feature]: surface Codex Ultrafast for Sol and Daybreak Blue fallback catalogs #2993

Closed

Description

@Ingwannu

Area

Catalog / models

What are you trying to accomplish?

Use Codex's new model-scoped Ultrafast speed tier through OpenCodex for gpt-5.6-sol and the existing Daybreak Blue capability alias, while keeping the existing Fast tier available.

A current Codex 0.151 catalog describes speed choices as model-owned service_tiers. When the catalog contains ultrafast, Codex can select it and sends service_tier: "ultrafast"; OpenCodex's canonical OpenAI Responses path already preserves that caller value when the global Fast override is left on Auto.

What prevents this today?

OpenCodex's bundled fallback snapshot in src/codex/data/upstream-models.json still gives gpt-5.6-sol only the priority / Fast row. gpt-daybreak-blue-latest inherits that pinned Sol capability row, so a fresh/static fallback catalog also offers only Fast.

A newer live Codex catalog can mask the gap: on this host both Sol and Daybreak Blue already contain priority and ultrafast. However, OpenCodex must also work when a newer live row is unavailable, a cache is rebuilt, or the installed Codex predates the tier metadata. In those cases the bundled fallback silently removes Ultrafast from the picker.

What should OpenCodex do?

  • Keep the existing priority / Fast entry unchanged.
  • Add the current Codex ultrafast service-tier descriptor to the pinned Sol fallback.
  • Let the existing Daybreak Blue capability alias inherit the same Sol tier set, without creating entitlement or exposing an unqualified Daybreak row to an account that does not report it.
  • Preserve service_tier: "ultrafast" on the canonical OpenAI Responses path when OpenCodex is in passthrough/Auto mode.
  • Do not advertise Ultrafast for Terra, Luna, Spark, arbitrary routed providers, or any model whose catalog does not declare it.

Example usage or interface

{
  "slug": "gpt-5.6-sol",
  "service_tiers": [
    { "id": "priority", "name": "Fast", "description": "1.5x speed, increased usage" },
    { "id": "ultrafast", "name": "Ultrafast", "description": "The fastest available responses for latency-sensitive work." }
  ]
}

An entitled Daybreak Blue row should expose the same two choices through its existing Sol capability inheritance. Selecting Ultrafast in Codex should reach the canonical upstream body as:

{ "service_tier": "ultrafast" }

Alternatives or workarounds

Keep a recent Codex-generated models_cache.json and rely on OpenCodex preserving that live row. This is not reliable for clean installs, fallback generation, cache rebuilds, or older installed clients, and makes the feature depend on stale local state.

A global OpenCodex fastMode enum was also considered, but that would widen configuration, management API, CLI, GUI, docs, and routing semantics. The current model-owned Codex selector already carries arbitrary service-tier ids, so the minimal compatible slice is catalog fallback parity plus a passthrough regression.

Additional context

Checks

  • I searched existing issues and documentation.
  • This request describes a concrete OpenCodex workflow rather than merely naming a desired technology.
  • I removed secrets and personal data.

Activity

  1. self-assigned this
    on Aug 30, 2026
  2. Ingwannu commented on Aug 30, 2026

    @Ingwannu
    OwnerAuthor

    I am taking the minimal compatibility slice described above: refresh only the pinned Sol service-tier metadata from the current Codex source, verify Daybreak Blue inherits it through the existing entitlement-gated capability alias, and add regressions for canonical Responses passthrough plus non-advertisement on unsupported models. I will not add a new global speed setting or broaden routed-provider tier capability in this PR.

  3. lidge-jun commented on Aug 30, 2026

    @lidge-jun
    Owner

    리뷰 · 우선순위 57 / 80

    설명

    지금 CURRENT dev HEAD 는 641466db6 이다. 이 이슈가 열린 뒤에 합쳐진 것은 #2985 grok-4.20-multi-agent 캐리, #2954 프로비넌스 장부 바이트 한도, HEAD 의 #2984 테스트 락 사용자 격리이다. package.json 은 2.36.0 이다. types.ts / config.ts 쪼개기와는 겹치지 않는다. 닫고 다시 짜라고 하지 않는다. 미리보기 배포도 이 요청과 무관하다.

    이 이슈는 Codex 가 모델마다 가진 속도 칸 service_tiers 안에 ultrafast 를 넣어서, GPT-5.6 Sol 과 그 능력 별명인 Daybreak Blue 가 깨끗한 설치와 폴백 카탈로그에서도 Ultrafast 를 고를 수 있게 하자는 요청이다. 라이브 /models 가 있으면 그 목록이 가릴 수 있다. 그러나 묶여 있는 폴백 src/codex/data/upstream-models.json 이 권위가 되면 피커에서 Ultrafast 가 사라진다. 캐시를 다시 만들거나, 설치한 Codex 가 티어 메타데이터보다 오래되었거나, 깨끗한 집이면 그 폴백이 권위다.

    지금 폴백 스냅샷을 보면 gpt-5.6-sol 108-113줄 service_tiers 는 priority / Fast 한 줄뿐이다. additional_speed_tiers 115-117줄은 ["fast"] 뿐이다. ultrafast 문자열은 이 JSON 에 없다. Terra 224줄, Luna 336줄도 Fast 한 줄이다. Spark 쪽 659줄은 빈 배열이다. 이슈가 말하는 Terra, Luna, Spark, 라우트된 제공자에는 올리지 말 것과 지금 HEAD 는 이미 맞다. 고칠 곳은 Sol 폴백 한 줄이다.

    Daybreak Blue 는 src/codex/data/upstream-models.json 에 자기 행이 없다. src/codex/catalog/native-models.ts 25줄 NATIVE_OPENAI_CAPABILITY_SOURCES 가 gpt-daybreak-blue-latest 를 gpt-5.6-sol 에 붙인다. src/codex/catalog/metadata.ts 464-488줄 upstreamNativeEntryForSlug 가 Sol 행을 structuredClone 한 뒤 슬러그와 표시 이름만 바꾼다. 그래서 Sol 폴백에 ultrafast 를 넣으면 Daybreak 별명도 같은 칸을 물려받는다. 자격 없는 계정에 맨 Daybreak 행을 새로 심는 일이 아니다. ACCOUNT_GATED_NATIVE_OPENAI_MODELS 가 자격 검사를 그대로 둔다.

    전송 면은 이슈가 말한 대로 Auto 에서 대체로 통과한다. src/providers/fastwire.ts 19-22줄 기본 foreignCallerTiers 는 verbatim 이다. canonicalFastTierMarker 239-241줄은 priority 와 fast 만 Fast 로 본다. ultrafast 는 외국 값이다. decideTier 397-427줄은 Auto(fastMode 가 undefined) 이면 forward-caller 를 돌려 호출자 값을 남긴다. src/adapters/openai-responses.ts 1150-1156줄 applyTierDecisionToResponsesBody 는 forward-caller 이면 본문을 안 고친다. src/server/responses/core.ts 2525-2561줄 applyServiceTierGate 의 외국 값 삭제는 foreignCallerTiers === "drop" 일 때만이다. 기본 OpenAI 선은 drop 이 아니다.

    그래도 구멍이 하나 있다. 전역 Fast 가 켜지면 decideTier 406-410줄이 canonicalToWire.priority 로 service_tier 를 priority 로 덮어 쓴다. Ultrafast 를 고른 호출이 Fast 강제에 먹힌다. Auto 패스스루만으로는 고른 Ultrafast 가 그대로 나간다 가 항상 참이 아니다.

    라우트된 행은 src/codex/catalog/parsing.ts 609-623줄 normalizeRoutedCatalogEntry 가 service_tiers 를 지운다. src/codex/catalog/effort.ts 160-168줄은 supportsServiceTier === true 인 라우트 행에 Fast 한 줄만 다시 찍는다. ultrafast 를 여기 전역으로 넣으면 이슈가 금지한 라우트 광고가 된다. 넣지 말 것. Spark 는 parsing.ts 300-311줄 NO_FAST_TIER_NATIVE_SLUGS 가 티어를 지운다. 거기도 손대지 말 것.

    라인 108-113 - src/codex/data/upstream-models.json 의 gpt-5.6-sol 폴백 service_tiers 가 priority/Fast 한 줄이라 깨끗한 설치에서 Ultrafast 피커가 없다
    라인 115-117 - 같은 행의 additional_speed_tiers 가 ["fast"] 뿐이라, Codex 설정 철자가 이 칸을 보면 ultrafast 도 빠진다. 같이 넣을지 정해야 한다
    경로 src/codex/catalog/metadata.ts upstreamNativeEntryForSlug - Daybreak 는 Sol 복제라 Sol 만 고치면 된다. upstream-models.json 에 Daybreak 행을 새로 넣으면 자격 없는 계정에 맨 행이 생긴다
    경로 src/providers/fastwire.ts decideTier fastMode===true - Ultrafast 호출을 priority 로 덮는다. Auto 패스스루 회귀만으로는 부족할 수 있다
    경로 src/codex/catalog/effort.ts 160-168 / parsing.ts normalizeRoutedCatalogEntry - 라우트 Fast 스탬프와 스트립은 그대로 둬야 한다. ultrafast 를 전역 메타데이터에 넣지 말 것
    경로 tests/codex-catalog.test.ts 2606-2621 - 라우트 supportsServiceTier 핀은 Fast 한 줄이다. Sol 네이티브 폴백에 ultrafast 두 칸이 생기는 핀은 아직 없다

    메인테이너의 판단이 필요한 지점

    • additional_speed_tiers 에 ultrafast 철자를 넣을지, service_tiers 배열만으로 충분한지
    • 전역 Fast 가 Ultrafast 를 덮어 쓰는 것을 이번 범위에서 막을지, Auto 패스스루 회귀만 잠글지
    • Terra/Luna 라이브 카탈로그가 ultrafast 를 주면 폴백은 계속 Fast 만 둘지. 이슈는 두지 말라고 한다
    • types/config 쪼개기와 무관하다. 닫지 말 것. 중복 이슈도 아니다

    너의 추천
    이슈를 연 채로 받는다. 구현은 Sol 폴백 service_tiers 에 이슈가 적은 ultrafast 행을 더하고, Daybreak 는 기존 Sol 상속을 타게 둔다. Terra/Luna/Spark/라우트에는 넣지 않는다. 테스트로 (1) Sol 폴백에 두 칸, (2) Daybreak 클론이 같은 칸, (3) Terra/Luna/Spark 와 라우트 행에 ultrafast 없음, (4) Auto 에서 service_tier: "ultrafast" 가 본문에 남는 것을 잠근다. 전역 Fast 덮어쓰기는 한 줄로 정한 뒤 회귀에 적는다. 라벨은 그대로 둔다.

    이 댓글은 grok-bot이 작성했습니다

  4. Ingwannu commented on Aug 30, 2026

    @Ingwannu
    OwnerAuthor

    Implementation is now open as #2994 and @lidge-jun has been requested for review.

    The PR follows the current Codex source shape exactly: ultrafast is added only to Sol's model-owned service_tiers, additional_speed_tiers remains ["fast"], and Daybreak Blue inherits the Sol capability only through the existing account-entitlement gate. The explicit global Fast override still selects priority; Auto/passthrough preserves a caller-selected ultrafast.

    Focused tests (253/253), typecheck, the CPU-bounded full suite, and the 401-page docs build are green. I am leaving this issue open until the reviewed PR lands on dev.

  5. lidge-jun commented on Aug 30, 2026

    @lidge-jun
    Owner

    Ultrafast는 프런트 노출 오류다. 폴백 카탈로그에 칸을 넣으면 고를 수는 있는데, 실제 Ultrafast 속도가 나오지 않는다. 백엔드가 깨져서가 아니다.

    지금은 올리지 않는다. 구현 PR #2994도 닫는다. 실제 속도가 나올 때 다시 연다.

    이 댓글은 grok-bot이 작성했습니다

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

catalogModel catalog, slugs, visibility, routed entriesenhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions