Skip to content

The v1 xfails get their dispositions: four pinned as decided, four annotated with their issues - #493

Merged
derek73 merged 1 commit into
masterfrom
claude/xfail-triage
Sep 2, 2026
Merged

The v1 xfails get their dispositions: four pinned as decided, four annotated with their issues#493
derek73 merged 1 commit into
masterfrom
claude/xfail-triage

Conversation

@derek73

@derek73 derek73 commented Sep 2, 2026

Copy link
Copy Markdown
Owner

The eight v1-era expected-failure tests get their dispositions: four retired as deliberate pins of current behavior, four kept as xfails annotated with the issues that now own them. Supersedes #485 (to be closed on merge).

The triage

Kept, annotated (@pytest.mark.xfail(reason="#NNN"), strict mode verified to still fire):

test issue
Her Majesty Queen Elizabeth (conjunction in an address) #489 — a given-name title ending a title run should address by given name
E.T. Smith (initials vs conjunction) #490 — the dotted-single-letters "initials shape" question
U.S. District Judge Marc Thomas Treadwell (chained title) #490 — same signal, second witness
juan garcia III (no-force capitalization) #492 — a cased roman-numeral suffix shouldn't count as case evidence

Retired, pinned (each flipped to a measured pin of current behavior, with v1's aspiration and the rejection grounds in the comment; renamed where the old name stated a falsehood):

  • Maier, Amy I, Jr. → middle I stays — a middle initial is far more common than an ordinal-without-Sr.; the commonality reasoning is the vocabulary-collision criterion's, applied to a shape.
  • The Right Hon. the President of the Queen's Bench Division → a name parser, not a title parser: an all-titles input assumes the last title-word is the name. The report-the-guess follow-up is An input composed entirely of titles should report an ambiguity — "The Right Hon. the President of the Queen's Bench Division" #491.
  • Dr King Jrking stays in TITLES (removing it breaks addressing forms like King Charles), and the comma format (King, Dr Jr — now pinned by its own new test) is the road to the surname reading. TITLES has no ambiguous subset and no AmbiguityKind, so ship/don't-ship are the only expressions available (Should a word that is both a title and a given name report an ambiguity? (Baron Davis → title 'Baron', no given name) #348 is the open third answer).
  • Ahmad ben Husainben stays out of particles, as decided in v0.2.5: it collides with the given name Ben (measured: Ahmad Ben Husain reads middle Ben — exactly the token a forward-joining particle would take). ben now also sits in the particle Excluded block so a future patronymic-particle sweep cannot re-ship it as a bug.

The two rules.md tensions the pins exposed (review-measured, resolved)

  • C1 gained the further-comma qualifier its statement was missing: where an explicit suffix comma has already named the suffix, a single letter ending the given part has no generation left to be and stays a middle initial — both branches, bare or periodded (Smith, John V → suffix V but Smith, John V, Jr. → middle V; Smith, John PhD I continues the run but Smith, John PhD I, Jr. → middle I; a pure-credential part like Smith, PSM I, Jr. keeps its run). Five probes measured; no new example lines, so no corpus churn.
  • S2 gained a DESCRIPTIVE note: where a title chain consumes every word but one, H1's one-word reading claims the leftover before S2's trailing-suffix reading reaches it (Dr King Jr → family Jr today, not the suffix S2 predicts; Dr Smith Jr isolates the cause — S2 holds wherever the chain doesn't eat two words). Only the vocabulary half is decided; the leftover reading is recorded as today's, and a change toward S2's prediction is an improvement, not a regression.

A dated decisions.md#v1-xfail-triage entry carries all eight dispositions, the grounds, and the #485 supersession.

Verification

6414 passed, 156 skipped, 5 xfailed (was 9 — the four annotated plus one unrelated); no XPASS, so every pinned expectation is measured, not guessed. Doc-guard suites green; ruff/mypy clean; the differential gate untouched (1120 names; intentional 0; unexplained 0; radar 0 at 2.2.0 — nothing parser- or corpus-facing changed).

🤖 Generated with Claude Code

…ith their issues

Eight v1-era @pytest.mark.xfail tests survived the bank reconciliation, each
an aspiration nobody had judged since. xfail_strict makes them live claims
that 2.0 does not do the thing, but a bare marker never says whether the
thing is wanted. Triaged 2026-09-01:

| test                                            | disposition   |
|-------------------------------------------------|---------------|
| conjunctions::..._address_with_a_first_name_title | xfail -> #489 |
| conjunctions::test_two_initials_conflict_...      | xfail -> #490 |
| titles::test_chained_title_first_name_title_...   | xfail -> #490 |
| capitalization::..._already_capitalized_III_...   | xfail -> #492 |
| suffixes::..._explicit_suffix_comma_...           | pinned        |
| suffixes::test_king                               | pinned        |
| titles::test_title_multiple_titles_with_apostro.. | pinned        |
| titles::test_ben_as_conjunction                   | pinned        |

Grounds for the four not-fixes, each test rewritten to pin the measured
parse with the rejected aspiration recorded beside it:

- "Maier, Amy I, Jr." reads middle 'I', suffix 'Jr.'. A middle initial I is
  far more common than an ordinal I borne without a Sr./Jr.-style companion.
  decisions.md#vocabulary-collisions' commonality reasoning, applied to a
  shape rather than a word.
- "Dr King Jr" reads title 'Dr King', family 'Jr'. 'king' stays in TITLES for
  the addressing forms; the comma format "King, Dr Jr" is the road to the
  surname reading and is now pinned alongside.
- "Ahmad ben Husain" reads middle 'ben'. Decided in v0.2.5; 'ben' collides
  with the given name Ben in the position a particle claim would act on.
- The all-titles input takes its last title-word as the family. A name parser,
  not a title parser; accepted convention. The silent guess is #491.

Renames where the old name now stated a falsehood: the roman-numeral test
lost _known_limitation, test_ben_as_conjunction became test_ben_is_not_a_
particle. The capitalization test keeps _KNOWN_FAILURE — still true, and
redundant rather than misleading beside the annotated reason.

Pinning current behavior exposed two places where rules.md predicts something
else. Both are named here rather than left for a future reader to rediscover
as a regression; neither changes parser behavior.

C1 is AMENDED. Its one-character clause said a bare single letter behind a
name word is the generation, full stop — which predicts the very suffix
"I, Jr." this triage rejects. The discriminator the parser has always applied
and C1 omitted is the further comma: "Maier, Amy I" reads suffix 'I' while
"Maier, Amy I, Jr." reads middle 'I', and "Smith, John V" against
"Smith, John V, Jr." is the same pair on a name C1 already exemplifies. All
four measured. The rule was incomplete, not the behavior — a rules.md defect,
not a parser one, the call this file already made for 'Donald mc'. The
qualifier is normative prose with no example line of its own; C1's new
Accepted block records why and names the bank pair as its witness, so the
rules corpus is unchanged (1120 names, gate parity at 2.2.0).

S2 gets a DESCRIPTIVE note, not an amendment. S2 plus its Accepted clause
predicts "Dr King Jr" -> suffix 'Jr', family ''; it reads family 'Jr', suffix
'' because 'king' is title vocabulary and H1 then claims the one remaining
word. "Dr Smith Jr" isolates the cause, reading family 'Smith', suffix 'Jr'
as stated. Only the vocabulary half is Derek's decision; the leftover reading
is recorded as today's, not endorsed, and a change toward S2's prediction is
an improvement that updates the pin rather than a regression — the test says
so. S2 now also declares interacts: H1, H2, C1, which H1 already declared
back.

'ben' additionally lands in the particle Excluded block, where a wordlist
sweep will meet it; a keep-out living only in a triage entry is one the next
patronymic-particle sweep never reads.

#485 is superseded: it proposed prefixing corpus labels with xfail: so radar
diffs on these names read as known-bad parses improving, but after the triage
the v1 marker no longer tracks the disposition — "Dr King Jr" is a pin, so a
diff on it means a decided reading moved. Left open for the controller to
close at merge.

Recorded at docs/design/decisions.md#v1-xfail-triage with the recompute.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@derek73 derek73 added this to the v2.3 milestone Sep 2, 2026
@derek73 derek73 added docs Documentation fixes and updates tests labels Sep 2, 2026
@derek73 derek73 self-assigned this Sep 2, 2026
@codecov

codecov Bot commented Sep 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.66%. Comparing base (6c2033c) to head (d02dc41).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #493   +/-   ##
=======================================
  Coverage   98.66%   98.66%           
=======================================
  Files          45       45           
  Lines        3218     3218           
=======================================
  Hits         3175     3175           
  Misses         43       43           

☔ 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 merged commit 7dbb9bf into master Sep 2, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation fixes and updates tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant