Architecture decision records
An ADR here records one decision that a later reader would otherwise have to reverse-engineer — the constraint that forced it, what was chosen, what was rejected and why, and the costs that came with it; the four-section template and the rule for when a change needs one are in CONTRIBUTING.md.
Decisions are amended rather than rewritten, so an ADR's header carries its own relations and the last column below repeats them: read a superseded claim and the amendment is one link away.
| # | Title | Status | Amends / Amended by |
|---|---|---|---|
| 0001 | A plugin-first kernel, not a map library with a plugin API | accepted | Extended by 0017 |
| 0002 | Every mutation is a Command; history is a subscriber, not a core feature | accepted | — |
| 0003 | Snapping is interaction middleware, not a service tools call | accepted | Amended by 0010 |
| 0004 | Two pipelines: synchronous interaction, asynchronous commit | accepted | Amended by 0009 |
| 0005 | The store is WGS84; survey maths happens in a projected working CRS | accepted | — |
| 0006 | Presets are data, not subclasses | accepted | — |
| 0007 | JSTS for topology and booleans; Turf only for cosmetics | accepted | — |
| 0008 | MapLibre, behind a renderer seam | accepted | Extended by 0014, 0015 |
| 0009 | Durable writes are CommitCommands, and dispatch() refuses them |
accepted | Amends 0004 (supersedes its open question) · Amended by 0012 |
| 0010 | A tool declares what it is dragging; middleware must not fight it | accepted | Amends 0003 |
| 0011 | A transient edit preview preserves ring order; only durable writes rewind | accepted | — |
| 0012 | A transaction's membership is an explicit handle, not a bus-global flag | accepted | Amends 0009 |
| 0013 | A GeometryCollection is flattened by the rules, and refused by the cadastre | accepted | — |
| 0014 | The maplibre-gl peer range is bounded, declared once, and checked by CI | accepted | Extends 0008 |
| 0015 | The browser suite is a fence, and its hit tests are gated on a GPU probe | accepted | Extends 0008 |
| 0016 | One lockstep version for the whole kernel | accepted | — |
| 0017 | Package manifests are generated, and CI regenerates them to check | accepted | Extends 0001 |
The next free number is 0018.
Edit this page on GitHub — this site is generated
from
docs/adr/README.md, which is the source of truth.