# Changelog

## Score

- CAI 47 → 58 (+11.0)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.

## Lenses

- Code Health 91 → 83 (-7.5)
- Architecture 94 → 98 (+3.6)
- Maturity 54 → 52 (-1.4)
- Readiness 17 → 42 (+25.7)
- Security 100 → 100 (+0.0)

## Resolved (21)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (10 lines × 2) (Loader/ContentLoaderTrait.php)
- Duplicated block (10 lines × 2) (Matcher/Dumper/CompiledUrlMatcherDumper.php)
- Duplicated block (15 lines × 2) (Tests/RouteCompilerTest.php)
- Duplicated block (20 lines × 3) (Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php)
- Duplicated block (21 lines × 5) (Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php)
- Duplicated block (34 lines × 2) (Tests/Generator/UrlGeneratorTest.php)
- Duplicated block (5 lines × 2) (Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php)
- Duplicated block (5 lines × 2) (Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php)
- Duplicated block (6 lines × 2) (Tests/Loader/Psr4DirectoryLoaderTest.php)
- Duplicated block (6 lines × 2) (Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php)
- Duplicated block (6 lines × 2) (Tests/Matcher/RedirectableUrlMatcherTest.php)
- Duplicated block (7 lines × 2) (Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php)
- Duplicated block (7 lines × 2) (Tests/Matcher/Dumper/CompiledUrlMatcherDumperTest.php)
- Duplicated block (7 lines × 2) (Tests/RouteTest.php)
- Duplicated block (8 lines × 2) (Tests/Matcher/UrlMatcherTest.php)
- Duplicated block (8 lines × 2) (Tests/RouteCollectionTest.php)
- No exposed public API
- No tests found
- …and 1 more

## New (64)

- AttributeClassLoader.addRoute (cognitive 52) (Loader/AttributeClassLoader.php)
- AttributeClassLoader.addRoute (cyclomatic 29) (Loader/AttributeClassLoader.php)
- AttributeClassLoader.getGlobals (cognitive 25) (Loader/AttributeClassLoader.php)
- AttributeClassLoader.load (cognitive 31) (Loader/AttributeClassLoader.php)
- AttributeClassLoader.load (cyclomatic 20) (Loader/AttributeClassLoader.php)
- AttributeFileLoader.findClass (cognitive 39) (Loader/AttributeFileLoader.php)
- AttributeFileLoader.findClass (cyclomatic 20) (Loader/AttributeFileLoader.php)
- Change coupling: CollectionConfigurator.php ↔ ImportConfigurator.php (Loader/Configurator/CollectionConfigurator.php)
- CompiledUrlGeneratorDumper.getCompiledAliases (cognitive 16) (Generator/Dumper/CompiledUrlGeneratorDumper.php)
- CompiledUrlMatcherTrait.doMatch (cognitive 121) (Matcher/Dumper/CompiledUrlMatcherTrait.php)
- CompiledUrlMatcherTrait.doMatch (cyclomatic 61) (Matcher/Dumper/CompiledUrlMatcherTrait.php)
- ContentLoaderTrait.parseImport (cognitive 21) (Loader/ContentLoaderTrait.php)
- ContentLoaderTrait.parseImport (cyclomatic 16) (Loader/ContentLoaderTrait.php)
- ContentLoaderTrait.validate (cyclomatic 16) (Loader/ContentLoaderTrait.php)
- Dependency hygiene PARTLY measured — Composer dependencies read, no committed lock to grade for currency
- Duplicated block (10 lines × 2) (Loader/ContentLoaderTrait.php)
- Duplicated block (13 lines × 2) (Matcher/TraceableUrlMatcher.php)
- Duplicated block (6 lines × 2) (Generator/CompiledUrlGenerator.php)
- Duplicated block (8 lines × 2) (Loader/ContentLoaderTrait.php)
- Duplicated block (9 lines × 2) (Matcher/TraceableUrlMatcher.php)
- …and 44 more

## Changes since last survey

- 26 commits — 26 feature/other, 0 fixes

## By area

- (repo) — 10 commits
- (root) — 10 commits
- Generator/UrlGenerator.php — 2 commits
- DependencyInjection/RoutingResolverPass.php — 1 commit
- Tests/Generator — 1 commit
- Tests/Loader — 1 commit
- Tests/Matcher — 1 commit

## Notable commits

- change: Check arrays and bools directly instead of comparing them to count()/true/false/[]
- change: Check arrays and bools directly instead of comparing them to count()/true/false/[]
- change: Merge branch '6.4' into 7.4
- change: Merge branch '6.4' into 7.4
- change: Merge branch '7.4' into 8.1
- change: Merge branch '7.4' into 8.1
- change: Merge branch '7.4' into 8.1
- change: Merge branch '8.1' into 8.2
- change: Merge branch '8.1' into 8.2
- change: Merge branch '8.1' into 8.2
- change: [BrowserKit][HttpClient][Routing] Don't pass objects to http_build_query()
- change: [FrameworkBundle] Collapse what the bundle split left repetitive
- change: [FrameworkBundle] Move the passes and commands that act on another package to that package
- change: [FrameworkBundle][Cache][Routing][Translation] Move the classes CacheBundle, RouterBundle and TranslationBundle wire into their own components
- change: [FrameworkBundle][Routing][Translation][TwigBundle] Move the last classes the components name into their own packages
- change: [HttpKernel][Routing] Perform scheme redirects before any other listener runs
- change: [Routing] Add a test about removing default query params
- change: [Routing] Add addCondition() to combine a condition with the existing ones
- change: [Routing] Allow defining default query parameters
- change: [Routing] Reject "_firewall" as a host parameter
- …and 6 more
