A particle joins forward. Two things license joining backward, and nothing else does: a family comma, or a declared family-first order. Both are the writer or the caller saying the family came first. The parser must never infer it from a particle's position.
Four consequences, each measured over the 1094-name differential corpus × 3 name_order values × middle_as_family off and on.
(a) A trailing particle that lands in MIDDLE belongs to the family
Only FAMILY_FIRST puts a trailing piece in the middle slot. FAMILY_FIRST_GIVEN_LAST puts it in GIVEN, where the caller's own declaration says it is the given name.
Ménil Christophe de FF family 'Ménil' middle 'de' → family 'de Ménil' given 'Christophe'
Beethoven Ludwig van FF family 'Beethoven' middle 'van' → family 'van Beethoven' given 'Ludwig'
Nguyen Thi Van FFGL given 'Van' middle 'Thi' → unchanged
The declared order does the work that a vocabulary carve-out was doing in #466 — no never-given restriction is needed. That matters: the restriction excluded 37 ambiguous particles, among them von, di, da, del, le, and van itself, which is the flagship word of the Dutch listing the rule is named for.
Removing a trailing MIDDLE leaves every other piece's role unchanged under that order, so there is no re-layout of the leftover — which is what produced both regressions #466's review found (van Berg Jan de losing its given name, Berg Jan Jr. de promoting a post-nominal).
(b) The leading fold takes the particle's unit, not the rest of the name
Gate it on whether anything is left over. If the particle's group is the whole name, surname-only is the only reading; if something remains, that something is a name component and the fold has no business taking it.
de Mesnil Juan family 'de Mesnil Juan' → family 'de Mesnil' given 'Juan'
de la Cruz Juan Carlos family (whole) → family 'de la Cruz' given 'Juan' middle 'Carlos'
ibn Awf abdul Rahman family (whole) → family 'ibn Awf' given 'abdul Rahman'
de la Vega y Santos Juan family (whole) → family 'de la Vega y Santos' given 'Juan'
Measured: 10 parses, 5 names, default order only. Every surname-only name is untouched — de la Vega, Mc Donald, dos Santos, De Groot, Ste Marie, de los Santos, Sir de Mesnil — and the conjunction join and bound-given pair stay whole. The family-first branch has narrowed this way since #395; the default order simply never got the same treatment.
(c) FFGL's given-position fold goes
Ménil Christophe de under FAMILY_FIRST_GIVEN_LAST currently swallows the whole name into the family. It should read family 'Ménil', middle 'Christophe', given 'de' — the caller's declared order, applied literally, even though that makes a particle the given name.
NON_GIVEN_NAME_PARTICLES supplies a default reading, not a prohibition. Measured: all 33 never-given particles read as the given name where position forces it ("de", "de Jr."). Any rule that rests on "a never-given particle can never be a name" rests on a false premise.
(d) The invariant this rests on
For a name of the form Family Given [Particle], the family-comma writing under the default order and the comma-less writing under FAMILY_FIRST parse identically.
Ménil, Christophe du default family 'du Ménil' given 'Christophe'
Ménil Christophe de FF family 'de Ménil' given 'Christophe'
Measured over 216 constructed names: 0 of 216 agree today. Scope it to this shape — deleting commas generally is not equivalent, since 181 of 247 corpus comma-names differ for title and suffix reasons (Doe, Dr. John, Abdul Salam, MD).
Not in scope
1.4.0 parity. v1 has no name_order, so nothing under a family-first order has a v1 answer to be compared against. Any v1 measurement here is FYI.
Supersedes #365. #466 implemented a different reading of the same defect and was closed unmerged; its review record is on the branch fix/365-trailing-particle-attaches.
A particle joins forward. Two things license joining backward, and nothing else does: a family comma, or a declared family-first order. Both are the writer or the caller saying the family came first. The parser must never infer it from a particle's position.
Four consequences, each measured over the 1094-name differential corpus × 3
name_ordervalues ×middle_as_familyoff and on.(a) A trailing particle that lands in MIDDLE belongs to the family
Only
FAMILY_FIRSTputs a trailing piece in the middle slot.FAMILY_FIRST_GIVEN_LASTputs it in GIVEN, where the caller's own declaration says it is the given name.The declared order does the work that a vocabulary carve-out was doing in #466 — no never-given restriction is needed. That matters: the restriction excluded 37 ambiguous particles, among them
von,di,da,del,le, andvanitself, which is the flagship word of the Dutch listing the rule is named for.Removing a trailing MIDDLE leaves every other piece's role unchanged under that order, so there is no re-layout of the leftover — which is what produced both regressions #466's review found (
van Berg Jan delosing its given name,Berg Jan Jr. depromoting a post-nominal).(b) The leading fold takes the particle's unit, not the rest of the name
Gate it on whether anything is left over. If the particle's group is the whole name, surname-only is the only reading; if something remains, that something is a name component and the fold has no business taking it.
Measured: 10 parses, 5 names, default order only. Every surname-only name is untouched —
de la Vega,Mc Donald,dos Santos,De Groot,Ste Marie,de los Santos,Sir de Mesnil— and the conjunction join and bound-given pair stay whole. The family-first branch has narrowed this way since #395; the default order simply never got the same treatment.(c) FFGL's given-position fold goes
Ménil Christophe deunderFAMILY_FIRST_GIVEN_LASTcurrently swallows the whole name into the family. It should readfamily 'Ménil',middle 'Christophe',given 'de'— the caller's declared order, applied literally, even though that makes a particle the given name.NON_GIVEN_NAME_PARTICLESsupplies a default reading, not a prohibition. Measured: all 33 never-given particles read as the given name where position forces it ("de","de Jr."). Any rule that rests on "a never-given particle can never be a name" rests on a false premise.(d) The invariant this rests on
Measured over 216 constructed names: 0 of 216 agree today. Scope it to this shape — deleting commas generally is not equivalent, since 181 of 247 corpus comma-names differ for title and suffix reasons (
Doe, Dr. John,Abdul Salam, MD).Not in scope
1.4.0 parity. v1 has no
name_order, so nothing under a family-first order has a v1 answer to be compared against. Any v1 measurement here is FYI.Supersedes #365. #466 implemented a different reading of the same defect and was closed unmerged; its review record is on the branch
fix/365-trailing-particle-attaches.