# Changelog

## Score

- CAI 64 → 68 (+4.0)
- Rubric changed (rubric-2026.09.9 → rubric-2026.09.17) — scores are not directly comparable.

## Lenses

- Code Health 87 → 88 (+0.8)
- Architecture 100 → 97 (-3.0)
- Maturity 66 → 66 (-0.0)
- Readiness 49 → 58 (+8.3)
- Security 79 → 79 (+0.1)
- Domain Modelling 99 → 100 (+1.4)
- Event Sourcing 100 → 100 (+0.0)
- Performance 100 (new)

## Resolved (169)

- AnthropicAdapter::interpret_content (cognitive 39) (crates/rig-core/src/providers/anthropic/streaming.rs)
- AnthropicAdapter::interpret_content (cyclomatic 26) (crates/rig-core/src/providers/anthropic/streaming.rs)
- BlockAccumulator::reasoning_end (cognitive 21) (crates/rig-core/src/streaming/accumulator.rs)
- BlockAccumulator::tool_end (cognitive 28) (crates/rig-core/src/streaming/accumulator.rs)
- BlockAccumulator::tool_end (cyclomatic 19) (crates/rig-core/src/streaming/accumulator.rs)
- Buffered::poll (cognitive 28) (crates/rig-ecs/src/bus/delivery.rs)
- Buffered::poll (cyclomatic 18) (crates/rig-ecs/src/bus/delivery.rs)
- CassetteScrubber::scrub_json_value (cognitive 68) (crates/rig-cassette/src/lib.rs)
- CassetteScrubber::scrub_json_value (cyclomatic 32) (crates/rig-cassette/src/lib.rs)
- Change coupling: lib.rs ↔ lib.rs (crates/rig-sqlite/src/lib.rs)
- ClassTooLong: StreamedTurnAssembler (crates/rig-agent/src/run/streamed.rs)
- ClassTooLong: StreamingTurnSource (crates/rig-agent/src/agent/engine.rs)
- CohereAdapter::interpret (cognitive 35) (crates/rig-core/src/providers/cohere/streaming.rs)
- CohereAdapter::interpret (cyclomatic 24) (crates/rig-core/src/providers/cohere/streaming.rs)
- CompatAdapter::interpret (cognitive 32) (crates/rig-core/src/providers/internal/openai_chat_completions_compatible.rs)
- CompatAdapter::interpret (cyclomatic 24) (crates/rig-core/src/providers/internal/openai_chat_completions_compatible.rs)
- CompletionModel::stream_with_context (cognitive 21) (crates/rig-core/src/providers/ollama.rs)
- CompletionRequest::validate_message_content (cognitive 17) (crates/rig-core/src/completion/request.rs)
- CompletionResponse::normalize (cognitive 30) (crates/rig-core/src/providers/openrouter/completion.rs)
- CompletionResponse::try_from (cognitive 19) (crates/rig-vertexai/src/types/completion_response.rs)
- …and 149 more

## New (190)

- Banned license: epub
- BinaryAssets::resolve (cognitive 17) (crates/rig-ecs/src/agent/content/binary.rs)
- Buffered::poll (cognitive 26) (crates/rig-cassette/src/ecs/delivery.rs)
- Buffered::poll (cyclomatic 17) (crates/rig-cassette/src/ecs/delivery.rs)
- Caching::send (cognitive 23) (crates/rig-core/src/client/gemini_caching.rs)
- Caching::send (cyclomatic 19) (crates/rig-core/src/client/gemini_caching.rs)
- CassetteScrubber::scrub_json_value (cognitive 18) (crates/rig-cassette/src/http/mod.rs)
- Change coupling: mod.rs ↔ streaming.rs (crates/rig-core/src/providers/copilot/mod.rs)
- Change coupling: streaming.rs ↔ streaming.rs (crates/rig-bedrock/src/streaming.rs)
- Change coupling: streaming.rs ↔ streaming.rs (crates/rig-bedrock/src/streaming.rs)
- Change-coupling hub: lib.rs → lib.rs, lib.rs, lib.rs (crates/rig-postgres/src/lib.rs)
- Change-coupling hub: lib.rs → lib.rs, lib.rs, lib.rs (crates/rig-surrealdb/src/lib.rs)
- Change-coupling hub: lib.rs → lib.rs, lib.rs, lib.rs, lib.rs, lib.rs (crates/rig-scylladb/src/lib.rs)
- ChatDecoder::interpret_chunk (cognitive 21) (crates/rig-core/src/providers/openai/wire/chat.rs)
- ChatDecoder::interpret_stream (cognitive 17) (crates/rig-core/src/providers/cohere/streaming.rs)
- Documentation: no architecture or design documentation (crates/rig-fastembed/README.md)
- Documentation: no installation or build instructions (crates/rig-fastembed/README.md)
- Documentation: no installation or build instructions (crates/rig-scylladb/README.md)
- Documentation: no project overview (README.md)
- Documentation: no project overview (crates/rig-fastembed/README.md)
- …and 170 more

## Changes since last survey

- 67 commits — 53 feature/other, 14 fixes

## By area

- crates/rig-cassette — 16 commits
- crates/rig-core — 13 commits
- crates/rig-verify — 11 commits
- crates/rig-ecs — 8 commits
- (root) — 7 commits
- tests/providers — 4 commits
- tests/cassettes — 2 commits
- xtask/src — 2 commits
- crates/rig-agent — 1 commit
- crates/rig-candle — 1 commit
- crates/rig-neo4j — 1 commit
- crates/rig-typesafeai — 1 commit

## Notable commits

- fix: fix!: the merge review's defects on main, each pinned by a matrix (#2499)
- fix: fix(core)!: redact resolved credentials and encoded request diagnostics (#2546)
- fix: fix(core): restore the observe scrub helpers; a truncated stream is retryable (#2502)
- fix: fix(gemini, rig-ecs): retry transient provider failures inside the run; block_reason=OTHER is not a refusal (#2500)
- fix: fix(rig-cassette): restore start_at and checkpoint_recording for consumers that stage candidates (#2498)
- fix: fix(rig-ecs): a Retry written on an empty turn asks again instead of settling (#2504)
- fix: fix: Responses strict:false, Anthropic 128k/Claude 5, and stale Groq/Moonshot/Ollama constants (#2530)
- fix: fix: honour the WASM bounds in every vector store (#2545)
- fix: fix: lenient Responses metadata decode (top_p) and valid rig-postgres search SQL (#2531)
- fix: fix: publish the facade, not the repository — and stop asking for dependencies nothing uses (#2563)
- fix: fix: recover from malformed streamed tool arguments, preserve Responses compaction/phase, drop the tool_macro alias (#2532)
- fix: fix: repair eleven downstream consumer conformance defects (#2561)
- fix: fix: 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)
- fix: test(cassette): guard history round-trips and fix Groq and Ollama replay (#2576)
- change: Reduce test-suite compilation and duplicated fixtures (#2518)
- change: Revise agent guidelines and error handling rules (#2533)
- change: Unify every provider onto one wire model (#2538)
- change: chore(cassette): make rig-cassette publishable (#2497)
- change: chore: faster local iteration (lean dev profile, local nextest profile) (#2610)
- change: ci: the slow lanes run off the queue and on main; the ECS parity goldens as a named lane (#2508)
- …and 47 more
