Context
In the old schema a paper carried attic, experimental, sota_maybe and
sota on the same object. The first three are judgements about the paper;
the fourth is a list of judgements about practice. The builder resolved the
mismatch by projecting paper-level flags onto every recommendation the paper
produced.
That projection is wrong in both directions, and the corpus contains both:
- Batch Normalization is foundational and stays worth reading, while one of the recommendations drawn from it is “consider alternatives like LayerNorm for transformers” — the paper is current, the advice has moved.
- Papers retired to the attic can be the source of practice that still holds. Under the projection, atticking the paper would have deprecated every recommendation from it, and keeping the recommendations meant the paper could not be atticked.
The projection also had a bug that hid the whole problem: because the
experimental and superseded_by branches read paper.sota, and no paper
with those flags had a sota list, they never fired. Every recommendation
came out standard, so the collision never produced a visibly wrong record —
just a uniform one.
Decision
Two schemes.
LIT holds one note per paper. Its status answers what is this paper’s
standing in the anthology — Active for worth reading, Rejected for the
attic, Superseded when later work covers it better.
SOTA holds one document per recommendation. Its status answers should you
do this — and it is allowed to disagree with the status of the paper it
cites. SOTA documents are required to name a source:, which is enforced
in luria.toml; a recommendation with no paper behind it is an opinion.
Each scheme declares its own statuses.yaml, because the five words mean
different things in the two of them.
Alternatives considered
- One scheme with a
kind: paper | practicefield. Fewer moving parts, and it reintroduces exactly the problem: one status field for two kinds of claim. The tag groups and therequiresrules would also have to become conditional onkind, which is a scheme in a trenchcoat. - Papers stay data, practices become documents. Genuinely tempting — the
bibliography is machine-generated metadata and wants to stay structured.
It loses the thing that makes the attic work:
attic.reasonis editorial prose, and the attic is only checkable if a retired paper is a document something can cite and the lint can find citations of. - Status quo. The collision is invisible today only because a bug is suppressing it. Fixing the bug without splitting the schemes would make the wrong projection start firing.
Consequences
A practice and its source can now disagree, which is the point, and also a
new way to be wrong: nothing forces a practice sourced from a Rejected
paper to be reconsidered. luria lint reports those as retired-citations
rather than failing on them, and an inactive-ok: comment at the citing site
is how a deliberate one is vouched for.
The migration produced 118 notes and 120 practices from 118 papers and 119
recommendations. The extra practice is the sota_maybe hedge, which had no
home in the old schema and is now a single Deferred document.