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.
parse("juan garcia III").capitalized()returns the input unchanged: the uppercaseIIImakes the mixed-case test read the whole name as already-cased, so conservative capitalization declines.Measured:
force=TruegivesJuan Garcia III, and all-lowerjuan garcia iiicapitalizes 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.