# Changelog

## Score

- CAI 49 → 52 (+3.5)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.19) — scores are not directly comparable.

## Lenses

- Code Health 79 → 76 (-3.8)
- Architecture 65 → 65 (+0.0)
- Maturity 65 → 65 (+0.0)
- Readiness 39 → 39 (+0.2)
- Security 48 → 70 (+22.5)
- Accessibility 61 → 59 (-2.1)
- Performance 76 → 74 (-1.9)

## Resolved (5)

- Duplicate error creation methods across generic and non-generic `Response` types. Every error state (NotFound, Conflict, etc.) is duplicated in both `Response<T>` and `Response`, leading to code duplication and potential inconsistency in behavior.
- Duplicate success creation methods with different signatures. The generic `Response<T>` has a `Success` method that takes data and an optional message, while the non-generic `Response` has a `Success` method that only takes a message. This creates confusion about how to construct a successful response in both contexts.
- Inconsistent naming for request inputs. `DeleteRequestInput` uses a noun, while `RestoreRequestInput` uses a verb. Both handle similar lifecycle states (active/deleted/restored) but use different naming conventions.
- Thin analysable surface across projects
- Typo in type name: 'LocalAppSate' is used instead of the consistent 'LocalAppState' (missing 't' in 'State').

## New (13)

- Duplicate response types with divergent signatures. The non-generic `Response` class and the generic `Response<T>` class both provide a `Success` method. However, `Response<T>.Success` accepts a payload (`T data`) while `Response.Success` does not. This creates confusion about which type to use for API responses and breaks the generic/non-generic consistency pattern.
- Inconsistent property naming for entity identification. `DeleteRequestInput` uses `EntityKind` and `AssociatedEntityType` to identify the entity, while `RestoreRequestInput` uses `AssociatedEntityType` but lacks a specific `EntityKind` field, relying instead on `IsDeleted`. This inconsistency makes it unclear how to identify the entity type for restoration versus deletion.
- Typo in type name: 'LocalAppSate' is likely a misspelling of 'LocalAppState'.
- XML-doc coverage: AditiKraft.Krafter.Aspire.AppHost (aspire-single/AditiKraft.Krafter.Aspire.AppHost/AditiKraft.Krafter.Aspire.AppHost.csproj)
- XML-doc coverage: AditiKraft.Krafter.Aspire.AppHost (aspire/AditiKraft.Krafter.Aspire.AppHost/AditiKraft.Krafter.Aspire.AppHost.csproj)
- XML-doc coverage: AditiKraft.Krafter.Aspire.ServiceDefaults (aspire/AditiKraft.Krafter.Aspire.ServiceDefaults/AditiKraft.Krafter.Aspire.ServiceDefaults.csproj)
- XML-doc coverage: AditiKraft.Krafter.Backend (src/AditiKraft.Krafter.Backend/AditiKraft.Krafter.Backend.csproj)
- XML-doc coverage: AditiKraft.Krafter.Backend.Migrator (src/AditiKraft.Krafter.Backend.Migrator/AditiKraft.Krafter.Backend.Migrator.csproj)
- XML-doc coverage: AditiKraft.Krafter.Contracts (src/AditiKraft.Krafter.Contracts/AditiKraft.Krafter.Contracts.csproj)
- XML-doc coverage: AditiKraft.Krafter.UI.Web (src-single/UI/AditiKraft.Krafter.UI.Web/AditiKraft.Krafter.UI.Web.csproj)
- XML-doc coverage: AditiKraft.Krafter.UI.Web (src/UI/AditiKraft.Krafter.UI.Web/AditiKraft.Krafter.UI.Web.csproj)
- XML-doc coverage: AditiKraft.Krafter.UI.Web.Client (src/UI/AditiKraft.Krafter.UI.Web.Client/AditiKraft.Krafter.UI.Web.Client.csproj)
- XML-doc coverage: _build (build/_build.csproj)
