Context
The most valuable thing in this record is not any single note. It is the sequences — what replaced what, and why. DP-003 says so directly: “Do this, and here is the thing everybody did until 2021 and why it stopped being right” is knowledge, and plain advice is not.
The record now carries at least ten such sequences by name. The residual chain: plain residual → Hyper-Connections → mHC, with Attention Residuals and Gated Residual as siblings and oHC as a critique. The Muon chain: Muon → weight decay and RMS matching → QK-Clip → per-head Muon. The sparse-attention line: NSA → DSA → CSA/HCA → QSA. The schedule chain: warm restarts → single cosine cycle → warmup-stable-decay → decay-to-zero.
All ten exist only as prose, and every note that participates re-describes the whole sequence in its own words. Twenty-four documents currently contain the word “chain” or “line” used this way.
The predictable thing happened. LIT-134 and LIT-140 each ended with a sentence saying the two residual replacements had never been compared against each other. That was true when written and false three weeks later, and it had to be corrected in two places, found only because one person happened to be reading both notes the same afternoon. A third note describing the same chain would have been a third place, and would have been missed.
The single relation the schema does model — superseded_by: — behaves
correctly and demonstrates the point. It renders in the index, the lint
catches citations of what it retires, and nobody has to remember to update a
paragraph, because there is no paragraph to update.
Decision (proposed)
Add two relation fields to LIT, alongside the existing superseded_by::
extends: [LIT-137](../literature.d/LIT-137.md) # this work builds on that one
compared_against: [LIT-140](../literature.d/LIT-140.md) # this work evaluates itself against that one
extends: is the spine of a chain. compared_against: is the cross-link
that turns a set of siblings into a comparison — and is exactly the fact that
went stale twice above: LIT-152 would carry
compared_against: [LIT-134, LIT-140], and the claim “these have not been
compared” would become a derived, always-current absence rather than a
sentence somebody has to remember to delete.
luria index then renders each chain once, as a view, and the notes stop
carrying their own copies. A note’s Standing section keeps saying why the
work matters to this project — that is judgement and belongs in prose — while
the sequence itself becomes data.
Alternatives considered
Leave it as prose and be disciplined. This is the status quo, and the evidence against it is that discipline already failed, on the most carefully written notes in the corpus, within three weeks of them being filed. Prose duplication does not decay because people are careless; it decays because nothing points at the copies.
Reuse superseded_by: for everything. Rejected because it would lie.
Hyper-Connections is superseded by mHC — the successor’s premise is that the
predecessor was unstable. Gated DeltaNet is not superseded by Kimi Delta
Attention; both are live, in different production models, and flattening
“extends” into “supersedes” would retire papers that nothing has retired,
which is precisely the deletion-by-status DP-003 exists to prevent.
A separate chains.yaml listing each sequence. Rejected: it is a second
place to forget, and it would sit outside the documents it describes, so
adding a note would mean editing a file the filer has no reason to open. The
relation belongs on the document that knows it.
Free-form related: with a note. Rejected as too weak to generate from.
A view can render “extends” and “compared against” differently; it cannot do
anything useful with “related, see body”.
Adopted, after one chain
The luria support exists (luria#171):
a declared relation is walked transitively and the lines render to
docs/lineage.md, with a cycle and a one-sided
compared_against: as lint findings. The residual chain — six documents,
the one that had already gone stale — was migrated first, as the section
below insisted.
What the trial found, since the point of doing one first was to learn something:
The risk was real and smaller than feared. Four paragraphs came out of
LIT-134, LIT-140, LIT-141 and LIT-181, and every one of them was a roll call — “the other replacement in the record is X”, “the chain reads A → B → C”. Not one of them was an argument. The arguments stayed: why free mixing cost the identity mapping, why the Birkhoff polytope is bounded above and not below, why three designs landing within thousandths of each other is a measurement rather than a ranking. The split held.
The rendered page is thinner than the prose, and that is correct. It says order, title and status. A reader who wants to know why mHC replaced hyper-connections still has to open LIT-140, which is where that sentence lives and where it should live.
One thing the field settled that prose could not. Two notes had each
claimed the two residual replacements were never compared. With
compared_against: declared on LIT-152, LIT-134 and LIT-140, that claim is
now a derived absence: it cannot be true in one document and false in
another, because it is not written in either.
The cost is a judgement call per edge, not a mechanical conversion.
extends: on oHC and sHC pointing at mHC rather than at Hyper-Connections
was a real decision — both take mHC’s design and replace its constraint —
and getting it wrong would have rendered a plausible, wrong line. There is
no check for that; there is only reading the paper.
The remaining nine chains are a follow-up, one at a time.
Why this was Proposed rather than Active
It needs luria support that does not exist yet — references in a scheme
contract can hold codes, but rendering a transitive chain as a view is new
machinery, and a relation that is declared but not rendered is worse than
prose, because it looks maintained. The order is: agree the fields here,
build the view upstream, then migrate the ten chains and delete the
paragraphs they replace.
There is also a real risk to weigh first. A chain rendered mechanically will be shallower than the prose it replaces: “A extends B” loses “the free mixing is what made HC unstable, and constraining it is the whole point”. The answer is probably that the field carries the sequence and the prose carries the argument, with each note explaining only its own step rather than the whole line — but that split should be tried on one chain before it is imposed on ten.