# Changelog

## Score

- CAI 58 → 60 (+1.8)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

## Lenses

- Code Health 95 → 95 (+0.0)
- Architecture 93 → 97 (+4.2)
- Maturity 63 → 63 (+0.0)
- Readiness 33 → 38 (+4.9)
- Security 100 → 100 (+0.0)

## Resolved (2)

- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)

## New (5)

- Ambiguous intent between download and start. 'download' creates a new task, while 'start' can either create a new task (from URL) or resume an existing one (from DownloadTask). This dual behavior for 'start' is confusing compared to the explicit 'download' method. Additionally, 'fetchTask' exists to retrieve an existing task, but there is no explicit 'resume' method, forcing users to use 'start' with an existing task object, which is semantically unclear.
- Coverage not measured — Swift suite
- Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
- Redundant overloads for URLConvertible vs DownloadTask. Similar to the Cache inconsistency, SessionManager exposes separate overloads for URLConvertible and DownloadTask for suspend, cancel, and remove operations. Since DownloadTask likely contains the URL or can be converted, and URLConvertible is a broader protocol, these overloads duplicate intent and increase maintenance burden without adding significant value.
- Redundant overloads for URLConvertible vs String. The API exposes separate method signatures for String and URLConvertible inputs for the same logical operations (getting path, URL, or checking existence). Since URLConvertible is a protocol that String conforms to, the String-specific overloads are redundant and create unnecessary API surface duplication.
