v0.3.4 — schema-enforced results
Executor upgrade (#91), born from a live incident where a correct decomposition arrived wrapped in prose + markdown fences and mis-routed as a raw-text candidate:
- Native
--json-schemaenforcement: on Claude Code ≥ 2.1.205 the executor constrains the model's output to the result contract — the answer arrives schema-valid instructured_output. Version support probed via a freeclaude --versioncall; the retry path provably cannot double-spend. - Extraction ladder fallback for older CLIs: strict parse → last balanced top-level JSON object (string-aware scanner, envelope-shaped preferred) → fenced blocks → keep-and-charge raw text. Never throws.
parse_moderecorded on every result for diagnosability.
423 tests.