Repository navigation
Donald Mc loses its family to a post-nominal reading — the comma-less twin of #380 #454
Description
Activity
- added a commit that references this issue
on Sep 8, 2026 Closing as by design for the parse, with the documentation defect this issue found fixed in 2.3.0 via #515.
Why
Donald Mcstays as it is.mchas no vowel and is not a borne name in the position the credential claim acts on. The Scottish prefix never detaches from the name it belongs to — nobody writesDonald Mc— so the suffix reading costs nothing real, andvdis the same: it needs a surname after it, so a bare trailingvdis the decoration. Marking either ambiguous would buy a flag on a name that is not written, at the price of weakening a reading that is.The two shapes that ARE written already hold, on a different membership than this issue assumed:
Mc Donaldreads lastMc DonaldandJohn van Mcreads lastvan Mc, both becausemcis a never-given PARTICLE (#360). So the trailing bare shape is the only one at issue, and it is the one nobody writes.Donald Mcis now a case row whose whole point is that it must not change.What this issue got right, and it is fixed.
rules.md#P6's Accepted clause said a comma-less name under the default order keeps its positional reading, with"Jong Anke de" → family="de"as its only example — ade-shaped example, which is why no test ever caught it. Measured, the clause fails on precisely the words that are in both the particle vocabulary and the UNAMBIGUOUS suffix vocabulary. There are exactly two (sorted(L.particles & (L.suffix_acronyms - L.suffix_acronyms_ambiguous))gives['mc', 'vd']), anddois not one — it sits in the ambiguous half and behaves likede. The clause now says that, names both words, and givesDonald mc→ suffixmcagainstBerg, Jan vd→ familyvd Bergas the contrast. Thedecisions.mdbullet and the ledger comment that had conceded the defect in prose now point at the repair.On the fix this issue proposed. Marking
mcandvdambiguous would work mechanically — the words-to-spare guard is the right instrument, and your three-token column is right that a genuine credential after a full name is never at risk. It was declined on the word rather than the mechanism: the marking exists to flag a live second reading, and formcthere is not one. #342 shipped alongside and is where the criterion was written down:decisions.md#suffix-acronym-collisions.Ledger note, since this issue predicted it:
fix(suffix-routing) a two-token name ending in a credential acronym keeps it in suffixis unchanged and still classifiesDonald mcat 1.4.0. Nothing went dormant.- added a commit that references this issue
on Oct 8, 2026
Smith vdhas the same defect (family='',suffix='vd'). Both are the comma-less twin of #380, which fixedBerg, Jan vd→family='vd Berg'only for the comma form.rules.md#P6's Accepted clause is false today
Measured, that holds for
deanddoand fails formcandvd:P6's own Accepted says the precedence "sweeps in every word that is both particle and suffix vocabulary — today vd, do and mc", so all three were in scope; only
dobehaves. The clause's only example isde-shaped, which is why no test catches it.The cause is one missing vocabulary marking, and it is #342's cause too
SUFFIX_ACRONYMS_AMBIGUOUSis what gates S2's words-to-spare guard. The guard already exists and already works:maJack Ma→ familyMa✓John Smith Ma→ suffixMa✓doSmith do→ familydo✓mcDonald Mc→ family''✗John Smith MC→ suffixMC✓vdSmith vd→ family''✗John Smith VD→ suffixVD✓raiAishwarya Rai→ family''✗Aishwarya Rai Bachchan→ familyBachchan✓The three-token column is already right in every row — a genuine credential after a full name is never at risk. The bug is only where consuming the word empties the family, which is exactly what the words-to-spare guard exists to prevent. So this is #342 again with a different word, and marking
mc/vdambiguous should let the existing guard produce the wanted reading without touchingJohn Smith MC.Under decisions.md#vocabulary-collisions C-i's "under uncertainty, default to AMBIGUOUS",
mcandvdarguably belong in that subset already: both are inNON_GIVEN_NAME_PARTICLES, so each is a name element in the position the credential claim acts on. And C-ii decidedvd's collision in the particle's favour — a decision the comma-less case currently contradicts.Worth measuring before deciding
vdambiguous disturbBerg, Jan vdreads the Dutchvan derabbreviation as a post-nominal decoration #380's comma attachment? P6 is keyed on vocabulary, andBerg, Jan vd/Berg, abdul vdboth readfamily='vd Berg'today.John van Mcalready readsfamily='van Mc'— a particle chain ahead of it wins. Check the fix does not double up.Donald mcis currently classified byfix(suffix-routing) a two-token name ending in a trailing credential acronymin the 1.4.0 ledger; once fixed it stops diffing that way and the rule needs narrowing or deleting, which the dormancy check will announce.Jack M.A.stays as it is — decisions.md#ma-do gates the dotted spellings separately, and that reading is decided.Kept separate from #342 deliberately: that issue is "
raishould not be credential vocabulary at all", whereasmcandvdlegitimately ARE credentials and the fix is the guard rather than the wordlist.Found reviewing #453; recorded in
decisions.md's "differential-ledger, the fields-only arc" section as a rules.md defect rather than a ledger one.