# Changelog

## Score

- CAI 54 → 55 (+0.2)

## Lenses

- Code Health 75 → 75 (-0.0)
- Architecture 72 → 72 (+0.0)
- Maturity 67 → 70 (+3.2)
- Readiness 63 → 63 (+0.0)
- Security 55 → 55 (+0.0)
- Domain Modelling 47 → 47 (+0.0)

## Resolved (28)

- BarePragmaDisable (src/Infrastructures/Core/Extensions/Type/MethodInfoExtension.cs)
- BarePragmaDisable (src/Infrastructures/Helper/Internal/Encrypt/Shared/RsaProvider.cs)
- BarePragmaDisable (src/Infrastructures/Redis.Caching/Provider/DefaultCachingProvider.cs)
- BarePragmaDisable (src/Infrastructures/Redis/Core/Internal/TypeHelper.cs)
- Build action pinned to a mutable branch
- Dead code: CacheConsts (src/Demo/Maint/Application/Cache/CacheConsts.cs)
- Further orphaned files (smaller)
- Inconsistent interface naming: 'IEfBaseRepository' vs 'IEfRepository' vs 'IAdoQuerierRepository'. The codebase uses 'IEfBaseRepository' in some places and 'IEfRepository' in others (e.g., 'Adnc.Infra.Repository.IEfRepository<TEntity>.ExecuteSqlRawAsync').
- Inconsistent naming for 'get options' operations. Some services use 'GetOptionsAsync' while others use 'Get...OptionsAsync' (e.g., GetMenuOptionsAsync, GetOrgOptionsAsync).
- Inconsistent naming for User-related DTOs: some use 'User' prefix (UserProfileDto, UserCreationDto, UserInfoDto) while others use 'User' in the namespace but the class name varies (e.g., UserCreationDto vs UserProfileDto). While not strictly an inconsistency in the class names themselves, the namespace 'Dtos.User' suggests a singular 'User' concept, but the DTOs are named with 'User' prefix. However, looking at 'UserRefreshTokenDto' and 'UserProfileDto', the pattern is consistent. Wait, let's look closer. 'UserRefreshTokenDto', 'UserProfileDto', 'UserCreationDto', 'UserInfoDto', 'UserProfileUpdationDto'. These are consistent. Let's look for other inconsistencies. What about 'User' vs 'Account'? No, all seem to be 'User'.
- Inconsistent naming for paginated list retrieval. Some services use 'GetPagedAsync' while others use 'Get...ListAsync' or 'GetTreeListAsync'.
- Layer violation: Application → Infrastructure
- Layer violation: Application → Infrastructure
- Layer violation: Application → Infrastructure
- No context/problem and no consequences/trade-offs; only the title 'ADR-002-outbox-pattern' is present (docs/architecture/adr/ADR-002-outbox-pattern.md)
- No context/problem and no consequences/trade-offs; only the title 'opentelemetry-observability' is informative (docs/architecture/adr/ADR-006-opentelemetry-observability.md)
- No context/problem and no consequences/trade-offs; only the title is informative (docs/architecture/adr/ADR-005-redis-as-distributed-foundation.md)
- No context/problem and no consequences; the title is informative but the body is a single decision with no rationale or trade-offs (docs/architecture/adr/ADR-003-no-distributed-transaction-coordinator.md)
- Off-boarding risk: anonymized user #1
- Orphaned knowledge (src/Infrastructures/Redis.Caching/Provider/AbstracCacheProvider.cs)
- …and 8 more

## New (10)

- Inconsistent naming for creation DTOs. Some use 'CreationDto' suffix, while others might use 'CreateDto' or similar. Here, 'CreationDto' is used, which is fine, but ensure all creation DTOs follow the same pattern.
- Inconsistent naming for options/dropdown lists: 'GetMenuOptionsAsync', 'GetOrgOptionsAsync', 'GetOptionsAsync'. The verb and object naming vary significantly.
- Inconsistent naming for tree retrieval: 'GetTreelist' vs 'GetTreeList'. The pluralization and capitalization of 'Tree' vs 'Treelist' differs.
- Inconsistent search parameter type for paged queries: Some services use a specific Search/Filter DTO (e.g., DictDataSearchPagedDto), while others use a generic SearchPagedDto or no specific input DTO.
- No context/problem and no consequences/trade-offs; only the title "opentelemetry" is informative (docs/architecture/adr/ADR-006-opentelemetry-observability.md)
- No context/problem and no consequences/trade-offs; only the title 'ADR-005-redis-as-distributed-foundation' is informative (docs/architecture/adr/ADR-005-redis-as-distributed-foundation.md)
- No context/problem and no consequences/trade-offs; the title is informative but the body is a single decision with no framing (docs/architecture/adr/ADR-003-no-distributed-transaction-coordinator.md)
- No context/problem and no consequences; the title is informative but the body is a single heading with no content (docs/architecture/adr/ADR-002-outbox-pattern.md)
- Off-boarding risk: anonymized user #1
- The class name 'EncryptProivder' contains a typo ('Proivder' instead of 'Provider'). This typo is consistently present in all related methods, but the typo itself is an inconsistency with standard English spelling and likely a bug.

## API surface

- Unchanged — 1 HTTP endpoints
