Context
The retagging pass in #140 moved fifteen documents to the topic that names their claim. Reviewed, the objection was: “you’ve replaced a bunch of tags where you just needed to add an additional tag. the old tags still seem applicable in the cases I reviewed.”
That is right, and re-reading them it is right about most of them. LIT-192
(Positional Interpolation) and LIT-193 (YaRN) moved from
attention-techniques to representation-and-encoding — but
attention-techniques names context length in its own blurb, and both
papers are context-extension papers. LIT-208 proposes a hybrid attention
strategy; its title says so. LIT-045 and LIT-048 describe components of
the architecture as well as schemes for encoding position. In each case the
new topic is better and the old one was not wrong.
It could not have been additive. fields.tags.groups.primary_topic
required exactly-one of the thirteen, so a second topic is a hard lint
violation:
`primary_topic` wants exactly one of … — has model-architecture,
representation-and-encoding
So the pass had one move available, and it took it. That is the same corner
luria.yaml already records from #101 — “the only move available under
exactly-one — it satisfied the check rather than answering it” — reached
from the other side: there the constraint forced an incidental secondary tag
in, here it forced a true topic out.
Decision
1. require: exactly-one becomes require: any on the topic group, in all
four schemes that declare it — LIT, SOTA, NOTE, THEORY.
2. The primary topic is unchanged in meaning: it is the first topic
listed. primary_topic already derives {tags[0]}, so the indexes still
file a document under one topic and nothing downstream moves. Relaxing the
group on its own changes no finding: with a second topic added and the
invariant left where it was, docs/reports/unbound-lineage.md was
byte-identical at 24 unbound relations and 10 unbound lines.
3. The chain invariant moves from primary_topic to tags. Asked in
review: “the primary topic doesn’t need to be invariant, just the presence of
a common tag across the edge.” That is what a relation asserts — its members
have something in common, not that the something is the first thing each is
about.
It read primary_topic on the argument that “any shared tag is too weak to
carry it — two practices bound by an incidental label read as bound when
nothing about their subject matter is”. That was right while exactly-one
was in force, because a secondary was then necessarily a free-form label
rather than one of the thirteen. Under any a secondary can be a real topic,
and the objection survives only for the free-form ones.
Measured on the switch: 24 unbound relations become 21, and the three that bind are the argument in miniature.
| edge | binds on | right? |
|---|---|---|
LIT-211 ↔ LIT-229 | training-optimization | yes — both are about ES as an optimizer |
LIT-211 ↔ LIT-242 | training-optimization | yes — same |
SOTA-085 ↔ SOTA-161 | flash-attention | no — an incidental label, and the case the old argument was about |
4. So the two flash-attention tags go. #101 added them to both ends of
that pair to bind it under an invariant that then read tags, and
luria.yaml already records the verdict — “it satisfied the check rather than
answering it. The edge is real and crosses a fault line in the vocabulary,
which is what these findings are for.” With the invariant back on tags they
would do it again. Removed, the edge is open again and the count settles at
22 relations, 10 lines.
5. The vocabulary gains tiny-models, and tags is closed on SOTA, LIT
and THEORY. Ten documents carried tiny-models as an undeclared string;
it now has a label and a blurb. Closing follows from the invariant move: if
any tag can bind a relation, a word typed once can quietly assert that two
documents share a subject, and a closed vocabulary makes that a decision
rather than a typo. Verified — an undeclared tag is now a violation naming the
file.
NOTE’s tags: declares no vocabulary at all, so closing does not reach it
and a free-form tag there is still accepted. That is a gap, not a decision.
The guard is a turnstile, not a wall, and the lint does not say so. Raised
in review: closing a vocabulary mainly discourages people from adding to it.
The message a contributor hits is “is not in the topics vocabulary — the
values are …”, which sets up “pick the nearest of these fourteen” as the path
of least resistance. That is the failure this whole pass has been repairing:
eight positional-encoding papers filed under the nearest available word
because representation-and-encoding did not exist yet.
Mitigated here in prose — CLAUDE.md now says the closure is an invitation
and that adding a word, with a label and a blurb and a decision, is the
intended move. Prose helps the contributor who is reading CLAUDE.md, not the
one looking at a lint message. LU-#273 asks luria to let a rule carry its own
note so the remedy can be printed where the failure is. If that is refused,
the honest response is to re-open the vocabulary rather than keep a guard that
teaches the wrong lesson — the invariant change is what made closing worth
doing, and it survives either way.
Eleven of #140’s fifteen get their old topic back as a secondary, plus
NOTE-028 following its paper: the eight positional-encoding papers,
LIT-211, SOTA-098 and SOTA-099.
7. Four stay replacements, because the old topic was not applicable:
SOTA-060— an initialization rule for stability, fileddistributed-optimizationbecause its source is a Megatron paper. The claim is not about distribution.SOTA-092,SOTA-093,SOTA-094— three claims about batch size, filedmodel-architecturebecause their source is a model report. A claim about sample efficiency is not about architecture.
Those four are the cases where the old tag named where the claim was found rather than what it is about, which is the filing error ADR-026’s rule is against. Keeping them would preserve a mistake, not information.
Consequences
Tag order is now load-bearing. Under exactly-one, reordering tags:
could not change primary_topic while only one entry was a topic. Under
any, moving the second topic to the front silently retags the document —
and nothing checks it. The convention was already unguarded (a free-form tag
listed first would always have produced a wrong primary_topic) and it holds
in all 596 documents today, measured. But the ways to break it just got more
plausible, and LU-#229 is the upstream ask for a guard.
Documents will appear under more than one topic in the generated views.
That is the point — a reader looking for context extension under
attention-techniques will now find YaRN there — and it makes the per-topic
pages less of a partition than they were.
exactly-one was load-bearing for one thing and is no longer. ADR-003
introduced it and ADR-026 reaffirmed it while merging the two vocabularies,
and in both the argument was about the vocabulary being shared and small,
not about a document having only one subject. Nothing in either turns on the
cardinality. This decision was filed Proposed because that reading needed
checking by someone who was there; it was checked and the decision is Active
as of v3.
A shared tag can now bind a relation, which is the point and the risk.
Binding on a real topic is the record saying what two documents have in
common. Binding on a free-form label is the #101 move. The two
flash-attention tags are gone and tiny-models is the only free-form word
left — on ten documents, binding nothing today — and the vocabulary is closed
on three of the four schemes so a new one has to be declared first.
NOTE is the hole in that. Its tags: names no vocabulary, so closing
does not reach it: a free-form tag on a reading is still accepted and would
still bind. Nothing exploits it today. It wants either a vocabulary on the
field or a reason in writing why notes are different.
Alternatives considered
Leave the replacements as they are. They discard a true statement about eleven documents, and the review objected to exactly that.
Keep exactly-one and record the old topic in keywords:. Keywords are
the paper’s own subject words, not the record’s filing, and nothing indexes
them as topics. It would hide the fact rather than carry it.
Keep the invariant on primary_topic. The position this decision held
until review. It makes the check ask whether two documents are primarily
about the same thing, which is stronger than what a relation asserts, and it
leaves LIT-211 unbound from the two ES papers either side of it while all
three carry training-optimization.
Move the invariant to tags and keep the flash-attention labels. Then
three edges bind and one is bound by a word added to bind it — the check
satisfied rather than answered, which the record already decided against.
at-most-one. The other available rule, and it permits zero topics, which
is worse than what we have — every document should be about something.
What became of this decision’s warning
(Added at v2, after a compression of this decision in CLAUDE.md was read as
saying the opposite of what it says.)
The warning in §3 and §4 — that a shared tag binding a relation is “the point and the risk”, the risk being a free-form label invented to satisfy the check — has been narrowed twice since. A reader arriving here should go to those decisions rather than reconstruct the rule from this one.
- ADR-046 — tag the document’s subject, liberally; the test is whether a tag is justifiably appropriate, and the forbidden case is narrow. It says this decision “stands unchanged” and that a tag true of a document “is not made suspect by a chain that might one day read it”.
- ADR-049 — an unbound relation has 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”. It took 22 unbound relations and 10 unbound lines to zero by naming what twenty-one documents were already about, and rejected an acknowledgement directive for the purpose.
Together those say what this decision left implicit: the report exists to find
documents that are not saying what they are about, and answering one by adding
a true topic is the intended response. What stays forbidden is narrow —
inventing a label to satisfy the check, which §5’s closed vocabulary has since
made structurally unavailable on SOTA, LIT and THEORY.