Context
ADR-001 made a note’s citation structural with
requires = ["arxiv"] on the LIT scheme, and the rule paid for itself at
once: two papers had reached the corpus with no identifier at all. The
check is the mechanism DP-001 describes — a
document that does not name its source fails the build, at the moment of
writing, while the author still knows where they read it.
The first document to fail it for a different reason was the Falcon-H1-Tiny
release (LIT-119): a 70-page technical blogpost
with the ablations this anthology exists to collect, published on a Hugging
Face Space and never posted to arXiv. It has a source. It does not have an
arXiv id, and requires can only demand a named field — it cannot say
“one of these”.
Luria 0.7 added the construct that can. A field group names a need and the fields that satisfy it:
[luria.schemes.LIT.field_groups.source]
fields = ["arxiv", "doi", "url"]
require = "at-least-one"
This is the shape luria’s own knowledge-base example uses for exactly this
scheme, and it is what the requires docstring recommends for “a paper that
was never posted to arXiv but has a DOI, or only a URL”.
Decision
A LIT note must carry at least one of arxiv:, doi:, url:. The
requires = ["arxiv"] line is gone; the field group replaces it.
The three are not equal, and the order in the config is the order of preference:
arxiv:anddoi:are identifiers. Written asARXIV-2507.22448orDOI:10.1145/3600006.3613165in prose they resolve through a remote, so the lint can check them andluria remotes --pincan endorse the content they name. A DOI remote is added alongside the arXiv one for this reason; the delimiter is:because a DOI carries its own dots and slash.url:is a string. Nothing checks that it resolves, nothing can pin what it points at, and nothing will notice when it moves. It is allowed because a report with only a URL still has a source, and a source that is a string beats a source that is blank. Use it only when neither identifier exists, and say in the note’s Standing section where a durable copy is.
Nothing about SOTA changes: a practice still names a LIT document, and
the note is where the note’s own source lives.
Alternatives considered
- File the report under its parent paper’s arXiv id. Falcon-H1-Tiny
builds on the Falcon-H1 report (
ARXIV-2507.22448) and its learnable-multiplier preprint (ARXIV-2601.04890), and either id would have satisfied the lint. Both name a different document. A citation that resolves to the wrong paper is worse than one that fails, because the lint stops looking. - Put the URL in
arxiv:. Satisfies “any truthy value”. It is the failure ADR-001 records — a field whose name promises one thing and whose contents are another — reintroduced deliberately. - Drop the requirement. A citation kept as an optional field is a citation that is empty in most records (DP-001). The requirement is the point.
- Require
url:on every note instead. Every arXiv paper has a URL, so one field would cover everything. But a URL cannot be found to be retired, cannot be pinned, and cannot be counted as the same paper when two notes spell it differently; the typed id is what makes “cite the paper” and “the citation resolves” one check. Requiring the weak form everywhere to admit it somewhere gives up the strong form for the 118 notes that have it. - A separate scheme for grey literature. A
REPORTscheme with its ownrequires. It splits the reading list on where a document was posted rather than on what it says, and every practice would need to know which scheme its source lives in. The distinction that matters — paper or note, evidence or claim — is already ADR-002’s. - Status quo. The blogpost cannot be filed, and neither can the eight practices drawn from it. The next technical report meets the same wall.
Consequences
- DP-001 is bumped to v2: its “applied here”
sentence named
arxiv:as the mechanism, and the mechanism is now the group. The principle itself is unchanged; this is its second instance. - The lint’s finding for a note with no source now reads
no source — one of arxiv:, doi:, url:, citing this table. Theunresolved-codesand retirement checks are unaffected: they run on codes in prose, and aurl:never produces one. - The corpus gains its first
url:-only note and its firstDOIremote with, so far, nothing cited through it. The remote is there so that the first DOI-only source can be filed without another decision. - What this does not fix: a
url:note is exactly as checkable as the YAML this record replaced, for that one field. If such notes become common, the next step is a remote for the host they share — a Hugging Face Spacesuidremote would makeHF:tiiuae/tiny-h1-blogposta resolvable code — and that is the decision to make when there are two.