# Changelog

## Score

- CAI 51 → 54 (+3.3)
- Rubric changed (rubric-2026.08.17 → rubric-2026.08.18) — scores are not directly comparable.

## Lenses

- Code Health 56 → 66 (+9.7)
- Architecture 82 → 82 (+0.0)
- Maturity 71 → 73 (+2.8)
- Readiness 34 → 34 (+0.0)
- Security 80 → 87 (+6.9)

## Resolved (13)

- Coverage not measured — analyzer environment
- Duplicated block (14 lines × 2) (src/ModularNet.Api/Controllers/HealthChecksController.cs)
- Inconsistency in naming the component responsible for email operations. One is 'EmailServiceRepository' (infrastructure/data layer) and the other is 'EmailServiceManager' (business layer). While they are in different namespaces, the parallel naming ('Repository' vs 'Manager') for the same domain concept ('EmailService') can be confusing. It is unclear if 'Repository' here refers to a data access object or a service wrapper.
- Inconsistency in naming the component responsible for managing secrets. One is named 'SecretsRepository' (implying data access/storage) while the other is 'SecretsManager' (implying business logic/operations). Given the namespace (Infrastructure vs Business) and the method signatures (GetSecret vs GetSecretAndCacheIt), they likely serve different layers but share a confusingly similar root name for the same domain concept.
- Inconsistency in naming the repository for user settings. One is 'UsersRepository' (plural) and the other is 'UsersSettingsRepository' (plural 'Users' + singular 'Settings'). The pluralization of 'Users' in the first name but not the second creates a minor inconsistency in the repository naming convention.
- Secret: generic-api-key (src/ModularNet.Api/modularnet-firebase-adminsdk-dev.json)
- Secret: private-key (src/ModularNet.Api/modularnet-firebase-adminsdk-dev.json)
- TodoComment (src/ModularNet.Api/Controllers/AuthController.cs)
- TodoComment (src/ModularNet.Api/Controllers/AuthController.cs)
- TodoComment (src/ModularNet.Business/Implementations/UsersSettingsManager.cs)
- TodoComment (src/ModularNet.Business/Implementations/UsersSettingsManager.cs)
- TodoComment (src/ModularNet.Business/Implementations/UsersSettingsManager.cs)
- TodoComment (src/ModularNet.Business/Implementations/UsersSettingsManager.cs)

## New (12)

- Coverage not measured — analyzer environment
- Duplicated block (15 lines × 2) (src/ModularNet.Api/Controllers/HealthChecksController.cs)
- The Redis connection factory is implemented in a class named 'RedisConnectionFactory' but also has an interface 'IRedisConnectionFactory'. This is standard, but the implementation class name matches the interface name exactly, which is fine, however, check if other factories follow this pattern.
- The architecture outline lists six layers but only Domain is fully described; Application, Business Logic, Infrastructure, Shared, and External Systems sections exist in the outline and are not shown. (README.md)
- The concept of email service operations is split between a 'Repository' and a 'Manager'. One handles persistence/storage of email entities, the other handles the business logic/sending.
- The concept of managing secrets is split between a 'Repository' and a 'Manager'. One is infrastructure-level (repository), the other is business-level (manager), but both handle secret retrieval/caching.
- TodoComment (src/ModularNet.Api/Controllers/AuthController.cs)
- TodoComment (src/ModularNet.Api/Controllers/AuthController.cs)
- TodoComment (src/ModularNet.Business/Implementations/UsersSettingsManager.cs)
- TodoComment (src/ModularNet.Business/Implementations/UsersSettingsManager.cs)
- TodoComment (src/ModularNet.Business/Implementations/UsersSettingsManager.cs)
- TodoComment (src/ModularNet.Business/Implementations/UsersSettingsManager.cs)

## API surface

- Unchanged — 8 HTTP endpoints

## Architecture

- Unchanged — 3 containers · 1 contexts · 0 edges
