Architecture Decision Records¶
Purpose. Record decisions that would be expensive to reverse, together with the context that made them reasonable at the time.
The rule: ADRs are superseded, never deleted. A record of a decision we later abandoned is often more valuable than the one that replaced it โ it stops the same idea being relitigated every six months, and it tells a future reader what we had already considered.
When to write one¶
Write an ADR when the decision:
- is costly to reverse (data model, save format, networking authority, module boundaries);
- has a plausible alternative that a reasonable person would pick;
- will be questioned later by someone without the context;
- introduces a third-party dependency;
- deliberately departs from legacy Applejack behaviour.
Do not write one for a decision that is obvious, cheap to change, or purely stylistic โ
that belongs in Standards/.
Index¶
| # | Title | Status | Supersedes | Superseded by |
|---|---|---|---|---|
| 0001 | Plugin-first architecture | ๐ซ Superseded | โ | 0002 |
| 0002 | Module architecture | ๐ซ Superseded | 0001 | 0010 |
| 0003 | Dual persistence backend | โ Accepted | โ | โ |
| 0004 | Item definitions as GameResource assets | โ Accepted | โ | โ |
| 0005 | Host-authoritative networking | โ Accepted | โ | โ |
| 0006 | Instanced inventory | โ Accepted | โ | โ |
| 0007 | Character-pawn binding | โ Accepted | โ | โ |
| 0008 | Public repository ahead of v1.0.0 | โ Accepted | โ | โ |
| 0009 | Vehicles as a second Ownership consumer | โ Accepted | โ | โ |
| 0010 | Runtime plugin loader | โ Accepted | 0002 | โ |
| 0011 | Character creation and multiple characters | โ Accepted | โ | โ |
| 0012 | Vehicle entry and driving | โ Accepted | โ | โ |
| 0013 | Housing as property groups | โ Accepted | โ | โ |
| 0014 | NPC framework: AI and pathing approach | Proposed | โ | โ |
| 0015 | Bail, trials, and sentencing | Proposed | โ | โ |
| 0016 | Sourcing item art from facepunch.sboxassets | โ Accepted | โ | โ |
| 0017 | Player character uses the stock Citizen model | โ Accepted | โ | โ |
0010 is now written. The next genuinely free ADR number is 0018.
Statuses: Proposed ยท Accepted ยท Superseded ยท Rejected ยท Deprecated.
Process¶
- Copy ADR_TEMPLATE.md to
NNNN-kebab-case-title.md, taking the next free number. - Open it as Proposed and discuss it.
- On agreement, set it to Accepted, add it to the index above, and reference it from the
relevant
Architecture/document. - To reverse it: write a new ADR that supersedes it. Edit the old one's status and its "Superseded by" row โ do not edit its reasoning, and never delete it.