Skip to content

A particle chain lands in the given or middle name under the family-first orders #368

Description

@derek73

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

Activity

  1. self-assigned this
    on Aug 10, 2026
  2. derek73 commented on Aug 10, 2026

    @derek73
    OwnerAuthor

    Framing refined on #367 and it applies here too: the defect is that a particle chain — a multi-word surname assembled by Lexicon.particles — is being placed as though it were an ordinary single name. On #367 a given-name title treats the chain as "the single name after me"; here assign hands it whatever position name_order gives that piece. Same category error, two different rules making it.

  3. derek73 commented on Aug 17, 2026

    @derek73
    OwnerAuthor

    Reversed by the order-precedence keystone in #386 — shipped behavior is correct.

    The recorded decision here ("the particle wins: a chain becomes the family name, whatever order was declared") was made before the grouping/assignment split was stated, and it doesn't survive it. Grouping is vocabulary's job and is order-independent; assignment is name_order's job. Juan de la Vega groups [Juan][de la Vega], and under FAMILY_FIRST the first group is the family — so family='Juan', given='de la Vega' is the declared order being honored, not a defect.

    What NON_GIVEN_NAME_PARTICLES guarantees is that the bare word never reads as a given name — not that no name part may begin with one.

    The asymmetry with the leading case (rules.md#P1, where the fold does override the declared order) is P4's and predates this: a leading particle chains nothing, so without the fold pure position makes the bare particle the given name. Measurable today on the ambiguous half, where no fold fires — van Mesnil Juan → given='van', middle='Mesnil', family='Juan'. given='de' is exactly the reading the vocabulary exists to forbid.

    The deviates: #368 marker is removed from rules.md#P1 in #386. Full reasoning: decisions.md#P1, 2026-08-16 entries.

  4. added this to the v2.2 milestone on Aug 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions