Skip to content

Rethink the maiden-marker rule (M2): a marker stands after the current name and takes words up to the trailing suffix run #601

Description

@derek73

Implemented in #609 (with #602). The tables below show the branch's readings. Where the shipped behavior differs from the prototype's, the row says so.

Why. M2 grew by patching, and it is now one of the longest rules in rules.md. Each of #424, #533, #535, #538 and #549 added a stop, an exception or a release check, and the decisions.md entry runs to about 13,000 words. The rule scans forward from the marker and stops at the first suffix-looking word. Every later fix repairs what that stop got wrong:

Some of the rule's examples also describe input nobody writes. Jane née Jones Smith came in with the first design (2026-07-03) on an unsourced claim about running text. The differential corpus holds no real-world name of that shape, and today it reads family Jane.

Proposed statement. A prototype measured this; see the comments below.

  1. Where a marker counts. A maiden marker is a marker only where it stands in the part of the name that holds the family name, and the word straight before it is a name word of that part:

    • With no comma, that part is the whole name.
    • With a family comma, it is the part before the comma, so Doe nee Smith, Jane takes a maiden name and Doe, Jane nee Smith does not.
    • A word in the leading title run, a suffix, or a connective is not a name word.
    • Having a name somewhere before the marker is not enough. In Jane Doe PhD nee Smith the word straight before nee is a suffix, so nee is an ordinary word.
    • A particle before the marker is a name word: with nothing after it to attach to, it isn't working as a particle there. That keeps Mai Le née Nguyen and Anh Do née Tran.
    • A suffix word opening the name is a name word, because a suffix never opens the string (S2). That keeps abd née Jones.

    Anywhere else the marker is an ordinary word. The condition is positional, not about roles: under FAMILY_FIRST, Smith Jane née Jones has its marker after the given name and keeps working, as Russian document order (Иванова Анна урожд. Петрова) and 旧姓 need.

  2. What it takes. Read the end of the name as if the clause weren't written, with the trailing rule (the suffix peel and the title chain) and before any join: the part before the marker, plus the suffix- and title-shaped words at the end. Whatever trailing run that reading finds ends the clause. The marker takes every word between itself and that run, always including the first word after it. The marker itself is dropped.

    Before a family comma, no trailing rule reads the part, and the family part takes a suffix word from anywhere in it. There the clause ends at the first suffix word and hands the rest back to the family part, as today, so Doe née Smith PhD Prof., Jane reads as Doe PhD Prof., Jane does.

  3. The run is bound. Where a trailing rule reads the part, the take consumes the run and gives each word the suffix or title role the reading found. No later join can reach into it.

  4. Unchanged:

What falls out.

  • The release invariant holds by construction. What the clause gives up is given its suffix or title role directly.
  • Gone: the double asking, the release check's join modelling (P2 chain, P5 bound join, P6 attachment), and the link exception. A connective in the middle of the clause isn't a stop.
  • "A maiden clause doesn't change how the trailing rule reads the end of the name" is now the rule itself, not a property each stop has to defend. The test suite already pins it. It is the trailing rule's reading, not the full parse's: where a particle chain would take the words in the clause-free name, binding (point 3) keeps them suffixes and titles.
  • Degenerate input follows from that one principle. No reading of it is designed for.

Examples. Both columns are measured. "Today" is master at aa401d8. "Proposed" is the prototype's variant 7 (proto/issue-601-m2-rethink, local).

Input Today Proposed
Jane Smith née Jones maiden Jones unchanged
Maria López née García Pérez maiden García Pérez unchanged
Doe nee Smith, Jane maiden Smith unchanged
Smith Jane née Jones (FAMILY_FIRST) maiden Jones unchanged
Mai Le née Nguyen maiden Nguyen unchanged
Jane Doe nee Puig i Soler maiden Puig i Soler (link exception) unchanged, with no exception needed
Jane Doe nee Smith MA Prof. maiden Smith, suffix MA, title Prof. unchanged
Doe née Smith PhD Prof., Jane family Doe Prof., suffix PhD, maiden Smith unchanged (as Doe PhD Prof., Jane reads)
Anh Do geb. van Dyke Smith Rev. maiden van Dyke Smith Rev. maiden van Dyke Smith, title Rev.
Mai Le geb. Ma Jones Prof. maiden Ma Jones Prof. maiden Ma Jones, title Prof. (MA Jones the same: the first word is always taken)
Jane Doe nee Smith DO DO maiden Smith DO DO maiden Smith, suffix DO DO
Dr. nee Smith PhD Prof. family PhD, maiden Smith given nee, family Smith, suffix PhD, title Dr. Prof.
Dr. nee Smith i MA family i, maiden Smith given nee, family Smith, suffix i MA
John nee Prof. ba MA maiden Prof. ba MA maiden Prof. ba, suffix MA (as John ba MA reads)
Jane van der Berg nee Prof. King. MA maiden Prof. King., suffix MA maiden Prof., title King., suffix MA
Jane Doe nee Ma DO Rev. maiden Ma DO, title Rev. maiden Ma, suffix DO, title Rev.
Doe, Jane nee Smith maiden Smith middle nee Smith
Jane Doe PhD nee Smith maiden Smith, suffix PhD suffix PhD nee Smith (the marker is a word, and #602's run takes it in)
Jane Doe Jr. nee Smith maiden Smith, suffix Jr. middle Doe Jr. nee, family Smith suffix Jr. nee Smith: the marker is a word, and #602's run takes it in
Smith, John, PhD née Jones maiden Jones suffix PhD née Jones
Jane Smith née V family née, suffix V maiden V
Jane Doe nee Smith PhD Smith middle Doe PhD, family Smith, maiden Smith maiden Smith PhD Smith (see #602) maiden Smith, suffix PhD Smith: the clause-free name's credential starts #602's run, and the take consumes it

Accepted consequences.

  • Family, Given née Maiden stops taking a maiden name. Callers use a delimited clause (Doe, Jane (née Smith)) or maiden_delimiters.
  • A given name with no current surname needs delimiters. Mary née Jones keeps M4's reading, family Mary.
  • A marker after a title, a suffix or a connective is a word. All three shapes are junk input.
  • A word that is also a credential reads the way the trailing rule reads it. JANE Q. DOE GEB. LE DO DO gives suffix DO DO. This is not how the full parse reads JANE Q. DOE DO DO, where the particle chain takes the pair as family DO DO: binding keeps that chain out of the released run. Jane van der Berg nee Prof. King. MA differs from its clause-free name the same way (Jane van der Berg King. MA reads family van der Berg King.).
  • Found while implementing: a trailing numeral is read by its shape. The prototype read the clause's last word without the numeral fork, so John née Jones Smith VI kept VI in the maiden name. The branch asks the fork, giving maiden Jones Smith, suffix VI.

Settled (formerly open questions).

  1. A credential in the middle of the clause. Settled by Should a name word after a credential join the suffix? John Smith PhD Jones reads middle Smith PhD #602: Jane Doe nee Smith PhD Smith gives maiden Smith, suffix PhD Smith.
  2. The given-only head. Kept as a rules.md#M2 boundary example: Jane née Jones Smith gives family Jane, maiden Jones Smith. That is degenerate input, so no reading is designed for it.
  3. Jane Smith née V. Accepted as maiden V. The first word after the marker is always taken, a lone numeral included. Recorded in decisions.md#M2.

How we'll know.

Exclusions. No change to:

  • the delimited clause (M1/M3);
  • the marker vocabulary;
  • the comma-part logic beyond point 1.

Supersedes: #548. Related: #533, #535, #538, #549, #445, #602.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions