diff --git a/docs/design/decisions/H1-title-and-one-name-word.md b/docs/design/decisions/H1-title-and-one-name-word.md index a7fe57d22..156e33102 100644 --- a/docs/design/decisions/H1-title-and-one-name-word.md +++ b/docs/design/decisions/H1-title-and-one-name-word.md @@ -12,7 +12,7 @@ Elsewhere: the graf class, a title word borne as a name but rarely as its first word shipping as a title (`Greve Anna` → title 'Greve', family 'Anna'), is decisions/salutation-titles' 2026-10-04 #606 bundle; the renunciate class, the given-name titles of traditions that drop the surname (`Swami Vivekananda` → given 'Vivekananda'), is decisions/indic-honorifics' 2026-09-06 #346/#344/#343 bundle. -Open: [#348](https://github.com/derek73/python-nameparser/issues/348) (whether a word that is both a title and a given name reports an ambiguity; `Baron Davis` reads title 'Baron'; `Prince Fielder` reads given 'Prince' in the default order since 2026-10-27, decisions/H9); [#815](https://github.com/derek73/python-nameparser/issues/815) (whether N3 sets a suffix aside as this rule does, the nickname-led question the 2026-08-25 #410 entry left open: `'Smitty' Jones Jr.` reads given 'Jones', family ''). +Open: [#913](https://github.com/derek73/python-nameparser/issues/913) (the title words still read as titles though borne as names, #348's question answered by rules/H9: `Baron Davis` reads title 'Baron'; `Prince Fielder` reads given 'Prince' in the default order since 2026-10-27, decisions/H9); [#815](https://github.com/derek73/python-nameparser/issues/815) (whether N3 sets a suffix aside as this rule does, the nickname-led question the 2026-08-25 #410 entry left open: `'Smitty' Jones Jr.` reads given 'Jones', family ''). ## Log diff --git a/docs/design/decisions/O6-two-family-names.md b/docs/design/decisions/O6-two-family-names.md index 179fcf0b3..d4f145cb9 100644 --- a/docs/design/decisions/O6-two-family-names.md +++ b/docs/design/decisions/O6-two-family-names.md @@ -9,8 +9,7 @@ - Under a family-first order the first two name words are the family, the remainder laid out as the positions after a family — 2026-10-24 #754. - The switch runs before `middle_as_family` and is not refused beside it: given-first, the two together read as `middle_as_family` alone — 2026-10-24 #754. - The switch reports nothing — 2026-10-24 #754. - -Open: whether the reading the switch did not take is reported, once ambiguity is derived from clashing readings, #752. +- The switch reports no alternative either, so the reading it did not take is not surfaced: the caller declared the convention — 2026-10-27 #752 (Derek). ## Log @@ -38,3 +37,4 @@ Open: whether the reading the switch did not take is reported, once ambiguity is | Everyone, as if it were the default | 1,039,171 | 96.7% → 47.2% | 22,959 | 537,743 | Among Spanish filers it fixes names of four name words 1,480 to 162 and of three 2,325 to 732, counted by the default reading's given, middle and family words. Of the records it breaks, 889 of 902 Spanish and 1,331 of 1,481 Portuguese filed a one-word surname. In the GND and Wikidata fielded corpora, the given-first renderings of the Spanish and Latin American double-surname strata (GND `compound-iberia` and `compound-latam`, Wikidata `surname2-es`, `-mx` and `-co`) disagree with the source on 315 of 390 by default, the RFC's count, and on 17 with the switch: 298 fixed, none broken; their index-form renderings disagree on none either way. The same switch over every other given-first rendering breaks 43 of GND's 408 and 141 of Wikidata's 250, and in the native-script Wikidata corpus moves 31 three- and four-word Arabic, Cyrillic, Bengali and Devanagari names, 11 to agreeing and 20 away. Recompute: for PSC, `local_agreement.read` per record under `Parser()` and under `Parser(policy=Policy(two_family_names=True))`, grouped by `group_of`, skipping records set aside on either side; for the fielded corpora, `cldr_agreement.disagreements` over the renderings with `shape` None, once with `_PARSERS[None]` as shipped and once set to the switched parser (clearing `_parser`'s cache), split by `label` and `order`. The comparator is the default parser on the same tree. +- 2026-10-27 #752 (Derek) — THE SWITCH SURFACES NO ALTERNATIVE: the reading it did not take is not reported, as the 2026-10-24 #754 entry's No report bullet left for #752 to answer. Phase 2m surfaces the reading not taken as `Ambiguity.alternative`, which rides on a report, so a switch that reports nothing carries none. The caller turned the convention on, which is the declaration that settles the fork, as a declared order settles field order without a report; a report on most names of three words or more would still teach the caller to ignore the field. diff --git a/docs/design/decisions/suffix-acronym-collisions.md b/docs/design/decisions/suffix-acronym-collisions.md index 0e8ecf21a..c989bb7e7 100644 --- a/docs/design/decisions/suffix-acronym-collisions.md +++ b/docs/design/decisions/suffix-acronym-collisions.md @@ -27,7 +27,7 @@ Elsewhere: the case lean that decides the capitals forms above is decisions/S6's Not standing: the #454 bullet's note that the `fix(suffix-routing)` ledger rule stays, the ledgers having been retired for the snapshot (decisions/differential-ledger, #664), and the repair of rules/P6's Accepted clause recorded in the "What #454 got right" bullet, carried out in the same change — 2026-09-07 #342. -Open: #752 (phase 2 derives the ambiguous marking from clashing readings, which rewrites how the memberships above are recorded). +Elsewhere: since phase 2a the ambiguous marking above is derived from a word's name reading rather than written as a flag, and no membership above moved — decisions/vocabulary-model's 2026-10-25 #752 — A CLASH WITH A NAME IS A NAME READING entry (phase 2a). ## Log diff --git a/docs/design/decisions/vocabulary-collisions.md b/docs/design/decisions/vocabulary-collisions.md index 019ec741a..2de84d013 100644 --- a/docs/design/decisions/vocabulary-collisions.md +++ b/docs/design/decisions/vocabulary-collisions.md @@ -19,7 +19,9 @@ Elsewhere: #454's acceptance of `mc`'s inherited answer is decisions/suffix-acro Not standing: the C-i correction's call to re-judge `lo` and `el` as candidate particles, which #360 took up, judging `lo` ambiguous and leaving `el` needing judgement; neither was added to the particles — 2026-08-17. -Open: [#348](https://github.com/derek73/python-nameparser/issues/348) applying C-i to the titles, then a titles ambiguous subset and an ambiguity kind for it; #752 (phase 2 derives the ambiguous marking from clashing readings). +Elsewhere: C-i reaches the titles through a `given` reading, which makes a title word a title only inside a title phrase (rules/H9; the vocabulary is decisions/vocabulary-model's 2026-10-25 #752, phase 2i entry); where the word reads as a name, which forks are reported, #348's question, is decisions/H9's 2026-10-26 #752, phase 2i (Derek) and phase 2i, the report's reach (Derek) entries, a word no listed phrase holds and one after a comma reporting nothing; since phase 2a the particles' and suffix acronyms' ambiguous markings are derived from name readings too (decisions/vocabulary-model's 2026-10-25 #752 — A CLASH WITH A NAME IS A NAME READING entry). + +Open: #913 (the title words still read as titles that are also borne as names). ## Log diff --git a/docs/design/decisions/vocabulary-model.md b/docs/design/decisions/vocabulary-model.md index ba54d843a..fc648f9e6 100644 --- a/docs/design/decisions/vocabulary-model.md +++ b/docs/design/decisions/vocabulary-model.md @@ -41,7 +41,7 @@ The vocabulary was a set of base sets plus marker subsets (`particles` and `part Not standing: the plans the classifications carried out, phase 1's mechanical conversion of the unclassified categories into `und.toml` (2026-10-18 #737) and the shared readings left in place until their categories were classified (2026-10-19 #749), both done by 2026-10-20 #751, the conjunctions; and #747's reason for exempting `und.toml`, its entries keeping the Python lists' order for its vetting comments to point along (2026-10-19 #747), overtaken once it held two entries and no such comment. -Open: #752 (phase 2, derived ambiguity; its sub-phases 2a to 2m, each its own PR, are the 2026-10-23 #752 entry's and the RFC's), #753 (phase 3, language packs), #754 (phase 4, order, shapes and the output model), #766 (whether `bon`, `dí` and three other words stay in the vocabulary). +Open: #913 (the title words phase 2j left, read as titles though borne as names), #753 (phase 3, language packs), #754 (phase 4, order, shapes and the output model), #766 (whether `bon`, `dí` and three other words stay in the vocabulary). ## Log diff --git a/docs/design/vocabulary-model-rfc.md b/docs/design/vocabulary-model-rfc.md index 7912396c4..a13fbf095 100644 --- a/docs/design/vocabulary-model-rfc.md +++ b/docs/design/vocabulary-model-rfc.md @@ -56,7 +56,7 @@ The reference for the format is nameparser/vocab/README.md; the decisions behind ## Phase 2: derived ambiguity and a general gate -Phase 2 is the first phase that changes how names are parsed. Its design was agreed on 2026-10-23 (#752); the decisions, the evidence for each and the options declined are decisions/vocabulary-model's entry of that date. What follows is the design as agreed. +Phase 2 is the first phase that changes how names are parsed. Its design was agreed on 2026-10-23 (#752); the decisions, the evidence for each and the options declined are decisions/vocabulary-model's entry of that date. What follows is the design as agreed. Every sub-phase below had landed by 2026-10-27, when #752 closed; the title words 2j did not reach are #913's. ### Three sources of readings @@ -155,7 +155,7 @@ Each sub-phase is one PR, measured on its own base: the committed snapshot read | 2g | capitals settle a listed credential (#785), through the pool | 2a, 2b | | 2h | generation readings gated by kind: `fils`, the agnomens, `default = false` | 2b | | 2i | the front of the name: the phrase partner, the contested heads, #853's word after a title, modifiers at the head | 2b | -| 2j onward | titles that are names, one batch per word or group, in the agreed order | 2i | +| 2j onward | titles that are names, one batch per word or group, in the agreed order; the words left are #913's | 2i | | 2k | abbreviated given names over the leading-abbreviation title (#789) | 2b | | 2l | the bracket escape reads the derived clash (#810) | 2a, 2b | | 2m | surfacing, `Ambiguity.alternative` | the rest |