# Changelog

## Score

- CAI 46 → 46 (+0.3)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.19) — scores are not directly comparable.

## Lenses

- Code Health 83 → 83 (+0.2)
- Architecture 82 → 82 (+0.0)
- Maturity 56 → 56 (+0.0)
- Readiness 35 → 35 (+0.0)
- Security 44 → 45 (+1.3)

## Resolved (3)

- Medium CVE: Azure.Identity 1.6.0
- Medium CVE: Azure.Identity 1.6.0
- The project features section is clipped mid-sentence, so Usage, Authors, Contributing, and License content cannot be confirmed. (README.md)

## New (6)

- Medium CVE: Azure.Identity 1.6.0
- Medium CVE: Azure.Identity 1.6.0
- The `IProductService` interface uses `GetAll`, `GetById`, `Create`, `Update`, `Delete`. This is consistent with `IUserService`. However, `IProductService` also has `PriceCheck` and `GetPaginatedData`. `IUserService` has `GetPaginatedData` as well. The inconsistency is not within the interface but potentially between `IUserService` and `IRoleService`. Let's check `IRoleService`.
- The `IRoleService` interface is missing `GetAll` and `GetById` methods, or they are not listed in the sample. If `IRoleService` does not have `GetAll`/`GetById` while `IUserService` and `IProductService` do, this is an inconsistency in the service layer's public API. Additionally, `IRoleService` has `Create`, `Update`, `Delete`. It lacks `Get...` methods in the provided list, which might be a missing implementation or a different naming convention (e.g., `Find` vs `Get`).
- The `IUserService` interface uses a mix of naming conventions for its methods. It uses `GetAll`, `GetById`, `Create`, `Update`, `Delete` which is a standard CRUD pattern. However, it also includes `ResetPassword` which is a specific action, not a standard CRUD operation. While not strictly an inconsistency in the CRUD verbs, the interface mixes standard repository-like verbs (`Get`, `Create`, `Update`, `Delete`) with domain-specific actions (`ResetPassword`). A more consistent approach might be to separate domain actions from generic CRUD operations, or ensure all methods follow a similar naming pattern (e.g., `ResetPassword` is fine, but `GetAll` and `GetById` are also fine. The real inconsistency is between `IUserService` and `IProductService`/`IRoleService` which might have different patterns. Let's look at `IProductService`.
- The interface `IBaseRepository<T>` contains methods with inconsistent naming conventions. Specifically, `IsExists` is used for existence checks, while `GetAll`, `GetById`, `CreateRange`, and `GetPaginatedData` follow a 'Get/Create' pattern. However, `Update` and `PriceCheck` do not follow the 'Get/Create/Update' pattern consistently (e.g., `Update` vs `CreateRange`). More importantly, the method `IsExists` is a non-standard name for a repository query method, whereas `GetAll` and `GetById` are standard. A more consistent approach would be to use `Exists` or `GetBy...` for all query methods, or `Find`/`Get` for all. The mix of `IsExists` with `Get...` methods is inconsistent.

## API surface

- Unchanged — 20 HTTP endpoints

## Architecture

- Unchanged — 2 containers · 0 contexts · 0 edges
