Repository navigation
Should meng and lac be ambiguous suffix acronyms? wang meng has had no family name since 2.0 and renders Wang MENG on master #540
Description
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 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 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:
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.- Whether the rest of the post-nominals import wants the same sweep is
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), 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.
Activity
fix(#540): the toolkit review round
docs(#540): the follow-up is #544
Merge pull request #543 from derek73/claude/540-meng-lac-ambiguous
derek73 commentedon Sep 26, 2026
Shipped in PR #543 (merged 2026-09-25,
e3be17a7), as the marking rather than removal, and with no masks.mengandlacare inSUFFIX_ACRONYMS_AMBIGUOUS, so rules.md#S2 reads them as it readsmaandba:wang meng→ givenwang, familymengwith asuffix-or-namereport (every 2.x release read suffixmengand no family; 2.3.0 reportedgiven-or-family, the wrong fork; 1.4.0 read the family unflagged),tran lacthe same,Wang, MengandSmith, mengget 1.4.0's given name back, andWang M.Eng.reads familyM.Eng., accepted rather than widening the period gate. With words to spare the credential stays, now reported:john smith meng→John Smith MENG. The cost is the onemacarries, on the conventional spellings:john smith MEng→ familyMEng,Smith, John MEng→ middleMEng,John Smith MEng PhD→ familyMEng, suffixPhD, all of which every release read as a suffix; a credential run behind a suffix comma re-reads the comma (John Smith, PhD MEng→ givenPhD, familyJohn Smith), the pathjohn smith, phd maalready took, and that one is #544's question together with the period gate. Masks were declined because the map is role-free (wang mengwould renderWang MEng);eddanddedstay unmarked, borne as given names. Fourteen shape-tagged rows and eightfix(#540)ledger rules per 2.x ledger classify every mover; no corpus name carried either word before. Record: the 2026-09-25 bullets underdecisions.md#suffix-acronym-collisions,rules.md#S2's six new example lines, and the 2.4.0 release log.feat(suffixes): meng and lac join the ambiguous acronyms
docs(derek73#540): the rule's examples, the decision and the release …
docs(derek73#540): the whole-branch review round
fix(derek73#544): a listed member written in period-closed chunks pas…
test(derek73#544): case rows, rules.md examples, corpora and ledgers
docs(derek73#544): decision records, release notes and prose sweep
fix(derek73#544): an anchored pick after a family comma reports, and …
Standing blocks for suffix-acronym-collisions and vocabulary-collisio…