fix(openai): preserve composed tool schema contracts - #4113
Conversation
Keep regex-keyed schemas and nonmonotone subtrees unchanged; retain scalar Artifact compatibility in ordinary positive positions. Co-authored-by: itismyfield <itismyfield@users.noreply.github.com>
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughThe schema normalizer now removes only eligible scalar Unicode-property patterns. It preserves ChangesUnicode schema preservation
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested reviewers: ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. |
|
Independent read-only agent re-review of 9240bde returned PASS with no blocking issues. The allOf/outer unevaluatedProperties witness retains its matcher and evaluation annotation; not/oneOf/conditional/reusable subtrees are preserved while ordinary Artifact scalar patterns remain normalized. Both adapter seams carry regression assertions. Hosted CI 34347174190 is still running, and no local product tests were run. This addresses the remaining composed-schema finding on #4096; release readiness will use the repaired final dev, not the previous green baseline. |
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. |
|
Maintainer integration into dev at exact head |
Summary
Preserve regex-keyed tool schemas instead of dropping
patternPropertiesentries based on local openness. In anallOfsubschema, removing the matcher can erase the property-evaluation evidence required by an outerunevaluatedProperties: false; withminProperties: 1, a usable dictionary tool becomes unsatisfiable. This addresses the remaining composition finding on #4096.The original scalar Artifact
patternrepair remains in ordinary positive positions. Negation, exclusive alternatives, conditions,contains, and reusable definitions pass through unchanged because a local relaxation can narrow the containing schema. Both Chat and Responses adapter regression cases preserve the original allOf/not/oneOf argument contract. English and Korean guidance states that unsupported preserved regexes remain the destination's responsibility.Co-authored-by: itismyfield itismyfield@users.noreply.github.com
Verification
buildRequestregressions for both adapter paths and controls for scalar repair beside preserved subtrees. Existing literal-property and deep-walk coverage remains.git diff --check: passed.Checklist
Summary by CodeRabbit
Bug Fixes
Documentation