# Changelog

## Baseline

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

## Lenses

- Code Health 30
- Architecture 97
- Maturity 89
- Readiness 56
- Security 82
- Domain Modelling 100
- Accessibility 63

## Changes since last survey

- 300 commits — 282 feature/other, 18 fixes

## By area

- src/protean — 122 commits
- (root) — 44 commits
- docs/reference — 18 commits
- docs/adr — 15 commits
- .github/workflows — 10 commits
- tests/adapters — 8 commits
- tests/ir — 8 commits
- docs/guides — 7 commits
- tests/server — 5 commits
- .claude/skills — 4 commits
- tests/eval — 4 commits
- .github/dependabot.yml — 3 commits
- docs/assets — 3 commits
- examples/reference_app — 3 commits
- specs/traces — 2 commits
- tests/cli — 2 commits
- tests/outbox — 2 commits
- tests/verification — 2 commits
- (repo) — 1 commit
- .github/actions — 1 commit

## Notable commits

- fix: 0.16.1 bug fixes: IR staleness checksum (#1012), restore testing helpers (#1011) (#1022)
- fix: Add a Decimal field type for fixed-precision values (#1038) (#1045)
- fix: Advance the aggregate root's version on a child-only edit (fix silent lost update) (#1246)
- fix: Deprecate Method/Nested fields and List(pickled=); fix VO-list migration docs (#1176)
- fix: Fix Dependabot grouping: drop update-types filter that split requirement updates (#1171)
- fix: Fix GHCR auth in the mirror workflow (#1085)
- fix: Fix Outbox composite unique index for multi-broker dual-write (#1009) (#1016)
- fix: Fix Redis remove_by_key_pattern raising when a pattern matches nothing (#1419)
- fix: Fix event-sourced repository identity-map fast-path (found via mutation testing) (#1126)
- fix: Fix lost updates in the Memory adapter's optimistic locking (#1258) (#1264)
- fix: Fix protean new event_stores/event_store scaffold drift; document config keys (#1190)
- fix: Fix reconcile_outbox no-op on Message-DB category streams (#1075)
- fix: Fix the first-run bugs, and the cache TTL bug hiding behind one of them (#1304)
- fix: Fix what would have shipped broken in 0.17.0, and declare the breaks (#1309)
- fix: Let application services take constructor arguments, and fix the Redis TTL unit (#1311)
- fix: Make the SQLAlchemy OCC version check atomic (fix silent lost updates) (#1244)
- fix: Remove orphaned logging.toml scaffold, fix stranded LOG_LEVEL env vars (#1380)
- fix: fix: make generated example domain traversable (#1317)
- change: Accept transient-retry options on projectors (#1076) (#1082)
- change: Add "Evolving events over time" guide consolidating the 3.4 workflow (#1136) (#1158)
- …and 280 more
