Marrow

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 is documented in the guides instead.

They prevent regressions by documenting the technical constraints and rejected alternatives behind non-obvious architecture choices.

#DecisionIn one line
0001Declare structure, not layoutThere is no layout: key; the engine computes one layout from declared meaning
0002Agent-driven, no GUIThe editor is a conversation; AGENTS.md is a product surface
0003Branding is global-onlyA topology describes a network, not who owns it
0004Self-contained outputEverything inlined; zero network requests, ever
0005Vendor icon packs are fetchedUse is granted; redistribution is not
0006Strict schema, x- escape hatchUnknown keys are errors, because a silent typo changes the picture
0007Determinism & the geometry gateByte-identical output; overlapping geometry fails the build
0008Page-split thresholds150 devices / 5 zones, chosen not configurable
0009Link semantics & visual languageA link's logical function (mode) is a separate axis from its medium; one symbol per mode
0010Importers may infer; the compiler may not (proposed)Import adapters emit explicit, provenance-tagged declarations; the compiler still never guesses
0011Discovered and overlay files (proposed)A machine-owned discovered file plus a human-owned overlay via extends:; re-import never destroys edits
0012Agent-optional import path (proposed)Amends 0002: import → build is a first-class path with no agent involved
0013Design token contract & theme overridesUnified design tokens, CSS variables, and injection-safe theme overrides
0014Density presets & layout metricsConfigurable compact, standard, and spacious metrics with scale multipliers
0015Modular UI chrome & embed modesZero-FOUC minimal chrome, inspector suppression, and dynamic hash syncing
0016Extensible metadata & inspector sectionsStructured custom fields, collapsible tabular drawer tabs, and link inspection
0017Configurable blueprint export chromeModular engineering title blocks, dynamic auto-legends, and forced port labels on export
0018Diagram-level documentation modal & attributionDeclarative about metadata schema, interactive document modal dialog, and permanent Marrow watermarked attribution
0019Shadcn component registry & modular React UISource-distributed network primitives, Fumadocs layout engines, and bi-directional postMessage event bus

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.