Skip to content

A capitalized roman-numeral suffix shouldn't stop no-force capitalization — "juan garcia III" stays lowercase #492

Description

@derek73

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.

Activity

  1. self-assigned this
    on Sep 2, 2026
  2. added this to the 2.4 milestone on Sep 9, 2026
  3. derek73 commented on Sep 19, 2026

    @derek73
    OwnerAuthor

    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.

  4. added 4 commits that reference this issue on Sep 22, 2026
  5. derek73 commented on Sep 26, 2026

    @derek73
    OwnerAuthor

    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.

  6. added 6 commits that reference this issue on Oct 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions