Repository navigation
Settle a listed credential written in capitals (#752, phase 2g) - #895
Merged
Merged
Conversation
In a name written in more than one case, a listed member of the ambiguous credential class written in capitals (MA, DO, BA) was already read as the credential, but it was still reported as a suffix-or-name fork, and it did not start S8's credential run where its dotted spelling did. The capitals are the writing's own answer, as the periods are, so the clash is now settled at the gate's form step: the report goes (#785's first question), the member starts the run (its second), and a name written in one case keeps its report (its third). The word is not retagged. The phase 2 spike that retagged it erased its other readings (`Doe, John DO` became family 'DO Doe' through P6, and `Jane Doe nee MA` lost its maiden name), so one predicate, `_pieces.settled_by_case`, is asked where a reading is chosen: the trailing peel takes a settled member without recording a pick, the comma's decision and the given part's trailing slot leave its report out, and the run start admits it, its particle test still refusing DO. Accepted: a writer's initials in capitals between the given names and the family name, where they spell a listed member, start the run (`Maria Ana MA Silva` -> suffix 'MA Silva'), as the dotted spelling already did; 6 ctgov names take that shape. Rules S6, S8, S5, S4, S3, S7, C11 and M2 amended; dated entries in decisions/S6 (the record), S8, S5, C11, S3 and vocabulary-model; case rows for the new readings, and rows that pinned an emitter rewritten in one case or lower case so they still reach it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…785) Found by the PR's code review (a grid of 104,676 parses against master, and each capitals member against its dotted spelling): - The comma's report on the part's opening word was withheld only where every listed member of the part was settled, so `Smith, MA PhD Ma` still reported its settled MA. It asks the word's own writing now. - P2's chain stopped at a suffix word but not at a settled member, so `Smith, Freiherr von Berg MA Jones` read given 'von Berg MA Jones' in silence where its dotted spelling reads suffix 'M.A. Jones'. `chain_run_end` asks `settled_by_case`, the chain's units with it. - P5's bound given-name join took a settled member as the given name's second word (`Smith, Abdul MA` -> given 'Abdul MA'); it declines one now, as it declines a suffix word. The design-docs review found the API reference's SUFFIX_OR_NAME docstring, rules/P6 and Standing lines in decisions/M2, S4 and S5 still stating the old reports, and S8's Accepted clause narrower than its cost (a family name written in capitals by convention, and a title word behind the member read as a title in silence); all amended, with rules/P2 and P5 and dated entries in decisions/S6, P2 and P5. The twin grid's capitals-against-dotted disagreements fall from 4,062 on master to 2,250, all of which master shares. ctgov, FEC, tse, PSC and the agreement records move exactly as before the fixes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n part (#785) The review of the fix commit found the chain stop stranding a settled member where the trailing read then declined it: `Freiherr von Berg MA Ma` read given 'von Berg', middle 'MA', family 'Ma' (given 'MA' under the family-first orders), away from both master and the dotted spelling, on 162 parses of its grid. P5's decline did the same with no comma (`Abdul MA Smith` -> middle 'MA' in silence). After a family comma the member always has a reader, the given part's trailing slot or the run S8 starts behind the given word, so both widenings stand there and nowhere else. Everywhere else the readings are master's: every name the narrowing moves on the review's grid returns to master's reading. Rules P2 and P5, decisions/P2, P5 and S6, and two case rows for the shapes the narrower checks keep. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…785) Derek, on PR #895 (2026-10-26): narrow #785's second question rather than accept its cost. In a name with no family comma, a listed member its capitals settle no longer starts S8's credential run where a name word stands right behind it: a particle, or a Title-case or capitals word that is no credential. That word is evidence the capitals are the writer's initials, as the design's cue table has Title case lean to the name. `Maria Ana MA Silva`, `Jean Pierre MA DUPONT` and `Mary Jane MA King` keep the readings 1.4.0 through 2.6.0 gave; `John Smith MA Jones` keeping family 'Jones' is the new Accepted cost in S8. A credential behind the member still lets the run start (`John Smith MA JD Jones`), and after a family comma nothing changes. `run_start` asks `_name_word_behind` of a settled member; the given part's predictor passes `initials_cue=False` to keep agreeing with assign's walk. The first draft keyed the test on the class tag, which the caps switch writes on a shape-admitted numeral (`John Smith VI Ma` lost its generation reading under it); it asks `settled_by_case` now. ctgov moves 1,772 readings against master (1,767 dropped reports, 5 credential-list fixes); the 6 initials readings are gone. FEC, tse, PSC and the agreement records match. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#785) The narrowing's review found `_name_word_behind` refusing any multi-word piece, so a particle run or connective join that group had already merged ('de la Vega', 'van der Berg', 'Ortega y Gasset') let a settled member start the run: `Maria Ana MA de la Vega` read suffix 'MA de la Vega'. It asks the piece's first word now, a credential merged across a space ('Pharm D', 'Ph. D.') still excluded, and a word of a script with no case counts as a name word (`John Smith MA 田中`). Every reading this moves on the review's 516,672-parse grid lands on master's; the local corpora move as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov showed the name-word test's split-credential exclusion unexercised. Writing the case that reaches it turned up the Ph./D. pair, which the walk leaves out: the test saw the word behind the pair as the word behind the member, so `John Smith MA Ph. D. Jones` read family 'MA', suffix 'Ph. D. Jones' (as master does) where its dotted twin reads suffix 'M.A. Ph. D. Jones'. `run_start` asks `behind_the_merged_credential` first now, and `John Smith MA Pharm D Jones` is pinned beside it. The helper moves above `run_start`'s S8 comment, which it had split from its function. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 2g of #752: capitals settle a listed credential. Closes #785.
In a name written in more than one case, a listed member of the ambiguous credential class written in capitals (
MA,DO,BA) was already read as the credential (rules/S6, the case signal at the suffix slot). It was still reported as asuffix-or-namefork, though, and it did not start rules/S8's credential run (the credential's trailing run) where its dotted spellingM.A.did. The capitals are the writing's own answer, as the periods are, so the clash is now settled at the gate's form step:John Smith MA,John Smith, MA,Doe, John DOreport nothing (Jack MAkeeps only itsgiven-or-family)Smith, John MA Jones→ suffixMA Jones. With no comma, only where no name word follows it:John Smith MA JD Jones→ suffixMA JD Jones, butMaria Ana MA Silvakeeps familySilvaJOHN SMITH MAreports; the case asked of a clause's or bracket's word is the whole name'sSettle the clash, don't retag the word
The phase 2 spike retagged the word as an unambiguous credential, and that erased its other readings:
dois a particle too, so P6 took it (Doe, John DO→ familyDO Doe), andJane Doe nee MAlost its maiden name. Here the word keeps every tag. One predicate,_pieces.settled_by_case, is asked where a reading is chosen:starts_a_credential_run) admits it. Its particle test still refusesDO, soJohn Smith DO Joneskeeps familyDO Jones. With no family comma,run_startrefuses it where a name word stands right behind it (_name_word_behind): a particle, or a Title-case or capitals word that is no credential;Smith, Freiherr von Berg MA Jones→ givenvon Berg, suffixMA Jones);Smith, Abdul MA→ givenAbdul, suffixMA).Both of those last two apply only after a family comma, where the given part's trailing slot or S8's run always takes the member. Applied everywhere, they left it stranded as a name word in silence:
Freiherr von Berg MA Maread middleMA, andAbdul MA Smithread middleMA. Without a comma those names keep master's reading (rows pin both).The case asked is
ParseState.one_caseover the name's own words, never a bracketed word's own case. The spike's 7 FEC moves came from asking a bracketed word's own case; FEC moves 0 here. A suffix word that is also a name (fils, the agnomens; rules/S11) is not asked, and keeps the reports 2h gave it.Still reported, because something before the writing keeps the word a name: the first word a maiden clause takes (
Jane Doe nee MA, M2), and the word after a comma with nothing before it, which C4's count leaves the given name (, MA Smith). Bracketed content is rules/S1's and is unchanged (phase 2l).Measured
All against master
a46b3a6e, every local check with--baseon that checkout, on Python 3.11.17.The dropped ctgov reports are all on a capitals listed member:
DO1,090,MA426,BA184,JD35,PA11, the rest five or fewer. The commonest shapes areAa Aa, DO(607),Aa Aa Aa, DO(244) andAa Aa, MA(176).The 5 ctgov field moves, read one by one, are lists of credentials after a comma that the parse reads as a reversed name, with a credential taken for the given name (that part is unchanged). The list behind the member now reads as suffix where it read as middle names.
Narrowed by Derek (2026-10-26). The first version let the capitals start the run anywhere. That moved 6 ctgov names that write the person's own initials in capitals between the given names and the family name (shape
Aa Aa XX Aa): the family name read as a suffix. With no family comma, a name word right behind the capitals now keeps them a name word, as Title case leans to the name in the design's cue table.Maria Ana MA Silva,Jean Pierre MA DUPONT(a capitals family name counts as the name word),Mary Jane MA King,Maria Ana MA de la VegaandMaria Ana MA Ortega y Gassetkeep the readings 1.4.0 through 2.6.0 gave. A particle run or joined surname counts by its first word, and a word in a script with no case counts as a name word. A lower-case word does not, as the rule was stated (John Smith MA jonesreads suffixMA jones). The cost, Accepted in S8:John Smith MA Joneskeeps middleSmith MA, familyJones, as before, whereJohn Smith M.A. Jonesreads suffixM.A. Jones.Frames. The reference row and plain names are unchanged (305,
John Smith149,Smith, John158,John Smith, PhD202). A name holding a member pays where the predicate is asked:John Smith Ma213 → 220,JOHN SMITH MA212 → 215.John Smith MAgets cheaper, 212 → 203.John Smith MA Jonesgoes 232 → 259, for the run it now reads.On the review's grid (104,676 parses: 125 shapes, 23 spellings, three orders, four policies), 1,227 parses move a field, each a mixed-case name whose capitals member now reads as a suffix. Every report removed names a member that ends in the suffix field, and none is added. Against the dotted twins, disagreements fall from 4,062 on master to 3,078, every one of which master shares.
Readings that moved in the case table
Each new reading matches its
PhDandM.A.twins:Doe, John MA do→ suffixMA do. 1.4.0 read suffixMA, do.Doe, John MA Ma→ suffixMA Ma. 1.4.0 read suffixMA, Ma.Doe, John MA Smith→ suffixMA Smith.Jane Doe nee Smith MA y→ maidenSmith, suffixMA y.Doe, Jane nee Smith MA do→ suffixMA do.Jane Doe MA R.T.→ suffixMA R.T.. This narrows S3's ShouldRam Bahadur B.K.keepB.K.as its family name? #864 Accepted cost: 2.4.0 through 2.5.0 read it this way too.Berg, abdul MA→ givenabdul, suffixMA, where 1.4.0 and 2.6.0 read givenabdul MA.Maria Ana MA Silva,Jean Pierre MA DUPONT,Mary Jane MA King,Maria Ana MA de la Vega,Maria Ana MA Ortega y GassetandJohn Smith MA Joneskeep master's readings, pinned by new rows.The rows that pinned an emitter, a floor or a reach with a capitals member are now written in one case or lower case, so they still reach it. Mutating each
suffix-or-nameemitter in turn showed every site still caught by at least one case row. A capitals twin pins each new reading.Docs
AmbiguityKind.SUFFIX_OR_NAME's docstring, which autodoc renders as the API reference, is rewritten too.Checks
uv run pytestand-n0 -m serialuv run --python 3.15 pytestsphinx-build -b doctest docs(436 tests, 0 failures),python -m doctest README.rstJohn Smith VI Ma); that is fixed and pinned.de la Vega,Ortega y Gasset). The fifth commit fixes that, and every reading it moves on that review's 516,672-parse grid lands on master'sJohn Smith MA Ph. D. Jonesreading familyMA, as master does, where its dotted twin reads suffix. The sixth commit fixes that and pins it; every changed line is now covered🤖 Generated with Claude Code