Follow-on work after the typed-outputs / grammar-maturity PR (#272). Now that the outputs contract is standard JSON Schema (Draft 2020-12) and capture selects tool-result vs response text, the schema-driven pieces below are the natural next steps. Split out of #272 to keep that PR reviewable as a coherent unit.
Schema-driven generation (highest value)
Retry-to-repair
Reusable schemas
format policy
Multi-model fan-in observability
Friendlier validation errors
CLI mode-flag ergonomics
Deferred (not planned)
An opt-in coercing mode: strict validation is intentional; the preferred path is generation + repair above.
Follow-on work after the typed-outputs / grammar-maturity PR (#272). Now that the
outputscontract is standard JSON Schema (Draft 2020-12) andcaptureselects tool-result vs response text, the schema-driven pieces below are the natural next steps. Split out of #272 to keep that PR reviewable as a coherent unit.Schema-driven generation (highest value)
outputsJSON Schema to each backend's native structured-output surface (OpenAIresponse_format, Anthropic toolinput_schema;copilot_sdkfalls back to validate-only) so the model is constrained to emit conforming output instead of relying on prompt prose. This is what makescapture: response+outputsreliable rather than best-effort.Retry-to-repair
outputs_retries.Reusable schemas
schemas:/ document type) so a contract can be defined once and referenced across tasks.formatpolicyformat(jsonschema does not by default) and enable aFormatCheckerif so.Multi-model fan-in observability
result: null) and add a consensus/merge helper over per-model typed results.Friendlier validation errors
CLI mode-flag ergonomics
--schema/--manifest/--lint/--list-models) with a clear error, instead of silently applying precedence, while still allowing each mode's legitimate modifiers (e.g.--lintwith-t/-m).Deferred (not planned)
An opt-in coercing mode: strict validation is intentional; the preferred path is generation + repair above.