Decode strict-tool omissions through references and composed schemas
- Status: Todo
- Kind: Bug
- Authors: jp
- Date: 2026-09-11
- Label: domain=llm
- Label: package=jp_llm
- Label: type=follow-up
Strict-provider tool argument decoding currently covers inline properties, nested objects, array items, and a simple anyOf nullable wrapper. It deliberately leaves decoding paths through $ref, allOf, oneOf, and general anyOf unions untouched. An optional inline array whose item schema uses $ref can still be omitted; the gap is decoding within the referenced schema or an optional property itself declared through a reference.
Address this in a separate PR that reviews reference resolution and composition handling together across the existing schema reader and strict-provider conversion. Do not introduce a second reference resolver solely for argument decoding.
Preserve source-accepted null values and required fields. Record omission instructions only where the outgoing provider encoding actually introduces an omission placeholder. Cover shared and recursive definitions, reference siblings, escaped JSON pointers, and branch-dependent property requirements. Keep the source schema unchanged and pin provider schema output alongside decoded argument outcomes.
The existing strict converter also cannot inject nullability into a standalone $ref or an untyped general union. Review that encoding gap together with decoding rather than treating every null at a referenced optional property as omission.
Related: T-063sw1z (shared argument validation).