# Changelog

## Baseline

- First survey — no prior run to compare against. CAI 72.

## Lenses

- Code Health 93
- Architecture 98
- Maturity 79
- Readiness 56
- Security 92
- Event Sourcing 100

## Changes since last survey

- 153 commits — 94 feature/other, 59 fixes

## By area

- crates/ai-client — 36 commits
- (root) — 20 commits
- crates/ai-comfyui — 14 commits
- crates/ai-comfy-env — 13 commits
- docs/research — 13 commits
- crates/ai-egui — 9 commits
- crates/ai-features — 7 commits
- crates/ai-engine-rten — 5 commits
- crates/ai-core — 4 commits
- tools/mutation — 4 commits
- .github/workflows — 3 commits
- crates/ai-engine-candle — 3 commits
- crates/ai-native — 3 commits
- crates/ai-engine-burn — 2 commits
- crates/ai-http — 2 commits
- crates/ai-media — 2 commits
- crates/ai-model — 2 commits
- crates/ai-openai — 2 commits
- (repo) — 1 commit
- .github/dependabot.yml — 1 commit

## Notable commits

- fix: Revert "ci: use SonarCloud automatic analysis only (#159)" (#162)
- fix: ci: test on macOS, and a manual job for the deliberate-bug checks (#30)
- fix: fix(ai): use BytePlus ModelArk for Seedance
- fix: fix(ai-client): a stale form save no longer restores a withdrawn declaration
- fix: fix(ai-client): bind sample approval to reviewed disclosure (#117)
- fix: fix(ai-client): change a model and its tool choice in one shared operation
- fix: fix(ai-client): check counts, addresses and start against the route
- fix: fix(ai-client): keep declarations and refused routes consistent in assignments
- fix: fix(ai-client): keep declared inputs and later-listed models across saves
- fix: fix(ai-client): keep every recipe's setup link, and refuse a clashing connection id (#67)
- fix: fix(ai-client): keep linked model folders out of downloads (#109)
- fix: fix(ai-client): refuse a choice the app cannot run at plan, and test the third-party path (#38)
- fix: fix(ai-client): refuse options and adapterless choices before consent
- fix: fix(ai-client): reject plans belonging to another app (#118)
- fix: fix(ai-client): reject stale saved model probe results (#119)
- fix: fix(ai-client): report what this build can run apart from what is saved
- fix: fix(ai-client): save writes the key under the file lock so concurrent saves cannot swap or delete each other's key
- fix: fix(ai-client): show a local file's measured size in the consent prompt (#121)
- fix: fix(ai-client): write a new key outside the file lock, into a slot of its own
- fix: fix(ai-comfy-env): allow GitHub release metadata API host (#56)
- …and 133 more
