A particle chain is a surname by construction — Lexicon.particles chains onto the following piece to build a family name. Under the family-first orders the chain is handed whatever position name_order assigns, so it can land in given or in middle:
default FAMILY_FIRST
Juan de la Vega family='de la Vega' given='de la Vega'
Juan Q. de la Vega middle='Q.', family='de la Vega' middle='de la Vega'
FAMILY_FIRST_GIVEN_LAST behaves as FAMILY_FIRST does. The grouping is identical in every case — [Juan][de la Vega] — so the chain is built the same way and only its placement differs.
Decision
The particle wins: a chain becomes the family name, whatever order was declared. Particles do not join given names; only titles join to given names.
Mechanism
The chain is built in the grouping stage, before roles exist. assign then hands positions out by _effective_order, and nothing consults the fact that a piece is a particle chain — so under family-first the trailing piece is the given position and the chain goes there.
Scope and verification
Family-first only. The default-order corpus is untouched, so tools/differential should come back with 0 diffs at all three baselines, the same clean result as #361 — that is the property to verify, not a ledger entry.
Related
A particle chain is a surname by construction —
Lexicon.particleschains onto the following piece to build a family name. Under the family-first orders the chain is handed whatever positionname_orderassigns, so it can land ingivenor inmiddle:FAMILY_FIRST_GIVEN_LASTbehaves asFAMILY_FIRSTdoes. The grouping is identical in every case —[Juan][de la Vega]— so the chain is built the same way and only its placement differs.Decision
The particle wins: a chain becomes the family name, whatever order was declared. Particles do not join given names; only titles join to given names.
Mechanism
The chain is built in the grouping stage, before roles exist.
assignthen hands positions out by_effective_order, and nothing consults the fact that a piece is a particle chain — so under family-first the trailing piece is the given position and the chain goes there.Scope and verification
Family-first only. The default-order corpus is untouched, so
tools/differentialshould come back with 0 diffs at all three baselines, the same clean result as #361 — that is the property to verify, not a ledger entry.Related
Dr. Van Johnsonreads as one surname #367 is the same principle violated through given-name titles instead of throughname_order(Sir de Mesnil→given='de Mesnil', no surname). That half does move the default-order corpus and needs ledger entries, which is why the two are split.de Mesnil Juanbe all surname, or familyde Mesnilplus givenJuan? #364 andMesnil Garcia destrands the particle under FAMILY_FIRST but folds it under FAMILY_FIRST_GIVEN_LAST #365 are not consequences of this:de Mesnil JuanandMesnil Garcia dehave no chain at all, because a leading particle deliberately never chains and a trailing one has nothing to chain onto.Juan de la Vega→given='de la Vega'underFAMILY_FIRST"working as intended". Keep a never-given particle attached under any name_order (#359) #361's code comments describe that row as what the fold's guard mechanically tests rather than as a blessed output, so they stay true either way.