# Changelog

## Score

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

## Lenses

- Code Health 79 → 94 (+14.6)
- Architecture 99 → 96 (-3.1)
- Maturity 43 → 34 (-9.0)
- Readiness 64 → 27 (-37.1)
- Security 94 → 89 (-5.1)

## Resolved (42)

- ApiGen.parse (cognitive 31) (src/Documentation/ApiGen.php)
- BlackjackCommand.execute (cognitive 34) (src/Command/BlackjackCommand.php)
- BlackjackCommand.execute (cyclomatic 30) (src/Command/BlackjackCommand.php)
- Boundary-crossing change coupling: ProcessRunner.php ↔ SshClient.php (src/ProcessRunner/ProcessRunner.php)
- Change coupling: Worker.php ↔ functions.php (src/Executor/Worker.php)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Deployer.run (cognitive 18) (src/Deployer.php)
- DocGen.gen (cognitive 137) (src/Documentation/DocGen.php)
- DocGen.gen (cyclomatic 49) (src/Documentation/DocGen.php)
- DocRecipe.parse (cognitive 67) (src/Documentation/DocRecipe.php)
- DocRecipe.parse (cyclomatic 25) (src/Documentation/DocRecipe.php)
- Duplicated block (14 lines × 2) (src/functions.php)
- Duplicated block (9 lines × 2) (src/Import/MamlRecipe.php)
- Further orphaned files (smaller)
- Further sole-owners (lower concentration)
- Hotspot: src/Command/BlackjackCommand.php (src/Command/BlackjackCommand.php)
- IOArguments.collect (cognitive 16) (src/Ssh/IOArguments.php)
- Logger.renderException (cognitive 35) (src/Logger/Logger.php)
- MainCommand.execute (cognitive 20) (src/Command/MainCommand.php)
- …and 22 more

## New (11)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- DocGen.gen (cognitive 63) (DocGen)
- DocGen.gen (cyclomatic 23) (DocGen)
- Duplicated block (5 lines × 2) (src/Import/MamlRecipe.php)
- Low IaC: DS-0026 (Dockerfile)
- Master.run (cognitive 77) (Master)
- Master.run (cyclomatic 26) (Master)
- No artifact signing
- No tests found
- The Tasks document mentions task() and desc() but does not explain how to fetch an existing task or chain config on it as shown in the example. (docs/tasks.md)
