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.