Skip to content

🤖 fix: send GPT-6 Sol/Luna reasoning effort none and repair main CI - #4350

Open
ammar-agent wants to merge 5 commits into
mainfrom
gpt6-reasoning-none-followup
Open

ammar-agent wants to merge 5 commits into
mainfrom
gpt6-reasoning-none-followup

Conversation

@ammar-agent

@ammar-agent ammar-agent commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

Follow-up to #4348. GPT-6 Sol/Luna now actually send reasoning_effort: "none". The PR also fixes two post-merge Test / Unit failures on main: a unit test file that crashed Bun, and the v0.30.0 version-lock contract.

Background

  • SDK drops none: @ai-sdk/openai@4.0.71, including the latest 4.0.72, allows only low/medium/high/xhigh/max for every gpt-6-* ID and silently strips any other effort from Chat Completions and Responses requests. That list is correct for Astra, but Sol and Luna accept none. OpenAI documents that an omitted effort defaults to medium and that Chat Completions function calling requires none. So after 🤖 feat: add GPT-6 Sol and Luna model support #4348:
    • Chat Completions agent turns on gpt, sol and luna had their tool calls rejected.
    • On Responses, choosing "off" silently ran at medium reasoning.
    • 🤖 feat: add GPT-6 Sol and Luna model support #4348's tests only checked the buildProviderOptions output, not the serialized request, so they missed this.
  • CI: the Test / Unit job in main run 35782976621 exited with code 133. Bun hit an allocator panic (pas panic: deallocation did fail) just as mcpIconDecodeClient.test.ts started, with no failing assertions. That file loads the native sharp addon into the shared coverage process. The crash is not caused by 🤖 feat: add GPT-6 Sol and Luna model support #4348's model changes.
  • CI (release): release: v0.30.0 (81b0b74) bumped package.json but not packages/mux-compat. productIdentity.test.ts, which requires the legacy mux forwarding package to stay version-locked to @coder/xum, therefore fails on main.

Implementation

  • Generalizes createOpenAIModelWithServiceTier into createOpenAIModelWithPreservedOptions. For Sol/Luna wire IDs (including dated IDs) with effort none, it removes the effort from the SDK options and writes it into the serialized body after the SDK's capability checks. This reuses the per-call fetch-wrapper pattern already used for service tiers.
  • The wrapper covers native OpenAI (including Codex OAuth, whose tier behavior is unchanged), custom openai-responses providers and the Coder gateway OpenAI route.
  • Moves mcpIconDecodeClient.test.ts into isolated_unit_tests, following the existing pattern, so it runs in its own process with the signal-exit retry.
  • Bumps packages/mux-compat (version and its @coder/xum dependency) to 0.30.0.

Validation

  • A new factory-level wire test covers Sol, Luna and dated Sol over both wire formats, with a tool attached, and asserts that none is sent. Two controls check that Sol high passes through and that Astra none is still dropped. With the fix disabled, the 6 none cases fail.

Risks

Low. Only requests to Sol/Luna wire IDs with effort none are rewritten. Other models, and Sol/Luna at other efforts, keep the existing path.

Deferred (pre-existing): on Responses, the SDK treats opaque aliases (for example team-modelopenai:gpt-6-sol) as non-reasoning models and drops every reasoning effort, not just none. This already affected aliases of any reasoning model before #4348. On Chat Completions, which is where none matters for tool calls, those aliases already serialize none, and a test now covers that.

Review history

The first revision fixed this with a bun patch of @ai-sdk/openai. Codex pointed out that patchedDependencies does not apply to npm installs of the published package, so the fix now lives in Xum runtime code and the patch has been removed.


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high • Cost: $26.31

---

_Generated with `xum` • Model: `anthropic:claude-opus-5-5` • Thinking: `high` • Cost: `$26.31`_

<!-- mux-attribution: model=anthropic:claude-opus-5-5 thinking=high costs=26.31 -->
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 22, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-22T21:51:37.594577Z f0a642e Manual request
🔒 Security Review Completed 2026-09-22T21:52:16.283175Z f0a642e Manual request
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 7a3d24a0a7

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7a3d24a0a7

ℹ️ 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".

Comment thread package.json Outdated
Replace the bun patch (not applied to npm installs) with a post-SDK body rewrite.
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 2fd72e8c35

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2fd72e8c35

ℹ️ 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".

Comment thread src/node/services/providerModelFactory.ts
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep them coming!

Reviewed commit: c40f6e6e49

ℹ️ 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".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: c40f6e6e49

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@ammar-agent ammar-agent changed the title 🤖 fix: send reasoning effort none for GPT-6 Sol/Luna 🤖 fix: send GPT-6 Sol/Luna reasoning effort none and repair main CI Sep 22, 2026
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

@codex review

@ThomasK33

Copy link
Copy Markdown
Member

Coordination note from #4259 (same defect, different history):

  1. main unblock: 🤖 fix: version-lock mux compat package to v0.30.0 #4354 carries the identical packages/mux-compat 0.30.0 bump as a standalone one-liner (precedent 🤖 fix: version-lock mux compat package to v0.28.3 #4048), so every PR's Test / Unit can go green independently of this PR's review timeline. It is the same two-line change as f0a642e7, so the two merge cleanly in either order; I'll close whichever becomes empty.

  2. Approach: agreed the runtime body-rewrite is the right fix — Bun patchedDependencies never reach npm installs of @coder/xum (no postinstall, @ai-sdk/openai is a runtime dependency). 🤖 fix: clamp GPT-6 Sol/Luna headless tool loops to reasoning none and correct their Codex context cap #4259 will drop its SDK patch.

  3. Gaps this PR does not cover, which 🤖 fix: clamp GPT-6 Sol/Luna headless tool loops to reasoning none and correct their Codex context cap #4259 will deliver as a small stacked PR on top of this branch (no scope growth needed here):

No action needed from this PR; just flagging so we don't both edit the same call sites.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Bravo.

Reviewed commit: f0a642e705

ℹ️ 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".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: f0a642e705

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

ThomasK33 added a commit that referenced this pull request Sep 22, 2026
… correct their Codex context cap

Stacked on #4350, which makes a requested reasoning_effort "none" reach
the wire for GPT-6 Sol/Luna. Headless tool loops (Dream consolidation,
memory harvest, refine, sidebar status) call streamText with tools and
no provider options, so nothing requests "none" and Chat Completions
defaults to medium, which rejects function calling. A model-boundary
middleware fills in "none" for tool-bearing Chat Completions requests
that asked for no effort, wrapped outside #4350's body-patching wrapper
so the injected value survives the SDK; explicit caller efforts are left
alone. The Coder openai-compat path resolves scoped "Treat as" aliases
through resolveModelForMetadata before clamping. The assumed 372K Codex
OAuth cap for Sol/Luna becomes the 272K published in the pinned Codex
catalog.

_Generated with `xum` • Model: `coder:anthropic/claude-fable-5-1` • Thinking: `xhigh` • Cost: `$174.60`_

<!-- mux-attribution: model=coder:anthropic/claude-fable-5-1 thinking=xhigh costs=174.60 -->
@ammar-agent

Copy link
Copy Markdown
Collaborator Author

Thanks @ThomasK33, acknowledged. This PR won't touch the headless tool-loop clamp, the Coder openai-compat capability resolution, or the Codex OAuth context cap, so they can go in the stacked PR from #4259. The mux-compat bump here is identical to #4354, so they will merge cleanly in either order.

@ThomasK33

Copy link
Copy Markdown
Member

Status for whoever queues this: main is green again (#4354 landed as 82d3d148, same mux-compat bump as f0a642e7, so this rebases/merges cleanly). This head has a clean Codex code + security pair (21:51Z / 21:52Z, 👍) and every check green, so it looks ready for gh pr merge 4350 --squash --auto. #4259 is stacked on this branch and fully gated on its own head; I'll rebase it onto main and queue it as soon as this lands.

This branch has not been deployed

No deployments
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.

2 participants