test: a word list has a ceiling, so the sweep gets a third instrument #6
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "test/a-word-list-has-a-ceiling"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A fifth miss, found while reading
registry/conventions.yamlfor something else. The single source of truth still held French on seven lines, and so did output messages of the tool itself. The guard merged in #3 was green over all of it.None of it was hidden. It was ordinary vocabulary the list had never heard of:
registry/conventions.yamltools/naming.pyexamples/,policy/,templates/, three registriesThe lesson is about the instrument
A vocabulary sweep finds the words somebody thought of and no more. Widening it after each miss is a game with no end state. So two things happen here, and the second is the one that matters.
1. The list is widened once, hard — 162 → 818 words. Not word by word as misses appear, but in one pass built from common French and then subtracted from, by hand, for every word English also spells (236 of them).
That triage was itself wrong twice, and the guard said so both times:
existantandadressehad been filed as English, and the first run after widening put them straight back in front of me.2. A third sweep that is not a vocabulary at all — elision.
French contracts an article or a pronoun before a vowel. English has no construction that places one of those letters before an apostrophe at the start of a word — every English contraction attaches to the end (
's,'t,'re,'ll,'ve), ando'clockis the exception everybody knows. A lookbehind keeps those out.So the rule catches French the list has never heard of — proper nouns and invented words included. It earned its place on the first run, finding two lines that 696 words had just walked past: a note in the GCP registry and a section header in
tools/naming.py.And it caught the guard again: the comment explaining the rule quoted two French examples — the same self-reference that moved the word list out of the code in #3. The examples are gone; the rule is described instead.
Eight mutations
Verification
make checkgreen: 66 module tests, 48 policy tests, 11 reference plans,english: 83 files, 60,174 lines, 818 words, 4 exceptions, 0 findings,address: 0 findings.What this still cannot do
Stated rather than implied: it finds French, it does not prove English. A sentence of ordinary technical English words in French word order passes, and so does any French word still outside the 818.
The honest claim is narrower: the sweep is now wide enough that each future miss costs one line, not thirty-six, and the elision rule degrades gracefully where a vocabulary does not.
🤖 Generated with Claude Code
A FIFTH MISS, found while reading registry/conventions.yaml for something else. The single source of truth still held French on seven lines, and so did output messages of the tool itself. The previous guard was green over all of it. NONE OF IT WAS HIDDEN. It was ordinary vocabulary the list had never heard of: the word for length in a style description, the word for a rename in a field comment, labels for ten cities, the stage label for acceptance, and in tools/naming.py five messages a user reads on their terminal - an unknown style, an unknown site kind, a rename behaviour, and an expected-versus-got comparison. THE LESSON IS ABOUT THE INSTRUMENT, NOT ABOUT THE WORDS. A vocabulary sweep finds the words somebody thought of and no more, and widening it after each miss is a game with no end state. So two things happen here, and the second is the one that matters. FIRST, THE LIST IS WIDENED ONCE, HARD: 162 words to 818. Not word by word as each miss appears, but in one pass built from common French and then subtracted from, by hand, for every word English also spells - 236 of them. The triage was itself wrong twice and the guard said so both times: "existant" and "adresse" had been filed as English, and the first run after widening put them straight back in front of me. SECOND, A THIRD SWEEP THAT IS NOT A VOCABULARY AT ALL. French contracts an article or a pronoun before a vowel; English has no construction that places one of those letters before an apostrophe at the START of a word - every English contraction attaches to the end ('s, 't, 're, 'll, 've), and o'clock is the exception everybody knows. A lookbehind keeps those out. The rule therefore catches French the list has never heard of, proper nouns and invented words included. IT EARNED ITS PLACE ON THE FIRST RUN, finding two lines that 696 words had just walked past: a note in the GCP registry and a section header in tools/naming.py. AND IT CAUGHT THE GUARD AGAIN. The comment explaining the rule quoted two French examples, which is the same self-reference that moved the word list out of the code in the first place. The examples are gone; the rule is described instead. EIGHT MUTATIONS, including the two the new sweep exists for: M1 an accented word -> caught, U+00E8 named M2 French carrying no accent -> caught M3 the U+0153 ligature -> caught M4 French in the GENERATOR of 53 lines -> caught M7 a sentence appended to the word list -> refused, not a token M10 elision, a contracted article -> caught M11 elision, a contracted conjunction -> caught M12 English contractions and o'clock -> NOT flagged, as intended WHAT THIS STILL CANNOT DO, stated rather than implied: it finds French, it does not prove English. A sentence of ordinary technical English words in French word order passes, and so does any French word still outside 818. The honest claim is that the sweep is now wide enough that each miss costs one line, not thirty-six - and that the elision rule degrades gracefully where the vocabulary does not. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>