Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md

Large diffs are not rendered by default.

6 changes: 4 additions & 2 deletions docs/concepts.rst
Original file line number Diff line number Diff line change
Expand Up @@ -213,8 +213,10 @@ ambiguous post-nominal vocabulary, but in ``"Joao da Silva do Amaral
de Souza"`` it sits mid-name, where nothing has to choose between
readings — so nothing is recorded. A comma can settle the question
before it arises, too: ``"Ma, Jack"`` fixes the family name, so the
credential reading never comes up, while ``"John Smith MA"`` has to
call it and says so. Some decisions are conventions rather than
credential reading never comes up, and so can the writing:
``"John Smith M.A."`` and, in a mixed-case name, ``"John Smith MA"`` are
written as credentials, while ``"John Smith Ma"`` has to call it and
says so. Some decisions are conventions rather than
readings — a name whose one name word nothing else decides (such as
a title, a family comma, a nickname or maiden name beside it, a
script that settles its own order, or the word's own vocabulary or
Expand Down
5 changes: 4 additions & 1 deletion docs/customize.rst
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,10 @@ capitalization decides:
The full reading of a bare marked acronym, in order:

- **ALL CAPITALS** in a mixed-case name leans to the credential: it is
a suffix even with no words to spare (``"Jack MA"``).
a suffix even with no words to spare (``"Jack MA"``). The capitals
settle it as the periods do, so no ambiguity is reported, and a word
after it in the given part after a family comma reads as part of
the suffix (``"Smith, John MA Jones"`` gives suffix ``MA Jones``).
- **Title-case** in a mixed-case name leans to the surname: it stays
the family name even WITH words to spare (``"John Smith Ma"``).
- **No signal** — all lowercase in a mixed-case name, or any spelling
Expand Down
3 changes: 2 additions & 1 deletion docs/design/decisions/C11-what-the-comma-decision-reports.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
## Standing

- A part read wholly as suffixes carries no report that a word of it was read as a name, so a particle chained or an acronym taken into a name is never reported there: `John Smith, Jr., Freiherr von Richthofen` reports only `comma-structure` — 2026-09-28 #544.
- A word of the ambiguous class opening the part after the comma carries the comma's report even where its capitals settle the run (`Doe, MA PhD`, `John Smith, MA MA`, `Smith, MA PhD` each report `suffix-or-name` once), while a capitals-settled run behind another credential is silent (`John Smith, PhD MA`); no `suffix-or-name` report lands past the second comma (`Smith, John, MA`, `John Smith, Jr., MA`) — 2026-10-01.
- A word of the ambiguous class its capitals settle carries no report wherever it stands in the part after the comma (`Doe, MA PhD`, `John Smith, MA MA`, `Smith, MA PhD`, `John Smith, PhD MA`, `John Smith, MA` are silent), a word the capitals do not settle reporting as before (`Doe, Ma PhD`, `JOHN SMITH, MA`) — 2026-10-25 #785, superseding the 2026-10-01 report on an opening word; no `suffix-or-name` report lands past the second comma (`Smith, John, MA`, `John Smith, Jr., MA`) — 2026-10-01.
- The part after a suffix comma reports each word a credential in front of it reads as the run although it may be a name word (`John Smith, PhD van der Berg` → `suffix-or-name` on 'van', 'der' and 'Berg'), and C2's no-name-reading clause means only a word read as a name — 2026-10-11 #641.

Elsewhere: no particle chain reaches such a part at all, which replaced #544's withheld report list: the part after a suffix comma is bound before any join — decisions/C1's 2026-10-06 (Derek), #613 entry — and a part past the second comma makes no chain — decisions/C7's 2026-10-11 (Derek), #636 entry; `pair_only` asks `is_title_piece` — decisions/C5's 2026-10-19 (Derek), follow-up to PR #738 entry; the listed-member report names the role its word is bound to ("a title" for `John, Si.`, "a credential" for `John, MA`) — decisions/suffix-acronym-collisions' 2026-10-21 (#793) entry and decisions/A1's 2026-10-21 #793 entry; a maiden marker past the second comma being an ordinary word, so `Smith, John, Jr nee Jones MA` reads suffix 'Jr nee Jones MA' where the 2026-10-01 entry read a maiden clause — decisions/M2's 2026-10-04 (Derek), #601 entry.
Expand All @@ -18,3 +18,4 @@ Open: none in this file.
- 2026-10-18 #728 — SPLIT FROM decisions/C1 with the rule. The entries above were written under decisions/C1 while this rule was part of rules/C1, and moved here unchanged but for the pointers the move broke, the measurement paragraphs, each cut to one line naming its population, counts, baseline and PR, and the superseded passages, each cut to its decision and what replaced it; where one says rules/C1 or C1, it means the rule as it then stood, which held this one.
- 2026-10-19 (Derek), follow-up to PR #738 — THE REPORT'S PAIRED-INITIALS EXCEPTION (`pair_only`) ASKS `is_title_piece` FOR THE TITLES IN FRONT OF THE FIRST PAIR. Recorded under decisions/C5 with the speaker scan it was changed beside, the measurement and the one configured move.
- 2026-10-21 #793 — THE LISTED-MEMBER REPORT NAMES THE ROLE ITS WORD IS BOUND TO, "a title" where the listing form binds the member as one (`John, Si.`) and "a credential" where it binds a suffix (`John, MA`). Recorded under decisions/suffix-acronym-collisions with its grid and measurement, and as an amendment in decisions/A1.
- 2026-10-25 #785 (Derek, 2026-10-23) — A DECISION THE CAPITALS SETTLED IS NOT REPORTED. SUPERSEDES the 2026-10-01 Standing line's opening-word report. The comma's decision reported a listed member written in capitals in a mixed-case name, as the opening word of the part or as the part C4's count flipped, though its writing had settled it (rules/S6); it reports neither now, and a part whose every such word is settled reads in silence wherever they stand. The record is decisions/S6's entry of this date.
4 changes: 2 additions & 2 deletions docs/design/decisions/M2-maiden-marker-rule.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
- Where a trailing rule reads the part, a trailing title ends the clause, and a credential or numeral in front of it gets the stop it gets with the title absent: `Jane Doe nee Smith Prof.` → title 'Prof.', maiden 'Smith'; `Jane Doe nee Smith MA Prof.` and `… Prof. MA` both → maiden 'Smith', suffix 'MA'; `Jane Doe nee Smith V Prof.` → suffix 'V' — 2026-09-26 #535.
- The title chain never takes the first word after the marker: `Jane Doe nee King.` keeps maiden 'King.', `Jane Doe nee Prof. Dr.` reads maiden 'Prof.', title 'Dr.', and a first word in the title vocabulary counts as a word, so `Jane Doe nee King. ba` gives up 'ba' as `Jane Doe nee Smith ba` does — 2026-09-26 #535.
- Accepted, the transparency boundary: where the clause keeps the credential the two spellings differ, a title inside the kept text unable to leave without the words behind it (`Doe nee Smith ba Prof.` → title 'Prof.', maiden 'Smith ba'; `Doe nee Smith Prof. ba` → maiden 'Smith Prof. ba'), and H5's `King.` cost reaches a birth name (`Jane Doe nee Smith King.` → title 'King.', maiden 'Smith') — 2026-09-26 #535.
- Where a trailing rule reads the part, a member of the ambiguous class ending the maiden name is kept by the clause and reported, nobody writing a credential straight after the marker as its floor: `Jane Doe nee MA` → maiden 'MA', `Jane Doe nee Smith Ma` → maiden 'Smith Ma', and `Jane Doe nee Smith MA` → suffix 'MA', each reporting `suffix-or-name` — 2026-09-19 (Derek), #533.
- Where a trailing rule reads the part, a member of the ambiguous class ending the maiden name is kept by the clause and reported, nobody writing a credential straight after the marker as its floor: `Jane Doe nee MA` → maiden 'MA', `Jane Doe nee Smith Ma` → maiden 'Smith Ma', and `Jane Doe nee Smith MA` → suffix 'MA', each reporting `suffix-or-name` but the last, whose capitals settle it in silence since 2026-10-25 #785 (decisions/S6) — 2026-09-19 (Derek), #533.
- Accepted with it: `JANE DOE NEE YO-YO MA` → maiden 'YO-YO', suffix 'MA', the one-case reading's cost; `Jane Doe nee Smith X.Y.Z.` → suffix 'X.Y.Z.', as `John Doe X.Y.Z.` reads; `Jane Smith nee Jones and MA` → maiden 'Jones and', suffix 'MA', the take running before the joins — 2026-09-19 (Derek), #533.
- A word the clause gives up reads as a post-nominal or title or the clause keeps it, so where a trailing rule reads the part every word written after a taken marker is roled maiden, title or suffix (before a family comma it is not, as above); held since #601 by binding the clause-free reading as roles — 2026-09-19 (Derek), #533 review, A WORD; 2026-10-04 (Derek), #601.
- Recorded rather than fixed: a bare delimiter token can end a clause, `Jane Doe nee Smith - MA` reading maiden 'Smith -', suffix 'MA' both by default and with `extra_suffix_delimiters=frozenset({"-"})`; #820 asks whether a lone dash should be a word at all — 2026-09-19 (Derek), #533 review, A WORD.
- Delimiters outrank every reading inside them: `Jane Doe (nee Smith MA)` and `Jane Doe (nee Smith Ma)` keep the whole span as the maiden name and report nothing, while `Jane Doe (nee Smith) MA` reads suffix 'MA' and reports — 2026-09-19 (Derek), #533 review, THE DELIMITERS TRUMP.
- Delimiters outrank every reading inside them: `Jane Doe (nee Smith MA)` and `Jane Doe (nee Smith Ma)` keep the whole span as the maiden name and report nothing, while `Jane Doe (nee Smith) MA` reads suffix 'MA', reported until its capitals settled it in 2026-10-25 #785 (`Jane Doe (nee Smith) ma` still reports) — 2026-09-19 (Derek), #533 review, THE DELIMITERS TRUMP.
- Accepted, the exception: bracket content ending in a period is suffix-shaped (S1), so the brackets are dropped and the clause is read bare: `Jane Doe (nee Smith Prof.)` → title 'Prof.', maiden 'Smith' — 2026-09-26 #535.
- A link joining two words of the clause does not end it, P3's class test asked with the clause's bounds: `Jane Doe nee Puig i Soler` → maiden 'Puig i Soler', `Maria Carod i Rovira nee Puig i Soler` → maiden 'Puig i Soler' with 'Carod i Rovira' kept whole, while `Jane Doe nee i Soler` declines (no maiden name), and `Jane Doe nee Puig i III`, `… Puig i MA` and `… Puig i` read suffix 'i III', 'i MA' and 'i' — 2026-09-20 (Derek), #397 review.
- Recorded with it: the one-case spellings agree (`jane doe nee puig i soler` → maiden 'puig i soler'), `Jane Doe nee Puig i Ma` keeps maiden 'Puig i Ma' and reports, and `Jane Doe nee MA i Soler` reads maiden 'MA i Soler' in silence, as its `y` twin does — 2026-09-20 (Derek), #397 review.
Expand Down
1 change: 1 addition & 0 deletions docs/design/decisions/P2-particles-join-forward.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,4 @@ Open: none in this file.
ROWS: five rows pinned the old decision and now read the new one (`fix(#624)`, each note giving the earlier reading): `Freiherr St van Berg MA`, `Freiherr Freiherr Prof do`, `St St VI`, `Freiherr St MA`, `Freiherr St Prof.`; `Freiherr St John Smith MA`, the issue's example, is added, and `Dr. Mc Mc` pins the give-back half (the review found that half unpinned, a revert passing the suite). The marker row that held group's particle-or-given emitter on `St St née` moves to `St van née`, the same structure with a chained particle that is not a title (parity), since `St St née` no longer reaches that emitter.

- 2026-10-19 #760 — MOVED FROM the chain's code comment in `_group.py`, the facts the entries above did not hold. LINEAGE: the chain is v1's prefix chain — a non-leading prefix run absorbs everything to the next prefix or suffix — with v1's `leading_first_name` rule keeping the first piece a name (`Van Johnson`). #367's SHAPE, beside the `Sir de Mesnil` entry above: keyed on index 0, a title displaced the particle and the chain fired, so identical name text parsed two ways — `Van Johnson` given 'Van', family 'Johnson'; `Dr. Van Johnson` family 'Van Johnson'. SUFFIX PIECES ARE NOT SKIPPED when the chain looks for the leading piece, and the reason is what skipping them would do rather than what it would cost. The shapes that decide it are those whose leading piece lands in `given`: `Ph.D. Van Johnson`, `II Van Johnson` and `Msc.Ed. Van Johnson` each read given 'Ph.D.'/'II'/'Msc.Ed.' with family 'Van Johnson', and skipping the piece moves `Van` out of the family into the middle name (given 'Ph.D.', middle 'Van', family 'Johnson') — a worse reading on three shapes, fixing none. `Jr. Van Johnson`, the shape that looks as if it needs the skip, classifies its leading piece as a TITLE and is already covered by the title run. The example that opened this argument, `Ph. D. Van Johnson`, left it with #371 (the pair no longer merges at the head of the input, so there is no suffix-shaped leading piece to skip); `Dr. Ph. D. Van Johnson` replaces it — family 'Van Johnson' as shipped, family 'Johnson' with the skip.
- 2026-10-25 #785 — IN THE GIVEN PART AFTER A FAMILY COMMA THE CHAIN STOPS AT A MEMBER ITS CAPITALS SETTLE, as at a suffix word, since the run S8 starts behind the given word takes it and the words behind it (`Smith, Freiherr von Berg MA Jones` → given 'von Berg', suffix 'MA Jones', as its dotted spelling reads), where the chain had taken them into the given name. Elsewhere the trailing read's bound already ends the chain at a member the read takes (decisions/S6's `Freiherr von Berg MA`), and a stop at one the read declines strands it: the review of the fix found `Freiherr von Berg MA Ma` reading given 'von Berg', middle 'MA', family 'Ma' under a stop everywhere, so no-comma names keep the chain's reading (family 'von Berg MA Ma', where the dotted spelling reads suffix 'M.A. Ma'). Found by #785's code review; the record is decisions/S6's review entries of this date.
1 change: 1 addition & 0 deletions docs/design/decisions/P5-bound-given-names.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,4 @@ Open: none in this file.
DECIDED (Derek): this narrower clause (a′) rather than declining every title word (a). P5 states that a title word standing in the name is a name word and joins like one (H3), and (a) undid it: it failed six tests, a P5 rules example and the two tests named for that clause among them, and over the bound-given grid below moved 4,044 parses, 3,000 of them a join split with no title read (`(Bob), Abu Bishop` → given 'Abu', middle 'Bishop') beside the 1,044 that (a′) moves (six tests measured against 4455962f's suite). (a′) leaves every join on a title word inside the name standing -- `abdul Sir Smith Berg`, `Berg, abdul Prof. Ali`, `Smith, abdul Bishop`.
MEASURED 2026-10-11 against 4455962f (#639's merge; this change is PR #643), over a 5,184-text bound-given grid (twelve heads × `abdul`, `Abu`, `abd al` × sixteen next words × nine tails) under the three orders: 1,044 parses move, every one a title word into the title field, 660 of them in a part past the second comma; #623's given-part grid moves 280, 260 of the same class and 20 the declined join below; no corpus name or case text but `Berg, abdul Prof.`, and nothing on the S2, #624 or #625 grids; the five gates exit 0; frames unmoved on the reference rows, up to `Berg, abdul Prof.` 207 → 228 on rare shapes no guard sees; recorded negative controls, 11 failing tests with no title declined and 5 with the past-the-second-comma half removed.
THE REVIEW (2026-10-11). The decline after a family comma asks H5's run as the comma-less name reads it (`tail_reading`), and the given part's own walk reads some words behind a title otherwise, the disagreement #623's entry (decisions/H5) records for the chain's bound: there the join is declined and no title is read. A shape-only numeral VI to X, or V before a third comma part, which the walk keeps a name word (`Smith, abdul Prof. VI` → given 'abdul', middle 'Prof. VI', where master and 1.4.0 read given 'abdul Prof.', middle 'VI'); a period-marked title that is also a particle, which P6 then attaches with its report (`Smith, abdul St.` → family 'St. Smith', particle-or-given); and a bound word that is also a particle before one (`Smith, Abu St.` → title 'St.', where `Smith, Zed St.` reads family 'St. Smith'). Every such shape is garbage; the first two read as the same name with an ordinary given word does. Recorded, not narrowed, as #623's disagreement was (Derek, #623), and rules/P5 states it as an Accepted clause; the review's sweep found nothing reading worse than master on a real name and no comma-less name moving. It also found two mechanisms no test held, now rows: the bare-title half past the second comma (`John Smith, Jr., abdul Sir Smith`) and the whole trailing run after a family comma rather than the last word (`Berg, abdul Prof. Dr.`).
- 2026-10-25 #785 — AFTER A FAMILY COMMA THE JOIN DECLINES A MEMBER ITS CAPITALS SETTLE, as it declines a word of the unambiguous suffix vocabulary: in a name of mixed case a listed member of the ambiguous class written in capitals is the credential (rules/S6), and the given part's trailing slot or S8's run then takes it, so `Smith, Abdul MA` reads given 'Abdul', suffix 'MA', where 1.4.0 and 2.6.0 read given 'Abdul MA' (`Smith, abdul ma` still joins). With no comma the join stands (`Abdul MA Smith` → given 'Abdul MA'): declined there, nothing takes the member, which reads as a middle name in silence, as the review of the fix found. Found by #785's code review; the record is decisions/S6's review entry of this date.
Loading
Loading