Suffix-acronym collisions: rai and cha out, ba marked, #454 by design - #515
Merged
Conversation
Both words arrived in the 2019-12-11 bulk wikipedia post-nominal
import and neither was ever reviewed against a surname collision.
"Aishwarya Rai" read suffix 'Rai' with NO family name at all at every
2.x release; it now reads family 'Rai', which is 1.4.0's own answer,
and "Lala Lajpat Rai" reads middle 'Lajpat', family 'Rai'.
The criterion, not the word. The four ambiguous acronyms (ma, do, ed,
jd) are all TWO letters, and that is not a coincidence: a two-letter
acronym has too few letters to be anything but common, so both
readings are live and the ambiguous marking is the honest answer. A
longer credential that is tenuous or specialized -- RAI is "RETA
Authorized Instructor", CHA is Certified Hotel Administrator -- and
collides with a common surname has no second reading worth carrying,
so it is removed. A caller who needs one back adds it:
Lexicon.default().add(suffix_acronyms={"cha"}).
The cost is accepted and pinned. "John Smith RAI" reads family 'RAI'
with 'Smith' a middle name, and "Ahmad Jayadi, CHA" reads given 'CHA',
family 'Ahmad Jayadi' -- with no credential after the comma, C1 reads
it as an ordinary family comma. Both have case rows so the reversal is
visible if anyone wants it back.
One of the two identical 'ch', lines goes with them as a same-commit
cleanup: a frozenset literal hid the duplicate, so membership drops by
exactly 2 (612 -> 610) and 'ch' itself stays.
Five corpus names move, all radar-tier (corpus_issues.jsonl), in three
diff shapes with one cause, which is why the ledger rule declares
{family, given, middle, suffix} where the deleted one declared two.
The fix(#342) NOT WANTED rule leaves expected_since_1.4.0.toml as its
own comment instructed: 'Aishwarya Rai' now agrees with 1.4.0 and
stops diffing there, so that ledger's fix(#342) heading lists four
names and the three 2.x ledgers list five. The _WATCHED_DIFFS row for
the name goes with it -- a case row watches it now.
Gate: 367 / 263 / 175 / 37 intentional at 1.4.0 / 2.0.0 / 2.1.0 /
2.2.0, 0 unexplained, 0 radar unclassified, corpus sizes unchanged.
Closes #342
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
BA is a common credential and Ba a real surname -- Vietnamese, and
Senegalese Fula -- which is the ma/Ma shape exactly, so 'ba' takes
the ambiguous marking rather than the removal the commit before this
one gave rai and cha. One line of data; the four sites that read the
marking are what the rows pin.
"Anna Ba" reads family 'Ba' with a suffix-or-name flag, where every
release since 2.0.0 read suffix 'Ba' and no family name at all (1.4.0
read family 'Ba' unflagged, so this is 1.4.0's answer plus the flag).
"John Smith BA" is unchanged in its ROLES and newly flagged: a full
name in front leaves the credential reading available, which is S2's
words-to-spare guard doing the work the marking exists to reach.
"John Smith B.A." stays an unflagged suffix -- the period gate counts
a per-letter dotted spelling unambiguously -- which rules.md#S2's
"John Smith M.A." example already pins; no second row for it.
The comma cost is the one already accepted for 'ed': "Smith, BA"
reads given 'BA', family 'Smith', with no flag, because the comma
decided it. The comma_ambiguous_acronym row ("Smith, Ed") pins that
shape; a second member of the set earns no row of its own.
No corpus name carries 'ba' as a trailing word, so nothing moves:
gate unchanged at 367 / 263 / 175 / 37 intentional, 0 unexplained, 0
radar unclassified.
Refs #342
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The #suffix-acronym-collisions entry carries the bundle's decisions in the doc's own shapes. The criterion is the part worth keeping: C-i decides ship-or-mark, and this adds the third answer and says when to reach for it -- the four acronyms marked before it are all TWO letters, which is not a coincidence, while a longer credential that is tenuous and collides has no second reading worth carrying and is removed. The "rai earns the marking rather than moving" sentence in #vocabulary-collisions gets a dated supersession note rather than a rewrite: it was right that Rai is borne and wrong about which answer that earns. #454 closes by design. mc has no vowel and is not a borne name, and the Scottish prefix never detaches from the name it belongs to, so "Donald Mc" is not a name anyone writes; "Mc Donald" and "John van Mc" hold on the never-given particle membership (#360), which is the one that actually bears on the example. A case row pins the reading whose whole point is that it must not change. What #454 got right is fixed. rules.md#P6's Accepted clause promised that a comma-less name keeps its positional reading, with a de-shaped example that could never falsify it; measured, it fails on exactly the two words in both the particle and the unambiguous suffix vocabulary, and the clause now says so and names them. No example line moves and corpus_rules.jsonl regenerates byte-identical. The two places that already conceded the defect in prose -- the 'Donald mc' bullet in decisions.md and the matching comment in expected_since_1.4.0.toml -- now point at the repair instead of at a standing defect. Derek's 2026-08-23 amendment from #342 rides in verbatim on the comma-suffix-arc Declined entry, and the Excluded (MAIDEN_MARKERS) "z domu" bullet repoints from #291 to #434. The Open block for contested vocabulary memberships is now empty and says so: all three of its entries were answered inside a fortnight. The #vocabulary-collisions size snapshot keeps its date and gains a 2026-09-07 recompute -- 610 acronyms with 5 ambiguous, and 613 was already one high when it was written. docs/customize.rst stops telling callers to leave an uncertain word out and tells them to mark it ambiguous, which is what C-i says, with removal offered as the other direction and named for what it is. The 2.3.0 release notes gain two Behavior Changes bullets. #454 gets none: this log has no precedent for recording a by-design disposition. Closes #454 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #515 +/- ##
=======================================
Coverage 98.66% 98.66%
=======================================
Files 45 45
Lines 3232 3232
=======================================
Hits 3189 3189
Misses 43 43 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Three review agents on the whole PR, plus the maintainer's clarification of the criterion: the decision weighs how common a word is as a borne name against how common it is as a credential -- the name reading dominating removes the entry (rai, cha), rough balance earns the ambiguous marking (ba, the ma shape), the credential dominating keeps it unambiguous. Length is a correlate, not the test; every statement of the criterion now says so. Prose: customize.rst no longer claims an ambiguous marking "only adds a flag" (it moves the comma and bracketed forms, and this PR's own "Smith, BA" is the counterexample); the ba release note states the comma and bracketed costs with their before-values; the wordlist comment stops stating the R.A.I. accident as a rule of removal and carries the ba/se/om/mc/vd reasons where a sweep meets them; AGENTS.md's collision digits are recomputed; rules.md#P6 stops pointing at the emptied Open block. Tests and rosters: Donald Mc is fix(suffix-routing), not parity, and Aishwarya Rai is parity, not fix -- both checked against the 1.4.0 wheel; "Smith, BA" and "John Smith C.H.A." are pinned; _WATCHED_DIFFS gains the two sole-watched arrivals the removal created; the guard roster gains the comma-truncation probes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This was referenced Sep 8, 2026
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.
Two issues, one question asked of different words: when a post-nominal acronym is also somebody's name, does the entry get marked, removed, or left alone? No parser code changes — two existing forks carry it, and both were confirmed on the pre-bundle tree with a throwaway
Lexiconoverride before any wordlist was edited.The criterion.
decisions.md#vocabulary-collisionsC-i decides ship-or-mark. This adds the third answer and says when to reach for it: the four entries that carried the ambiguous marking before this change (ma,do,ed,jd) are all TWO letters, which is not a coincidence — two letters is too few for an acronym to be anything but common, so both readings are live and a flag is honest output. A longer credential that is tenuous or specialized and collides with a common name has no second reading worth carrying, and is removed.raiandchaleaveSUFFIX_ACRONYMS(#342). Both arrived in the 2019 bulk Wikipedia post-nominal import and neither was reviewed against a surname.Aishwarya Raireads familyRai— 1.4.0's own answer — where 2.0.0 through 2.2.0 read suffixRaiwith no family name at all;Lala Lajpat Raireads middleLajpat, familyRai. The cost is stated and pinned:John Smith RAIreads familyRAI, andAhmad Jayadi, CHAreads givenCHA, familyAhmad Jayadi, the comma being an ordinary family comma once nothing after it is credential vocabulary.Lexicon.default().add(suffix_acronyms={"cha"})puts either back.bajoins the ambiguous subset. BA is a common credential and Ba a real surname (Vietnamese; Senegalese Fula) — thema/Mashape exactly.Anna Bareads familyBaflagged;John Smith BAkeeps suffixBAand gains the flag;John Smith B.A.stays an unflagged suffix through the period gate;Smith, BAreads givenBA, which is theSmith, Edcost S2 already accepted.#454 closes by design.
mchas no vowel and is not a borne name, and the Scottish prefix never detaches from the name it belongs to, soDonald Mcis not a name anyone writes.Mc Donald→ familyMc DonaldandJohn van Mc→ familyvan Mchold on the never-given particle membership (#360), which is the one that actually bears on the example. What #454 got right is fixed instead:rules.md#P6's Accepted clause promised that a comma-less name keeps its positional reading, with ade-shaped example that could never falsify it. Measured, it fails on exactly the two words in both the particle vocabulary and the UNAMBIGUOUS suffix vocabulary —mcandvd— and the clause now says so and names them. No example line moves, socorpus_rules.jsonlregenerates byte-identical.Measurement. Five corpus names move, every one from the radar-tier
corpus_issues.jsonl, in three diff shapes with one cause:Aishwarya Rai{family, suffix};Lala Lajpat RaiandJohn Smith RAI{middle, family, suffix};John Smith, RAIandAhmad Jayadi, CHA{given, family, suffix}. Thebamarking moves none.Aishwarya Raiis the one name whose diff DISAPPEARS at 1.4.0 — that release read familyRaitoo — so thefix(#342) NOT WANTEDrule was deleted as its own comment instructed and the 1.4.0 gate lists four names under the replacement where the three 2.x ledgers list five. Gate: 367 / 263 / 175 / 37 intentional at 1.4.0 / 2.0.0 / 2.1.0 / 2.2.0, 0 unexplained, 0 radar unclassified, corpus sizes unchanged.Also carried: Derek's 2026-08-23 amendment from #342, verbatim, on the comma-suffix-arc Declined entry; the Excluded (MAIDEN_MARKERS)
z domubullet rewritten as LIFTED (the phrase shipped 2026-08-26 via #434, and the bullet had still called it pending); the contested-membershipOpen:block emptied and saying so; anddocs/customize.rstbrought in line with C-i — it told callers to leave an uncertain word out, which is the inverse of "under uncertainty, default to AMBIGUOUS".Closes #342
Closes #454
🤖 Generated with Claude Code