The v1 xfails get their dispositions: four pinned as decided, four annotated with their issues - #493
Merged
Merged
Conversation
…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>
Codecov Report✅ All modified and coverable lines are covered by tests. 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. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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):Her Majesty Queen Elizabeth(conjunction in an address)E.T. Smith(initials vs conjunction)U.S. District Judge Marc Thomas Treadwell(chained title)juan garcia III(no-force capitalization)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.→ middleIstays — 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 Jr→kingstays 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 Husain→benstays out of particles, as decided in v0.2.5: it collides with the given name Ben (measured:Ahmad Ben Husainreads middleBen— exactly the token a forward-joining particle would take).bennow 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)
Smith, John V→ suffixVbutSmith, John V, Jr.→ middleV;Smith, John PhD Icontinues the run butSmith, John PhD I, Jr.→ middleI; a pure-credential part likeSmith, PSM I, Jr.keeps its run). Five probes measured; no new example lines, so no corpus churn.Dr King Jr→ familyJrtoday, not the suffix S2 predicts;Dr Smith Jrisolates 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-triageentry 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 0at 2.2.0 — nothing parser- or corpus-facing changed).🤖 Generated with Claude Code