Skip to content

Settle a listed credential written in capitals (#752, phase 2g) - #895

Merged
derek73 merged 6 commits into
masterfrom
claude/phase2g-capitals-cue-5ad13c
Oct 26, 2026
Merged

derek73 merged 6 commits into
masterfrom
claude/phase2g-capitals-cue-5ad13c

Conversation

@derek73

@derek73 derek73 commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

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 a suffix-or-name fork, though, and it did not start rules/S8's credential run (the credential's trailing run) where its dotted spelling M.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:

#785 Answer Example
Q1: drop the report where case settles it yes John Smith MA, John Smith, MA, Doe, John DO report nothing (Jack MA keeps only its given-or-family)
Q2: start S8's run, as periods do yes, narrowed (Derek, 2026-10-26) after a family comma always: Smith, John MA Jones → suffix MA Jones. With no comma, only where no name word follows it: John Smith MA JD Jones → suffix MA JD Jones, but Maria Ana MA Silva keeps family Silva
Q3: a name in one case keeps its report (T4) yes JOHN SMITH MA reports; the case asked of a clause's or bracket's word is the whole name's
Q4: a word taken in by position alone no new kind already decided in decisions/vocabulary-model (item 7); phase 2m's surfaced reading tells them apart

Settle the clash, don't retag the word

The phase 2 spike retagged the word as an unambiguous credential, and that erased its other readings: do is a particle too, so P6 took it (Doe, John DO → family DO Doe), and Jane Doe nee MA lost its maiden name. Here the word keeps every tag. One predicate, _pieces.settled_by_case, is asked where a reading is chosen:

  • the trailing peel takes a settled member without recording a pick, so no downstream reporter meets it;
  • the comma's decision (C4/C11) and the given part's trailing slot (S5) leave its report out;
  • the run start (starts_a_credential_run) admits it. Its particle test still refuses DO, so John Smith DO Jones keeps family DO Jones. With no family comma, run_start refuses 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;
  • in the given part after a family comma, P2's particle chain stops at it, as at a suffix word (Smith, Freiherr von Berg MA Jones → given von Berg, suffix MA Jones);
  • in the same given part, P5's bound given-name join declines it, as it declines a suffix word (Smith, Abdul MA → given Abdul, suffix MA).

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 Ma read middle MA, and Abdul MA Smith read middle MA. Without a comma those names keep master's reading (rows pin both).

The case asked is ParseState.one_case over 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 --base on that checkout, on Python 3.11.17.

Check Result
committed snapshot 55 names move: 48 only drop a report, 7 move a field. Every one is a case-row or rules text. Plus 29 texts gained and 1 lost, from rows added or rewritten
CLDR, GND, Wikidata, locale agreement records all match
psc-individuals matches the base on every record (1,004,785 of 1,039,171 agree)
fec-individuals, tse-donors match the base
ctgov-officials 1,772 readings move: 1,767 only drop a report, 5 move a field (the credential lists below), each gaining the report on the word its run absorbs

The dropped ctgov reports are all on a capitals listed member: DO 1,090, MA 426, BA 184, JD 35, PA 11, the rest five or fewer. The commonest shapes are Aa Aa, DO (607), Aa Aa Aa, DO (244) and Aa 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 Vega and Maria Ana MA Ortega y Gasset keep 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 jones reads suffix MA jones). The cost, Accepted in S8: John Smith MA Jones keeps middle Smith MA, family Jones, as before, where John Smith M.A. Jones reads suffix M.A. Jones.

Frames. The reference row and plain names are unchanged (305, John Smith 149, Smith, John 158, John Smith, PhD 202). A name holding a member pays where the predicate is asked: John Smith Ma 213 → 220, JOHN SMITH MA 212 → 215. John Smith MA gets cheaper, 212 → 203. John Smith MA Jones goes 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 PhD and M.A. twins:

  • Doe, John MA do → suffix MA do. 1.4.0 read suffix MA, do.
  • Doe, John MA Ma → suffix MA Ma. 1.4.0 read suffix MA, Ma.
  • Doe, John MA Smith → suffix MA Smith.
  • Jane Doe nee Smith MA y → maiden Smith, suffix MA y.
  • Doe, Jane nee Smith MA do → suffix MA do.
  • Jane Doe MA R.T. → suffix MA R.T.. This narrows S3's Should Ram Bahadur B.K. keep B.K. as its family name? #864 Accepted cost: 2.4.0 through 2.5.0 read it this way too.
  • Berg, abdul MA → given abdul, suffix MA, where 1.4.0 and 2.6.0 read given abdul MA.
  • Maria Ana MA Silva, Jean Pierre MA DUPONT, Mary Jane MA King, Maria Ana MA de la Vega, Maria Ana MA Ortega y Gasset and John Smith MA Jones keep 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-name emitter in turn showed every site still caught by at least one case row. A capitals twin pins each new reading.

Docs

  • Rules: S6, S8 (new run-start clause, narrowed, and its Accepted cost), S5, S4, S3, S7, C11 (new Except), M2, P6 (new Precedence bullet), P5 and P2. The size budget was re-recorded; every clause added reads S6's case signal, which those rules already defer to.
  • Decisions: the record is decisions/S6's 2026-10-25 Should capitals in a mixed-case name settle a credential the way periods do? #785 entry, with a recompute recipe, plus its review entry. Pointer entries in S8, S5, C11, S3, P2, P5 and vocabulary-model. Superseded Standing lines in those files and in M2 and S4. RFC note.
  • User docs: a release-log bullet; usage.rst, customize.rst and concepts.rst updated (usage.rst's doctest asserted the old report). AmbiguityKind.SUFFIX_OR_NAME's docstring, which autodoc renders as the API reference, is rewritten too.
  • AGENTS.md: one sentence in the spelling sweep about capitals that may be initials.

Checks

  • uv run pytest and -n0 -m serial
  • uv run --python 3.15 pytest
  • mypy, ruff
  • sphinx-build -b doctest docs (436 tests, 0 failures), python -m doctest README.rst
  • code review with the sweeps, and a design-docs review. The second commit carries their fixes: the comma's opening-word report, P2's chain stop and P5's join, plus the doc corrections.
  • a review of that fix commit, which found the stranding above. The third commit narrows both widenings, and every name it moves on that review's grid goes back to master's reading
  • the fourth commit narrows Q2 as Derek decided. A grid check of it caught a first draft that took a numeral away under the caps switch (John Smith VI Ma); that is fixed and pinned.
  • its review found the name-word test refusing merged pieces (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's
  • Codecov showed one line of the diff unexercised. Writing the case that reaches it found John Smith MA Ph. D. Jones reading family MA, 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

derek73 and others added 3 commits October 25, 2026 17:29
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>
@derek73 derek73 added enhancement design vocabulary Per-word vocabulary model and language packs labels Oct 26, 2026
@derek73 derek73 self-assigned this Oct 26, 2026
derek73 and others added 3 commits October 26, 2026 10:36
…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>
@derek73
derek73 merged commit ee1b21d into master Oct 26, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

design enhancement vocabulary Per-word vocabulary model and language packs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Should capitals in a mixed-case name settle a credential the way periods do?

1 participant