Repository navigation
Split rules/C1 and decisions/C1 into one rule per piece of evidence - #734
Merged
Merged
Conversation
…728) rules/C1 held ten rules. C1 keeps the decision itself (the word count, the lenient/strict knob and the CJK-honorific Accepted clause) and a one-line map of the rest; C3-C11 take the counting of the words before the comma, the ambiguous credential class, paired initials, the all-caps contrast, the postnominal part read before any join, the listing form's part after the comma, the one-character suffix word, the declared delimiter, and what the decision reports. Every example line and Accepted clause moved to the rule it witnesses: the 103 example lines are the same set and corpus_rules.jsonl rebuilds byte-identical. Two lines gained a `· boundary` mark and C7 a no-boundary: reason, so each new rule carries one. No behavior change. decisions/C1 is split by the rule each entry decided. The #429, #436/#437 and #511 entries, which decide R1's entry pass, move to a new decisions/R1, and R1's history points there. The WHAT MOVES, COST, BLAST RADIUS, VIEWS and RE-PINNED paragraphs are cut to one line each (population, counts, baseline, PR), and superseded passages (#562, and the "segment decides" wording in #575 and #603) to their decision and what replaced it. #611 stays under C1, as the issue asks. Every rules/C1, decisions/C1 and bare C1 reference in code, tests, cases.py notes, other rules, decisions, mechanisms.md, AGENTS.md and the release log is retargeted by what it meant. Three new quoted citations (C3 and C7 in _comma.py, C9 in _assign.py) give those rules an implemented: list the citation check holds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A split note's "means the rule as it then stood" holds only for pointers to the whole rule, and a split's new Rationales and boundary marks are normative text no guard reads. Both were found by the design-docs review of the C1 split. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- C10's boundary is the Accepted clause's own input under the dash policy; the unannotated Steven Hardman line moves to C8, which it witnesses - C7's no-boundary reason names P5's example, the only one that parses a joined listing-form given part - C3's and C4's Rationales no longer overclaim (a connective surname counts its words; paired initials are the count's exception) - 'John Smith, PhD Jones' reporting moves from C8 to C11 - S9, S6 and C8's interacts: name the pieces they lean on - moved decisions pointers that meant a piece now elsewhere name it, as do five older pointers in S6, S4, P3, v1-xfail-triage and cases.py - the condensed #603 line keeps the one non-hand-read mover; the collapsed #575, #430 and #613 lines keep the clauses still in force - decisions/C4's entries are back in date order Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # docs/design/rules/M2-maiden-marker-rule.md
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #734 +/- ##
=======================================
Coverage 99.04% 99.04%
=======================================
Files 46 46
Lines 4589 4589
=======================================
Hits 4545 4545
Misses 44 44 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
- cases.py: a note read "C11's exception" where it meant C11's report (as assign's twin comment already says); a note credited C1 for the all-suffix part C8 reads; the C10 note names its maiden-marker Accepted entry - _comma.py and test_properties.py name C10's core-is-a-word Accepted entry, since C10 has two - _group.py, test_group.py, _types.py and two case notes name C8 or C11 beside C1/C4/C5 where those state the clause - decisions/S9, S7 and suffix-acronym-collisions: pointers to the #544 run, the dual sentence and the all-caps examples name C4, C5 and C6 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Closes #728.
rules/C1 (the suffix-comma decision) had grown to 352 lines holding ten rules, each with its own evidence. This splits it the way #716 split S2. There is no behavior change: the 103 example lines all carry over (plus one policy-annotated line on an existing name),
corpus_rules.jsonlrebuilds byte-identical, and the snapshot matches.G.J.R.Accepted clause)Ms.Accepted clause)C2 keeps its ID, so the new rules take C3–C11. Each new rule has a short Rationale drawn from its statement. So that every rule carries a boundary, C11's
John Smith, PhD DO DO(reporting nothing) gained a· boundarymark. C10's boundary is its Accepted clause's own input run under the dash policy, a new example line on an existing corpus name. C7 declaresno-boundary:, pointing at P5'sSalam, abd Allah.decisions/
García Márquez, G.J.has no given name #563), where its decision has always lived.Parser.revise(name, suffix=name.suffix)be the identity? (John Smith MD PhDgivesMD PhD, and revising with that string givesMD, PhDback) #511 entries decide R1's entry pass (one comma segment is one suffix entry), not the comma decision. R1'shistory:now points at them.Smith, John, Puig - i Solerkeeps the-in the suffix #549, Why doesDe La Cruz, Edlose its given name? #575, Should a comma part opening with a credential be a suffix comma?John Smith, PhD Jonesreads familyJohn Smith#603, Rethink the suffix-comma rule (C1): decide the comma's structure once, after the words are tagged #613 and ShouldJohn Smith, Jr., van der Berg Prof.read title 'Prof.' asJohn Smith, Jr., Prof.does? #636. The decisions, Declined and Accepted clauses, and the moved readings stay.John Smith, PhD DO DOread given 'PhD' and family 'DO DO John Smith'? #562 entry (replaced by Rethink the suffix-comma rule (C1): decide the comma's structure once, after the words are tagged #613), the "segment decides" sentence in Should a comma part opening with a credential be a suffix comma?John Smith, PhD Jonesreads familyJohn Smith#603, Why doesDe La Cruz, Edlose its given name? #575's "segment runs before classify" paragraph, and parse("Smith, MD PhD").suffix returns "MD, PhD" — a comma the input never had #429's "Left alone" and ledger paragraphs.wc -wat HEAD): 17,548 → 15,289 across the eleven files, decisions/R1 holding 3,732 of them.Retargeting
Every
rules/C1,decisions/C1and bareC1reference was retargeted by what it meant. That covers code and test comments,tests/v2/cases.pynotes, other rules' prose andinteracts:lines, other decisions entries, mechanisms.md, AGENTS.md and two release-log pointers (nowR1). References to the decision as a whole stay on C1. Three new quoted citations give C3, C7 and C9 animplemented:list the citation check holds: C3 and C7 in_comma.py, C9 in_assign.py._RETIRED_EXCERPTS' C1 row now names C7, where that text went. One case note,bare_ambiguous_acronym(John Ed), credited C1 for a no-comma reading. It now cites S6, the rule that states it.Open question (for Derek)
#611's entry spans C1, S2 and P6, and it stays in decisions/C1 for now. Should it stay there, or move to mechanisms.md's field notes?
Verification
john smith nee x xread likeJOHN SMITH NEE X X? A shape-only numeral in a maiden clause #731 and its revert Revert #731's maiden-clause numeral fix; accept the shape in T4 #733). ruff and mypy are clean.tools/differential/build_rules_corpus.pyrebuildscorpus_rules.jsonlwith no diff.interacts:and pointer touch-ups.🤖 Generated with Claude Code