Skip to content

Ask the maiden take's numeral candidates the one-case fact (#731) - #732

Merged
derek73 merged 3 commits into
masterfrom
fix/issue-731-maiden-shape-numeral
Oct 19, 2026
Merged

derek73 merged 3 commits into
masterfrom
fix/issue-731-maiden-shape-numeral

Conversation

@derek73

@derek73 derek73 commented Oct 19, 2026

Copy link
Copy Markdown
Owner

Closes #731.

M2's maiden take builds a clause-free view of the name from the clause's trailing candidates and lets tail_reading decide what the run takes. Its candidate test (_pieces.trailing_candidates) asked the numeral fork's shape test with no one-case fact, meaning to admit more than the fork as a safe superset. But a candidate is also cut out of the view, which changes the word in front of the numeral there:

input before after
john smith nee x x suffix x, maiden x, reported maiden x x, as JOHN SMITH NEE X X
john smith nee j x suffix x, maiden j, reported maiden j x, as JOHN SMITH NEE J X

Change. trailing_candidates takes a one-case fact, and the take passes the whole name's (one_case and is_one_case(<every token>)). The word in front of a candidate is always a clause word, which rules/T4 reads by the whole name's case. The first version passed the own-words fact, and the design-docs review found it moved MARY SMITH NEE j x (mixed case) to maiden j x; ee0962e fixes that.

Versions. 2.2.0 through 2.4.2 gave the old lowercase reading; 2.0.0 and 2.1.0 gave the one this restores. The #723 release bullet links #731.

Tests.

  • The one-case invariant's grid gains {a} {b} nee {n} {n} and {a} {b} nee j {n}: ad486f6 disagreed on 36 of 4,752 pairs, this branch on none (new control: 36).
  • A new invariant, test_a_clause_letter_beside_capitals_reads_as_beside_title_case, pairs own words in capitals with Title case, the clause letters lowercase in both: 0 field differences, 72 with the first version's fact (its control).
  • Two case rows. No corpus name moved; the snapshot gains only the new T4 example.

A gap left open, on master too. The view itself still reads by the own words' case, so a lowercase clause numeral behind own words in capitals counts as a capital would. With two own words only the report differs (JOHN SMITH nee x x reports suffix-or-name, John Smith nee x x does not; 108 pairs). With one own word the fields differ too (SMITH NEE j x maiden j x, Smith Nee j x suffix x). Passing the whole name's fact to the view closes both, but it also moves S6's credential lean, which P3 asks of the own words: test_a_maiden_clause_does_not_change_how_a_trailing_word_reads fails on 270 of 20,412 pairs (J. nee Smith BA would read the credential where J. BA reads a name). Closing it needs the peel to take the numeral's case fact apart from the lean's. That is declined here with this evidence and recorded in decisions/T4; the new invariant's grid states it holds two own words only.

Docs. rules/T4 (statement clause, example, implemented:/interacts:), rules/M2 names S10 among its trailing rules, decisions/T4 and decisions/M2 entries (the candidate test's one stated exception to its superset contract), and the trailing_candidates and is_trailing_numeral_suffix docstrings.

Reviews. The design-docs review found the mixed-case regression, the superset wording, the version dates and M2's missing S10. The code review confirmed the fix (8,100 lowercase/capital moves on a ~1M-parse grid, no mixed-case moves, superset check holding with lowercase input) and found the one-word-head field gap and two stale docstrings. All are addressed in ee0962e and 5f989e2.

🤖 Generated with Claude Code

derek73 and others added 3 commits October 18, 2026 20:01
M2's take builds a clause-free view from the clause's trailing
candidates, and its candidate test asked the numeral fork's shape test
with no one-case fact, as a superset. But a candidate is also cut out
of the view, which changes the word in front of the numeral: in 'john
smith nee x x' the lowercase first 'x' is not initial-shaped, so the
second became a candidate and the view read it behind 'smith' as the
generation (suffix 'x', maiden 'x'), where 'JOHN SMITH NEE X X' keeps
maiden 'X X'. trailing_candidates now takes the one-case fact; 'john
smith nee j x' moves the same way. The superset check still passes.

The one-case grid gains the two clause shapes: ad486f6 disagreed on
36 of 4,752 pairs, this tree on none; a fourth recorded control holds
the 36. 2.3.0 through 2.4.2 gave the old lowercase reading, so #723's
release bullet links this too. No corpus name moved. T4 says it, with
an example; decisions/T4 records it.

Closes #731

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…iew)

The first version passed the own-words fact, but the word in front of a
candidate numeral is always a clause word, which T4 reads by the whole
name's case: 'MARY SMITH NEE j x' (mixed case) moved to maiden 'j x'
where every release and 'Mary Smith nee j x' read suffix 'x', maiden
'j'. The take now passes the whole name's fact. A new invariant pairs
own words in capitals with Title case, clause letters lowercase in
both, over fields: 0 now, 72 with the first version's fact (its
control); reports still differ on 108 pairs, on master too, since S10's
case-settles rule asks the own words there -- recorded, not decided.

Docs: trailing_candidates states its one exception to the superset;
M2 names S10 among the trailing rules; decisions/M2 and decisions/T4
record it; version claims corrected (2.2.0 through 2.4.2 read the
lowercase spelling as the generation, 2.0 and 2.1 as now).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… review)

The code review found the gap recorded as report-only also moves
fields with one own name word in front ('SMITH NEE j x' against 'Smith
Nee j x'), on master too. Passing the whole name's fact to the take's
view closes it but moves S6's credential lean, which P3 asks of the
own words: test_a_maiden_clause_does_not_change_how_a_trailing_word_reads
fails on 270 of 20,412 pairs. Declined with that evidence; the test
comment and decisions/T4 now state the grid's two-own-word reach and
the open gap, and two docstrings no longer say the candidate test asks
"as the fork does".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@derek73 derek73 added the bug label Oct 19, 2026
@derek73 derek73 self-assigned this Oct 19, 2026
@codecov

codecov Bot commented Oct 19, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.04%. Comparing base (ad486f6) to head (5f989e2).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #732   +/-   ##
=======================================
  Coverage   99.04%   99.04%           
=======================================
  Files          46       46           
  Lines        4588     4589    +1     
=======================================
+ Hits         4544     4545    +1     
  Misses         44       44           

☔ 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 6008c8c into master Oct 19, 2026
12 checks passed
@derek73
derek73 deleted the fix/issue-731-maiden-shape-numeral branch October 19, 2026 03:36
derek73 added a commit that referenced this pull request Oct 19, 2026
Derek: rules/T4 and maiden names do not really interact, because
nobody writes a maiden marker followed by an initial. #731 (PR #732,
6008c8c) bought 'john smith nee x x' and 'john smith nee j x' their
capitals' reading with a case argument on trailing_candidates, a
whole-name case test in the take, an exception to the candidates'
superset contract, two grid shapes and a second invariant -- and the
gap it left would need the peel to carry two case facts. Reverted.

The readings go back to 2.2.0 through 2.4.2's ('john smith nee x x'
suffix 'x', maiden 'x'), stated as an Accepted clause of T4 with both
spellings as examples. Kept: M2 naming S10 among its trailing rules,
true before #731. decisions/T4 and decisions/M2 keep their #731
entries and gain superseding ones. Code and tests match ad486f6.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
derek73 added a commit that referenced this pull request Oct 19, 2026
…s.md, compact shipped measurements (#759) (#764)

* Archive decisions/differential-ledger to tombstones and the retirement entry (#759)

The ledgers #664 retired took 33,103 words across eleven arcs, every
one superseded by the snapshot. Each arc is cut to a tombstone under
decisions/README's rule 3 (date, issue, verdict, SUPERSEDED by
2026-10-13 #664); the retirement entry stands in full. The three
passages other entries cite stay as one line each: the 'Donald mc'
decline (decisions/suffix-acronym-collisions, decisions/v1-xfail-triage),
the initials view (decisions/R4, the 2.3.0 release log) and the
Policy-annotation Declined entry (decisions/3-0-reevaluations). The
full text is pointed to at fe85bb3.

mechanisms.md#RECORDED-ROSTERS said the entry keeps the ledger
rosters' measurements; it now points to git through it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Tidy mechanisms.md: one paragraph per label, contracts without case history (#759)

Every entry's template labels (Problem shape, Contract statement, How
it works, Lives in, Reach for it when) now open their own paragraph.
That is load-bearing and the preamble says so: test_doc_citations
reads a Contract statement to the end of its paragraph, so in the
one-paragraph layout every sentence of an entry was quotable.

ONE-PREDICATE-PER-QUESTION (1,856 words) and RENDER-HONORS-THE-PARSE
(2,771) are cut to their contract, a short How it works and pointers.
The two sentences code comments quote from outside the old contract
proper ("where the reader comes AFTER the decider, ..." in _group.py,
"a token the parse never saw ..." in _render.py) move into the
Contract statement paragraphs, so no comment in nameparser/ changes.
The instance census and the case history are in git at fe85bb3 and in
the decisions entries the rosters now name; the one piece no decisions
entry held, the facade's spliced-field divergence under a caller's
conjunction (#528, measured 2026-09-13 and re-run on this tree), moves
to decisions/R3 as a dated entry.

LEDGER-RULE-SEPARATION and CROSS-RULE-OUTCOME-PINS, both already
"Retired with the ledgers" stubs living in nothing, are removed; the
only references left are prose names in decisions/differential-ledger.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Compact shipped measurements and superseded passages in the largest decisions files (#759)

A sweep under decisions/README's rule 3 over the 22 largest files after
differential-ledger, every change checked shipped in v2.5.0 or earlier
(the unshipped PRs are #737, #741-#746, #755, #756). Three triggers
only: a whole entry headed SUPERSEDED by, cut to a tombstone; a
superseded passage inside a live entry, cut to its decision and what
replaced it; a measurement paragraph of a shipped change (what moves,
cost, blast radius, gate and grid results), cut to one line naming
population, counts, baseline and PR. Verdicts, reasons, Accepted costs,
Declined/Excluded/Open blocks, measurements of declined or unshipped
changes, harvested framing lines, and anything quoted or pointed at
from elsewhere stay. RECOMPUTE recipes a release-log bullet rests on
stay; others fold into the one line with their PR.

The two #731 entries (decisions/M2, decisions/T4), reverted by PR #733
the same day, gain the SUPERSEDED by marker rule 1 asks for and become
tombstones.

About 13,400 words come out across the 22 files (M2 14,882 -> 12,190,
R4 13,819 -> 12,877, the rest listed in the PR).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Fix the design-docs review's findings on the #759 trim

- decisions/T4: the #731 tombstone had cut a gap and a declined option
  that predate #731 (ad486f6) and still stand; both are restored
  verbatim under the tombstone, re-measured on this tree.
- decisions/differential-ledger: the tombstones keep the tooling and
  dormancy arcs' harvested framing lines (rule 3: "a tombstone
  included"); the `_check_tree` and DEFAULT_BASELINE Declined entries,
  about code and process that survive the ledgers, stand as written;
  the initials-view tombstone says the 2.3.0 release bullet's evidence
  is at fe85bb3.
- decisions/H5: the population line no longer calls `毛 泽东 Dr.` a
  rules example; the #623 line keeps the corpus-and-case-text null
  result and the 500-parse characterization; three bold heads keep
  their closing period.
- decisions/S2: the #614 line no longer classifies the stress grid's
  8,472 movers, which were not classified; it gives the 12-parse slice
  that was.
- decisions/S6: the frame totals decisions/S9 says "hold exactly" are
  back; the verification-round head keeps "AND ITS RECIPE".
- decisions/R3: the facade spliced-field divergence moved from
  mechanisms.md is a continuation of the 2026-09-13 #528 entry rather
  than a second entry of that date, so the existing pointers to "the
  2026-09-13 #528 bullet" resolve to one entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Fix the second review's findings; record the compaction traps in rule 3 (#759)

- decisions/differential-ledger: the initials-view tombstone gave the
  cluster sizes as 19 / 66 / 11 / 2, which is cluster (iii) split by
  vocabulary; the three clusters are 27 / 14 / 98.
- decisions/T4: the restored gap paragraph was written under #731 and
  names "the committed grid", which the revert deleted; the lead now
  says so, points at PR #732, and scopes the re-measurement (the 108
  and the readings hold on a rebuild; the 270 was not re-run).
- decisions/H5: the #623 frames line said frames move "only" where a
  part holds a particle; the names without one moved too, and pay less.
- decisions/README rule 3 gains the two traps the reviews found, so
  the next compaction meets them: a tombstone keeps what the entry
  recorded about the state before its change, and a one-line
  replacement keeps each count's own classification.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Scope T4's declined-option claim; fold the tombstone trap into rule 3's definition (#759)

Third review round, on a4fed35:
- decisions/T4: the lead scoped only the 270 as un-re-run; the
  paragraph's "closes both (0 field and 0 report differences)" is the
  same #731-era measurement. An approximation of the option re-run
  2026-10-19 closes the fields but leaves 27 of 396 rebuilt pairs
  differing in their reports, so the lead now says the claim is
  #731's, unconfirmed since.
- decisions/README rule 3: the new trap sentence changed what a
  tombstone keeps without amending the definition two sentences
  earlier, which still read as a complete list. The definition now
  says it, and the trap sentence keeps only the one-line-replacement
  half.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Should john smith nee x x read like JOHN SMITH NEE X X? A shape-only numeral in a maiden clause

1 participant