# Changelog

## Score

- CAI 53 → 59 (+6.2)
- Rubric changed (rubric-2026.09.9 → rubric-2026.09.17) — scores are not directly comparable.

## Lenses

- Code Health 82 → 82 (+0.0)
- Architecture 100 → 90 (-10.4)
- Maturity 55 → 55 (-0.7)
- Readiness 49 → 69 (+19.5)
- Security 43 → 53 (+9.5)

## Resolved (1)

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

## New (13)

- Duplicate intent with different names. `DropOnBackpressure` and `DropOnBackpressureWriter` appear to be duplicates.
- Duplicate intent with different names. `ExitOnSpecificByte` and `ExitOnSpecificByteReader` appear to be duplicates.
- Duplicate intent with different names. `Literal` and `LiteralPeer` both appear to represent a peer that outputs a literal byte. The existence of both suggests either a legacy type (`Literal`) and a new one (`LiteralPeer`), or a confusion between the concept and the implementation. The module `trivial_peer` contains both `Literal` and `LiteralPeer` as well as `Clogged` and `CloggedPeer`.
- Duplicate intent with different names. `Random` and `RandomReader` likely represent the same functionality (generating random data). The suffix 'Reader' is redundant if the type itself is a Peer (which implies reading/writing).
- Inconsistent naming convention for file operations. 'ReadFile' and 'WriteFile' follow a Verb-Noun pattern, while 'AppendFile' uses a Verb-Noun pattern but semantically 'Append' is a mode of writing, not a distinct noun like 'Read'. More importantly, 'AppendFile' breaks the symmetry with 'WriteFile' if the intent is to represent file access modes. If these are distinct peer types, they should likely be unified or named consistently (e.g., FileRead, FileWrite, FileAppend or FilePeer with a mode enum).
- Inconsistent naming for WebSocket client connections. `WsClient` and `WsClientSecure` are named as nouns (the client itself), while `WsConnect` is named as a verb/action. If `WsConnect` is a peer type, it should be named `WsClientPeer` or similar to match `WsClient`. If `WsClient` is the high-level API and `WsConnect` is the low-level peer, the naming distinction is confusing without clear documentation, but structurally they look like overlapping concepts in the same module.
- Outdated: flate2
- Outdated: libc
- Outdated: log
- Outdated: native-tls
- Outdated: tempfile
- Poor naming convention for configuration stages. Using numeric suffixes (1, 2, 3) implies a temporal or sequential state that is not immediately obvious from the type name. It is unclear what distinguishes them other than the fields (addr1/addr2 vs s1/s2 vs Rc). This makes the API hard to use correctly without reading the source.
- Projects may be oversized for their cohesion
