This folder holds Architecture Decision Records (ADRs) for ERP for Factory Games.
An ADR captures a single architecturally-significant decision: the context that made it necessary, the option that was chosen, and the consequences that follow. ADRs are immutable once accepted — if the decision changes, write a new ADR that supersedes the old one rather than rewriting history.
We use a lightweight MADR-style template. Copy
0000-template.md when adding a new record.
ADRs are numbered sequentially starting at 0001. The filename is
NNNN-kebab-case-title.md.
| ID | Title | Status |
|---|---|---|
| 0001 | Use .NET 10 as the target framework | Accepted |
| 0002 | Use Blazor for the UI | Accepted |
| 0003 | Use .NET Aspire for orchestration | Accepted |
| 0004 | Use Onion Architecture | Accepted |
| 0005 | Use CQRS in the application layer | Accepted |
| 0006 | Use Wolverine as the in-process mediator | Accepted |
| 0007 | Track backlog on GitHub (epics = milestones, stories = issues) | Accepted |
| 0008 | Use Playwright for UI tests | Accepted |
| 0009 | Runtime ingestion of game catalogue from Docs.json | Accepted |
| 0010 | Game-agnostic catalogue contract in the Application layer | Accepted |
| 0011 | Catalogue source path configuration | Accepted (superseded in part by 0025) |
| 0012 | Live factory state ingestion via Node sidecar | Superseded by 0014 |
| 0013 | Map visualiser approach | Proposed |
| 0014 | Pure-C# .sav ingestion via SatisfactorySaveNet fork | Accepted |
| 0015 | Map backdrops sourced from wiki under fair use | Accepted (amends 0013) |
| 0016 | External game-derived assets via the .assets/ drop folder |
Accepted (extends 0015) |
| 0017 | MudBlazor as the UI component framework, Bootstrap removed | Accepted |
| 0018 | Persistence stack: EF Core with SQLite default, Postgres opt-in | Accepted |
| 0019 | TickerQ as the background-job scheduler | Accepted |
| 0020 | Rebrand to ERP for Factory Games | Accepted (namespace-refactor deferral superseded by 0026) |
| 0021 | Migrate build system from private Nuke.* fork to Fallout.* on nuget.org | Accepted |
| 0022 | Captain of Industry as the second supported game | Accepted |
| 0023 | Hosting + deployment via homelab Docker behind Cloudflare Tunnel | Accepted |
| 0024 | Game agent v1 PoC — shape, wire protocol, distribution | Accepted |
| 0025 | Agent auth & catalogue handover model | Accepted |
| 0026 | Onion-layered src/ with per-game product split |
Accepted (supersedes namespace-refactor clause of 0020; reaffirms 0004) |
| 0027 | JWT/HMAC-signed agent tokens across Auth + game APIs | Accepted (implemented 5c3; partial supersession of 0025 §3) |
| 0028 | Keycloak as the identity provider for human login (Steam via OIDC bridge) | Accepted (amends 0026; supersedes human-login stance of 0025; agent auth 0027 unchanged; Keycloak standup deferred) |