Decision recordsΒΆ
Who is this page for?
Contributors and reviewers who want to know why GAME is built the way it is. Each record captures one architectural decision - the context that forced it, what was chosen, and what that costs - so a decision has a single home instead of being rediscovered from the code.
These are lightweight architecture decision records (MADR-style): short and numbered. A record is not a promise that a decision is permanent; it is an honest note of what was decided and why, at the time. Where a decision also has a richer prose home elsewhere in this manual, the record links to it rather than duplicating it.
All records below are Accepted and describe the current behavior on
main. If a decision is later superseded, its own page records that.
- ADR 0001: Internal UUIDs vs. external ids
- ADR 0002: Append-only, immutable wallet ledger
- ADR 0003: Atomic points write
- ADR 0004: Idempotency keys for awards
- ADR 0005: Conversion rate captured per transaction
- ADR 0006: Stable public strategy ids
- ADR 0007: The DSL is a sandboxed AST interpreter
- ADR 0008: Draft-on-publish versioning for the DSL
- ADR 0009: Fail-fast env validation in prod/stage
- ADR 0010: CORS middleware wraps the error catcher
- ADR 0011: DI container - db Singleton, repos/services Factories
- ADR 0012: SQLite in tests, PostgreSQL in production
- ADR 0013: External strategies via an entry-point group