Decision tags — What a decision is about, in the order the index shows them. Open, unlike the topics: a decision that needs a word it does not have simply gets one.
Mechanism — identifiers, generation, the lint.
16 of 66 decisions. Back to the full index.
| # | Title | Summary | Status |
|---|---|---|---|
| ADR-005 | Replace the derived MLR identifiers with sequential codes | MLR-2014-Kingma001-0001 was computed from author, year and position, so it was stable only while those were, and topic_id was a slug of the recommendation’s first five words — an identity that changed when you fixed a typo. Sequential codes with the title in frontmatter instead. | Active |
| ADR-007 | One workflow commits generated files, and it marks its commits to skip CI | Two workflows regenerated and committed to the same branch, and the second one landed after the job that linted the first — leaving the branch tip unchecked and opening a gated run nobody approves. Generation is now one job whose commit carries the skip marker. Rejected: keeping both and marking the generated files unscannable, which treats the symptom. | Active |
| ADR-009 | Require a source of any kind for a note, not an arXiv identifier | LIT required arxiv:, and the first technical report worth filing had never been posted there. The requirement is now a field group — at least one of arxiv:, doi:, url: — with a DOI remote so the second kind resolves like the first. Rejected: filing the report under its parent paper’s id, which cites the wrong document; and dropping the requirement, which is DP-001’s failure mode. | Active |
| ADR-010 | A practice names every source it rests on, not one | source: held a single code while practices routinely leaned on several papers — SOTA-132’s body cites seven and its field named one — so the structured field disagreed with the prose and only the prose was true. It is now a list. Rejected: keeping one source and a see also convention, which is the state that hid 39 unsourced practices; and a separate corroborated_by:, which asks filers to grade evidence they have not weighed. | Active |
| ADR-011 v2 | Lineage between documents is a field, not a paragraph repeated in every note | Ten named chains — schedule, residual, Muon, sparse-attention — are the record’s most-cited content and exist only as prose, re-described in each participating note, so they drift: two notes both claimed a comparison did not exist and both were wrong on the same day. Proposes extends: and compared_against: alongside the existing superseded_by:, with the chain as a generated view. | Active |
| ADR-012 | A practice declares its altitude, and one with no body cannot claim to be a design decision | ”Pin memory for CPU-GPU transfers” and “Use Muon in place of AdamW” are both SOTA documents with equal standing, and 103 of 144 practices have no body at all — the registry’s apparent weight is mostly one synthetic note’s bullet lists. Proposes a kind: field and a lint tying substance to altitude. | Deferred — Deferred on 2026-09-23. It was never adopted, and no practice carries kind:. Its first motivation is gone, since every practice now has a body. Its second, that totals mix a library flag with a design decision, is still an open question. |
| ADR-014 v2 | A provisional status must say what would change it, and the condition names a kind of evidence | Four of 144 practices state a promotion condition, all in prose, none of them re-read when the evidence arrived. Two practices filed a day apart carried near-identical conditions, both were satisfied by the same paper on the same day, and only one promoted — because the condition counted papers when what mattered was what the papers were about. Adopts a required promote_when: on every non-active practice, phrased as a kind of result rather than a count of them. | Active |
| ADR-015 | What the field thinks is a second axis, and this record’s endorsement is not it | mHC is shipped at 1.6T in a production model, attacked by two independent groups within a month, and Proposed here — three facts crushed into one field, because status: is this record’s editorial position and has no room for the field’s. Adds a defaulted consensus: vocabulary, orthogonal to status, and declares practice-level lineage so an agreed trunk and its disputed forks stop rendering identically. | Active |
| ADR-016 | Contested is a claim about specific other work, so it must name it | ADR-015 gave the record a way to say the field is arguing about a practice and no way to say who is arguing. The reason lived in consensus_note:, which is rendered nowhere and so — by Luria’s own rule for what counts as prose — carries bare, unlinkable codes. Adds contested_by:, a checked LIT reference required exactly when consensus: contested, on the ground that contested is the only value on the axis that asserts a specific other document exists. | Active |
| ADR-018 v3 | Generated views are committed on main only, and a pull request writes none | Regenerating views on every pull request made two branches conflict on files neither had edited, and made a stacked branch re-conflict after each merge. Adopts luria’s split shape (LU-ADR-068): views on the default branch only, source repairs on the branch that authored them. | Active |
| ADR-019 v2 | An automation that writes to shared state names its serialization, and a pacing failure is swept as a class | Two CI failures in one evening, both from writes to shared state that raced, and both invisible until the work went faster than a person reading. Requires every job that writes where others write to declare a concurrency discipline or say why it needs none, and requires the first such failure to be answered by an audit of every writer rather than a patch to the one that broke. | Active |
| ADR-023 | A note carries its number, and answers to a readable second name | The pre-migration ids said who and when; LIT-001 says neither. luria 0.13 can render an alias from a document’s own frontmatter, so LIT-Kingma-2014-001 now resolves wherever LIT-001 does. An alias rather than a code, because a code that encodes a fact rots when the fact is corrected, and an alias is recomputed on every read. | Active |
| ADR-029 | A practice’s origin and its evidence are different relations | source: is one ordered list doing two jobs: naming the work that produced evidence about a claim, and naming the work the claim came from. ADR-017’s retraction test picks the first by construction, so the record reads as though every practice began with the paper it cites — SOTA-087’s recomputation is dated to FlashAttention (2022) and SOTA-060’s depth-scaled init to Megatron-LM (2021), and both recommendations are Child et al. (2019). Adds introduced_by: rather than reordering source:, because published: and the retraction test both depend on what the first entry currently means. | Superseded — by ADR-030 |
| ADR-037 v2 | Fail the build on source-mismatch, and take the source invariant upstream | Two things about the check that binds a document to its paper. fail_on gains source-mismatch — at zero today, offline from the lockfile, and the check that would have failed the import in #138. And the invariant on source: that this decision first argued against is now argued FOR: a relation asserts a commonality and the invariant is how the record says what it is, which holds for a practice and its evidence as much as for two practices. It cannot be declared here yet — a chain over a cross-scheme relation raises KeyError in luria index — so it goes upstream as LU-#272 with the measurement rather than being dropped. | Active |
| ADR-044 v2 | Citations are verified where merges serialize, and the lint keeps asking on the branch | remotes.lock.json was written by luria lint, which runs on every branch, so every contribution that filed a paper carried a diff on it and two such branches conflicted over nothing. luria 0.28.0 moves the write to luria remotes --resolve; this record passes resolve: "true" on the push-to-main job, beside concretize and the views. The lint still asks on a pull request, so source-mismatch still fails before the merge. Rejected: promoting source-unchecked to a failure, which this record had already declined for a reason this session then demonstrated. | Active |
| ADR-061 | Theories get a chain of their own: lines of explanation | A third chain, theory, walks extends: and corrects: between THEORY documents and renders docs/theory-lines.md, “Lines of explanation”. It mirrors the two chains ADR-011 set up for papers and practices, with the same tags invariant. It has no sibling relation, because THEORY declares none, and is faceted by status alone, because a theory has no consensus field. On the record as filed it walks 11 lines, and every one is bound. Rejected: folding theories into the paper lineage, and leaving the relations unrendered. | Active |