Repository navigation
v0.36.0
Claude 5.5 support, prompt caching, and the cost estimate removed
⚠️ Breaking — the pre-run cost estimate is gone
POST /api/v1/projects/{id}/discover/estimate has been removed, along with the agent's --estimate mode, the CostEstimate types, the dashboard checkbox and panel, and warehouse.CostEstimator.
It ran decisionbox-agent --estimate as a subprocess of the API — but discovery runs the agent as a Job from the agent image, so the API image carries no agent binary and the endpoint failed on every Helm deployment. It was removed rather than fixed: bundling the agent into the API image would double its size for a feature nobody asked to keep.
Still there: GET / PUT /api/v1/pricing with its repository and provider seeding, and BigQuery's ValidateSQL.
If you call that endpoint, it now returns 404.
Claude 5.5 compatibility
Found while benchmarking which models suit which discovery phases against a production-scale ERP warehouse.
- Opus 5.5 and Sonnet 5.5 reject a forced
tool_choice(tool/any→ 400). Structured output and ungrounded Ask both force one. They now relax toautowith the tool named in the instruction — Anthropic's documented replacement. Opus 4.8, Opus 5, Sonnet 5 and Haiku 5.5 still accept a forced choice. - Those models refuse any conversation asking for a JSON field named
thinking—stop_reason: "refusal", zero tokens. Opus 5.5 refused step 1 of the built-in exploration prompt outright. The key is nowrationaleeverywhere the agent writes it. Replies that still usethinkingparse fine, and stored packs are rewritten at render time. - A refusal used to be re-asked as an unparseable reply three times before failing with "no action JSON object found". It is now reported as what it is.
- Catalogs added for Opus 4.8 / 5 / 5.5, Sonnet 5 / 5.5 and Haiku 5.5 across all four Claude providers — 1M window, 128K output, list + cache prices, reasoning flags. Previously they fell through to unknown-model defaults, which handed always-thinking models a 4,096-token exploration budget.
Prompt caching
Exploration re-sent the whole conversation every step. All four Claude providers now mark cache breakpoints on the system prompt and the last message of multi-turn requests.
Same model, same settings, same day: exploration cost −95%, whole run −76%, same quality profile.
On by default; turn it off per project in settings, or with llm.config.prompt_cache: "false".
Usage accounting follows: CacheReadTokens, CacheWriteTokens and ReasoningTokens are recorded, and every LLM call is finally tagged with the phase that made it.
Also
- The exploration action format is now stated by the engine rather than living only in pack prompts, so a custom or generated pack no longer leaves the model guessing — that guessing cost a reformat round-trip on roughly 18% of exploration calls even on the best-behaved model.
- The ledger says when it is still catching up with the last run.
undici7.30.1.
Images are cosign-signed; the tag is GPG-signed. See docs/verifying-artifacts.md.