# Changelog

## Score

- CAI 44 → 52 (+8.5)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

## Lenses

- Code Health 100 → 100 (-0.3)
- Architecture 69 → 69 (+0.0)
- Maturity 35 → 54 (+18.9)
- Readiness 26 → 33 (+7.7)
- Security 100 → 100 (+0.0)

## Resolved (8)

- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- No exposed public API
- Test reliability not included
- early-stage repository — too little history to judge knowledge freshness
- git history depth insufficient
- git history depth insufficient
- single-maintainer — knowledge-concentration (bus factor) risk

## New (8)

- Dependency hygiene PARTLY measured — Composer dependencies read, no committed lock to grade for currency
- Documentation: no architecture or design documentation (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (9 lines × 2) (src/EventDispatcher.php)
- Inconsistent naming and signature for core message handling logic. Both classes have a method named 'messageHandler' but they accept different argument types (object vs Message) and return different types (?string vs Message). This suggests a lack of a common interface or base class for message processing, leading to confusingly similar names with different contracts.
- Redundant setter method across distinct aggregate roots. Both EventDispatcher and ListenerProvider expose an identical setter for 'MessageProvider'. Given that these are likely related components in the same event-driven system, having the same configuration method on two different top-level types creates API surface duplication and potential confusion about where the provider should be set.
- Skipped (documented): test_Coming_Soon (tests/Unit/EventDispatcherTest.php)
- Skipped (documented): test_Coming_Soon (tests/Unit/ListenerProviderTest.php)
