# Changelog

## Score

- CAI 46 → 42 (-3.7)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.15) — scores are not directly comparable.

## Lenses

- Code Health 91 → 97 (+5.5)
- Architecture 69 → 69 (+0.0)
- Maturity 48 → 49 (+0.9)
- Readiness 26 → 17 (-9.2)
- Security 100 → 100 (+0.0)

## Resolved (15)

- Change coupling: TraceableEventDispatcher.php ↔ ImmutableEventDispatcher.php (Debug/TraceableEventDispatcher.php)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (9 lines × 2) (EventDispatcher.php)
- EventDispatcher.getListenerPriority (cognitive 20) (EventDispatcher.php)
- EventDispatcher.getListenerPriority (cyclomatic 16) (EventDispatcher.php)
- EventDispatcher.optimizeListeners (cognitive 18) (EventDispatcher.php)
- EventDispatcher.removeListener (cognitive 22) (EventDispatcher.php)
- EventDispatcher.removeListener (cyclomatic 17) (EventDispatcher.php)
- Further orphaned files (smaller)
- RegisterListenersPass.process (cognitive 68) (DependencyInjection/RegisterListenersPass.php)
- RegisterListenersPass.process (cyclomatic 35) (DependencyInjection/RegisterListenersPass.php)
- The README links only to Symfony's external docs (event_dispatcher.html, contributing/index.html) and GitHub repos; it does not describe how EventDispatcher is used within the component. (README.md)
- TraceableEventDispatcher.getNotCalledListeners (cognitive 18) (Debug/TraceableEventDispatcher.php)
- TraceableEventDispatcher.postProcess (cognitive 20) (Debug/TraceableEventDispatcher.php)

## New (5)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (19 lines × 2) (Tests/DependencyInjection/RegisterListenersPassTest.php)
- Duplicated block (7 lines × 2) (Tests/Debug/TraceableEventDispatcherTest.php)
- No tests found
