Repository navigation
ci(sdk-live): judge features by evidence, probe undeclared ones - #5536
Draft
caiotheodoro wants to merge 1 commit into
Draft
caiotheodoro wants to merge 1 commit into
caiotheodoro wants to merge 1 commit into
Conversation
A 2xx no longer passes a declared feature on its own: the reply must show it was honored (forced get_time call, bare JSON, schema match). Features and params the YAML does not declare get one probe each, run against a catalogue copy that declares them so the SDK forwards the field. A 400 counts as a rejection only when the baseline call worked and the error names the field; a working undeclared field is a warn, never a fail. 429/5xx are retried twice. Summary gains a Warn column.
caiotheodoro
force-pushed
the
ci/sdk-live-expected-outcomes
branch
from
October 16, 2026 13:40
839f316 to
1407b4a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #5506 (merged). Draft for review by its author.
Flow
flowchart TD Y[model YAML] --> B[baseline call] B -->|fails| X[fail: model broken] B -->|ok| D[each declared feature] B -->|ok| U[each undeclared feature<br/>+ removed params<br/>+ reasoning_effort if absent] D --> E{reply shows it worked?} E -->|yes| P1[pass] E -->|cut at token cap| W1[warn] E -->|no| F1[fail] U --> Q[probe via catalogue copy<br/>that declares the field] Q --> R{400/422 naming the field,<br/>or OpenRouter 404?} R -->|yes| P2[pass: correctly undeclared] R -->|no, it works| W2[warn: undeclared but working] B -.->|429 / 5xx| RT[retry 2s, 6s]Why
On #5506 a declared feature passes on any 2xx, and nothing checks what the YAML leaves out. In the last 90 days, humans added features to bot PRs 233 times and removed wrong ones 41 times, and added
reasoning_effort55 times. Example: #5533 declaresassistant_prefillandtool_choiceon Opus 5.5, while #5524 removes both for Anthropic.What changes
tool_choiceforcesget_timeon a weather question,json_outputmust return bare JSON,structured_outputmust match the schema. A reply cut at the token cap is a warn, not a fail.reasoning_effortwhen it isn't declared).max_tokensandmax_completion_tokens. The SDK rewrites one into the other, so a wrong choice already fails the baseline call. Sampling params the SDK drops for base gpt-5 are skipped too.Testing
npm run test:unit: 53/53, on simulated responses.tsc: only theaudioFormBlobPart error that is already on the base branch.Limits
reasoning_effortprobe).