The differential corpus is four different things wearing one name, and only one of them has a knowable purpose.
corpus.jsonl 486 string literals scraped from v1's test suite at a pinned ref (2d5d8c2)
corpus_issues.jsonl 381 harvested from this repo's GitHub issue text
corpus_cjk.jsonl 98 derived from the CJK rows of tests/v2/cases.py
corpus_rules.jsonl 248 generated from the examples in docs/design/rules.md
Every file is a bare list of strings:
Only corpus_rules.jsonl names trace back to something that says what they are for — a rule and an assertion. The other 965 are contract by accident: something scraped them, the gate compares them at three baselines, and any change that moves one must now explain itself in a ledger rule. Alois von und zu und von Liechtenstein sits in corpus.jsonl with exactly the standing of Beethoven, Ludwig van.
The cost, concretely
The gate demands an explanation for names nobody chose, at the same price as names that matter — and the explanation has to be written as a ledger rule, which explains a diff, not a name. So a question like "what should und De y parse as?" gets asked and answered as though it were a design decision, when the honest answer may be "that string exercises nothing; drop it."
Question
Should a corpus entry carry a shape label — trailing ambiguous particle, title run, particle chain, bound-given pair, conjunction join — recorded once when the name is admitted?
That would let a moved name be answered with "this row exercises nothing we decided; drop it" instead of with a ledger rule, and would make coverage answerable: which shapes does the corpus actually exercise, and how many names deep?
Not a proposal to delete anything. The v1-derived set is the compatibility contract and the harvested set catches real regressions. The problem is that nothing records why a name is present, so nothing can decide when it should stop being.
The differential corpus is four different things wearing one name, and only one of them has a knowable purpose.
Every file is a bare list of strings:
Only
corpus_rules.jsonlnames trace back to something that says what they are for — a rule and an assertion. The other 965 are contract by accident: something scraped them, the gate compares them at three baselines, and any change that moves one must now explain itself in a ledger rule.Alois von und zu und von Liechtensteinsits incorpus.jsonlwith exactly the standing ofBeethoven, Ludwig van.The cost, concretely
The gate demands an explanation for names nobody chose, at the same price as names that matter — and the explanation has to be written as a ledger rule, which explains a diff, not a name. So a question like "what should
und De yparse as?" gets asked and answered as though it were a design decision, when the honest answer may be "that string exercises nothing; drop it."Question
Should a corpus entry carry a shape label — trailing ambiguous particle, title run, particle chain, bound-given pair, conjunction join — recorded once when the name is admitted?
That would let a moved name be answered with "this row exercises nothing we decided; drop it" instead of with a ledger rule, and would make coverage answerable: which shapes does the corpus actually exercise, and how many names deep?
Not a proposal to delete anything. The v1-derived set is the compatibility contract and the harvested set catches real regressions. The problem is that nothing records why a name is present, so nothing can decide when it should stop being.