Skip to content

fix(anthropic): forward structured output schemas - #1464

Merged
Wibias merged 9 commits into
lidge-jun:devfrom
Lqm1:codex/anthropic-structured-output
Aug 12, 2026
Merged

fix(anthropic): forward structured output schemas#1464
Wibias merged 9 commits into
lidge-jun:devfrom
Lqm1:codex/anthropic-structured-output

Conversation

@Lqm1

@Lqm1 Lqm1 commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Forward Responses and Chat Completions JSON Schema output formats through the Anthropic adapter as output_config.format.
  • Normalize JSON Schema to Anthropic's supported structured-output subset while preserving unsupported constraints in descriptions.
  • Preserve root $defs beside a root $ref, merge structured-output configuration with adaptive-thinking output_config.effort, and round-trip Messages structured output through stored OAuth.
  • Document the Anthropic compatibility transform, limitations, and maintenance decision.

Verification

  • Rebased onto current dev@4fed8d3f.
  • bun test tests/anthropic-reasoning.test.ts tests/claude-inbound.test.ts tests/claude-messages-endpoint.test.ts tests/responses-parser.test.ts tests/responses-parser-malformed-content.test.ts tests/chat-completions-endpoint.test.ts tests/responses-compaction.test.ts tests/responses-compaction-routing.test.ts (269 passed; 2 optional-main enrichment tests fail identically on current dev and are unrelated to structured output)
  • bun test tests/api-storage-policy-put-race.test.ts (1 passed)
  • bun run typecheck
  • bun run privacy:scan
  • git diff --check upstream/dev...HEAD
  • cd docs-site && bun install --frozen-lockfile && bun run build
  • Live AI SDK v7 Output.object request through the patched server on port 10101 using anthropic/claude-sonnet-5
  • The previous exact-head Cross-platform CI run passed all Linux shards, the unsharded macOS suite, gates, keyring, storage-policy, API-usage, and npm-global jobs; the rebased head is awaiting maintainer approval for the fork workflow
  • The unsharded local Windows suite remains affected by the repository's known Windows-only failures and Bun 1.3.14 panics; the related focused suites are green apart from the two current-dev optional-main enrichment failures noted above

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

Review readiness checklist

This PR stays in draft until every box below is ticked. Tick all four boxes once the requirements are met:

  • All CI tests are green on my local testing.

  • I pushed my PR to the latest dev commit.

  • I resolved all correct Codex and CodeRabbit findings.

  • My PR is ready for review.

Summary by CodeRabbit

  • New Features

    • Added structured JSON Schema output support for Anthropic requests.
    • Translated compatible OpenAI-style structured-output settings for Anthropic and Responses APIs.
    • Preserved schema references, definitions, compositions, nested structures, and supported constraints.
    • Retained output configuration when adding schema formatting, including adaptive reasoning and routed requests.
  • Bug Fixes

    • Invalid or unsupported schemas are safely rejected or omitted.
    • Preserved structured-output settings when applying effort overrides.
  • Documentation

    • Documented structured-output compatibility and schema normalization behavior.
  • Tests

    • Expanded coverage for schema forwarding, translation, routing, and adaptive reasoning compatibility.

@github-actions

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

No new commits to review since the last review.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: ec525f4e-9ab7-4c09-9ed1-ce7c2aac07d8

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: bff4ad2f-8ca7-4b93-9be8-e601e7050332

📥 Commits

Reviewing files that changed from the base of the PR and between 3e42026 and 7c09080.

📒 Files selected for processing (4)
  • docs-site/src/content/docs/reference/adapters.md
  • src/server/claude-messages.ts
  • structure/04_transports-and-sidecars.md
  • tests/claude-messages-endpoint.test.ts

📝 Walkthrough

Walkthrough

Anthropic structured-output requests now normalize JSON Schemas, preserve references and definitions, merge formats with output_config, and restore valid formats during inbound translation. Tests cover reasoning, Chat Completions conversion, OAuth routing, effort preservation, and invalid schemas.

Changes

Anthropic schema output

Layer / File(s) Summary
Schema normalization
src/adapters/anthropic-output-schema.ts
Adds recursive normalization for $defs, $ref, compositions, objects, strings, and arrays. Unsupported constraints are serialized into descriptions. Invalid root schemas are rejected.
Request output configuration
src/adapters/anthropic.ts, src/server/claude-messages.ts, tests/anthropic-reasoning.test.ts, tests/claude-messages-endpoint.test.ts, docs-site/src/content/docs/reference/adapters.md, structure/04-transports-and-sidecars.md
buildRequest normalizes JSON Schema text formats and merges them into body.output_config. Effort overrides preserve existing output configuration fields. Tests and documentation cover definitions, compositions, reasoning settings, Chat Completions conversion, OAuth routing, and routed requests.
Inbound output-format restoration
src/claude/inbound.ts, tests/claude-inbound.test.ts
Inbound translation validates Anthropic JSON Schema formats and exposes valid formats through body.text.format and parsed request options.

Estimated code review effort: 3 (Moderate) | ~30 minutes

Possibly related PRs

  • lidge-jun/opencodex#705: Both changes preserve existing Anthropic output_config fields while applying effort overrides.
  • lidge-jun/opencodex#985: Both changes extend structured-output translation across adapter and route boundaries.

Suggested labels: enhancement

Suggested reviewers: lidge-jun, ingwannu

Sequence Diagram(s)

sequenceDiagram
  participant ResponsesRequest
  participant buildRequest
  participant normalizeAnthropicOutputSchema
  participant AnthropicAPI
  ResponsesRequest->>buildRequest: provide JSON Schema text format and effort
  buildRequest->>normalizeAnthropicOutputSchema: normalize JSON Schema
  normalizeAnthropicOutputSchema-->>buildRequest: return normalized schema
  buildRequest->>AnthropicAPI: send merged output_config
Loading
sequenceDiagram
  participant AnthropicRequest
  participant formatFromOutputConfig
  participant parseRequest
  participant ResponsesRequest
  AnthropicRequest->>formatFromOutputConfig: provide output_config.format
  formatFromOutputConfig-->>parseRequest: return validated text format
  parseRequest->>ResponsesRequest: set body.text.format and options.textFormat
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: forwarding structured output schemas through the Anthropic adapter.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the bug Something isn't working label Aug 11, 2026
@github-actions

github-actions Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

✅ READY

  • all PR quality gates passed; the review readiness checklist is complete.

Review readiness checklist

  • ✅ All CI tests are green on my local testing.
  • ✅ I pushed my PR to the latest dev commit.
  • ✅ I resolved all correct Codex and CodeRabbit findings.
  • ✅ My PR is ready for review.

4/4 boxes ticked.

This pull request is already Ready for Review.
The review-ready label marks this PR as ready; review automation runs independently. If no CodeRabbit review appears, comment @coderabbitai review to request one.
Maintainers: @lidge-jun @Ingwannu @Wibias

@Lqm1
Lqm1 marked this pull request as ready for review August 11, 2026 07:41
@github-actions
github-actions Bot marked this pull request as draft August 11, 2026 07:41

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/adapters/anthropic-output-schema.ts`:
- Around line 33-43: Update normalizeSubschema so $defs are normalized and
attached to normalized before handling the $ref return; when both exist, return
normalized containing both $defs and $ref instead of returning only the
reference. Add a regression test covering a root schema with a `#/`$defs/...
reference and verify the emitted schema preserves its definitions.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 2301959a-1347-40ec-a07d-877e314e339a

📥 Commits

Reviewing files that changed from the base of the PR and between e2f7f2b and e11073a.

📒 Files selected for processing (3)
  • src/adapters/anthropic-output-schema.ts
  • src/adapters/anthropic.ts
  • tests/anthropic-reasoning.test.ts

Comment thread src/adapters/anthropic-output-schema.ts Outdated

@Ingwannu Ingwannu left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

The direction is valuable and the current transform is much closer to the real Anthropic contract than silently dropping structured output. I compared the implementation with Anthropic's current TypeScript SDK transform and rechecked exact PR head e600c877: six adjacent parser/adapter/Chat/compaction suites pass 181/181, and typecheck plus privacy scan pass. I did not find a credential or destination-boundary problem.

I am requesting changes for three completion blockers:

  1. The PR promises both Responses text.format and Chat Completions response_format, but the new behavior tests call parseRequest() with a Responses body only. Add a regression that starts from the Chat Completions JSON Schema shape and proves the Anthropic request receives the expected output_config.format after the real inbound conversion. This boundary matters because src/chat/inbound.ts owns name, description, strict, and missing-schema normalization independently from the Anthropic adapter. The test should make explicit that Anthropic receives only its supported { type: "json_schema", schema } shape and that adaptive output_config.effort is preserved.
  2. This is user-visible adapter behavior and a non-trivial 125-line compatibility transform. Update docs-site/src/content/docs/reference/adapters.md with the supported Anthropic structured-output behavior and its limitations, and record the decision in the applicable structure/ document using the repository's [Decision Log] format. In particular, document why OpenCodex mirrors the SDK subset locally, why unsupported constraints are preserved in descriptions, why root $defs is retained beside a root $ref even though the current SDK transform returns on $ref, and the maintenance/tradeoff of copying that transform.
  3. The head is currently three commits ahead of and three commits behind current dev, while the full suite did not finish in the author's two attempts and the four readiness boxes remain open. Rebase onto current dev, rerun the focused tests/typecheck/privacy/docs build, then complete the readiness checklist only after exact-head CI is actually green.

Once those coverage, documentation, and exact-head gates are complete, this should remain a strong merge candidate. Please keep it draft until then.

@Lqm1
Lqm1 force-pushed the codex/anthropic-structured-output branch 2 times, most recently from f35d1da to b6b8dac Compare August 11, 2026 08:31
@Wibias
Wibias requested a review from Ingwannu August 11, 2026 08:31
@Wibias
Wibias marked this pull request as ready for review August 11, 2026 08:32
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

@github-actions[bot] The PR is marked ready for review. I will review the current changes.

⚠️ Action not completed

Already reviewed.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

@github-actions[bot] The pull request is ready for review. I will review the current changes.

⚠️ Action not completed

Already reviewed.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

@github-actions[bot] Acknowledged. The pull request is marked ready for review.

You are interacting with an AI system.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs-site/src/content/docs/reference/adapters.md`:
- Around line 77-84: Update the structured-output documentation in
docs-site/src/content/docs/reference/adapters.md lines 77-84 to state that
structured output preserves compatible adaptive-thinking output_config.effort.
Also update structure/04_transports-and-sidecars.md lines 551-565 to document
that format merges into, rather than replaces, the existing adaptive-thinking
output configuration, while keeping output_config.effort compatible with the
structured-output format.

In `@src/adapters/anthropic-output-schema.ts`:
- Around line 47-56: Update the normalization logic around normalizeSubschema so
it removes only the composition keyword selected by the branch, preserving
unselected anyOf, oneOf, or allOf entries in schema for the fallback guidance
path. Ensure schemas containing multiple composition keywords retain every
unselected constraint, and add a regression test covering at least two
composition keywords.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: ca8cb91f-9737-4ee9-96bb-4b1f5d601fc0

📥 Commits

Reviewing files that changed from the base of the PR and between e11073a and b6b8dac.

📒 Files selected for processing (4)
  • docs-site/src/content/docs/reference/adapters.md
  • src/adapters/anthropic-output-schema.ts
  • structure/04_transports-and-sidecars.md
  • tests/anthropic-reasoning.test.ts

Comment thread docs-site/src/content/docs/reference/adapters.md Outdated
Comment thread src/adapters/anthropic-output-schema.ts Outdated
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

@github-actions[bot] The pull request is ready. I will review the current changes.

⚠️ Action not completed

Already reviewed.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

@github-actions[bot]: The readiness checklist is complete. I will review the current changes.

⚠️ Action not completed

Already reviewed.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@Lqm1
Lqm1 force-pushed the codex/anthropic-structured-output branch from b6b8dac to b9f846a Compare August 11, 2026 08:52
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

@github-actions[bot] Acknowledged. PR #1464 is marked ready for review.

You are interacting with an AI system.

@github-actions
github-actions Bot marked this pull request as draft August 11, 2026 08:53
@Lqm1
Lqm1 marked this pull request as ready for review August 11, 2026 08:55
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

@github-actions[bot] Acknowledged. PR #1464 is marked ready for review.

You are interacting with an AI system.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

@github-actions[bot] Acknowledged. PR #1464 is marked ready for review. The readiness checklist is complete.

You are interacting with an AI system.

@Ingwannu Ingwannu left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Follow-up on exact head 3e42026f: the author has addressed the first two clusters from my requested-changes review. The real Chat Completions inbound conversion now has regression coverage, compatible adaptive effort is preserved, and the public docs plus [Decision Log] explain the local Anthropic SDK subset and root $defs divergence. The later inbound validation and deterministic name coverage are also present, and no unresolved review threads remain.

The remaining blocker is still the exact-head integration gate: this head is 45 commits behind current dev@849ab5e35, and the status rollup contains only hygiene/target checks, not the required cross-platform suite. Please rebase onto current dev and obtain green exact-head required CI. Until then my existing changes-requested state remains intentional; I am not asking for additional feature scope.

@Wibias Wibias left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-review on head 3e42026f against current dev@849ab5e35.

The earlier review findings around root $defs, composition fallback, Chat Completions coverage, inbound schema validation, deterministic Responses naming, docs, and the adaptive-thinking merge are addressed. I found one remaining integration blocker in the routed Claude Messages path.

handleClaudeMessagesWithBudget() extracts ocx-route / ocx-effort before anthropicToResponsesTranslation(). When an effort override is present it currently does:

anthropicBody.output_config = { effort: effortOverride };

That replaces the caller's entire output_config. A valid request carrying both output_config.format and the generated ocx-route + ocx-effort directives therefore loses the structured-output format before the new inbound translator can preserve it. The adapter-level merge added by this PR never sees the format.

Please merge the effort override into an existing object instead of replacing it, preserving output_config.format, and add an endpoint-level regression for a routed Claude Messages request that has structured output plus the route/effort directives. The final Anthropic wire body should contain both the overridden effort and the JSON-schema format.

Separately, this head is still 45 base commits behind current dev, and the exact-head Cross-platform CI / React Doctor runs are action_required with zero jobs. Rebase and exact-head CI are still required after the code fix.

@Wibias
Wibias marked this pull request as draft August 11, 2026 18:05
@Lqm1
Lqm1 force-pushed the codex/anthropic-structured-output branch from 3e42026 to c3c057c Compare August 12, 2026 02:34
@Lqm1
Lqm1 marked this pull request as ready for review August 12, 2026 02:34
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

@github-actions[bot] Acknowledged. Pull request #1464 is ready for review. The readiness checklist and deterministic hygiene checks passed.


🧠 Learnings used
Learnt from: Wibias
Repo: lidge-jun/opencodex PR: 986
File: .github/workflows/enforce-pr-target.yml:631-636
Timestamp: 2026-08-04T06:41:30.089Z
Learning: For the PR readiness gate in `.github/workflows/enforce-pr-target.yml`, the required scope is to bind contributor checklist completion and maintainer notification to the exact PR head SHA, then reset them after a new head commit. Maintainer approval staleness is separate from this gate and should be enforced by GitHub branch protection, such as `dismiss-stale-reviews` or `require_last_push_approval`, when configured for `dev`.

You are interacting with an AI system.

@github-actions
github-actions Bot marked this pull request as draft August 12, 2026 02:34
@Ingwannu

Copy link
Copy Markdown
Owner

Follow-up on exact head c3c057ce9b1ec33b66196efe4e2d28211d5586e2.

The remaining functional blocker from the prior maintainer reviews is addressed: the generated-agent effort override now merges into the existing output_config instead of replacing it, and the new routed Anthropic regression proves that effort and format survive together. The earlier schema-transform, root $defs/$ref, composition-guidance, inbound validation/naming, and Messages round-trip fixes are also present on this head.

Exact-head checks under a 2-CPU/8-GB cap:

  • the focused parser/Anthropic/Claude/Chat/compaction group completed with 269 passed; the only two failures were the existing optional-main enrichment timing/state cases in Claude and Chat replay, which are also present on current dev and are not structured-output paths;
  • bun run typecheck: passed;
  • bun run privacy:scan: passed;
  • git diff --check: passed.

I found no remaining structured-output code blocker in this head. However, it is still based on b8a2e51b and is now 12 commits behind dev@37139818d2d3fe7b033e958ccf87080e4be2b4b7, while touching active Claude/Responses files. Please rebase onto the latest dev, rerun the focused checks on the resulting exact head, complete the readiness checklist, and request final review. I am not approving or merging the stale draft head.

@Lqm1
Lqm1 force-pushed the codex/anthropic-structured-output branch from c3c057c to 7c09080 Compare August 12, 2026 03:20
@Lqm1
Lqm1 marked this pull request as ready for review August 12, 2026 03:21
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

@github-actions[bot] The readiness checklist is complete for head 7c09080e4870c817739e2365291d06cb2e2e3f7c. I will review the current changes.


🧠 Learnings used
Learnt from: Wibias
Repo: lidge-jun/opencodex PR: 986
File: .github/workflows/enforce-pr-target.yml:631-636
Timestamp: 2026-08-04T06:41:30.089Z
Learning: For the PR readiness gate in `.github/workflows/enforce-pr-target.yml`, the required scope is to bind contributor checklist completion and maintainer notification to the exact PR head SHA, then reset them after a new head commit. Maintainer approval staleness is separate from this gate and should be enforced by GitHub branch protection, such as `dismiss-stale-reviews` or `require_last_push_approval`, when configured for `dev`.
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

@github-actions[bot] The readiness checklist is complete for head 7c09080e4870c817739e2365291d06cb2e2e3f7c. I will review the current changes.


🧠 Learnings used
Learnt from: Wibias
Repo: lidge-jun/opencodex PR: 986
File: .github/workflows/enforce-pr-target.yml:631-636
Timestamp: 2026-08-04T06:41:30.089Z
Learning: For the PR readiness gate in `.github/workflows/enforce-pr-target.yml`, the required scope is to bind contributor checklist completion and maintainer notification to the exact PR head SHA, then reset them after a new head commit. Maintainer approval staleness is separate from this gate and should be enforced by GitHub branch protection, such as `dismiss-stale-reviews` or `require_last_push_approval`, when configured for `dev`.
⚠️ Action not completed

Already reviewed.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

@github-actions Acknowledged. PR #1464 is ready for review at head 7c09080e4870c817739e2365291d06cb2e2e3f7c. The readiness checklist is complete.


🧠 Learnings used
Learnt from: Wibias
Repo: lidge-jun/opencodex PR: 986
File: .github/workflows/enforce-pr-target.yml:631-636
Timestamp: 2026-08-04T06:41:30.089Z
Learning: For the PR readiness gate in `.github/workflows/enforce-pr-target.yml`, the required scope is to bind contributor checklist completion and maintainer notification to the exact PR head SHA, then reset them after a new head commit. Maintainer approval staleness is separate from this gate and should be enforced by GitHub branch protection, such as `dismiss-stale-reviews` or `require_last_push_approval`, when configured for `dev`.

You are interacting with an AI system.

@Wibias
Wibias merged commit 70d2e17 into lidge-jun:dev Aug 12, 2026
64 of 69 checks passed

Wibias commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Thanks @Lqm1, this is a really useful compatibility improvement. Structured JSON output now survives routing to Anthropic instead of being silently dropped, including Chat Completions, Responses, adaptive reasoning, stored OAuth, and routed Claude Messages. That makes schema-constrained apps and SDK integrations much more reliable while keeping the Anthropic wire format valid. Nice work on the regression coverage and documenting the compatibility tradeoffs.

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

Labels

bug Something isn't working review-ready

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants