Skip to content

docs: add ADR-002 through ADR-010 covering architecture, persistence, frontend, and infrastructure decisions#226

Merged
xenobiasoft merged 1 commit into
mainfrom
copilot/create-adrs-for-architecture-decisions
Apr 15, 2026
Merged

docs: add ADR-002 through ADR-010 covering architecture, persistence, frontend, and infrastructure decisions#226
xenobiasoft merged 1 commit into
mainfrom
copilot/create-adrs-for-architecture-decisions

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 15, 2026

Continues the ADR authoring session. ADR-001 (Clean Architecture) existed; this adds the remaining nine decisions across all four architectural themes.

ADRs Added

Architecture & Design

  • ADR-002 — CQRS via MediatR: documents ICommand/IQuery abstractions, the 14 commands and 4 queries, pipeline behavior extensibility, and rules prohibiting repository injection in controllers
  • ADR-003 — Specification Pattern: documents ISpecification<T> usage and explicitly flags GetBySpecificationAsync in CosmosDbGameRepository as technical debt — it issues SELECT * FROM c and filters in-memory; direct SQL query methods should be preferred until a Cosmos DB expression translator is built

Persistence

  • ADR-004 — Cosmos DB as canonical IGameRepository: retires AzureBlobGameRepository from game persistence, deprecates the UseCosmosDb env var toggle, documents partition key strategy
  • ADR-005InMemoryPuzzleRepository scoped to puzzle generation: documents the CircularStack<SudokuPuzzle>(100) design and the intentional NotSupportedException on CreateAsync/LoadAllAsync — prevents contributors from "fixing" it by wiring it to a database
  • ADR-006 — Blob storage retirement from game state: Sudoku.Storage.Azure is retained but AzureBlobGameRepository must not be re-registered as IGameRepository; lists candidate repurposing use cases pending a follow-up ADR

Frontend

  • ADR-007 — React/Vite as strategic UI target: Sudoku.Blazor is maintenance-only; defines explicit exit criteria for Blazor retirement (feature parity + user migration)

Infrastructure

  • ADR-008 — Aspire for service orchestration: documents the three-service composition (sudoku-api, sudoku-blazor, sudoku-react), environment variable injection contract, and why Docker Compose was not chosen
  • ADR-009 — Azure App Configuration: documents the three connection modes (connection string, Managed Identity, DefaultAzureCredential fallback), key/label filtering strategy, and the rule that App Configuration holds no secrets
  • ADR-010 — Azure Key Vault: establishes Key Vault as the exclusive secret store, documents Managed Identity as the required auth model for Azure-hosted environments, enforces no secrets in appsettings.json or App Configuration

@xenobiasoft xenobiasoft marked this pull request as ready for review April 15, 2026 22:40
@xenobiasoft xenobiasoft merged commit 9c746b5 into main Apr 15, 2026
3 checks passed
@xenobiasoft xenobiasoft deleted the copilot/create-adrs-for-architecture-decisions branch April 15, 2026 22:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants