# Changelog

## Score

- CAI 39 → 40 (+1.5)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

## Lenses

- Code Health 97 → 97 (+0.2)
- Architecture 66 → 90 (+24.4)
- Maturity 20 → 20 (+0.6)
- Readiness 24 → 21 (-3.1)
- Security 100 → 100 (+0.0)

## Resolved (1)

- Hotspot: Sources/MarqueeLabel.swift (Sources/MarqueeLabel.swift)

## New (4)

- Ambiguous lifecycle methods. `restartLabel`, `resetLabel`, and `shutdownLabel` have unclear distinctions. `resetLabel` might imply clearing state, while `restartLabel` implies re-triggering animation. `shutdownLabel` implies cleanup. Without clear documentation, these names are likely to be used interchangeably by developers, leading to inconsistent behavior.
- Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
- Overloaded method `sizeThatFits` with a boolean flag that changes behavior significantly (including/excluding buffers). This is confusing because `sizeThatFits` is a standard UIKit protocol method that should generally return the intrinsic size. The second overload suggests a non-standard calculation.
- Redundant operations for restarting labels associated with a view controller. One takes a direct reference, the other takes a Notification, but the intent (restarting labels for a VC) is identical. The Notification variant likely wraps the VC reference, creating an unnecessary API surface duplication.
