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 | practice field. Fewer moving parts, and it reintroduces exactly the problem: one status field for two kinds of claim. The tag groups and the requires rules would also have to become conditional on kind, 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.reason is 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.