Repository navigation
Rethink the maiden-marker rule (M2): a marker stands after the current name and takes words up to the trailing suffix run #601
Description
Activity
Prototype results (2026-10-03). These numbers come from a throwaway prototype on a local branch (
proto/issue-601-m2-rethink). Seven variants of_maiden_takesat behind an environment switch, so one tree parses both ways. Every number below is a dated measurement.The first draft's "computed once" was wrong. A run computed once over the name as written counts the clause's own words as spare. A particle before the marker then chains across the removed clause into the released words.
- Grid A: 19,250 new violations.
John nee Prof. ba MAread familyba.Jane van der Berg nee Prof. King. MAread familyvan der Berg King..
Three fixes were tried:
Variant What it does Result v2/v3 grow the clause until the existing release check accepts it 0 violations, but it inherits the check's caution about particles, so Anh Do geb. de la Vega PhD Prof.keptPhD Prof.in the maiden namev5/v6 bind the once-computed reading as roles (v5 by tagging, v6 by consuming) no chain can cross into the released words, but the words-to-spare count still includes the clause: John nee Smith bareadbaas a credential whileJohn bareads it as a namev7 read the run over the name as if the clause weren't written, then bind it; before a family comma, keep today's stop at the first suffix word adopted in the body above The particle half of point 1 was dropped. Variant 1 declined
Anh Do née TranandMai Le née Nguyen, because Do, Le and Van are particle vocabulary.v7 measurements (each grid parsed in separate processes with the prototype off and on):
Population Size M2 invariant violations today v7 Readings moved #535 grid A (recipe in decisions.md) 327,936 15,586 0 180,280 #535 grid B 173,057 8,713 0 76,437 Differential corpora 1,508 0 0 60 Plausible-input grid* 339,054 – – 51,963 * Ten heads (including
Anh Do,Mai Le,Jane van der Berg,Jane de la Cruz) × three markers × 1–2 maiden words × 18 trailing runs × an optional, PhD, in three cases.The violation counts are my own invariant check, written to #535's recipe. Today's figures differ from #535's recorded 17,854 and 11,149, presumably from merges since. The grid moves are dominated by the head rule declining clauses on junk heads. Nearly all the plausible-grid moves free a trailing title or credential that today keeps in the maiden name, wherever a particle stands in the head or the clause (
Anh Do geb. van Dyke Smith Rev.).Test suite: 304 failures under v7, against 0 with the prototype off. By test file:
- 136 are the corpus invariant that appending
née Xchanges nothing else. It conflicts with point 1 for every name ending in a suffix. - 21 are rules.md M2 examples, and 1 is a P5 example.
- 38 are tests of the old take's internals and properties: 26 group-stage unit tests, 5 property tests (the given part after a family comma, the clause-free-tail pairing and a pinned ambiguity count), 3 revise round-trips, 2 post-rules tests, 1 benchmark pin and 1 parser test.
- 108 are case and facade rows, not yet triaged.
Size: v7's take needs none of the release-check helpers and no link exception. The current take plus the link exception is about 225 non-comment lines, before those helpers are counted. A real implementation's size is still to be measured.
Triage of the prototype's case and facade failures (2026-10-04). The 108 failures were 68 case rows. The 40 facade failures are all among them, because the facade runs the same table through
HumanName.Two prototype fixes during triage cleared 26 rows:
- 25 rows had the right fields but a missing
suffix-or-namereport. That was a prototype gap: v7 gave the released run its roles in group, so assign never filed its reports on those words. v7 now carries the peel's picks and its numeral report onto the run it consumes, and all 25 pass. Lord Chancellor née Joneswas a head-rule bug. The title run must be measured on the words before the marker, where H3 givesChancellorback as the name word, while a lone title (Dr. nee …) still counts as a title.
42 case rows remain, 39 of them facade too. All are intended or consistent with the model:
Group Rows Verdict Marker in the given part after a family comma ( Doe, Jane nee …)34 point 1, accepted; each reads as the same name with neeas an ordinary wordHead rule: suffix, lone title or tail part before the marker 3 intended ( Jane Doe Jr. nee Smith Ma,Dr. nee Jones Smith Prof.,Smith, John, Jr nee Jones MA)The run frees what today keeps 1 Jane van der Berg nee Smith Prof.gives titleProf.; today's row pins the release check's cautious keepThe run is consumed where the particle chain would take it 2 Jane Doe nee Smith DO DOgives suffixDO DO;Jane Doe nee Smith i DO Prof.gives suffixi DO(the trailing rule's reading; see point 2)Numeral straight after the marker 1 open question 3 ( Jane Doe nee V Prof.gives maiden V)Suffix word in the middle of the clause 1 the model keeps it; #602's question ( abd née Jones Jr Smith Berggives maidenJones Jr Smith Berg)Family-comma readings worth a release note. All follow from the marker being an ordinary word there:
- The particle attachment (P6) now reaches a trailing particle.
Doe, Jane nee Smith St.gives familySt. Doe, asDoe, Jane Smith St.does.… do,… Doand… MA domove the same way (5 rows). - Particles before the marker no longer attach to the family.
Berg, Jane van der nee Smith DOgives middlevan der nee Smithand familyBerg, asBerg, Jane van der Smith DOreads.
Totals under v7 after these fixes:
Measure Result #535 grids A and B 0 violations Corpus 36 readings move (was 60) Grid A / grid B readings moved 153,048 / 62,110 Test suite 275 failures (0 with the prototype off) The 275 failures break down as:
- 134 for the corpus-append invariant;
- 21 rules.md M2 examples and 1 P5 example;
- the 42 case rows and 39 facade rows above;
- 38 tests of the old take's internals and properties.
A correction to the body (now edited): point 2 reads the clause-free name with the trailing rule alone, before any join. It is not the full parse. Where a particle chain would take the words (
JANE Q. DOE DO DOreads familyDO DO), binding keeps them suffixes and titles.Prototype:
proto/issue-601-m2-rethinkat 9344dd97 (local).- 25 rows had the right fields but a missing
- added 4 commits that reference this issue
on Oct 4, 2026 - added 5 commits that reference this issue
on Oct 8, 2026
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:
Puig i Solertogether.Doe, Jane nee Smith MAreadMAas a credential? The maiden name keeps it, where it gives upPhDandJr.#533) asks of every stop whether the name left standing reads what it gave up as post-nominals, and models every join that might absorb those words. Should a maiden clause keep a credential it would hand to a name part?Dr. nee Smith PhD Prof.reads familyPhD#548 is that invariant failing at the one stop that never checks it.Some of the rule's examples also describe input nobody writes.
Jane née Jones Smithcame 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 familyJane.Proposed statement. A prototype measured this; see the comments below.
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:
Doe nee Smith, Janetakes a maiden name andDoe, Jane nee Smithdoes not.Jane Doe PhD nee Smiththe word straight beforeneeis a suffix, soneeis an ordinary word.Mai Le née NguyenandAnh Do née Tran.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 Joneshas its marker after the given name and keeps working, as Russian document order (Иванова Анна урожд. Петрова) and旧姓need.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., Janereads asDoe PhD Prof., Janedoes.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.
Unchanged:
What falls out.
Examples. Both columns are measured. "Today" is master at aa401d8. "Proposed" is the prototype's variant 7 (
proto/issue-601-m2-rethink, local).Jane Smith née JonesMaria López née García PérezGarcía PérezDoe nee Smith, JaneSmith Jane née Jones(FAMILY_FIRST)Mai Le née NguyenJane Doe nee Puig i SolerPuig i Soler(link exception)Jane Doe nee Smith MA Prof.Doe née Smith PhD Prof., JaneDoe Prof., suffix PhD, maiden SmithDoe PhD Prof., Janereads)Anh Do geb. van Dyke Smith Rev.van Dyke Smith Rev.van Dyke Smith, titleRev.Mai Le geb. Ma Jones Prof.Ma Jones Prof.Ma Jones, titleProf.(MA Jonesthe same: the first word is always taken)Jane Doe nee Smith DO DOSmith DO DODO DODr. nee Smith PhD Prof.PhD, maiden Smithnee, family Smith, suffix PhD, titleDr. Prof.Dr. nee Smith i MAi, maiden Smithnee, family Smith, suffixi MAJohn nee Prof. ba MAProf. ba MAProf. ba, suffix MA (asJohn ba MAreads)Jane van der Berg nee Prof. King. MAProf. King., suffix MAProf., titleKing., suffix MAJane Doe nee Ma DO Rev.Ma DO, title Rev.Doe, Jane nee Smithnee SmithJane Doe PhD nee SmithPhD nee Smith(the marker is a word, and #602's run takes it in)Jane Doe Jr. nee SmithmiddlesuffixDoe Jr. nee, family SmithJr. nee Smith: the marker is a word, and #602's run takes it inSmith, John, PhD née JonesPhD née JonesJane Smith née Vnée, suffix VJane Doe nee Smith PhD SmithDoe PhD, family Smith, maiden Smithmaidenmaiden Smith, suffixSmith PhD Smith(see #602)PhD Smith: the clause-free name's credential starts #602's run, and the take consumes itAccepted consequences.
Family, Given née Maidenstops taking a maiden name. Callers use a delimited clause (Doe, Jane (née Smith)) ormaiden_delimiters.Mary née Joneskeeps M4's reading, family Mary.JANE Q. DOE GEB. LE DO DOgives suffixDO DO. This is not how the full parse readsJANE Q. DOE DO DO, where the particle chain takes the pair as familyDO DO: binding keeps that chain out of the released run.Jane van der Berg nee Prof. King. MAdiffers from its clause-free name the same way (Jane van der Berg King. MAreads familyvan der Berg King.).John née Jones Smith VIkeptVIin the maiden name. The branch asks the fork, giving maidenJones Smith, suffixVI.Settled (formerly open questions).
John Smith PhD Jonesreads middleSmith PhD#602:Jane Doe nee Smith PhD Smithgives maiden Smith, suffixPhD Smith.Jane née Jones Smithgives family Jane, maidenJones Smith. That is degenerate input, so no reading is designed for it.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.
Triage the 108 case and facade rows the prototype fails(done; see the triage comment).Rewrite the rules.md M2 statement and examples.(done in Maiden marker counts only behind a surname; a credential starts a suffix run (#601, #602) #609)Run the differential gate at every ledgered baseline.(done in Maiden marker counts only behind a surname; a credential starts a suffix run (#601, #602) #609; every gate exits 0)Rerun Should(done: with Should a name word after a credential join the suffix?Jane Doe nee Smith Prof.readProf.as a title? The maiden name keeps it, whereJane Doe Prof.gives the title #535's grids, the plausible-input grid and the corpus.John Smith PhD Jonesreads middleSmith PhD#602 switched off, the branch reads all of those texts exactly as the prototype's variant 7 did, 0 differences, and variant 7 held 0 violations on ShouldJane Doe nee Smith Prof.readProf.as a title? The maiden name keeps it, whereJane Doe Prof.gives the title #535's grids)Exclusions. No change to:
Supersedes: #548. Related: #533, #535, #538, #549, #445, #602.