Two entries in SUFFIX_ACRONYMS are borne as ordinary names in the one position the suffix vocabulary claims, the last word of a name, and the claim costs the family name. meng (MEng, Master of Engineering) is a common Chinese surname and given name; lac (LAc, Licensed Acupuncturist) is a Vietnamese and French surname. Neither is in suffix_acronyms_ambiguous, so a bare trailing meng or lac reads as a credential with no words-to-spare test and no ambiguity report.
>>> parse("wang meng")
ParsedName(given='wang', suffix='meng') # family is empty
>>> parse("wang meng").ambiguities
(Ambiguity(kind=GIVEN_OR_FAMILY, ...),) # reports the wrong fork: the one-word name, not the suffix
>>> parse("nguyen van lac")
ParsedName(given='nguyen', family='van', suffix='lac')
>>> parse("wang meng").capitalized()
'Wang MENG'
Since when. wang meng, li meng and zhang meng read family meng on 1.4.0 and suffix meng, with no family, on every release from 2.0.0; nguyen van lac has read suffix lac with family van on every release from 1.4.0. Since #521 (on master, unreleased) the credential clause renders the suffix in capitals, so Wang MENG and Nguyen Van LAC where 2.3.0 gave Wang Meng and Nguyen Van Lac. Measured 2026-09-24 on the released wheels, the parent 4d0680e and the #539 tree; the recipe is in decisions.md#R4's Excluded block for the 2026-09-24 masks (CAPITALIZATION_EXCEPTIONS — meng, edd, lac, ded).
Origin. lac came in with the Wikipedia post-nominals import, af5bdab (2019-12-11, #93), which AGENTS.md records as never reviewed against surname collisions; meng came in with 3e14ea20 (2026-07-01, the German/Dutch title and degree batch, first shipped in 1.3.0).
The criterion. decisions.md#vocabulary-collisions C-i: a word belongs in its set's ambiguous subset iff it is borne as an ordinary name in the position the vocabulary claim acts on, and under uncertainty the default is AMBIGUOUS. Both words pass that test in the trailing position. The three earlier applications to this set were rai and cha removed, ba marked ambiguous, mc left alone (decisions.md#suffix-acronym-collisions).
Proposed rule
Rationale: a credential acronym that is also a surname cannot be read as the credential from its bare spelling alone; the words-to-spare count (rules.md#S2) and the written case are the evidence, exactly as for MA and BA.
Statement: meng and lac join suffix_acronyms_ambiguous. A bare trailing member of the ambiguous set reads as a credential only with words to spare, or written in capitals in a mixed-case name (S2, unchanged); the fork is reported as SUFFIX_OR_NAME.
Examples, measured 2026-09-24 on the #539 tree with the two words added to a private lexicon's ambiguous set:
"wang meng" → given="wang", family="meng" ambiguity: SUFFIX_OR_NAME
"li meng" → given="li", family="meng" ambiguity: SUFFIX_OR_NAME
"john smith meng" → suffix="meng" ambiguity: SUFFIX_OR_NAME · words to spare
"john smith m.eng." → suffix="m.eng." ambiguity: SUFFIX_OR_NAME
"meng li" → given="meng", family="li" unchanged · not the trailing slot
"nguyen van lac" → suffix="lac", family="van" ambiguity: SUFFIX_OR_NAME · words to spare
"tran lac" → given="tran", family="lac" ambiguity: SUFFIX_OR_NAME
Accepted consequences:
john smith MEng and john smith LAc read the word as the FAMILY name under the ambiguous marking (S2: in a mixed-case name a member of the ambiguous set "written in any other cased form that is not wholly lower reads as the name even with words to spare"). Today both read as the suffix. The conventional spellings of these two credentials are exactly the mixed-case forms S2 reads as a name, so this is the real cost of the marking, and the same cost ba/ma already carry.
nguyen van lac keeps its 1.4.0 reading (suffix lac), since the count decides and there are words to spare; only the two-word Vietnamese forms move.
Alternative considered: REMOVE both, as rai and cha were. Measured: john smith meng then reads family meng and john smith MEng family MEng, while john smith m.eng. still reads as a suffix by its dotted shape (S3). Removal loses the bare credential outright where the marking keeps it with words to spare; the criterion's default under uncertainty is the marking.
Open questions:
Where it lands: nameparser/config/suffixes.py (SUFFIX_ACRONYMS_AMBIGUOUS), a tests/v2/cases.py row per fork, the decisions.md#suffix-acronym-collisions entry, and the differential ledger rule for the two-word Chinese forms, which move a role at every 2.x baseline.
Found while landing #539, whose decisions.md#R4 Excluded block carries the measurements and an Open: pointer to this issue.
Two entries in
SUFFIX_ACRONYMSare borne as ordinary names in the one position the suffix vocabulary claims, the last word of a name, and the claim costs the family name.meng(MEng, Master of Engineering) is a common Chinese surname and given name;lac(LAc, Licensed Acupuncturist) is a Vietnamese and French surname. Neither is insuffix_acronyms_ambiguous, so a bare trailingmengorlacreads as a credential with no words-to-spare test and no ambiguity report.Since when.
wang meng,li mengandzhang mengread familymengon 1.4.0 and suffixmeng, with no family, on every release from 2.0.0;nguyen van lachas read suffixlacwith familyvanon every release from 1.4.0. Since #521 (on master, unreleased) the credential clause renders the suffix in capitals, soWang MENGandNguyen Van LACwhere 2.3.0 gaveWang MengandNguyen Van Lac. Measured 2026-09-24 on the released wheels, the parent 4d0680e and the #539 tree; the recipe is indecisions.md#R4's Excluded block for the 2026-09-24 masks (CAPITALIZATION_EXCEPTIONS — meng, edd, lac, ded).Origin.
laccame in with the Wikipedia post-nominals import,af5bdab(2019-12-11, #93), which AGENTS.md records as never reviewed against surname collisions;mengcame in with3e14ea20(2026-07-01, the German/Dutch title and degree batch, first shipped in 1.3.0).The criterion.
decisions.md#vocabulary-collisionsC-i: a word belongs in its set's ambiguous subset iff it is borne as an ordinary name in the position the vocabulary claim acts on, and under uncertainty the default is AMBIGUOUS. Both words pass that test in the trailing position. The three earlier applications to this set wereraiandcharemoved,bamarked ambiguous,mcleft alone (decisions.md#suffix-acronym-collisions).Proposed rule
Rationale: a credential acronym that is also a surname cannot be read as the credential from its bare spelling alone; the words-to-spare count (rules.md#S2) and the written case are the evidence, exactly as for
MAandBA.Statement:
mengandlacjoinsuffix_acronyms_ambiguous. A bare trailing member of the ambiguous set reads as a credential only with words to spare, or written in capitals in a mixed-case name (S2, unchanged); the fork is reported asSUFFIX_OR_NAME.Examples, measured 2026-09-24 on the #539 tree with the two words added to a private lexicon's ambiguous set:
Accepted consequences:
john smith MEngandjohn smith LAcread the word as the FAMILY name under the ambiguous marking (S2: in a mixed-case name a member of the ambiguous set "written in any other cased form that is not wholly lower reads as the name even with words to spare"). Today both read as the suffix. The conventional spellings of these two credentials are exactly the mixed-case forms S2 reads as a name, so this is the real cost of the marking, and the same costba/maalready carry.nguyen van lackeeps its 1.4.0 reading (suffixlac), since the count decides and there are words to spare; only the two-word Vietnamese forms move.Alternative considered: REMOVE both, as
raiandchawere. Measured:john smith mengthen reads familymengandjohn smith MEngfamilyMEng, whilejohn smith m.eng.still reads as a suffix by its dotted shape (S3). Removal loses the bare credential outright where the marking keeps it with words to spare; the criterion's default under uncertainty is the marking.Open questions:
edd(EdD) andded(DEd) were excluded from the 2026-09-24 masks on the same name-word ground (Edd Smith,Ded Gjo Luli) but are borne as GIVEN names, which is not the position the suffix claim acts on; no measurement shows either losing a family name. Left out of this proposal unless a trailing bearer turns up.Mc DonaldandSte Marieread the particle as the given name #360's shape, not this issue's: this one is the two words the Case repair: letter masks, suffix-free gate, hyphenated links (#459, #492, #478) #539 review measured.Where it lands:
nameparser/config/suffixes.py(SUFFIX_ACRONYMS_AMBIGUOUS), atests/v2/cases.pyrow per fork, thedecisions.md#suffix-acronym-collisionsentry, and the differential ledger rule for the two-word Chinese forms, which move a role at every 2.x baseline.Found while landing #539, whose
decisions.md#R4Excluded block carries the measurements and anOpen:pointer to this issue.