- Changed: UltraSave, UltraFast and UltraCode each enforce a policy of their own (#64). UltraSave leads on your worker model when one is configured, keeps effort at high or lower, and compacts a long session at a cold moment without asking. UltraFast keeps your model, runs no subagent, waits on no side decision and caps effort at medium. UltraCode never lowers effort for a routine round, keeps file reads whole, and has an independent reviewer check a turn that changed code; its final message ends with
Verification: REVIEWEDorUNVERIFIED (reason).[modes] v2 = []restores the previous behaviour of all three;[modes.ultrasave] model = "session"keeps UltraSave on your own model. - Changed: Auto judges the whole request, only moves up inside a request, and keeps the tool list stable across a mode switch, so a switch no longer loses the prompt cache.
- New: an escalation ratchet raises effort, then the mode or the model tier, after a routed-round error, a breaking edit, the same check failing twice, repeated identical tool calls or eight stalled rounds. Off:
[modes] escalation = []. - New: a pinned UltraFast session asks the provider for its fast serving path and a pinned UltraSave session for its economy path, where the endpoint accepts one; a refusal drops it for the session. A fast path can cost more per token. Off:
[modes.<mode>] provider_tier = "off". A ChatGPT subscription is never asked for the economy path, and a Claude subscription never for the fast one. - Changed: a foreground shell command waits up to 120 s (was 15 s) before it moves to the background;
[toolset.bash] foreground_block_budget_mssets it. - Changed: the Anthropic prompt cache always uses the 5-minute lifetime (
[cache] extended_ttl = "auto"restores the previous choice), and a session reloaded inside its cache lifetime is treated as warm. - Changed: cold-return compaction is offered by default (
[compaction] cold_return = "off"disables it), and the early compaction pass now reads the prompt cache. - Fix: a check piped through a filter (
cargo test | tail) is no longer recorded as passed when it failed. A recorded check is passed, failed or unknown. - New:
usage.jsonandevents.jsonlrecord prompt-cache breaks by cause, one content-free event per Jev decision and a per-turn outcome;tools/task_cost_eval/session_usage.py --report decisionsreads them. - Benchmarks (2026-11-12; Astra, Sol and Opus families; 162 runs; every arm 9/9): against Normal, UltraSave cost 0.011x to 0.057x, UltraFast took 0.41x to 0.81x the time, and Auto cost 0.41x to 0.49x at 0.83x to 1.18x the time. UltraCode cost 2.19x to 3.17x with no quality gain measured, because every mode already passes these tasks. Limits and run-to-run variation are in
BENCHMARKS.md.