Added
- (providers) base support for the new Anthropic and OpenAI models (#2632) (by gold-silver-copper)
- (gemini) automatic explicit caching for long runs (#2628) (by gold-silver-copper)
- (rig-candle) local YOLOv8 pose estimation (#2615) (by gold-silver-copper)
- (cassette) [breaking] refuse account failures and stored state, keep failed attempts, and move recording tooling into xtask (#2587) (by gold-silver-copper)
- (core) [breaking] signature slots, upstream reasoning provenance and the legacy fixture corpus (#2580) (by gold-silver-copper)
- (core) [breaking] stateful handle round-trips and reasoning provenance (#2578) (by gold-silver-copper)
- (cassette) [breaking] record provider-opaque fields verbatim (#2577) (by gold-silver-copper)
- (cassette) skip non-recordable tests during live re-recording (#2556) (by gold-silver-copper)
- initial typesafeai provider (jev) (#2550) (by 0xMochan) - #2550
- feat!(core, ecs): one provider vocabulary, lossless configuration (#2548) (by gold-silver-copper) - #2548
- feat!(core): Usage counters are Option — an absent counter is representable (#2535) (by gold-silver-copper) - #2535
- (rig-ecs) [breaking] the ECS contract under a long tool loop on five wires, with tool results as data, cached utterance views, bindings as data and runs as commands (#2516) (by gold-silver-copper)
- (rig-ecs) explicit stream delivery — StreamItemsDelivered, two consumers, five-wire matrix (#2515) (by gold-silver-copper)
- (ecs) add durable tool-turn checkpoint boundaries (#2514) (by gold-silver-copper)
- (ecs) expose typed content parts and shared binary assets (#2513) (by gold-silver-copper)
- [breaking] the effect-bus critical path — one protocol, one channel, typed views (#2443) (by gold-silver-copper) - #2443
- [breaking] finish the data layer — blessed ModelTurn conversion, counter/newtype ids, owned dispatch, serde across the protocol surface (#2419) (by gold-silver-copper) - #2419
- [breaking] event-sourced hook state — RunEntry log on AgentRun replaces the durable Scratchpad snapshot (#2408) (by gold-silver-copper) - #2408
- [breaking] transport middleware + run lifecycle hooks (on_run_start/on_run_settled, durable Scratchpad) (#2407) (by gold-silver-copper) - #2407
- [breaking] lower ModelHandle and the erased tool set into rig-core; pure rig_run::prepare_request (#2405) (by gold-silver-copper) - #2405
- [breaking] rig-run — extract the sans-IO run protocol out of rig-agent (RunSpec, TurnTools, transcript validator, counter RunId) (#2403) (by gold-silver-copper) - #2403
- [breaking] BoxedHttpClient — an erased HTTP transport; Client defaults to it (#2401) (by gold-silver-copper) - #2401
- (agent) sync, retrieval-free registry reads — ToolServerHandle::{snapshot, static_tool_defs, toolset}, public ToolRegistrySnapshot, ToolSet: Clone (#2400) (by gold-silver-copper)
- (agent) run_channel/RunEvents, static Send+Sync pins, bevy_tasks example, dependency-graph guard (#2399) (by gold-silver-copper)
- [breaking] rig-rmcp — move MCP tool support out of rig-agent into its own crate (#2398) (by gold-silver-copper) - #2398
- [breaking] rig-reqwest — cut the bundled transport into its own crate; rig-core has no default transport and no reqwest/tokio (#2397) (by gold-silver-copper) - #2397
- (telemetry) gen_ai spans for every non-completion modality, plus a recorded embedding matrix for all seven keyed providers (#2390) (by gold-silver-copper)
- [breaking] type-erasure sweep part 2 — normalize embedding/rerank responses, erase rerank and image-embedding models, move ModelLister construction to a hook (#2389) (by gold-silver-copper) - #2389
- [breaking] finish the type-erasure sweep — normalize transcription/image/audio responses, move construction off every model trait, erase the embedding model in vector stores (#2385) (by gold-silver-copper) - #2385
- (llamacpp) [breaking] replace the llamafile provider, merge its two suites, and exhaust the matrix (#2382) (by gold-silver-copper)
- (gemini) explicit context caching, and three usage-mapping bugs the cache audit found (#2375) (by gold-silver-copper)
Fixed
- (openai) preserve assistant message phase across streamed and multi-message turns (#2639) (by gold-silver-copper)
- pre-0.43 release fixes (docs.rs, opt-in rig::cassette, rust-version, READMEs) (#2638) (by gold-silver-copper) - #2638
- (openai) preserve reasoning and citations across response decoding (#2636) (by gold-silver-copper)
- (usage) [breaking] one meaning for Usage on every provider (#2631) (by gold-silver-copper)
- publish the facade, not the repository — and stop asking for dependencies nothing uses (#2563) (by gold-silver-copper) - #2563
- repair eleven downstream consumer conformance defects (#2561) (by gold-silver-copper) - #2561
- (core) [breaking] redact resolved credentials and encoded request diagnostics (#2546) (by gold-silver-copper)
- honour the WASM bounds in every vector store (#2545) (by gold-silver-copper) - #2545
- recover from malformed streamed tool arguments, preserve Responses compaction/phase, drop the tool_macro alias (#2532) (by gold-silver-copper) - #2532
- lenient Responses metadata decode (top_p) and valid rig-postgres search SQL (#2531) (by gold-silver-copper) - #2531
- Responses strict:false, Anthropic 128k/Claude 5, and stale Groq/Moonshot/Ollama constants (#2530) (by gold-silver-copper) - #2530
- the parity gaps the ECS matrices found, closed — Gemini's block is a refusal, a truncated reasoning-only turn commits nothing, images ride the regrouped stream (#2509) (#2510) (by gold-silver-copper) - #2510
- (rig-ecs) a Retry written on an empty turn asks again instead of settling (#2504) (by gold-silver-copper)
- (core) restore the observe scrub helpers; a truncated stream is retryable (#2502) (by gold-silver-copper)
- (gemini, rig-ecs) retry transient provider failures inside the run; block_reason=OTHER is not a refusal (#2500) (by gold-silver-copper)
- [breaking] the merge review's defects on main, each pinned by a matrix (#2499) (by gold-silver-copper) - #2499
- (rig-cassette) restore start_at and checkpoint_recording for consumers that stage candidates (#2498) (by gold-silver-copper)
- (rig-reqwest) default-transport constructors return an error instead of panicking when the client cannot be built (#2471) (by gold-silver-copper)
- (openai-compatible) let llama.cpp receive an image in a tool result, plus two cassette-hygiene bugs (#2380) (by gold-silver-copper)
- (gemini) six cachedContents defects the follow-up audit found (#2379) (by gold-silver-copper)
Other
- [breaking] replace NonEmpty with Vec, check empty turns at the request boundary (#2640) (by gold-silver-copper) - #2640
- (caching) long-run cache coverage for realistic workloads on GPT-6 and Claude Opus 5 (#2633) (by gold-silver-copper)
- (rig-core) [breaking] the driver alone writes provider, request id and raw (#2626) (by gold-silver-copper)
- (cache) long-run cache proof and one cache cost report across providers (#2629) (by gold-silver-copper)
- [breaking] archimpro — one typed decoder and one fold per wire (#2617) (by gold-silver-copper) - #2617
- (rig-core) [breaking] a smaller model layer (Operation, Fold, Wire, Decoder, Transport) (#2613) (by gold-silver-copper)
- [breaking] provider clients own their transport; conversations use plain values (#2611) (by gold-silver-copper) - #2611
- faster local iteration (lean dev profile, local nextest profile) (#2610) (by gold-silver-copper) - #2610
- drop the issue-first, small-PR, and no-draft rules (#2602) (by gold-silver-copper) - #2602
- [breaking] remove duplicated tool and error surface from rig-core (#2589) (by gold-silver-copper) - #2589
- (rig-core) [breaking] classify every request-building failure as a request error (#2586) (by gold-silver-copper)
- (rig-core) [breaking] standardize modality request builders and unify GenAI spans (#2583) (by gold-silver-copper)
- (rig-core) [breaking] unify provider operation errors (#2582) (by gold-silver-copper)
- (cassette) guard history round-trips and fix Groq and Ollama replay (#2576) (by gold-silver-copper)
- finish the comment cleanup across the workspace (#2575) (by gold-silver-copper) - #2575
- (cassette) cover long native ECS tasks and cache accounting (#2573) (by gold-silver-copper)
- (ecs) pin every native cell to its own world golden (#2572) (by gold-silver-copper)
- (tests) stop comparing effect logs across runtimes in the ECS parity harness (#2571) (by gold-silver-copper)
- (providers) converge leftover provider mirrors onto shared owners (#2569) (by gold-silver-copper)
- simplify production comments and preserve contract rationale (#2568) (by gold-silver-copper) - #2568
- [breaking] establish host-owned assembly and execution lifetimes (#2567) (by gold-silver-copper) - #2567
- (ecs) [breaking] use one reflected content payload component (#2559) (by gold-silver-copper)
- [breaking] remove backwards-compatibility shims and rename aliases (#2557) (by gold-silver-copper) - #2557
- [breaking] consolidate record/replay in rig-cassette (#2552) (by gold-silver-copper) - #2552
- (tests) one raw-capture execution layer, one contract per wire format (#2551) (by gold-silver-copper)
- (tests) one cassette response-header reader, one raw-capture harness (#2549) (by gold-silver-copper)
- reduce agent context churn and verification retries (#2547) (by gold-silver-copper) - #2547
- Unify every provider onto one wire model (#2538) (by gold-silver-copper) - #2538
- [breaking] retire five clippy heuristics and unbox everything they made us write (#2536) (by gold-silver-copper) - #2536
- refactor!(ecs, providers): delete the ECS message cache, the second task/handler storage, and test-only wire→core conversions (#2534) (by gold-silver-copper) - #2534
- Revise agent guidelines and error handling rules (#2533) (by gold-silver-copper) - #2533
- shorten and de-duplicate agent-facing documentation (#2527) (by gold-silver-copper) - #2527
- a Bevy app — one pass per update, tasks and handlers as components, one RunPhase, split systems, reflected checkpoint (#2529) (by gold-silver-copper) - #2529
- delete the reflect and replay features and the source-shape guards (#2523) (by gold-silver-copper) - #2523
- (rig-ecs) delete duplicated scaffolding, lists and wrappers (#2522) (by gold-silver-copper)
- (ecs) give cassette harness IO an independent runtime (#2520) (by gold-silver-copper)
- use minimal local checks and CI-first PR verification (#2519) (by gold-silver-copper) - #2519
- Reduce test-suite compilation and duplicated fixtures (#2518) (by gold-silver-copper) - #2518
- (ecs) images through record, history, tool loop, memory and scene resume on four wires (#2512) (by gold-silver-copper)
- (ecs) pin reasoning across six provider wires (#2511) (by gold-silver-copper)
- the slow lanes run off the queue and on main; the ECS parity goldens as a named lane (#2508) (by gold-silver-copper) - #2508
- (ecs) the ECS contract under faults on six wires — setup, retryable statuses, truncated and error-bearing streams, refusals, failing tools, stops, scenes (#2503) (by gold-silver-copper)
- (ecs) the ECS contract on five more wires — OpenAI Chat, OpenAI Responses, Gemini, DeepSeek, Doubleword, Venice (#2501) (by gold-silver-copper)
- (cassette) make rig-cassette publishable (#2497) (by gold-silver-copper)
- [breaking] collapse the client machinery to Provider + Has* (#2441) (by gold-silver-copper) - #2441
- [breaking] provider types default to the erased transport; delete the alias tree (#2440) (by gold-silver-copper) - #2440
- [breaking] one run type in rig-agent (#2438) (by gold-silver-copper) - #2438
- [breaking] one response hook and one post-turn body in rig-agent (#2436) (by gold-silver-copper) - #2436
- freeze CHANGELOG.md and MIGRATING.md outside release PRs (#2435) (by gold-silver-copper) - #2435
- forbid inline test modules via cargo xtask check-test-layout (#2434) (by gold-silver-copper) - #2434
- move every inline test module to a sibling file (#2433) (by gold-silver-copper) - #2433
- [breaking] dissolve rig-run — the run vocabulary is rig-core's, AgentRun is rig_agent::run (#2432) (by gold-silver-copper) - #2432
- ownership audit themes 2–7 — 'static precision and clone hygiene; themes 3/5/6/7 dispositioned (#2431) (by gold-silver-copper) - #2431
- bound hygiene — raw Send/Sync in wasm-built code becomes precise (#2430) (by gold-silver-copper) - #2430
- [breaking] remove every backwards-compatibility shim (#2429) (by gold-silver-copper) - #2429
- [breaking] rig-reqwest API and hygiene cleanups (#2428) (by gold-silver-copper) - #2428
- generate the provider alias tree from rig-core's rustdoc output (#2427) (by gold-silver-copper) - #2427
- [breaking] make websockets transport-agnostic — protocol to rig-core, socket to rig-tungstenite (#2426) (by gold-silver-copper) - #2426
- [breaking] move the Discord integration out of the workspace (#2418) (by gold-silver-copper) - #2418
- ownership sweep round 4 — avoidable clones, dead public items, is_false dedup (#2416) (by gold-silver-copper) - #2416
- idiomatic Rust sweep, round 3 (#2411) (by gold-silver-copper) - #2411
- idiomatic Rust sweep, round 2 (#2410) (by gold-silver-copper) - #2410
- idiomatic Rust sweep across the workspace (#2409) (by gold-silver-copper) - #2409
- [breaking] confine reqwest to one transport module; auth flows go through HttpClientExt (#2396) (by gold-silver-copper) - #2396
- [breaking] purge reqwest types from rig-core's public error surface (#2395) (by gold-silver-copper) - #2395
- [breaking] kill direct tokio sync coupling in hot paths (#2394) (by gold-silver-copper) - #2394
- [breaking] ownership audit round 2 — borrow-shaped telemetry getters, slice-shaped embed seams, Copy usage types, dead Default/Debug transport bounds (#2392) (by gold-silver-copper) - #2392
- [breaking] ownership audit — borrow-shaped signatures, dead clones, clone_from in accumulators, minimal bounds (#2391) (by gold-silver-copper) - #2391
- (llamacpp, llamafile) bring all 53 ignored llama.cpp tests under recorded coverage (#2381) (by gold-silver-copper)
- (cache) a prompt-cache verification harness, and the two cache bugs it found (#2374) (by gold-silver-copper)
- (release) set release_always back to false (#2372) (by gold-silver-copper)