Skip to content

Corpus names become permanent contract without recording what shape each one exercises #468

Description

@derek73

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:

""
"\"Rick\" Edmonds"

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions