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.