# Changelog

## Score

- CAI 49 → 43 (-5.8)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.15) — scores are not directly comparable.

## Lenses

- Code Health 72 → 84 (+11.5)
- Architecture 86 → 94 (+8.3)
- Maturity 57 → 58 (+0.7)
- Readiness 46 → 26 (-20.2)
- Security 52 → 46 (-5.8)

## Resolved (284)

- Attention.forward (cognitive 29) (TTS/tts/layers/tortoise/xtransformers.py)
- Attention.forward (cyclomatic 27) (TTS/tts/layers/tortoise/xtransformers.py)
- AttentionLayers.__init__ (cognitive 53) (TTS/tts/layers/tortoise/xtransformers.py)
- AttentionLayers.__init__ (cyclomatic 42) (TTS/tts/layers/tortoise/xtransformers.py)
- AttentionLayers.forward (cognitive 50) (TTS/tts/layers/tortoise/xtransformers.py)
- AttentionLayers.forward (cyclomatic 34) (TTS/tts/layers/tortoise/xtransformers.py)
- AudioProcessor.denormalize (cognitive 17) (TTS/utils/audio/processor.py)
- AudioProcessor.normalize (cognitive 17) (TTS/utils/audio/processor.py)
- AugmentWAV.__init__ (cognitive 24) (TTS/encoder/utils/generic_utils.py)
- BaseTTS.get_aux_input_from_test_sentences (cognitive 19) (TTS/tts/models/base_tts.py)
- BaseTTS.get_data_loader (cognitive 51) (TTS/tts/models/base_tts.py)
- BaseTTS.get_data_loader (cyclomatic 21) (TTS/tts/models/base_tts.py)
- BaseTTS.get_sampler (cognitive 17) (TTS/tts/models/base_tts.py)
- BaseVC.get_aux_input_from_test_sentences (cognitive 19) (TTS/vc/models/base_vc.py)
- BaseVC.get_data_loader (cognitive 51) (TTS/vc/models/base_vc.py)
- BaseVC.get_data_loader (cyclomatic 21) (TTS/vc/models/base_vc.py)
- BaseVC.get_sampler (cognitive 17) (TTS/vc/models/base_vc.py)
- BaseVocoder._set_model_args (cognitive 22) (TTS/vocoder/models/base_vocoder.py)
- Change coupling: train_aligntts.py ↔ train_glowtts.py (recipes/ljspeech/align_tts/train_aligntts.py)
- Change coupling: train_fast_pitch.py ↔ train_speedy_speech.py (recipes/ljspeech/fast_pitch/train_fast_pitch.py)
- …and 264 more

## New (44)

- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (10 lines × 2) (tests/aux_tests/test_audio_processor.py)
- Duplicated block (10 lines × 2) (tests/tts_tests/test_vits.py)
- Duplicated block (11 lines × 2) (TTS/vc/modules/freevc/wavlm/modules.py)
- Duplicated block (12 lines × 2) (TTS/tts/models/vits.py)
- Duplicated block (13 lines × 2) (TTS/utils/manage.py)
- Duplicated block (13 lines × 2) (TTS/utils/synthesizer.py)
- Duplicated block (13 lines × 2) (tests/data_tests/test_loader.py)
- Duplicated block (13 lines × 4) (tests/tts_tests/test_tacotron_model.py)
- Duplicated block (14 lines × 2) (tests/tts_tests/test_tacotron2_model.py)
- Duplicated block (16 lines × 3) (TTS/tts/layers/xtts/stream_generator.py)
- Duplicated block (20 lines × 2) (TTS/tts/layers/xtts/stream_generator.py)
- Duplicated block (27 lines × 2) (TTS/tts/models/glow_tts.py)
- Duplicated block (5 lines × 2) (TTS/tts/models/forward_tts.py)
- Duplicated block (5 lines × 2) (tests/tts_tests2/test_glow_tts.py)
- Duplicated block (6 lines × 2) (tests/tts_tests/test_tacotron_model.py)
- Duplicated block (7 lines × 2) (tests/aux_tests/test_audio_processor.py)
- Duplicated block (7 lines × 3) (tests/text_tests/test_characters.py)
- Duplicated block (8 lines × 2) (tests/aux_tests/test_audio_processor.py)
- …and 24 more
