Decisions
Architecture decision records — the load-bearing choices behind Marrow's shape, and why they were made.
These record decisions that are hard to reverse, surprising without context, and the result of a real trade-off. If a choice fails any of those three tests it isn't here — the guides cover it instead.
The point is to stop the next reader from "fixing" something that was deliberate.
| # | Decision | In one line |
|---|---|---|
| 0001 | Declare structure, not layout | There is no layout: key; the engine computes one layout from declared meaning |
| 0002 | Agent-driven, no GUI | The editor is a conversation; AGENTS.md is a product surface |
| 0003 | Branding is global-only | A topology describes a network, not who owns it |
| 0004 | Self-contained output | Everything inlined; zero network requests, ever |
| 0005 | Vendor icon packs are fetched | Use is granted; redistribution is not |
| 0006 | Strict schema, x- escape hatch | Unknown keys are errors, because a silent typo changes the picture |
| 0007 | Determinism & the geometry gate | Byte-identical output; overlapping geometry fails the build |
| 0008 | Page-split thresholds | 150 devices / 5 zones, chosen not configurable |
| 0009 | Link semantics & visual language | A link's logical function (mode) is a separate axis from its medium; one symbol per mode |
On assumed rationale. These records were written from the code, the commit history, and the existing prose. Where the reasoning behind a decision had to be inferred rather than read, it is marked with an Assumed callout. Those are the paragraphs to correct first — an ADR that records the wrong reason is worse than no ADR, because it gets cited.