Skip to content

Turn the pack-shaped exclusions into readings off by default (#753, 3c) - #946

Merged
derek73 merged 3 commits into
masterfrom
feat/3c-default-false-readings
Oct 30, 2026
Merged

derek73 merged 3 commits into
masterfrom
feat/3c-default-false-readings

Conversation

@derek73

@derek73 derek73 commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

3.0 sub-phase 3c of #753. Each excluded entry whose reason opened "pack-shaped" is now a generation reading written default = false in its language's file. Choosing that language through Locale.languages (#945) turns it on. The default compile does not change.

The split

Pack-shaped (converted here). These eight readings are right in their language. They are wrong as a default only because another language written in Latin script collides with them.

Word Files Collision
ml (mladší / mlađi / mlajši, the Younger) cs, hr, sk, sl the initials M. L.
st (starší / stariji / starejši, the Elder) hr, sk, sl Saint (cs st has been default = false since phase 2h)
père (the Elder) fr outside French

A pack turns these on, but they convert in that pack's own PR, as the RFC's Phase 3 table assigns them: pan, roz, nic, shri, sig, jaun, bt, bay, sb.

Every other exclusion is wrong in every language and stays an exclusion (for example duke, senior, the attached refusals).

Default unchanged

  • tools/vocab/build.py reports _compiled.py current. Only _index.py gains the eight rows, taking the count of readings written default = false from 3 to 11.
  • tests/v2/test_snapshot.py passes without a re-record, so the snapshot is byte-identical.

What each choice now moves

Measured 2026-10-29 with snapshot.py --languages TAG on b27dadd5 and on this branch. The figures count entries moved, with the names held only by CLDR in brackets.

Choice Before After
cs 11 (2) 14 (4)
sk, sl, hr 0 14 (4) each
fr 0 0 (no committed name holds père)
  • The three new moves read ml. as the suffix. They are Jiří Dienstbier ml. and two CLDR renderings with ml. before a comma of credentials.
  • The other eleven are st. Under 3b's semantics, turning a reading on also prefers it, so the English and French Saint readings of st leave. For example St Clair reads given St instead of title St.
  • This cost already reached cs in 3b, and now reaches sk, sl and hr too. Whether Saint should survive a choice that holds st as a generation word is left to 3f, which builds those packs. It is recorded in decisions/vocabulary-model.

Tests

  • Sweep: test_a_chosen_language_reads_its_off_generation_and_the_default_does_not parses Anna Novak <word> and Anna Novak <word>. for every multi-letter generation reading off by default, under its own language and under the default.
    • A guard holds that the sweep reaches all eight converted readings, because an empty parametrize would skip rather than fail.
    • One-letter words are left out. Written with a period, the initial veto takes them first.
  • test_no_exclusion_is_pack_shaped_any_more: no vocab TOML contains "pack-shaped" (the RFC's recompute).
  • Other shapes, pinned at today's readings (default and chosen). Under cs, Novak, ML reads suffix ML with nothing reported, while the default reads given ML. Novak, Anna ml. and Novak ml., Anna also move. The initial pairs Anna M. L. Novak and Anna ML Novak do not. Under fr, Jean Père reads suffix Père and reports GIVEN_OR_FAMILY. The silent comma case is recorded as an open question for 3f.
  • Strict xfail for the one-letter gap: es h and de i stay inert under their own language when written with a period (Juan Pérez H., Wilhelm Karl I.).
  • Two existing tests repointed: test_vocab's exclusion-refuses-another-file test now uses duke. test_parser's choice-that-changes-nothing test now uses sv, since fr now changes père.

Docs

  • decisions/vocabulary-model: a new Standing bullet and a 2026-10-29 Phase 3: language packs that prefer or restrict their language #753, phase 3c Log entry.
  • decisions/generational-words: the pack-shaped Standing bullet is amended, plus a Log entry.
  • Vocab README and AGENTS.md: the README's exclusion example is now duke. The README's Exclusions section and nameparser/vocab/AGENTS.md step 4 now state the rule: a reading wrong only as a default is written default = false, not excluded.
  • RFC: the Phase 3 status line and the overview row now note 3b and 3c as landed.
  • Release log: one sentence added to the Unreleased Locale.languages bullet.
  • Review: the design-docs-reviewer ran over the docs diff. Its four findings are fixed in the second commit: the description of the ml. moves, the reason one-letter words are left out, the date for cs st, and the rule's placement.

No code changes. No Lexicon or Parser field is added.

🤖 Generated with Claude Code

derek73 and others added 2 commits October 29, 2026 17:28
cs `ml`, hr, sk and sl `ml` and `st`, and fr `père` were exclusions
whose reason opened "pack-shaped": right in their language, wrong as a
default only because another language in Latin script collides. Each
is now a `generation` reading written `default = false` in its own
file, as cs `st` already was, so a language choice turns it on and the
default compiles exactly as before (_compiled.py unchanged, snapshot
byte-identical). Every other exclusion is untouched.

Tests sweep every multi-letter generation reading off by default under
its language and the default, and hold that no exclusion reads
"pack-shaped" any more. decisions/vocabulary-model and
generational-words record the split and what each choice moves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e where exclusions are written

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@derek73 derek73 added this to the 3.0 milestone Oct 30, 2026
@derek73 derek73 added enhancement vocabulary Per-word vocabulary model and language packs labels Oct 30, 2026
@derek73 derek73 self-assigned this Oct 30, 2026
… mark 3c in the RFC

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@derek73
derek73 merged commit 2cb763a into master Oct 30, 2026
12 checks passed
@derek73
derek73 deleted the feat/3c-default-false-readings branch October 30, 2026 04:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement vocabulary Per-word vocabulary model and language packs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant