You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
parse("juan garcia III").capitalized() returns the input unchanged: the uppercase III makes the mixed-case test read the whole name as already-cased, so conservative capitalization declines.
Measured: force=True gives Juan Garcia III, and all-lower juan garcia iii capitalizes correctly — only the no-force path on a lower name with a cased suffix fails, which is v1's oldest capitalization xfail (..._KNOWN_FAILURE).
Proposed: suffix tokens (roman numerals, acronyms) don't count as case evidence about the name in R5's already-mixed test. Note: a capitalization fix is invisible to the differential gate (derived view — the #484 question), so the value pins live in the render tests.
Still deferred, and 2.4 records what it now rests on. The case signal from #289 and #516 asks whether the name's own words are written in one case with the judged token included, and that inclusion is load-bearing: JOHN SMITH Ma is mixed because of Ma, which is the surname signal the design wants, and john smith MA is mixed because of MA, which is the credential signal. Excluding the token would make both names one-case and hand the word to the positional rule. So whatever #492 decides about a cased suffix token counting as case evidence for capitalization, the parse-time fact keeps counting it. Recorded at decisions.md#S2 and decisions.md#P3.
Shipped in PR #539 (merged 2026-09-25, 120033b5). R5's one-case gate now reads every token but the suffix-roled ones, so juan garcia III, juan garcia PhD and JUAN GARCIA Jr. repair where every release returned them untouched, and the 2012 xfail is retired. Titles, nicknames and maiden names stay evidence (Dr. juan garcia is left alone). Two decisions beyond the proposal: a suffix written in more than one case is kept as written on the default path (john smith EdD → John Smith EdD, B.Tech. stays; the accepted cost is juan garcia Iii → Iii, and force=True repairs everything), and the parser's own one-case reading in P3/S2 still counts the suffix, so john e jones III gives John e Jones III where john e jones iii gives John E Jones III, a pinned split. Measured over the parent corpus, 17 names were admitted and 12 changed their default-path string; the recipe is under decisions.md#R5. Record: rules.md#R5, decisions.md#R5, release log.
Activity
derek73 commentedon Sep 19, 2026
Still deferred, and 2.4 records what it now rests on. The case signal from #289 and #516 asks whether the name's own words are written in one case with the judged token included, and that inclusion is load-bearing:
JOHN SMITH Mais mixed because ofMa, which is the surname signal the design wants, andjohn smith MAis mixed because ofMA, which is the credential signal. Excluding the token would make both names one-case and hand the word to the positional rule. So whatever #492 decides about a cased suffix token counting as case evidence for capitalization, the parse-time fact keeps counting it. Recorded atdecisions.md#S2anddecisions.md#P3.docs(derek73#533): the rule, the decision and the release note
fix(#459/#492/#478): the toolkit review round
fix(#492/#459/#478): a mixed-case suffix is kept as written, and the …
Merge pull request #539 from derek73/claude/459-492-478-render-case-r…
derek73 commentedon Sep 26, 2026
Shipped in PR #539 (merged 2026-09-25,
120033b5). R5's one-case gate now reads every token but the suffix-roled ones, sojuan garcia III,juan garcia PhDandJUAN GARCIA Jr.repair where every release returned them untouched, and the 2012 xfail is retired. Titles, nicknames and maiden names stay evidence (Dr. juan garciais left alone). Two decisions beyond the proposal: a suffix written in more than one case is kept as written on the default path (john smith EdD→John Smith EdD,B.Tech.stays; the accepted cost isjuan garcia Iii→Iii, andforce=Truerepairs everything), and the parser's own one-case reading in P3/S2 still counts the suffix, sojohn e jones IIIgivesJohn e Jones IIIwherejohn e jones iiigivesJohn E Jones III, a pinned split. Measured over the parent corpus, 17 names were admitted and 12 changed their default-path string; the recipe is underdecisions.md#R5. Record:rules.md#R5,decisions.md#R5, release log.test: triage the v1 xfails — four pinned as decided, four annotated w…
fix(derek73#492): a suffix is no evidence about how the name was cased
test(derek73#459/derek73#492/derek73#478): case repair changes case a…
docs(derek73#459/derek73#492/derek73#478): the decisions, the guides …
fix(derek73#459/derek73#492/derek73#478): the branch review round
refactor(derek73#459/derek73#492/derek73#478): the simplify pass