Skip to content

Cut a family-first particle chain where P1's fold cuts it under two_family_names (#1024) - #1049

Merged
derek73 merged 4 commits into
masterfrom
feat/1024-family-first-chain
Nov 4, 2026
Merged

derek73 merged 4 commits into
masterfrom
feat/1024-family-first-chain

Conversation

@derek73

@derek73 derek73 commented Nov 4, 2026

Copy link
Copy Markdown
Owner

Closes #1024.

Under a family-first order with two_family_names, Pérez de la Vega Juan now reads family 'Pérez de la Vega', given 'Juan', surname2 'de la Vega'. 2.6.0 through 2.8.0 read family 'Pérez', given 'de la Vega Juan': the particle chain swallowed the given name, and O6 declined a unit that counted two words.

Change

  • _take_second_family_name cuts the first unit after the family where _fold_reach cuts P1's family-first run: the particles and the one name word they attach to. The rest is laid out by the order.
  • Pérez de la Vega Juan Carlos → given 'Juan', middle 'Carlos' (FAMILY_FIRST); middle 'Juan', given 'Carlos' (FAMILY_FIRST_GIVEN_LAST), as García Márquez Juan Carlos reads.
  • Unchanged:
    • the switch off (the issue's open question 1);
    • the default order, which a test case pins with a recorded negative control;
    • a family comma;
    • a chain that would leave no given name (Pérez de la Vega);
    • a conjunction-joined chain (de la Vega y Santos), which still counts two words.
  • rules/O6 gains a Then bullet. Its old example Juan de la Vega Rodríguez (family 'Juan') was this very shape, so it moves there.
  • rules/P2 gains a bullet; decisions/O6 gains an entry and a Standing line; a release-log bullet is added.

Measured

The issue's own recipe, run on the cached ORCID researchers: ES, MX, CO, PE, CL, VE and AR, 135,735 records.

  • Of the 1,577 records whose family box has a particle after its first word, the family is read right in 1,273, against 2 on master.
  • Of the 1,296 records in the issue's exact shape, it is right in 1,272, against 1.
  • The snapshot parses the default policy and moves only the new rule examples.

Accepted

Van der Merwe Jan, read family-first with the switch, now gives family 'Van der Merwe' (it was 'Van'), with surname2 'der Merwe': one surname read as two. This follows from O6's existing lone-particle clause, and is recorded under its Accepted.

Interaction with the #959 PR

That PR counts a hyphenated taken word as one. Once both land, Pérez de la Vega-Santos Juan will read given 'Juan' too; today it still reads given 'de la Vega-Santos Juan'.

Review

An independent review found:

  • the untested order guard;
  • the lone-particle case;
  • the conjunction case missing from a fence;
  • the release versions;
  • the Except wording;
  • a mislabelled case.

All are fixed in the second commit.

Checks

🤖 Generated with Claude Code

derek73 and others added 2 commits November 3, 2026 18:32
…amily_names (#1024)

Under a family-first order with `two_family_names`, `Pérez de la Vega
Juan` now reads family 'Pérez de la Vega', given 'Juan', where the
particle chain had taken the given name ('de la Vega Juan') and O6
declined a unit counting two words. O6 cuts the first unit after the
family as `_fold_reach` cuts P1's family-first run, takes the particles
and the one name word they attach to, and lays the rest out by the
order. Without the switch, or under the default order, the chain stays
whole.

On the cached ORCID researchers (seven Spanish-speaking countries), the
family box is read right in 1,273 of the 1,577 records whose family
holds a particle after its first word, where the base read 2.

rules/O6 gains a Then bullet (its Juan de la Vega Rodríguez example
moves to it), rules/P2 a bullet, decisions/O6 a dated entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A test case pinning the cut to the family-first orders, with its
  recorded negative control (without the order guard `du Ménil Thi
  Mai` reads family 'Thi Mai').
- rules/O6: a fence row for a conjunction-joined chain, which still
  moves whole; the lone-particle family taking the cut chain
  (`Van der Merwe Jan`) under Accepted; the Except's wording.
- The release bullet names 2.6.0 through 2.8.0; the decline case is
  labelled feat(#754), not parity.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rst-chain

# Conflicts:
#	docs/release_log.rst
…rst-chain

# Conflicts:
#	tests/v2/rules_budget.json
#	tools/differential/corpus_rules.jsonl
#	tools/differential/snapshot.jsonl
@derek73
derek73 merged commit 25ebe43 into master Nov 4, 2026
13 checks passed
@derek73
derek73 deleted the feat/1024-family-first-chain branch November 4, 2026 20:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

1 participant