Skip to content

A leading particle run should stop at the first name word when name_order is family-first #395

Description

@derek73

Behavior

                     GIVEN_FIRST (unchanged)      FAMILY_FIRST / FF_GIVEN_LAST
de Mesnil Juan       family='de Mesnil Juan'      family='de Mesnil'  given='Juan'
de la Vega Juan      family='de la Vega Juan'     family='de la Vega' given='Juan'
de Mesnil Garcia     family='de Mesnil Garcia'    family='de Mesnil'  given='Garcia'

The default order does not change. de Mesnil Juan reads exactly
like pennie von bergen wessels — the same shape, and #393's
discussion settled that the greedy reading is right there.

Why order decides it

Declaring a family-first order is precisely an assertion that what
follows the family is not more surname. A particle run's stopping
point is exactly the question of where surname material ends, so the
declaration is evidence about it.

Recorded at decisions.md#P1 (2026-08-17), which supersedes the
2026-08-16 sentence "no name_order moves that stopping point". The
grouping/assignment split stands everywhere else.

Accepted cost: de la Vega Juan under the default order stays wholly a
surname. A caller who means family de la Vega plus given Juan
writes the comma.

Carried forward from two failed attempts

#390 tried a position-only rule twice — PR #391 (claim in assign) and
PR #394 (claim in grouping). Both closed unmerged. What their reviews
established, all measured:

Traps that bit and will bite again

  • A conjunction merge makes the leading piece span several tokens:
    de and Mesnil is one piece headed by and, which carries no
    particle tag. A guard testing only for the ABSENCE of
    vocab:particle-ambiguous passes vacuously.
  • st, do and freiherr are in TITLES and the ambiguous half; a
    guard keyed on the leading piece hands them the chain.
  • abdul is a P5 bound-given word; merging it into a particle group
    kills the P5 join and splits the pair across two fields.
  • A conjunction-joined run counts as ONE word.
    de la Vega y Santos Juanfamily='de la Vega y Santos' is
    correct, not a defect. Stated as a clause on rules.md#P3.

Verification is structurally weak here — build the pins first

  • The differential sees ONE corpus name (de Mesnil Garcia), and under
    this direction the default order does not move at all, so it may see
    ZERO. Exit 0 will not be evidence.
  • The two-leftover shape (de Mesnil Juan Carlos), where the two
    family-first orders diverge from each other, exists in no test, case
    row or rule example.
  • tests/v2/pipeline/test_post_rules.py uses a reduced _LEX
    (particles={"de","la","van"}, titles={"mr","sir"}). Three tests
    have been silently inert because of it. Use Lexicon.default() for
    anything about shipped vocabulary.

Docs that need amending with the change

  • rules.md#P2's "The final group reads as the family name" is false
    for every name this moves, and P2 has no interacts: line.
  • rules.md#P1 and #P4 both say "one name word" where they mean one
    UNIT — see the conjunction point above.
  • _post_rules.py carries a stale DEVIATION #364 comment.

Related

#365 is the same rule reached under FAMILY_FIRST and is still open.
#364 asked this question and was closed on an answer that has since
been superseded twice.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions