Skip to content

fix(#563): paired initials after a comma read as the given name - #567

Merged
derek73 merged 5 commits into
masterfrom
fix/issue-563-dotted-initials-after-surname
Oct 1, 2026
Merged

derek73 merged 5 commits into
masterfrom
fix/issue-563-dotted-initials-after-surname

Conversation

@derek73

@derek73 derek73 commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Closes #563.

#516 (unreleased) read an unlisted dotted token after a comma by C1's count of name words before it. The count can't tell a given name plus family name from one surname written in two words, so initials after a double surname became a credential:

text 2.3.0 master this PR
García Márquez, G.J. given G.J. given García, family Márquez, suffix G.J. given G.J., reported
De La Cruz, M.J. given M.J. no given name given M.J., reported
van der Berg, A.J. given A.J. given van, family der Berg given A.J., reported
John Smith, X.Y.Z. given X.Y.Z. suffix, reported suffix, silent

The rule (rules.md#C1)

  • Paired initials (two single letters joined by a period; the second period is optional) after a comma read as the given name and report the fork.
  • They become the credential run only when one of these speaks for them:
    • an unambiguous suffix word in front of them that is not also a title: PhD G.J. and Jr G.J. flip; Ms G.J., MD G.J. and Sr G.J. read title + given; Ed G.J. keeps the family comma;
    • another dotted-shape word in the same part (X.Y.Z. G.J., X.Y. P.Q.).
  • Three or more letters, or any longer chunk, read by the count as before. Accepted cost: García Márquez, G.J.R. → suffix. Spaced initials (G. J. R.) are unaffected.
  • A flip in which no listed ambiguous member takes part is silent. The exception: pairs speaking only for each other (De La Cruz, M.J. K.L.) still report.
  • Scope is the first slot after a comma only. The trailing slot (John Smith R.T.) and the end of the given part (Doe, John R.T.) keep Should John Smith XYZ read XYZ as a credential when no wordlist has those letters? #516's reading. That is why García Márquez, Ed G.J. gives given Ed, suffix G.J., with both forks reported.

Also fixed: a by-shape pick's report no longer says it is "written without periods" and "a post-nominal".

Verification

  • Full suite: 10,584 passed. ruff and mypy are clean, and the Sphinx build is clean.
  • The new segment tests fail against both master's and the previous commit's _segment.py.
  • The differential gate exits 0 at all five baselines. Ledgers gain a fix(#563) rule, and the guard rosters and corpus claims are re-recorded with dated comments.
  • Against master over every corpus name, 11 of 1,453 differ, all of them names this PR added. Over master's own corpus the only mover is John Smith, A.B.; the population that could move is 13 names, and decisions.md records it.
  • Frame counts are unchanged on the common comma paths (Smith, John 183, John Smith, MA 252).

Review

  • The design-docs and code reviews ran on cda95e9c; their fixes are in 14b1c94f.
  • The second-round review ran on 14b1c94f; its fixes are in c125f69b.
  • A /simplify pass ran on the code and landed in 23f41308. It is behavior-identical: 0 diffs over 21,604 parses. It fixed a quadratic in the paired-initials title scan (John Smith, MD MD … G.J. G.J. … cost duals × pairs) and added a frame-count scaling guard for it.
  • Behavior decisions made along the way are recorded in decisions.md's 2026-09-30 entry: front-only company, silent shape-only flips, comma slot only, titles don't speak, class members don't speak, two pairs report.

🤖 Generated with Claude Code

derek73 and others added 4 commits September 30, 2026 21:13
The trailing slot's SUFFIX_OR_NAME detail said every pick was "written
without periods" and "both a post-nominal and an ordinary name". Both
claims are false of a word the class admits by shape: 'X.Y.Z.' is
written with its periods and is in no wordlist. A pick carrying
SHAPE_ACRONYM_TAG now says it is shaped like a post-nominal but listed
in no vocabulary; a listed member keeps the old wording.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#516's dotted shape read a token after a comma by C1's count of name
words before it. The count cannot tell a given name plus a family name
from one surname in two words, so 'García Márquez, G.J.' lost its given
name, 'De La Cruz, M.J.' had none, and 'van der Berg, A.J.' split the
surname -- all read as initials from 1.4.0 through 2.3.0.

Two dotted single letters opening the part after a comma now read as
the given name, reported, unless a credential in front of them or a
second by-shape dotted word in the same part speaks for them. Three or
more letters and longer chunks read by the count as before. A flip
resting only on words admitted by dotted shape is made in silence; a
listed member in the part still reports it.

rules.md C1 and S3 carry the exception and its examples, decisions.md
records the three choices and the measurement, and the ledgers gain a
fix(#563) rule while the #516 rule trades 'John Smith, A.B.' for the two
by-count movers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review round. The first version let any suffix word in front of a pair
make it a credential, and C1 counts a title/suffix dual opening the
part as a suffix word, so 'García Márquez, Ms G.J.' split the surname
in silence where every release read title 'Ms', given 'G.J.'. Only a
suffix word that is not also title vocabulary speaks now; in front of
a pair a dual is the title of the given part the pair opens, as S2
reads it there.

Also from the round: the single-token path asks LISTED as "no period"
inline instead of a second membership call (+2 frames on every
reporting comma name, now 0); rules.md states the optional second
period, the title exception and listed-dotted-word boundaries with
examples, and S2 and S3 point at C1's two comma exceptions; the user
docs say "suffix word" and "unlisted dotted word" where they said
"credential" and "dotted word"; decisions.md names the population that
could move and the entries it reverses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…report

Second review round, on the first round's fix commit.

A listed ambiguous member in front of paired initials made them a
credential ('García Márquez, Ed G.J.' -> suffix 'Ed G.J.'), where S2's
company lets only an unambiguous credential speak for a member. Only an
unambiguous suffix word that is not also a title speaks now; the comma
keeps the family, and the pair then ends the given part, read there as
#516 reads 'Doe, John R.T.'.

Two pairs speaking only for each other still make the credential run,
but that flip reports again: 'De La Cruz, M.J. K.L.' loses its given
name, and the silence rationale ("only paired initials are taken for a
name") fails on exactly that input. This also turns the swallowed
honorific in 'García Márquez, Ms G.J. K.L.' from silent to reported.

`listed_flip` is renamed `flip_reports`, since a pair-only flip now
sets it too. rules.md C1, S2 and S3 state the silence as "no listed
word takes part" and give the pair's report its first-word reach;
decisions.md records both choices and the re-measurement.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@derek73 derek73 added the bug label Oct 1, 2026
@derek73 derek73 self-assigned this Oct 1, 2026
@codecov

codecov Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.87%. Comparing base (b98b26e) to head (23f4130).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #567   +/-   ##
=======================================
  Coverage   98.86%   98.87%           
=======================================
  Files          45       45           
  Lines        3959     3985   +26     
=======================================
+ Hits         3914     3940   +26     
  Misses         45       45           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@derek73 derek73 added this to the 2.4 milestone Oct 1, 2026
/simplify round over the #563 changes, behavior-identical: 0 diffs over
21,604 parses (corpus, case-table strings and composed probes under four
policies) against c125f69.

- The speaker test rescanned every word in front of each pair, so
  'John Smith, MD MD ... G.J. G.J. ...' was quadratic (duals x pairs
  _normalize calls). Only the first pair's scan can change the answer;
  it now runs once. A frame-count scaling guard pins the ratio and
  fails on the previous commit.
- The run loop asks LISTED as "no period", the same exact stand-in the
  single-token test uses, instead of a second membership call.
- One `pair_only` flag replaces two conditions sharing a sub-term, and
  `flip_reports` is set once after the run decision, so it implies
  `candidate` everywhere and the report gate drops that conjunct.
- Comments trimmed; the rules.md quotes stay verbatim.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@derek73
derek73 merged commit 0eadede into master Oct 1, 2026
11 checks passed
@derek73
derek73 deleted the fix/issue-563-dotted-initials-after-surname branch October 1, 2026 09:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dotted initials after a two-word surname read as a credential: García Márquez, G.J. has no given name

1 participant