Architecture decision records
ArchForge keeps one ADR series, in the backend repository: ArchForge/docs/adr. This page is its index — the records themselves live next to the code they constrain, so a change and its decision land in the same review.
| ADR | Decision |
|---|---|
| 0001 | Domain modules: api + internal only |
| 0002 | One EntityManagerFactory per datasource group |
| 0003 | Shared contracts live in common-base, never infrastructure |
| 0004 | NullAway enforced at ERROR on all source sets |
| 0005 | Service placement: api.service + internal.service, runtime via ports |
| 0006 | Two server processes (admin :8080 / web :8081) + all-in-one image |
| 0007 | Meta definitions: file-first write authority |
| 0008 | Meta runtime registry; tableCode as the public identity |
| 0009 | Actuator on a management port; SQL and secrets hardening |
| 0010 | Repositories are internal; other modules use api services |
| 0011 | sa-token instead of Spring Security + JWT |
| 0012 | Four sibling repositories, not a monorepo |
| 0013 | Spring Data JPA + static metamodel instead of MyBatis |
The four short records this site used to carry moved there: "two servers" is ADR-0006, sa-token ADR-0011, "five sibling repos" is superseded by ADR-0012 (ArchForgeSpec was merged into ArchForge), and JPA + metamodel is ADR-0013.