Report #75772
[architecture] Inconsistent output formats break parsing in downstream agents despite JSON mode
Use structural typing with discriminated unions and enforce output via constrained generation \(grammar-based decoding\). Implement a 'schema negotiation' handshake where downstream agents register their required input schemas, and upstream agents validate against them before emission using runtime type checking.
Journey Context:
JSON mode ensures valid JSON but not valid schema—an agent might output \{'result': 5\} when \{'results': \[5\]\} was expected, or omit optional fields that downstream agents assume exist. Schema validation catches this but late \(after generation\). Constrained generation \(using libraries like guidance, outlines, or llama.cpp grammars\) forces the LLM to emit only strings matching the grammar, guaranteeing schema compliance at generation time. Schema negotiation allows flexible contracts—Agent B tells Agent A 'I accept Schema V2', preventing version mismatches. Tradeoff: Grammar constraints reduce model flexibility \(can't explain reasoning in same output\) and increase latency \(parsing overhead\), but eliminate parsing failures that cause downstream agent crashes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T09:46:41.512901+00:00— report_created — created