Skip to content

Donald Mc loses its family to a post-nominal reading — the comma-less twin of #380 #454

Description

@derek73
'Donald Mc'   →  given='Donald'  family=''    suffix='Mc'      ← now
'Donald Mc'   →  given='Donald'  family='Mc'                   ← wanted

Smith vd has the same defect (family='', suffix='vd'). Both are the comma-less twin of #380, which fixed Berg, Jan vd → family='vd Berg' only for the comma form.

rules.md#P6's Accepted clause is false today

the attachment is scoped to the comma form, and the comma-less shapes keep their positional reading.
"Jong Anke de" → family="de"

Measured, that holds for de and do and fails for mc and vd:

'Jong de'    family='de'                ✓ positional
'Smith do'   family='do'                ✓ positional
'Donald Mc'  family=''   suffix='Mc'    ✗
'Smith vd'   family=''   suffix='vd'    ✗

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 do behaves. The clause's only example is de-shaped, which is why no test catches it.

The cause is one missing vocabulary marking, and it is #342's cause too

SUFFIX_ACRONYMS_AMBIGUOUS is what gates S2's words-to-spare guard. The guard already exists and already works:

word ambiguous? two-token three-token
ma yes Jack Ma → family Ma ✓ John Smith Ma → suffix Ma ✓
do yes Smith do → family do ✓ —
mc no Donald Mc → family '' ✗ John Smith MC → suffix MC ✓
vd no Smith vd → family '' ✗ John Smith VD → suffix VD ✓
rai no Aishwarya Rai → family '' ✗ Aishwarya Rai Bachchan → family Bachchan ✓

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/vd ambiguous should let the existing guard produce the wanted reading without touching John Smith MC.

Under decisions.md#vocabulary-collisions C-i's "under uncertainty, default to AMBIGUOUS", mc and vd arguably belong in that subset already: both are in NON_GIVEN_NAME_PARTICLES, so each is a name element in the position the credential claim acts on. And C-ii decided vd's collision in the particle's favour — a decision the comma-less case currently contradicts.

Worth measuring before deciding

  • Does marking vd ambiguous disturb Berg, Jan vd reads the Dutch van der abbreviation as a post-nominal decoration #380's comma attachment? P6 is keyed on vocabulary, and Berg, Jan vd / Berg, abdul vd both read family='vd Berg' today.
  • John van Mc already reads family='van Mc' — a particle chain ahead of it wins. Check the fix does not double up.
  • The differential will move. Donald mc is currently classified by fix(suffix-routing) a two-token name ending in a trailing credential acronym in 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 "rai should not be credential vocabulary at all", whereas mc and vd legitimately 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.

Activity

  1. added this to the v2.2 milestone on Aug 29, 2026
  2. self-assigned this
    on Aug 29, 2026
  3. modified the milestones: v2.2, v2.3 on Aug 30, 2026
  4. added a commit that references this issue on Sep 8, 2026
  5. derek73 commented on Sep 8, 2026

    @derek73
    OwnerAuthor

    Closing as by design for the parse, with the documentation defect this issue found fixed in 2.3.0 via #515.

    Why Donald Mc stays as it is. mc has 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 writes Donald Mc — so the suffix reading costs nothing real, and vd is the same: it needs a surname after it, so a bare trailing vd is 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 Donald reads last Mc Donald and John van Mc reads last van Mc, both because mc is a never-given PARTICLE (#360). So the trailing bare shape is the only one at issue, and it is the one nobody writes. Donald Mc is 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 — a de-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']), and do is not one — it sits in the ambiguous half and behaves like de. The clause now says that, names both words, and gives Donald mc → suffix mc against Berg, Jan vd → family vd Berg as the contrast. The decisions.md bullet and the ledger comment that had conceded the defect in prose now point at the repair.

    On the fix this issue proposed. Marking mc and vd ambiguous 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 for mc there 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 suffix is unchanged and still classifies Donald mc at 1.4.0. Nothing went dormant.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions