Repository navigation
Preserve extraction reasoning defaults and support flat YAML syntax - #1226
Merged
Merged
Conversation
ebhills
marked this pull request as ready for review
October 10, 2026 01:50
This was referenced Oct 10, 2026
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.
Linked issue
Refs #1217. This is the current-main follow-up to the isolated release patch in #1218. The remaining model-default cleanup stays in #1225.
What changes
On main, extraction can omit reasoning based on model capabilities and let the provider's default apply. This change makes
extract.aialways send an effective effort, defaulting tononefor every model, including future and unlisted names. Explicit caller, saved-model, and configuration settings retain their precedence.reasoning: noneandreasoning: {effort: none}in recipes and direct Python calls. Normalize scalars before applying overrides; Responses receivesreasoning, and Chat Completions receivesreasoning_effort.noneand remove generation's operation-levellowoverride so configured model defaults remain effective.Retains the configuration foundation from #1200. The #1203/#1206 redesign, model-default migration, spreadsheet table work, package version bump, and deployments remain separate. Intended for the coordinated v1.20.5 release.
How it was verified
scripts/test-local.ps1: 2,998 passed, 6 skipped, 139 deselected; the sole failure was an older schema assertion that assumed reasoning could only be an object.TestWrangleSchemaandtest_generated_recipe_schema_preserves_reasoning_forms: 4 passed. The full suite was not rerun after this test-only correction.scripts/check_pytest_local_config.pyandgit diff --checkpass. Branch is current with main at4ddeceb9; tested implementation head isf7d90135.Provider requests in the new tests are mocked. Live provider checks and GitHub CI on this PR remain separate validation.
Compatibility and risk
Scalar reasoning is additive; nested options, saved-model selection, output shape, and verbosity handling remain intact. A provider that rejects the requested effort now returns its error instead of receiving a request with reasoning silently omitted. Callers using incompatible models may need an explicit supported effort or the separate model migration in #1225.
Rollback: revert this PR on main; that restores the prior capability-gated reasoning behavior and object-only recipe syntax.
Ready-for-review checklist
ebhills)mainand has no merge conflictsKeep Draft until CI and review readiness are confirmed. Eric owns the next action: verify CI, mark Ready, and request one primary reviewer.
See the pull request workflow.