Repository navigation
Read junior and senior in other languages as suffixes - #681
Merged
Merged
Conversation
Add 31 spelled-out generational words to SUFFIX_WORDS -- hr/sr/bs, bg, ru, uk, cs/sk, fi, lt and hi, feminine forms beside the masculine -- so "Antonio Pavlović mlađi" reads family Pavlović, suffix mlađi, where 1.4.0 through 2.4.2 read middle Pavlović, family mlađi. Each word was checked for name collisions (tools/name_usage.py) and found in the trailing spaced position in real titles on its own language's Wikipedia. Excluded with reasons in decisions.md#generational-words: kıdemli, sóisearach/sinsearach, Hungarian ifj./id., Bulgarian млада, and the ml./мл./st. abbreviations. The #602 run start implemented rules.md#S2's "Latin" as isascii(), which the first accented members would have split: "stariji Jones" started the run and "mlađi Jones" did not. It now reads a non-ASCII word's letters by their Unicode names; S2 gains examples pinning both that and the non-Latin refusal ("Taro Tanaka さん Jones"), which nothing guarded before. Six CLDR corpus renderings (hr, sr) move, all toward CLDR's fields; snapshot and cldr_agreement re-recorded. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The second review round found the run-start bullet presenting the refusal of Cyrillic and Devanagari generational words as what S2's "Latin" settles, though S2's stated reason for the refusal (an honorific carries no credential mark) is not true of them. Serbian splits by script: "Ana Horvat stariji Jones" reads suffix 'stariji Jones' and "Ана Хорват старији Џонс" family Џонс. Accepted under rules.md#S2 with that pair as its examples, since only a name word after the generational word reaches it; settling it is #679. Also scope the measurement bullet: the run-start change moves no name the corpus held before, its one mover being S2's own new example. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 14, 2026
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #681 +/- ##
=======================================
Coverage 99.03% 99.03%
=======================================
Files 46 46
Lines 4541 4543 +2
=======================================
+ Hits 4497 4499 +2
Misses 44 44 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
derek73
added a commit
that referenced
this pull request
Oct 14, 2026
…t the credential run (#685) * Let any suffix word start the credential run, whatever its script (#679) #602 kept a non-Latin honorific from starting the trailing run and drew that line by script, the vocabulary having no honorific marker; #661's Cyrillic and Devanagari generational words were refused with them, splitting Serbian by script. Measured over every non-Latin suffix word in six shapes and three orders, the exception protected no correct reading: an honorific followed by a name word read as a middle name, in silence ("राम शर्मा साहब मोहन" gave middle 'शर्मा साहब'). Now it reads as the suffix it is, the word behind it absorbed and reported, as "John Smith PhD Jones" reads. No corpus name moves. Drops _all_latin and S2's honorific exclusion and #681's Accepted clause; S2's examples now pin the run in Cyrillic and Devanagari. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Read junior and senior in 34 more languages as suffixes (#679) 76 more words join SUFFIX_WORDS from CLDR's generation samples, each checked against real trailing usage on its own language's Wikipedia and for name collisions. Where CLDR's word is a label translation, an adjective written before the name, or unused, the word the language's Wikipedia writes after names ships instead (lo, ti, or, ta, si, mk). Left out with reasons in decisions.md#generational-words: the transliterated "senior" forms measured as the surname Senior (he, ja), given names and surnames (Ավագ, ជូនៀ, Ajala), initials-shaped abbreviations, and fr fils/père and the Latin ml./st., whose collisions are with other languages and wait on a locale pack. The Cyrillic мл. ships: nothing collides with it in Cyrillic. 16 CLDR corpus renderings move, each gaining its generation word as the suffix; cldr_agreement gains 5 and regresses none. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Correct the #679 measurements and stale comments (review round) The design-docs review found the honorific grid keyed by each order's first role, so FAMILY_FIRST_GIVEN_LAST overwrote FAMILY_FIRST: it is 918 parses with 360 of 576 honorific and 285 of 342 generational ones moving, not 612/240/190; the recipe is now in the entry. The agreement claim counted one field twice and called field gains renderings: 4 suffix fields newly agree, none regress. Also: the mover list misses cv, the Senior evidence for ja is a Wikidata label of the English surname rather than Japanese writing, the #602 entry gains pointers to its retraction, and two test comments still stated the honorific refusal. The code review's stale мл comments are fixed too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Link the pack follow-up (#684) and record the シニア call Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #661. Closes #678.
What changes
31 junior/senior words join
SUFFIX_WORDS. The languages are hr/sr/bs (Latin and Cyrillic), bg, ru, uk, cs/sk, fi, lt and hi, with feminine forms beside the masculine:Antonio Pavlović mlađiPavlović, familymlađiPavlović, suffixmlađiАгриппина МладшаяМладшаяМладшаяबलबीर सिंह सीनियरसिंह, familyसीनियरसिंह, suffixसीनियरEach word passed two checks:
tools/name_usage.py: US Census, SSA, Wikidata).Excluded, with reasons in decisions.md#generational-words:
kıdemli,sóisearach/sinsearach: rank words, not generations.ifj./id.: written before the name.млада: a given name.ml./мл./st.: stay deferred under the existing Provide constants in non-Latin scripts (Cyrillic, Greek, Arabic, Hebrew) #269 note.The #602 run start now tests Latin script instead of ASCII. rules.md#S2 lets "an unambiguous Latin suffix word" start the trailing credential run, and the code implemented "Latin" as
isascii(). Without a change, the first accented members would have split one language:Pieter Bruegel stariji Joneswould start the run andAntonio Pavlović mlađi Joneswould not.Taro Tanaka さん JonesandГай Плиний Старший Ивановkeep their family names; nothing guarded those before. Mutating the test either way fails the examples.Accepted (rules.md#S2): the non-Latin refusal is drawn by script, because the vocabulary doesn't mark which suffix words are honorifics. So Cyrillic and Devanagari generational words don't start the run, and Serbian reads by its script (
Ana Horvat stariji JonesvsАна Хорват старији Џонс). Only a name word written after the generational word reaches this; none of CLDR's renderings has one there. Settling it is #679.Measured
mlađi/млађи, each gaining the suffix. The rest of the snapshot diff is the new rules-corpus example lines.cldr_agreementrecords 14 changes, all toward CLDR's fields. The bg/hi renderings don't move because those locales' formats drop the generation field.Antonio Pavlović mlađiwas also checked on 2.0.0 through 2.4.1.Review
Pavlović mlađi JonesandBruegel stariji Jonesread differently #678's original proposal (delete the test) would have broken S2. Hence the Latin-script fix, and The credential run tested ASCII, not Latin:Pavlović mlađi JonesandBruegel stariji Jonesread differently #678 was rewritten.AGENTS.md's "Adding a word to a config set" paragraph now says to read the rule behind any spelling test (
isascii,isalpha, script checks) before adding a set's first accented or new-script member.Follow-ups
Alexandre Dumas filsreads familyfils#679: more languages, plus the honorific question.tools/name_usage.pyfails with HTTP 431 for some Cyrillic words #680:name_usage.pyfails with HTTP 431 on some Cyrillic words.🤖 Generated with Claude Code