Skip to content

Suffix-acronym collisions: rai and cha out, ba marked, #454 by design - #515

Merged
derek73 merged 4 commits into
masterfrom
claude/342-suffix-acronym-collisions
Sep 8, 2026
Merged

Suffix-acronym collisions: rai and cha out, ba marked, #454 by design#515
derek73 merged 4 commits into
masterfrom
claude/342-suffix-acronym-collisions

Conversation

@derek73

@derek73 derek73 commented Sep 7, 2026

Copy link
Copy Markdown
Owner

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 Lexicon override before any wordlist was edited.

The criterion. decisions.md#vocabulary-collisions C-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.

rai and cha leave SUFFIX_ACRONYMS (#342). Both arrived in the 2019 bulk Wikipedia post-nominal import and neither was reviewed against a surname. Aishwarya Rai reads family Rai — 1.4.0's own answer — where 2.0.0 through 2.2.0 read suffix Rai with no family name at all; Lala Lajpat Rai reads middle Lajpat, family Rai. The cost is stated and pinned: John Smith RAI reads family RAI, and Ahmad Jayadi, CHA reads given CHA, family Ahmad Jayadi, the comma being an ordinary family comma once nothing after it is credential vocabulary. Lexicon.default().add(suffix_acronyms={"cha"}) puts either back.

ba joins the ambiguous subset. BA is a common credential and Ba a real surname (Vietnamese; Senegalese Fula) — the ma/Ma shape exactly. Anna Ba reads family Ba flagged; John Smith BA keeps suffix BA and gains the flag; John Smith B.A. stays an unflagged suffix through the period gate; Smith, BA reads given BA, which is the Smith, Ed cost S2 already accepted.

#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 → family Mc Donald and John van Mc → family van Mc hold 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 a de-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 — mc and vd — and the clause now says so and names them. No example line moves, so corpus_rules.jsonl regenerates 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 Rai and John Smith RAI {middle, family, suffix}; John Smith, RAI and Ahmad Jayadi, CHA {given, family, suffix}. The ba marking moves none. Aishwarya Rai is the one name whose diff DISAPPEARS at 1.4.0 — that release read family Rai too — so the fix(#342) NOT WANTED rule 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 domu bullet rewritten as LIFTED (the phrase shipped 2026-08-26 via #434, and the bullet had still called it pending); the contested-membership Open: block emptied and saying so; and docs/customize.rst brought 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

derek73 and others added 3 commits September 7, 2026 16:13
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>
@derek73 derek73 self-assigned this Sep 7, 2026
@codecov

codecov Bot commented Sep 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.66%. Comparing base (266154d) to head (75cd103).

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@derek73 derek73 added this to the v2.3 milestone Sep 8, 2026
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>
@derek73
derek73 merged commit 8e6c483 into master Sep 8, 2026
11 checks passed
@derek73
derek73 deleted the claude/342-suffix-acronym-collisions branch September 8, 2026 01:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

1 participant