Repository navigation
Read a title that is also a given name as a title only inside a title phrase (#752, phase 2i) - #894
Merged
Merged
Conversation
… phrase (#752, phase 2i) rules/H9, the title phrase. A title with a given reading (dean, justice, major) compiles into TITLES_AMBIGUOUS instead of TITLES and is a title only beside a partner: a modifier or style before it, a title that attaches to it, or `of` after it, never a salutation (#853's rule). Outside a phrase it reads as an unlisted word, reported title-or-name where it opens the name. A modifier in the leading run of titles is a title only with a head title after it, `of` after it, or in the object of `of`/`the` there (decision 10, at the head only). `attaches` gains its meaning (TITLE_PHRASES); new Lexicon fields titles_ambiguous, title_modifiers, title_styles, title_phrases. resident/rt/pro, d'affaires and member reclassified; thirteen salutations' given counts move into notes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ame; grace, marshal, sergeant major; coverage
…shal phrase-only; attaches may name a word - the title-or-name report is silent where a family comma has marked the given name (SMITH, DEAN) - grace (style) and marshal (military) gain given readings: His Grace, Field Marshal read as titles; marshal's #606 exclusion replaced - attaches may name a title word: sergeant/sgt attach to major, major to general, so Sgt Marshal Smith keeps given Marshal - a style or modifier before a contested word is a partner only where it is read as a title (Grace Dean Smith) - drop a dead given-title tag line in classify; shim mirrors titles_ambiguous - Mr Justice: PSC's 17 salutation + Justice records all file Justice as a forename; no exception Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hase 2i) Derek's answer to the `Grace` report volume: a title that may be a given name and that no phrase in `title_phrases` holds is a title only behind a style or a modifier (`His Grace`), so standing alone it is no fork a reader hesitates over. `Grace Smith` and `GRACE SMITH` report nothing; `Dean Smith`, `Marshal Yanda`, `Justice Smith` and `Major Smith` still report, each held by a phrase (`chief` attaches to office and military; `major` attaches to `general`). Derived from the phrases `attaches` compiles, no new property. Measured against master a46b3a6 with --base: ctgov 195 moved, 117 report-only (was 318/240); tse 25, 16 report-only (was 94/85); FEC 53, unchanged. rules/H9 and decisions/H9 amended. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…se 2i) The review of 2aebd82: - in_a_title_phrase split every phrase per call, 175 frames on each name opening with Grace; the phrase words are now cached per vocabulary, as _marker_heads is (163 frames, below the parent's 169). - it counted phrases classify never reads (a caller's 'your grace', a three-word phrase), so one made Grace report; only two-word phrases of titles count now, as title_phrases' docstring says. - rules/H9's reason omitted 'of' after the word, which every contested word takes as a partner ('Grace of Monaco'); the rule, the code quotes and the release log say so now. - the titles_ambiguous and TITLE_OR_NAME docstrings name the condition. - 'Justice Smith' and 'Major Smith' rows pin the report surviving. No reading of the default vocabulary moves: its phrase words are the same. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The second review of d730db9: title_phrases' docstring said a phrase needs both words in titles, where classify and the report read titles or titles_ambiguous; and titles_ambiguous' said any phrase holding the word makes it report, where only a readable one does. decisions/H9's frame figure now says 175 more (344 against 169). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t-of-name-c36590 # Conflicts: # docs/design/decisions/vocabulary-model.md # docs/release_log.rst # tests/v2/test_cases.py
This was referenced Oct 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 2i of #752, the front of the name. One PR.
What changes
A title that is also a given name is a title only inside a title phrase (new rules/H9, the title phrase).
dean,justiceandmajorgain an office or military reading beside a datedgivenone. A word with both readings compiles into the newTITLES_AMBIGUOUSinstead ofTITLES. It is a title only beside a partner:Associate Dean,The Hon. Justice);ofafter it (Dean of Students);attachesto, on either side (Major General,Chief Justice).A salutation is never a partner (#853's
Mr Dean Smith), and neither is any other title after the word (FEC'sSMITH, DEAN MR.). Outside a phrase the word reads exactly as an unlisted word, soDean Smithkeeps givenDean(decision 13). Where it is the first name word and no comma has marked the given name, the parse reportstitle-or-name(Dean Smithreports,Smith, Deandoes not), if a phrase the vocabulary lists holds the word.graceis held by none (nothing attaches to the style kind), so it is a title only behind a style or a modifier, or beforeof, andGrace Smithreports nothing;dean,justiceandmarshalare held throughchief's phrases andmajorthrough its own, soDean Smith,Justice Smith,Marshal YandaandMajor Smithreport (Derek, 2026-10-26).After Derek's answers (2026-10-26):
grace(a style) andmarshal(a rank, its #606 exclusion replaced) are phrase-only too, soHis Grace John SmithandField Marshal Bernard Montgomeryread the title.attachesmay name a word as well as a kind:sergeantattaches tomajor(Sergeant Major), andmajortogeneral. Attaching to the whole military kind madeSgt Marshal Smithlose its given name oncemarshaljoined that kind.Decision 10, at the head of the name only. A modifier (
wing,vice,grand…) before the first comma is a title only:ofafter it (Member of Parliament), orPresident of the United States).Wing LauandMr Wing Lauread givenWing. After a comma a modifier is read as any title is (John Smith, Vice).The vocabulary
attachesis lifted from its phase-1 reservation: a title property naming title kinds, compiled into two-word phrases.Lexiconfields:titles_ambiguous,title_modifiers,title_styles,title_phrases.residentandrtto occupation, andproto academic (item 10's own);d'affairesandmemberto office, since each heads or completes its phrase.givenreadings that ShouldDoe, Jane MrsreadMrsas a title rather than a middle name? #835 recorded as H8's evidence (mr,herr,master,señora…). Those counts move into the salutation reading'snote, asld's did; otherwise the derivation would have readMr Smithas givenMr. No reading moves.standfreiherrkeep their given readings for the particle marker and stay titles.Compat. A word a caller lists in
titlesis a title everywhere, which keeps the 1.4 recipec.titles.add("dean")andLexicon.default().add(titles={"dean"}). That is why the contested words leaveTITLESrather than sit in both.#853's rule on its own
As decisions/vocabulary-model's item 12 asks, I measured the rule itself rather than the words taken out of
titles. The scratch tree gave the nine D12 words agivenreading; it was not committed.So the rule lands without declaring any D12 word. Its live reach here is
dean,justiceandmajor. The batches stay 2j's.Measured
Against master
a46b3a6e, py3.11, every local check with--base. Counts and token shapes only. Re-taken after merging master atee1b21dd(#895, phase 2g) with that commit as the base: every local figure below is unchanged, and the committed snapshot shows the same 12 moves.Grace Dean Smithno longer reports), plus 37 new names from the rules' examples (His Grace John SmithandField Marshal Bernard Montgomeryamong them, reading the title). TheDean …/Major …names gain the report,Wing LauandGrand Roundsread given, and theDean of Chemistryrows read the phrase as the titleWing Launow agrees on given and title; no regressionlocal_agreement.py --base, 1,039,174 scored)British×2,Director Uk). The first build broke 4Designated Memberrecords, whichmember→ office fixedDean115). Field moves:Wingheads read as the given name (Aa Aa, AA), and role strings opening with a modifierFIELD SMITH, JOHNkeeps familyFIELD SMITH, as 1.4.0 read it; most of the rest is theINFORMATION REQUESTEDplaceholderDEAN14,MARSHAL2), 9 a modifier opening a name (ROCK,AIR) now read as the given nameSweeps. I ran a 34,380-parse grid built from:
Freiherr,St,St.) and the dualRev. Sr.second in a run.It moved only these shapes. It also found the
John Smith, DEANreversal, fixed by leavingtitles_ambiguousout of the capitals shape's "unlisted" roster.Accepted costs (rules/H9):
Mr Justice Smithreads givenJustice, since a salutation is no partner. Measured: all 17 PSC records with a salutation thenJusticefile it as the forename; none files it as a title. ctgov, FEC and the committed corpora hold none.Grand Duke of Tuscanyreads givenGrand, becausedukeis refused.ofbehind it, loses the title:Princess Royal Annereads givenRoyal.Grand Duke of Tuscanyreads givenGrand).Lau, Wing→ titleWing), so the listing form and the written order disagree. That is the cost decision 10 took by keeping the gate out of comma parts.Docs
justiceleaves its "stay out" line._VOCAB_FIELDSrosters.Checks
uv run pytest, and-n0 -m serial.--python 3.15, mypy and ruff.tools/vocab/build.py --check.Mr. and Mrs. Wing Lau, v1titles.clear(), andofafter a modifier. Two more rounds on theGracechange: the phrase test is cached per vocabulary (it had cost 175 more frames on every name opening withGrace) and counts only phrases the parse can read.Refs #752, #853, #348.
🤖 Generated with Claude Code