# Changelog

## Score

- CAI 62 → 64 (+2.0)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

## Lenses

- Code Health 97 → 96 (-1.3)
- Architecture 100 → 97 (-2.6)
- Maturity 55 → 55 (+0.0)
- Readiness 55 → 59 (+4.0)
- Security 57 → 71 (+14.3)

## Resolved (2)

- Documentation: no installation or build instructions (README.md)
- Documentation: no licence statement (README.md)

## New (8)

- Ambiguous intent for single-document retrieval. `singleRoot` implies a strict guarantee of exactly one root, while `nextRoot` implies an iterator pattern (getting the next one). If the input contains multiple documents, `nextRoot` returns the first, but the name suggests iteration. If the intent is to parse a single-document YAML string, `singleRoot` is clearer. If the intent is to parse the first document from a stream, `nextRoot` is misleading if it doesn't support subsequent calls effectively or if `load_all` is the intended path for streams.
- Confusing and inconsistent parameter naming for configuration. Some overloads use `configuration: DecodingConfiguration` while others use `configuration: Type`. The latter is highly misleading as `Type` is not a configuration object but a type parameter (likely a typo in the signature description or a very poor naming choice for a `DecodingConfiguration` or `CodingUserInfoKey` wrapper). It creates ambiguity: is the second argument a config object or a type?
- Duplicated block (6 lines × 2) (Sources/Yams/Emitter.swift)
- Duplicated block (7 lines × 4) (Sources/Yams/Emitter.swift)
- Duplicated block (8 lines × 2) (Sources/Yams/Representer.swift)
- Inconsistent naming for serialization operations. `dump` and `serialize` are used interchangeably for similar low-level emission tasks. `dump` takes `Any`/`Objects` (high-level), while `serialize` takes `Node`/`Nodes` (low-level). However, the `Emitter` class itself has a `serialize(node: Node)` method. This creates a confusion between the class method `Emitter.serialize` and the extension method `Emitter.swift.serialize`. Users might not know which to use.
- Low coverage: Sources/Yams/Node.Alias.swift (Sources/Yams/Node.Alias.swift)
- Members sharing a duplicated core (6 members, 50+ identical tokens) (Sources/Yams/Emitter.swift)
