Skip to content

feat(codex): surface minimum client version guidance - #12893

Merged
diegosouzapw merged 2 commits into
cheaper-inference:release/v3.8.52from
guanbear:feat/codex-client-compatibility-diagnostics
Oct 10, 2026
Merged

diegosouzapw merged 2 commits into
cheaper-inference:release/v3.8.52from
guanbear:feat/codex-client-compatibility-diagnostics

Conversation

@guanbear

@guanbear guanbear commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Explain ChatGPT/Codex models withheld because their minimal_client_version exceeds OmniRoute's effective HTTP client profile. The warning reports the affected IDs, current version, highest required minimum, and recovery steps: refresh discovery, upgrade OmniRoute, or use a temporary CODEX_CLIENT_VERSION override only when the release is otherwise protocol-compatible.

This applies to the HTTP codex provider. Installing a standalone Codex CLI is relevant only to the separate codex-app-server provider.

Integration with the current release branch

Updated the focused patch on release/v3.8.52 at 4ea24a2f8e1f, following the sequencing advice in this thread:

Related to #12761; complements #12827 and #12759.

Validation

  • 71 focused tests passed across the new compatibility regression file and existing Codex route, discovery split, live-catalog, GitHub-catalog, and client-version-refresh tests.
  • New coverage includes account/public membership separation, unavailable GitHub catalog, all-too-new live inventory, retired/hidden/unsupported candidates, effective-version changes during TTL cache reuse, cache precedence, route-triggered automatic version refresh, numeric maximum version, and bounded model-list output.
  • On the October 9 update: full repository ESLint (using the configured frozen suppressions), changed-file ESLint, typecheck:core, dashboard TypeScript ratchet, provider consistency/assets, file-size/test-file-size, mutation-test registration, docs version synchronization, changelog integrity, formatting, and git diff --check passed.
  • Expanded verification: 103/104 tests passed. The only failing provider translate-path golden assertion has an exactly identical assertion diff on the unchanged 4ea24a2f8e1f base. The previously failing internal-service-auth and OpenAI→Claude tests now pass after incorporating upstream fixes.
  • The repository pre-commit and commit-message gates passed; lint-staged was scoped to the actual five-file PR diff to avoid reformatting unrelated incoming release files. Separate Spec and Standards code reviews have no actionable findings.

Inherited base failures

⚠️ base-red inherited: #15306. Compared with an isolated unchanged checkout at 4ea24a2f8e1f:

  • The provider translate-path golden failure is identical on both trees (same assertion diff).
  • check:agent-skills-sync reports the same 20 stale generated skills on both trees. The generator sources, OpenAPI/CLI inputs, and generated skills are not changed by this feature PR. No unrelated generated instruction edits are included.
  • The scheduled-workflow guard check reports the same five docker-publish.yml jobs on both trees. The complete local workflow audit is unavailable because actionlint/zizmor are not installed; no full local workflow-audit pass is claimed.
  • The old full-lint and dashboard type regressions are resolved by the incorporated upstream updates. Both local gates now pass; the dashboard gate still has baselined diagnostics, so this is a no-new-errors result rather than zero TypeScript errors globally.
  • The earlier CI build error traced through imageRegistry into server-only modules. The incorporated release contains the upstream image-registry split (fix(imageRegistry): split data from flag-gated logic to avoid client bundle leak (#10692) #15791); production build verification remains with the new CI run.
  • The docs/i18n CI matrix remains pending. The sparse-checkout local i18n checker processed zero source entries, so it is not counted as translation validation.

The full unit/Vitest/coverage/build suites remain CI's responsibility under the contribution golden path. This update does not claim the release branch is green.

@guanbear

guanbear commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

The API Route Typecheck failure was not caused by this PR — release/v3.8.51 itself is currently red: #12506 dropped the highWaterMark plumbing that #12179 added, while glm.ts kept the 16-argument call (TS2554). Filed the restoration as #12929 and cherry-picked it onto this branch so CI can go green without waiting; once #12929 lands, the cherry-picked commit reconciles cleanly.

@guanbear

guanbear commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

Pushed the remaining gate fixes on top of the feature commit:

  • file-size: route.ts had grown past its frozen 2432-line cap; extracted the compatibility-warning accumulator and the shared models-discovery fetch wrapper into discovery/codexCompatibility.ts (route.ts is back to 2428 lines — extraction rather than a cap bump).
  • base-red cherry-picks from fix(pack): allow the opencode-plugin-v2 workspace package in the artifact policy (base-red) #12929: the restored stream.ts highWaterMark plumbing (compacted to its cap), the refreshed migration counts, and the repaired changelog fragment — all currently red on the release tip for every open PR.
  • The earlier-reported mutation-coverage, pack-policy, and build-scope failures pass on this tree after the refactor (module→test mapping moved with the extraction).

Local validation: api-typecheck OK, open-sse-typecheck OK, file-size OK, docs-sync/docs-counts/changelog-integrity OK, pack-policy OK, mutation-test-coverage OK, codex/glm targeted suites 59/59.

@guanbear
guanbear force-pushed the feat/codex-client-compatibility-diagnostics branch 2 times, most recently from 3753611 to 64ee1c3 Compare September 9, 2026 13:39
@guanbear

guanbear commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Rebased onto the current release tip and slimmed the branch to three commits:

The earlier base-red cherry-picks (stream highWaterMark, chatCore narrowing, doc counts) are dropped — the maintainers landed equivalents in #12963/#12970/#12990. Full gate suite on this tree: api-typecheck, open-sse-typecheck, file-size, docs-sync, changelog-integrity, pack-policy, mutation-coverage all green; codex suites 40/40.

@guanbear

Copy link
Copy Markdown
Contributor Author

Merged the current release tip into the branch and re-synced the migration count (171→172, all 41 llm.txt mirrors) so CI evaluates a fresh tree. On this tree the only remaining red I can see is tests/unit/volcengine-plan-binding-upsert.test.ts (4 no-explicit-any ESLint errors) — that file arrived on the tip with #12950 and is not touched by this PR; flagging it here in case the next quality wave wants to pick it up.

@diegosouzapw

Copy link
Copy Markdown
Collaborator

Nice diagnostic — the "why is this model missing" message is genuinely useful, and I ran both
test files at the PR head: 40/40 pass, including the "every remote model is too new" case.
Two notes: (1) your branch's AGENTS.md/llm.txt diff is just a stale migration-count bump
(171→172) picked up from an older base — the tip is already at 175, so that hunk should be
dropped on rebase and left to the docs-sync generator rather than hand-edited. (2) this overlaps
textually with #13224 and #12933 (same discovery file) — the maintainer will sequence the three
rather than merge independently; your compatibility-warning logic may end up reusing #12933's
candidate/active classification once that lands, so hold off rebasing until that's decided.

@diegosouzapw diegosouzapw added the protected-surface Touches an agent-instruction surface (AGENTS/CLAUDE/llm.txt/SKILL.md) — per-PR operator OK to merge label Sep 15, 2026
@guanbear

Copy link
Copy Markdown
Contributor Author

Thank you for the review — glad the diagnostic message lands well, and appreciate you running the suites at the head.

Understood on both notes: the 171→172 docs hunks are stale base leftovers and will be dropped (left to the docs-sync generator) whenever the branch next moves, and we'll hold off rebasing until the sequencing with #13224/#12933 is decided. Happy to rework the compatibility-warning logic onto #12933's candidate/active classification if that's the shape it takes — just ping here.

@diegosouzapw diegosouzapw changed the title feat(codex): surface minimum client version guidance [defer] feat(codex): surface minimum client version guidance Sep 25, 2026
@diegosouzapw diegosouzapw added the deferred-v3.8.52 Grande demais / suspeito para o lote atual; precisa de sessão dedicada no ciclo v3.8.52 label Sep 25, 2026
@diegosouzapw
diegosouzapw changed the base branch from release/v3.8.51 to release/v3.8.52 September 29, 2026 11:27
@diegosouzapw

Copy link
Copy Markdown
Collaborator

Re-homed to release/v3.8.52: v3.8.51 entered its release freeze, so the branch now belongs to the release captain and development continues on the next cycle. Nothing is wrong with this PR — it just needed a live base. No action needed from you; CI will re-run against the new base.

@diegosouzapw diegosouzapw removed the deferred-v3.8.52 Grande demais / suspeito para o lote atual; precisa de sessão dedicada no ciclo v3.8.52 label Oct 1, 2026
@diegosouzapw diegosouzapw changed the title [defer] feat(codex): surface minimum client version guidance feat(codex): surface minimum client version guidance Oct 1, 2026
@guanbear
guanbear force-pushed the feat/codex-client-compatibility-diagnostics branch from 0f38830 to c73b2a1 Compare October 8, 2026 07:23
@guanbear

guanbear commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the guidance on sequencing this with the Codex discovery changes. I have now adapted the patch to the current release/v3.8.52 branch and reused the merged active/candidate classification rather than keeping a separate parser or policy.

The warning now follows the selected account/catalog candidates and the effective refreshed HTTP client version. It preserves the new reasoning metadata, live account membership, empty all-filtered results, and cache fallback ordering. I also removed the obsolete baseline/docs changes.

The focused regressions pass (71 tests), and the changed-file and provider gates pass. I reproduced the existing reasoning/golden failures on the unchanged base and documented those, together with the inherited full-lint/typecheck limitations, in the PR description. The update is ready for your review when it fits the release queue. Thank you!

@guanbear

guanbear commented Oct 9, 2026

Copy link
Copy Markdown
Contributor Author

Thanks again for the sequencing guidance. I have now incorporated the current release/v3.8.52 tip (4ea24a2f8e1f) and kept the feature diff limited to the same five files. This preserves the new provider discovery paths and continues to reuse the merged active/candidate classification and effective HTTP client version.

The former lint, dashboard typecheck, internal-service-auth, and OpenAI→Claude failures are resolved after bringing in the upstream fixes. Full lint, the core/dashboard type gates, provider and file-size gates, mutation-test registration, docs version sync, and commit hooks pass locally. Expanded tests pass 103/104; the remaining golden failure has the exact same assertion diff on an isolated unchanged base.

I also checked the generator/workflow reds against that exact base: the stale-skills report and five scheduled-job guard findings are identical, so they remain inherited #15306 work rather than extra fixes in this feature PR, as requested by the contribution guide. The description records these boundaries and leaves broad build/i18n verification to the new CI run. The update is ready for review when it fits the release queue. Thank you!

@diegosouzapw
diegosouzapw merged commit 28e2a15 into cheaper-inference:release/v3.8.52 Oct 10, 2026
28 of 85 checks passed
@diegosouzapw

Copy link
Copy Markdown
Collaborator

Thanks @guanbear — Codex model discovery names the models that need a newer client profile and says which version the catalog requires. This is in the upcoming release.

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

Labels

protected-surface Touches an agent-instruction surface (AGENTS/CLAUDE/llm.txt/SKILL.md) — per-PR operator OK to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants