# Changelog

## Score

- CAI 38 → 39 (+0.4)
- Rubric changed (rubric-2026.08.17 → rubric-2026.08.18) — scores are not directly comparable.

## Lenses

- Code Health 48 → 48 (-0.1)
- Architecture 92 → 92 (+0.0)
- Maturity 38 → 38 (+0.0)
- Readiness 27 → 27 (+0.2)
- Security 63 → 70 (+7.0)
- Performance 60 → 60 (+0.0)

## Resolved (34)

- Coverage not measured — test suite did not build
- Duplicated block (10–12 lines × 3) (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- Duplicated block (13–14 lines × 2) (taskScheduling/Maruko.TaskScheduling/Internal/Jobs/OilPriceJob.cs)
- Duplicated block (9–10 lines × 2) (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- Inconsistent naming for configuration options: 'configuration' (lowercase) vs 'FreeSql' (specific provider name) vs 'AppConfig' (generic). The property 'configuration' in 'Maruko.Core.Config.AppConfig' is vague compared to the specific 'FreeSql' property in 'Maruko.Core.FreeSql.Config.AppConfig'.
- Inconsistent naming for mapping methods: 'MapToEntity' vs 'Map'. One is specific to entity conversion, the other is a general mapping method.
- Low IaC: DS-0026 (docker/Dockerfile)
- Multiple types named 'AppConfig' across different namespaces, potentially causing confusion about which configuration is being referenced.
- No direct assertions: Delete_Test (src/Maruko.Core.Test/FreeSql/CurdAppServiceTest.cs)
- No tests discovered
- Overloaded method 'GetAllList' exists with and without a filter expression. This can be confusing as 'GetAll' usually implies no filter, while 'GetList' might imply filtering. The naming 'GetAllList' is ambiguous regarding filtering.
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.DomainIrepos.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.DomainIrepos.cs)
- …and 14 more

## New (35)

- Coverage not measured — test suite did not build
- Duplicated block (10 lines × 3) (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- Duplicated block (13 lines × 2) (taskScheduling/Maruko.TaskScheduling/Internal/Jobs/OilPriceJob.cs)
- Duplicated block (9 lines × 2) (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- Largest orphaned file (src/Maruko.AspNetMvc/Service/ImageHelper.cs)
- Largest orphaned file (src/Maruko.CodeGeneration/Generate/CodeGenerate.EfCore.cs)
- Largest orphaned file (src/Maruko/Extensions/StringExtensions.cs)
- Solution references a project that does not exist (Maruko.sln)
- Test runner surfaced no tests
- The term 'AppConfig' is used for multiple distinct concepts: a general configuration class, a property named 'configuration' inside a class also named 'AppConfig', and specific implementations for FreeSql and TaskScheduling. This creates ambiguity between the configuration container and the configuration data itself.
- The term 'Specification' is used for both a concrete implementation ('AnySpecification') and an interface ('ICompositeSpecification'). While the interface has an 'I' prefix, the concrete class does not follow a consistent 'Concrete' or 'Impl' pattern, and the namespace suggests a domain pattern where 'Specification' is the core concept. However, 'AnySpecification' is a specific type of specification, which is fine, but the lack of a consistent naming convention for concrete vs interface (one has 'I', one doesn't) is a minor inconsistency in the domain layer.
- There is a mix of 'Oil' and 'OilPrice' and 'AllCountryOilPrice' in the Cbb namespace. 'OilDTO' vs 'OilPrice' vs 'AllCountryOilPrice' suggests different concepts or inconsistent naming for similar entities. Specifically, 'OilDTO' and 'OilPrice' might be related but are named differently.
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.Application.cs)
- TodoComment (src/Maruko.CodeGeneration/Generate/CodeGenerate.DomainIrepos.cs)
- …and 15 more

## API surface

- Unchanged — 28 HTTP endpoints
