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.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:
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