How this anthology is built and why — as opposed to what it says about training models, which is the practices.
Most of these were made years ago and written down for the first time during the record migration. That is the honest account: the attic existed, the identifier scheme existed, the topic consolidation had been specified and never applied. None of them could be cited, so none of them could be argued with.
A decision whose choice changes is superseded by adding a new one and flipping the old one’s status — not by rewriting its body. Values these cite live in design-principles.md.
File one with luria new adr.
By tag
The record (52) — what the schemes hold, and the rules between them: 001 · 002 · 004 · 009 · 010 · 011 · 012 · 013 · 014 · 015 · 016 · 017 · 018 · 019 · 025 · 029 · 030 · 031 · 032 · 033 · 034 · 035 · 036 · 038 · 039 · 040 · 041 · 042 · 043 · 044 · 045 · 046 · 047 · 048 · 049 · 050 · 051 · 052 · 053 · 054 · 055 · 056 · 057 · 058 · 059 · 060 · 061 · 062 · 063 · 064 · 065 · 066
Taxonomy (24) — the topic vocabulary and what enforces it: 003 · 022 · 024 · 026 · 027 · 028 · 031 · 035 · 036 · 038 · 040 · 041 · 049 · 050 · 052 · 055 · 056 · 057 · 058 · 059 · 060 · 064 · 065 · 066
Mechanism (16) — identifiers, generation, the lint: 005 · 007 · 009 · 010 · 011 · 012 · 014 · 015 · 016 · 018 · 019 · 023 · 029 · 037 · 044 · 061
Migration (4) — moving off the YAML registry, and what happens to it: 001 · 006 · 008 · 033
ontology (5): 020 · 021 · 025 · 026 · 028
By status: Active (56) · Proposed (2) · Deferred (1) · Superseded (7) · Rejected (0)
Chronological
What the status column means in this scheme — the words are luria’s, the meanings are this project’s.
| Status | Means | |
|---|---|---|
Active | Active | In force — the current answer, and what a citation should normally point at |
Proposed | Proposed | Not in force yet — an open question, so citing it as settled is what the reference report catches |
Deferred | Deferred | Not in force and not being worked on; the question is real and the answer waits on something |
Superseded | Superseded | No longer in force because something replaced it; the successor is named in the field, not in the prose |
Rejected | Rejected | No longer in force and nothing replaced it — kept because a rejection is worth being able to point at |
| # | Title | Summary | Status |
|---|---|---|---|
| ADR-001 | Keep the anthology in a Luria record rather than in YAML the build reads | The YAML already modelled a knowledge record — statuses, supersession, an attic, a topic taxonomy — but nothing checked any of it, and three of the four were provably inert. Adopting Luria keeps the model and attaches the checks. Rejected: writing bespoke validators against the existing schema, which is the same work without the generated views or the citation graph. | Active |
| ADR-002 | Separate papers from practices, so each can have its own status | attic and experimental were fields on a paper, but what they qualified was a recommendation — so a paper could not be sound while its advice was stale, or retired while a practice drawn from it still held. Two schemes, two status fields, and the relationship between them a citation the lint can follow. Rejected: one scheme with a kind: field, which keeps the collision. | Active |
| ADR-003 | Apply the topic consolidation and let the config enforce one primary topic | A 2024 document specified a 22-to-7 topic consolidation with real rules, was never applied, and could not be cited. It becomes this decision; the seven categories become tags.yaml; the one-primary-topic rule becomes a tag_groups constraint the lint checks. The reading list gets five extra categories the practice registry never needed. | Active |
| ADR-004 | Retire work by changing its status, never by deleting it | The attic was already this idea, held in a nested attic: mapping that nothing could resolve or check. It becomes the Rejected and Superseded statuses, with the reason kept and the successor named as a followable code. Rejected: deleting retired entries, which is what makes a “living document” quietly unfalsifiable. | Active |
| 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-006 | Generate the registry from the record instead of checking it in | registry.yaml and REGISTRY.md are already derived from research.yaml and committed as though they were sources. Once the record is ground truth they should be built from it as artifacts for the frontend. Proposed, not Active: the inversion is phase 4 and the frontend contract has not been checked yet. | Superseded — by ADR-008; by ADR-008, which retires the pipeline rather than inverting it |
| 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-008 | Retire the registry pipeline and publish the record itself | ADR-006 proposed generating registry.yaml from the record so the frontend could keep consuming it. Publishing the record directly is simpler and removes the projection rather than inverting it: luria stages the record as a site, so the registry builder, REGISTRY.md and the bespoke frontend all retire together. Supersedes ADR-006. | 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-013 | Codes are allocated at merge, not at filing | Two branches open the same afternoon both minted LIT-144 and LIT-145 for different papers, and the collision was caught by hand. Luria has allocate = "merge" and temporary codes for exactly this; the record adopts it. Rejected: reserving ranges per contributor, and merging often enough to avoid overlap. | Active |
| 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-017 v2 | What source: holds, and where the work it excludes goes | ADR-010 made source: a list without saying what fills it, so the corpus grew two conventions: SOTA-132 counts adopters as support, SOTA-150 counts them as consensus data. This settles it — source: holds work that produced evidence about the claim, and adoption without a test is consensus data, which consensus.yaml already implies by admitting adopters who did not choose deliberately. The Source section is argument and may name non-sources, so prose is not a subset of the field; the field is a subset of the prose, which is checkable and found three defects. The exclusion leaves the problem-setting literature homeless, so the second half says where it goes: succession gains a sign, because a third of the record’s extends: edges already mean “exists because the parent is broken” and say so only in prose. Rejected: adopters as support, a subset lint in the other direction, inspired_by as a new relation, and leaving it undecided. | 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-020 | The recommendations are scoped by kind of claim, not by domain | Superseded — by ADR-026; The decision below — scope by kind of claim, not by domain — is carried forward unchanged. What is superseded is the alternative it rejected: it declined to add generative-modeling and vision-and-graphics to the practice vocabulary, and that paragraph was being cited as a scope boundary, which is the exact thing this ADR was written to remove. | |
| ADR-021 v2 | The practice vocabulary takes the kind-of-claim topics the reading list already has | Active | |
| ADR-022 | The primary topic is derived from the first tag, and the lines assert it | The topic vocabulary was a constraint on a list — exactly one tag from the seven — with no way to say which tag that was. Deriving primary_topic from {tags[0]} names it, which lets the chains assert the invariant they actually mean: a line of work stays within one topic. Costs a convention nothing checks, that the primary tag is written first. | 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-024 | The topic vocabulary has four recurring seams — options, not a decision | ADR-021 said to expect a fourth vocabulary decision. Declaring the relations the practice bodies argue produced 25 unbound edges, and they are not scattered: four topic pairs account for eighteen of them. This states the evidence and four options, and decides nothing — the choice is which kind of claim the vocabulary is failing to name, and that is a judgement about the subject rather than about the record. | Superseded — by ADR-049; by ADR-049, which reversed this document’s premise that an unbound edge is not a defect, and took the seams it described to zero. Its options were each taken elsewhere: more than one topic per document by ADR-035, a filing rule by ADR-026 and ADR-046, and new topics by ADR-050. |
| ADR-025 v2 | A third scheme: NOTE, the structured reading of a paper | A LIT note says what a paper’s standing in the anthology is. It has never said what the paper contains, and the corpus now holds two demonstrations of what that costs. NOTE is a third scheme: one document per paper actually read, carrying the contribution, the assumptions, the theorem-level results, the claims with their strength, and the recommendations derived — with the status recording how deeply it was read. | Active |
| ADR-026 | One topic vocabulary: the practice registry takes the same thirteen the reading list has | ADR-020 scoped the recommendations by kind of claim rather than by domain, and that decision stands. Its rejected alternative does not: it declined to add generative-modeling and vision-and-graphics to the practice vocabulary on a browsing argument that the evidence since has not borne out, and that reads to a later reader as a scope boundary — the exact thing ADR-020 was written to remove. Adds both, making the two vocabularies identical. | Active |
| ADR-027 | The practice vocabulary cannot express a claim about how to evaluate | Reading the generic-bullet corpus produced four recommendations about measurement, and the practice vocabulary has nowhere to file them. The LIT side has analysis-and-evaluation; the practice side does not, and unlike the other two topics missing from it, this one is a kind of claim rather than a domain. Adds it, making eleven. | Superseded — by ADR-028 |
| ADR-028 | One topic vocabulary, one set of glosses: the blurbs are shared too | ADR-026 made the two topic lists identical and recorded that “the two vocabularies become identical”. The keys did; the glosses did not — each scheme kept its own copy, ten of thirteen diverged, and the reading list’s header still described a vocabulary of twelve words that had held thirteen since ADR-026. One topics table now holds both, blurbs included. ADR-027’s deliberate narrowing of analysis-and-evaluation does not survive: a blurb answers “what is this about?”, which ADR-026 already settled is scheme-independent. That decision’s substantive holding — the topic exists, it is a kind of claim, the four practices stay — is carried forward. Rejected: keeping two vocabularies with identical keys, which is the structure that produced the drift. | 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-030 | Every practice states its origin, even when it is the primary source | ADR-029 made introduced_by: optional and set a condition for promotion: a pass over the practices should find origins that differ from the primary source often enough for the field to carry information. The pass has run over all 208, and it did not: three differ, 205 do not. The field is required anyway, for a reason that condition did not test — an absent field was ambiguous between “the origin is the primary source” and “nobody checked”, and those are different claims. Every practice now asserts an origin, which is a thing a reader can find wrong. Rejected: requiring it only where a practice cites several sources, which leaves the ambiguity exactly where an unexamined source[0] is most likely wrong. | Active — Amended by ADR-053, which lets a practice leave introduced_by: [] on purpose, with a comment saying what was searched. The rule that every practice states its origin stands. Its one-year test is running ahead: practices whose origin differs from source[0] went from 3 to about 57. |
| ADR-031 | A scheme for explanations, complementing the practice registry | A third scheme, THEORY, for claims about WHY something works. Two schemes could say what a paper’s standing is and what you should do, and had nowhere to put the reason — which showed up as eight practices whose titles state a behaviour rather than an instruction, and 48 of 225 notes that no practice cites, two of them saying in their own bodies that they carry no practice deliberately. A THEORY names its source: like a practice does, and explains: the practices it underwrites, which the practices read back as explained_by:. Rejected: a status or a tag on SOTA, which would make Rejected mean two things at once — batch normalization needs a rejected explanation and an active practice on the same day. | Active — Promoted by the owner on 2026-09-23 without the event its promotion condition named, a theory Rejected while the practice it explained stays Active. The scheme had been in use since filing: 84 theories, and 69 practices that carry explained_by. |
| ADR-032 | Benchmarks, model reports and infrastructure are literature, and the record files them | The bibliography sweep found that benchmark papers, model and technical reports, and training or serving infrastructure are 9 of the 27 most-cited references the record lacks — GSM8K alone cited by 9 of 12 papers. Every pass had declined them silently and none had said why. They are admissible LIT documents: a note records a paper’s standing in the anthology, and a benchmark the record’s practices are argued on has standing. | Active |
| ADR-033 | Readings made in another context port into the record; their agenda does not | Seventy-four paper notes arrived from a separate project on decentralized training. They are this record’s own readings, made under a different agenda, and their schema turns out to be the NOTE schema — the same twelve fields in the same order. So they port: 70 NOTE documents and 67 new LIT notes. What does not port is decided by scope rather than by trust — one field answers another project’s five questions, 17 recommendations name that project’s own system, and 6 are advice on proof technique. Metadata comes from arXiv and CrossRef in every case, because three readings were bound to the wrong identifier and one citation was invented outright. | Active |
| ADR-034 | A document that changes scheme is Superseded where it leaves, and names its successor across the boundary | ADR-031 listed eight practices whose titles state a behaviour rather than an instruction, declined to move any of them, and said why: a practice re-filed as a theory leaves a SOTA code that is neither Rejected nor Superseded but simply somewhere else. This is that decision. The vacated code takes Superseded — the one status that means replaced without meaning “do not do this” — keeps its body reduced to a redirect, and names the successor even though the successor is in another scheme. SOTA-010 is moved under the rule. | Active |
| ADR-035 v3 | A document may carry more than one topic; the first is the primary | The topic group moves from exactly-one to any on all four schemes, and the chain invariant moves from primary_topic to tags. A document is often about two of the thirteen — a positional-encoding scheme is also an attention technique — and under exactly-one recording the second meant deleting the first, which is what the retagging pass in #140 did to eleven documents. With several topics allowed, the invariant should ask what a relation actually asserts: that its members share a subject, not that they share their FIRST subject. Measured, the switch binds three edges — two rightly, one on a flash-attention label added in #101 to bind it, which is removed. 24 unbound relations become 22. | Active |
| ADR-036 | An unbound relation is one of four things, and only one of them is a retag | The unbound-lineage report had 38 relations and 16 lines. Reading all of them: 15 documents were plainly mis-filed and are retagged, two sibling links were analogies rather than comparisons and are removed, and the remaining 24 are two structural facts about the vocabulary — that analysis-and-evaluation is a kind rather than a subject and will unbind every lineage it touches, and that the record has no relation for “this is the domain-specific instance of that”. Neither is fixed by retagging, and retagging to clear them is the move luria.yaml already warns against. | Superseded — by ADR-048; Superseded only in its fourth category. The four-way classification, the fifteen retags and the two removed sibling links all stand; what changed is the verdict on trunk papers whose contribution spans two topics, which this decision left standing because splitting one would file it under half its contribution. ADR-046 made splitting unnecessary — such a paper carries both topics — so the successor retags six documents rather than leaving them. |
| 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-038 v2 | A note has no topics of its own: it derives them from its paper | NOTE.tags and NOTE.primary_topic are derived from the paper the note reads. A note and its paper are the same object, so a second copy of the subject was a second copy free to disagree — and four of the 158 were. Rejected: asserting the agreement with invariant: tags on NOTE.paper, which reports the disagreement instead of making it impossible; and declaring an invariant on the other five cross-scheme relations, which join a claim to a paper or an explanation and which ADR-026’s filing rule expects to differ. | Active |
| ADR-039 v3 | The configuration is part of the record, and the lint reads it | luria.yaml joins code.globs. It carries 87 code citations across 38 documents — more decision references than any other file here — and nothing scanned it, so they went stale invisibly: 15 citations of codes that had been concretized months earlier, and two to a luria decision whose temporary code had since been numbered. Rejected: leaving it unscanned on the grounds that a config is not prose, and per-site directives over one file-level one. | Active |
| ADR-040 | Advice on how to prove a theorem is out of scope; advice on how to find out whether a technique worked is not | Six recommendations in the #139 import tell a reader how to construct a proof — use the bounded-Lipschitz metric, check a log-Sobolev inequality, work in a rigged Hilbert space. They were struck by one filer without a decision, and analysis-and-evaluation is broad enough that the cut was not obviously right. It is right, and the reason is the scope test in ADR-026: the reader this anthology addresses is training a model. A proof technique is advice to someone writing a paper about training, which is a different person. | Active |
| ADR-041 | An algorithm-local tuning constant belongs in the reading of the paper that measured it, not in the practice registry | A number fitted to one algorithm on one workload is a finding about that paper, not a recommendation to a reader who may not be running that algorithm. It stays in the note’s ## Recommendations section, where it is already visible and already attributed, and it does not become a SOTA document. The test: strip the algorithm’s name from the sentence and see whether anything is left to do. | Active |
| ADR-042 | A practice may be filed in order to say do not do this | Yes, a technique that was recommended and did not hold may be filed as a Rejected practice — the entry test is the one every practice already passes, plus one addition: the failure needs a citation exactly as a recommendation does. Superseded still wins wherever a successor exists, because the chain carries more than a rejection. Rejected: a new status word, filing these as THEORY, and the status quo, which currently has ReLoRA blocked. | Active — Promoted by the owner on 2026-09-23 as a standing permission, before its first use. ReLoRA (LIT-104), the case that prompted it, was filed on 2026-09-25: its restart discipline is SOTA-426, Proposed, and the paper is Active. That practice is positive and conditional — how to restart, not whether — so the permission is still unused in its own terms: ReLoRA itself was not filed as Rejected, because Table 6 decomposes its gain rather than refuting it and condition 3 is not met. The negative half of the restart rule (reset without re-warm diverges) carries its citation inside the practice, which is the shape condition 3 asks for. |
| ADR-043 | Doubt about whether an item is worth carrying is not a reason to leave it out, and not a third kind of provisional | When the doubt is about whether the record wants an item at all, file it anyway. But that doubt does not get its own status: writing the promote_when forces it into one of the two ADR-014 already handles — is the claim true, or would anyone act on it — and if neither condition can be written, what you have is an observation for a note rather than a recommendation for the registry. Rejected: a status below Proposed, and parking the doubt in consensus. | 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-045 v3 | A claim about the signal is admissible however it was measured, including on people | A psycholinguistics paper arrived with a real measurement, no model and no recommendation, and the first instinct was to file it as a LIT note that sources nothing — admitted on an exception. That was wrong twice over: the record already holds physics, control theory and pure mathematics, so “outside CS” was never the boundary; and the paper’s finding is a claim about what is TRUE, which is what THEORY holds. Proposed: the scheme follows the kind of claim, not the apparatus that produced it, so a finding about the signal is a THEORY whether it was measured on a GPU or on 755 people — provided its document says what it does not license. Rejected: the exception framing, and sourcing a practice from it. Adding a topic, which v1 rejected, is taken in v3 under ADR-059: signal-structure. | Proposed |
| ADR-046 | Tag for what the document is about, not for what the record wanted it for | A second or third topic costs nothing when it is true, and a missing one costs a reader who browses by topic and never finds the document. Tag the subject, liberally. ADR-035’s warning about incidental tags binding chain edges is narrower than it reads — an invariant binds nothing where no relation is declared — and was being applied as a general brake. Rejected: minimal tagging, and tagging by filing motive. | Active |
| ADR-047 | Every relation says what it means, and extends already covered specialization | Twenty-one relations across four schemes carried a scheme, a required and a many and no statement of what they MEAN — the knowledge existed, as YAML comments nothing renders. All twenty-one now carry label: and blurb:, which luria has supported since LU-#254 and no record had used. Writing extends’s blurb answered the open question from ADR-048: it already covers a narrower case, so specializes: is not needed and SOTA-085’s edge to SOTA-083 was simply in the wrong field. Rejected: splitting extends into three relations. | Active |
| ADR-048 | An unbound relation is one of four things, and liberal tagging answers one of them | Carries ADR-036’s four-way classification forward unchanged and revises one verdict. Its fourth category included trunk papers whose contribution spans two topics, left standing because “splitting a trunk paper’s topic would be filing it under half its contribution” — true under minimal tagging, and moot under ADR-046, which says carry both. Six documents retagged, twenty-two unbound relations down to sixteen. Rejected: retagging the analysis-and-evaluation crossings, and binding the flash-attention edges. | Superseded — by ADR-049; Superseded on its central verdict. Its six retags stand and its account of what liberal tagging does and does not resolve stands; what it got wrong is leaving sixteen relations unbound and reporting the invariant as over-strong. The successor binds all of them by naming what the documents were already about, and records that unbound is never the resting state. |
| ADR-049 | Unbound is never the resting state: the relation is evidence that a tag is missing | An unbound relation is a defect with exactly two readings — the invariant is missing, or the relation is wrong — and never a third where the answer is to note that somebody looked. Twenty-two unbound relations and ten unbound lines are now zero, by naming what twenty-one documents were already about. Also removes a groups.primary_topic block that constrained nothing and had silently drifted from the vocabulary. Rejected: an acknowledgement directive, and dropping analysis-and-evaluation. | Active |
| ADR-050 | Two more topics: numerics and precision, and in-context learning | The vocabulary goes from fourteen to sixteen. numerics-and-precision because 48 documents about how many bits sat across nine topics with none holding a quarter, and because two topics each claimed a fragment in a trailing blurb item. in-context-learning because every item in adaptation-and-tuning’s blurb changes the weights or the window and ICL changes neither. A third candidate, retrieval, was rejected on counting. | Active |
| ADR-051 | The Pages workflow declines a permission the repository grants | The github-pages environment was widened to allow deployment from any claude/* branch. The workflow now gates publishing on main in two places and leaves that permission unspent, held for a branch preview nobody has needed yet. deploy names the branch rather than excluding an event — the old != 'pull_request' was a deny-list of one entry that a workflow_dispatch walked past — and the pull_request trigger is gone, which costs the automatic proof that the site still builds. Rejected: revoking the environment policy instead, and gating build as well. | Active |
| ADR-052 | Two more topics: one that had a trailing clause for a home, and one that had nothing | Eighteen topics, from sixteen. multimodal-learning takes nine documents that sat across six topics while model-architecture’s blurb carried “multi-modal designs” as a trailing clause — the same half-home shape ADR-050 found for numerics. deployment-and-society names nothing in the record at all and twenty-four papers on the incoming list, led by its single highest-revisit entry. Rejected on counting: mechanistic interpretability, the physics of learning, safety, agents, graphs, federated learning, human-AI interaction and scientific domains. | Active |
| ADR-053 | A practice may state that it has no identifiable origin, by leaving introduced_by empty | ADR-030 made introduced_by: required because an absent field was ambiguous between “the origin is the primary source” and “nobody checked”. A third case has arrived that neither reading covers: the record looked, and no document states the recommendation. required: goes back to false so that case can be written down — but the rule is the opposite of ADR-029’s optionality. Write the field explicitly empty, with a comment saying what was searched, and the emptiness is a claim a reader can falsify by naming the paper. Rejected: filling the field with the primary source anyway, which asserts something false; and inventing a sentinel LIT document, which puts a non-paper in the reading list. | Active |
| ADR-054 v3 | The four commands are five, and two of them are invariants a hook can hold | luria repair is in the documented sequence, which had four commands and needed five — and, per v2, luria link --fix stays, because neither command contains the other. A Makefile wraps the sequence and a tracked pre-commit hook refuses generated views on a branch, which is ADR-018 stated as an invariant rather than remembered. Rejected: gitignoring docs/ on branches, since main tracks them; and leaving the sequence undocumented on the grounds that luria --help is authoritative, which is true and is not where anybody looks. | Active |
| ADR-055 | Declare invariant: tags on SOTA.source, after taking the backlog to zero | schemes.SOTA.references.source now declares invariant: tags, so a practice and every paper behind it must share at least one topic. The declaration is second: the pass came first, and took 60 unbound rows to 0. Rejected: declaring it over the standing backlog, which would have made the report read 60 with no way to retire a row that had been looked at — a signal turned into wallpaper, since no unbound-ok: directive exists. | Active |
| ADR-056 | capability-thresholds: whether a capability arrives abruptly is a claim, not a method | A nineteenth topic, capability-thresholds, for a capability that arrives abruptly rather than smoothly — emergence at scale, grokking, phase transitions — and the dispute about whether the discontinuity is real. analysis-and-evaluation was holding all nineteen such documents and is a word for methods, not for claims about the world. Rejected: leaving them there, which made the record’s largest live controversy unbrowsable; and emergence, which names one axis of three. | Active |
| ADR-057 | Three practices from one paper are siblings by source, not a line of practice | SOTA-037 extends SOTA-036 and SOTA-038 extends SOTA-036 are removed. extends means “could not stand without”, and neither practice depends on SOTA-036’s particular corpus, context length or objective — they depend on the class of model. All three name source: LIT-035, which already records the connection, so extends was saying “same paper” a second time in the wrong vocabulary. SOTA-038 also loses the model-architecture tag added to bind the edge. Rejected: a new enabled_by relation, and a domain tag, both of which preserve a lineage that is not one. | Active |
| ADR-058 | A library is evidence about consensus, and its observation lives in a report | A repository that implements a technique is evidence for consensus and for nothing else. The judgement lands in consensus_note, naming the libraries checked and the date; the observation lands in a generated report, pinned by ref and recomputable. A library does not become a LIT note — its paper may already be one. Rejected: implementations:, which already means four things and would be made permanently unreadable by a fifth. | Proposed |
| ADR-059 | biomolecular-modeling, and the topics as an axis rather than a scope | A twentieth topic, biomolecular-modeling, for models whose data is molecules: protein and nucleic-acid structure prediction, biological sequence language models, docking and molecular property prediction. It also records the rule the gap exposed. The topics organize what the anthology holds, they do not decide what it may hold, so content the axis cannot place is a finding about the axis. Rejected: declining AlphaFold as “outside the topics”, which is what happened first, and a protein-structure-prediction word too narrow for AlphaFold 3 or for the RNA paper already in the record. | Active |
| ADR-060 | concept-geometry | A twenty-second topic, concept-geometry, for how concepts are laid out in a model’s representation space: linear directions and the structures built from them, superposition and the dictionaries that separate it, probing and steering along those directions, and whether different models reach the same geometry. Four documents take it as their primary topic, moved from representation-and-encoding, whose blurb is about encoding the input and does not cover them. Twelve more add it as a secondary tag. Rejected: widening representation-and-encoding, and interpretability, which names a purpose rather than a subject and would absorb most of analysis-and-evaluation. | 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 |
| ADR-062 | published: is the exact date of first appearance where a source gives one | A LIT’s published: records the day a work first appeared — the arXiv v1 submission date, else the earliest full date Crossref reports, else the date the document itself carries — and falls back to the first of the month only when no source gives a day. The month-only convention recorded a date nobody meant and discarded one every source states. | Active |
| ADR-063 v2 | Relations a reader cannot weigh without prose must be explained in the body | Thirteen reference fields declare explain: cited (luria 0.33.3): a practice’s and a theory’s evidence, a practice’s origin, a theory’s explains, every corrects, contested_by, extends on all three schemes, and compared_against. Each code they hold must be cited in the body’s prose; a citation in a reference entry does not count. Rejected: explain: stated (a ref:: statement beside every citation, restating frontmatter), the converse back-references and NOTE.paper (complete in frontmatter), and clearing the resulting backlog in bulk. | Active |
| ADR-064 | agents-and-environments, graphs-and-networks, physical-sciences, human-ai-interaction | Four topics, taking the vocabulary from twenty-two to twenty-six: agents-and-environments, graphs-and-networks, physical-sciences and human-ai-interaction. Filing the reading feed’s revisit list (#180) declined three papers because no topic held them and filed four more under the nearest wrong word, each saying so; under ADR-059 that is the axis being short. Existing documents whose subject the new words name take them, first where it is their main subject and as a secondary tag otherwise. Rejected: a separate collective-intelligence, which agents-and-environments covers, and leaving the papers unfiled, which ADR-059 rules out. | Active |
| ADR-065 | Theories can be contested: contested_by and rivals | The THEORY scheme gains two relations for an account that is disputed and not yet replaced: contested_by (LIT, no converse), for a paper whose evidence cuts against it, as on SOTA; and rivals (THEORY, symmetric), for another account of the same phenomenon that cannot also be right. Both are explain: cited. THEORY-070’s corrects on the two weight-norm grokking accounts becomes rivals, which is what its own promote_when already said. Rejected: stretching corrects to cover disputes, and one combined relation that takes either a paper or a theory. | Active |
| ADR-066 | Two subtopics under generative modeling | Twenty-eight topics, from twenty-six. flows-and-transport and few-step-generation are secondary-only words, carried beside their parent topic and never as a document’s primary, as tiny-models already is. generative-modeling was on 169 documents and inference-optimization on 89, and the flow and few-step work inside them could not be browsed apart from GANs, tokenizers, serving and speculative decoding. Rejected: promoting the vocabulary to a scheme to get real parent-child terms, and splitting generative-modeling into primary topics. | Active |