# Changelog

> **This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.**

## Score

- CAI 67 → 68 (+0.6)
- Rubric changed (rubric-2026.08.17 → rubric-2026.08.18) — scores are not directly comparable.

## Lenses

- Code Health 90 → 90 (+0.2)
- Architecture 84 → 84 (+0.0)
- Maturity 77 → 82 (+5.5)
- Readiness 60 → 60 (+0.0)
- Security 68 → 69 (+0.8)
- Performance 75 → 75 (+0.0)

## Resolved (13)

- Coverage not measured — test suite did not build
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- ObsoleteWithoutCallers (BookLibrary.Domain/Aggregates/Abonents/Abonent.cs)
- ObsoleteWithoutCallers (BookLibrary.Domain/Aggregates/Abonents/ValueObjects/AbonentName.cs)
- ObsoleteWithoutCallers (BookLibrary.Domain/Aggregates/Books/Book.cs)
- ObsoleteWithoutCallers (BookLibrary.Domain/Aggregates/Books/ValueObjects/Author.cs)
- ObsoleteWithoutCallers (BookLibrary.Domain/Aggregates/Books/ValueObjects/BorrowInfo.cs)
- The entity 'Abonent' is used in the domain model, but the namespace is 'Abonents' (plural) while other aggregates like 'Books' are singular in the namespace but the type is 'Book'. This is a minor inconsistency in pluralization of namespaces vs singular types, but the main issue is the spelling of 'Abonent'.
- The entity type is named 'Abonent' (likely a typo for 'Abonement' or 'Subscriber'), while the corresponding ID type is named 'AbonentId'. The root noun 'Abonent' is non-standard and likely incorrect English.
- redundant comment (BookLibrary.Infrastructure/InfrastructureModule.cs)

## New (18)

- BarePragmaDisable (BookLibrary.Domain/Aggregates/Abonents/Abonent.cs)
- BarePragmaDisable (BookLibrary.Domain/Aggregates/Abonents/ValueObjects/AbonentName.cs)
- BarePragmaDisable (BookLibrary.Domain/Aggregates/Books/Book.cs)
- BarePragmaDisable (BookLibrary.Domain/Aggregates/Books/ValueObjects/Author.cs)
- BarePragmaDisable (BookLibrary.Domain/Aggregates/Books/ValueObjects/BorrowInfo.cs)
- Coverage not measured — test suite did not build
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- Inconsistency in the term for 'Abonent'/'Abonnement'. The domain aggregate is 'Abonent', but a related concept is 'Abonement'. This suggests a potential confusion between the person (Abonent) and the subscription/contract (Abonnement/Abonement).
- NoWarnInCsproj (Directory.Build.props)
- NoWarnInCsproj (Directory.Build.props)
- NoWarnInCsproj (Directory.Build.props)
- NoWarnInCsproj (Directory.Build.props)
- Solution references a project that does not exist (BookLibrary.sln)
- The method 'GetAbonenementAsync' contains a typo ('Abonenement' instead of 'Abonent' or 'Abonnement').
- The term 'Abonent' is used for the entity, but the event is misspelled as 'AbonentRegistredEvent' (missing 'e' in Registered). Additionally, the namespace uses 'Abonents' (plural) while the type is 'Abonent' (singular).

## API surface

- Unchanged — 10 HTTP endpoints
