# Changelog

## Score

- CAI 37 → 42 (+4.4)
- Rubric changed (rubric-2026.08.17 → rubric-2026.08.18) — scores are not directly comparable.

## Lenses

- Code Health 57 → 53 (-3.5)
- Architecture 86 → 86 (+0.0)
- Maturity 56 → 56 (+0.0)
- Readiness 29 → 36 (+7.5)
- Security 33 → 38 (+4.9)
- Domain Modelling 45 → 45 (+0.0)
- Event-Driven 84 → 84 (+0.0)

## Resolved (11)

- Coverage not measured — analyzer environment
- Inconsistent event naming for product transactions. One event uses 'Purchased' while the other uses 'Sold' for what appears to be the same domain concept (a product transaction).
- Inconsistent naming for bus interfaces and implementations. Some use 'Bus' (ICommandBus, IQueryBus) while others use 'Bus' in the implementation (CommandBus, QueryBus). However, the interface names are consistent, but the implementation names differ in casing/style or location.
- Inconsistent naming for email-related configuration/parameters. 'EmailSettings' suggests configuration, while 'EmailParams' suggests runtime parameters. If they serve similar purposes, the names are confusingly different.
- Inconsistent naming for line item events. 'ProductSoldLineItem' and 'ProductPurchasedEvent' use different verbs ('Sold' vs 'Purchased') for similar concepts, and 'PurchasedLineItem' omits the 'Event' suffix used by others.
- Inconsistent naming for line item models/events. 'ProductLineItem' is used in the domain model, while 'ProductSoldLineItem' and 'PurchasedLineItem' are used in events, with inconsistent verbs ('Sold' vs 'Purchased').
- Medium CVE: SharpCompress 0.23.0
- No assertions: ShouldReceiveMessageWhenValidQueueProvided (Src/CommonAll/Common.Infrastructure.Tests/RabbitMqServiceBusTest.cs)
- No tests discovered
- redundant comment (Src/PurchaseMicroservice/PurchaseCommandHandler/PurchaseCommandHandler.cs)
- redundant comment (Src/PurchaseMicroservice/PurchaseCommandHandler/PurchaseCommandHandler.cs)

## New (14)

- Coverage not measured — analyzer environment
- Inconsistent naming for bus interfaces and implementations: 'CommandBus' vs 'QueryBus'. While distinct, the prefix 'Common.Core' vs 'Common.Infrastructure' is consistent, but the term 'Bus' is used. However, 'ICommandBus' and 'IQueryBus' are consistent. The issue is the implementation classes 'CommandBus' and 'QueryBus' vs 'EventBus'.
- Inconsistent naming for constants classes: 'MessageQueues' (plural) vs 'MessageQueue' (singular).
- Inconsistent naming for domain models: 'ProductLineItem' vs 'SalesLineItem'. One uses 'Product' and the other 'Sales' for what appears to be a line item in a transaction.
- Inconsistent naming for email-related classes: 'EmailSettings' vs 'EmailParams'. One implies configuration, the other data transfer.
- Inconsistent naming for event/line item types: 'PurchasedLineItem' vs 'ProductSoldLineItem' vs 'PurchasedLineItem'. The prefix 'Product' is missing in some, and 'Sold' vs 'Purchased' is inconsistent across similar concepts.
- Inconsistent naming for product ID: 'ProductId' vs 'PurchaseId'. While they might be different, the context suggests 'ProductId' is used in DTOs and events, but 'PurchaseId' is used in other events.
- Inconsistent naming for search/query methods: 'SearchPurchases' vs 'FindSoldProductInfo'. One uses 'Search' and the other 'Find', and the parameters differ significantly.
- Inconsistent naming for unit-related properties: 'PurchaseUnitName' vs 'UnitName'. The prefix 'Purchase' is used in one place but not others.
- Inconsistent naming for user/owner properties: 'Name' vs 'Manager'. 'Name' is generic, 'Manager' is specific. If 'Manager' refers to a person, 'Owner' or 'Manager' should be consistent.
- Medium CVE: SharpCompress 0.23.0
- Test runner surfaced no tests
- Typo in method name: 'Decerialize' should be 'Deserialize' to match standard C# naming conventions and the corresponding 'Serialize' method.
- redundant comment (Src/PurchaseMicroservice/PurchaseCommandHandler/PurchaseCommandHandler.cs)

## API surface

- Unchanged — 9 HTTP endpoints
