Repository navigation
Split the eight two-signal rules: P8, P9, C13, and S2's periods clause to S3 - #755
Merged
Merged
Conversation
rules/P3 stated two signals: a connective between name words, and a single-letter connective's case against the name's own words. P8 (a single-letter connective against the initial it spells) takes the case contrast: the initial reading, its report and "connects nothing", the marked set, the views, the #383 parity breaks and the declined-marker clause. P3 (connectives) keeps the join, its three-word count, the one-name-word count, the generational connective, the separator and the own-words span both rules ask over. decisions/P8 takes the #267, #383/#479 (with its amendments) and #478 entries; the #397 and #721 entries stay under P3. Every reference that meant the case half is retargeted to P8. No behavior change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rules/P2 and rules/P6 each stated a second signal, and it was the same one: what stands beside a word of both the particle and the suffix vocabulary at a family comma. #573 decided both sites at once. P9 (a particle that is also a suffix word, beside a family comma) takes P2's clause on the part before the comma and P6's third exception, a lone such word inside a run of post-nominals after it, with their examples. P2 keeps the forward chain and P6 the attachment, which cites P9 for its third exception as it cites S6 and S7 for the first two. The #573 entry moves from decisions/P6 to decisions/P9, with cross-references left in P6, P2, S5 and C4. No behavior change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rules/C8 read two signals in the part after a family comma: whether it holds a name word, and a credential opening it. C13 (a credential opening the part after the comma) takes #603's half, the opened run with its strict-mode, one-word-path and title/suffix-dual boundaries and examples. C8 (the listing form's part after the comma) keeps the part of no name word and the part that is nothing but suffix words, and its dual Accepted clause. C1's hub map and Signal line name C13. The #603 entry moves from decisions/C8 to decisions/C13, a cross-reference left behind. C8's citation moves to the reading in _comma.decide that implements it, since its old one quoted C13's text. No behavior change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rules/S2 read two signals: the position of a suffix word, and an ambiguous acronym written with its periods. The periods are a shape, which is the signal rules/S3 (credentials written with interior periods) reads, so the clause, its rationale sentence and its three examples (M.A., M.Eng., Jack Ma.) move there; S2's map names S3 for it. S2's Signal line is now its one position. Putting it in S4 instead, as first proposed, would have given S4's count a second signal of its own. The two code citations that quoted the clause under S2 now quote it under S3, and "S2's period gate" in tests and decisions is S3's. No behavior change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
S10 (the trailing roman numeral) restated T4's condition twice, the one-case letter in front and the lower-case numeral in a mixed-case name being no initial; both now cite T4, and the initial in front is the boundary of S10's own shape. C9 (a one-character suffix word inside a comma part) cites C2 for the further comma that names the suffix. T4 (the bare letter as an initial) keeps both marks of an initial, its period and its case, as one signal, which is how its Rationale frames them. No Signal: line names two signals now, so the split-candidate test no longer asserts the list is non-empty; it holds the recipe to a synthetic rule of each kind instead. rules_budget.json is re-recorded for every rule these splits moved. docs/design/AGENTS.md records that a moved clause goes to the rule whose Signal: line already reads it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- five pointers that meant the case half of P3 now name P8: decisions/P3's own-words "entry above", decisions/R4's #478 entry (twice), decisions/R5's #492 entry, decisions/S10's john i dr. report and test_lexicon.py's e-not-y provenance - decisions/suffix-acronym-collisions' first "S2's period gate" gets the same S3 parenthetical as its second - P3 no longer states the case half of the own-words span: whether a declined marker's case is asked, and the rules that ask the case question over the span, are P8's - C13 cites C8 for the comma that fixes nothing rather than restating its positional-read consequence rules_budget.json re-recorded for P3, P8 and C13. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…commit) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #755 +/- ##
=======================================
Coverage 99.05% 99.05%
=======================================
Files 47 47
Lines 4642 4642
=======================================
Hits 4598 4598
Misses 44 44 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
T4 (the bare letter as an initial) reads a shape, the period after a one-letter word, and a case contrast, a bare letter's case against the name's own words: the second compares the word with the rest of the name and is no shape. The one-signal wording hid that, so T4 lists as a split candidate again, its split left for a later decision. 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>
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.
After #745 gave every rule a
Signal:line, eight rules had a line naming two signals, which marks them as split candidates under docs/design/AGENTS.md's "One rule per piece of evidence". Derek decided each one as recommended. After this PR, T4 is the only split candidate left (grep -l '^ Signal:.* + ' docs/design/rules/*.md).Three new rules
P8 (a single-letter connective against the initial it spells) is split from P3 (connectives). P8 takes the case contrast: the initial reading, its report and "connects nothing", the marked set, the views, the Should
Jose E Maria Santosjoin likeJose e Maria Santosdoes? (the single-letter connective's Latin-capital veto was never adjudicated) #383 parity breaks, the declined-marker clause, and the case half of the own-words span. P3 keeps:decisions/P8 takes the Should a bare 'И' parse as an initial or the conjunction 'and'? (e.g. 'Хосе И Мария Сантос') #267, Should
Jose E Maria Santosjoin likeJose e Maria Santosdoes? (the single-letter connective's Latin-capital veto was never adjudicated) #383/JOSE E MARIA SANTOSreads the conjunctionEas an initial; an all-caps name carries no case signal to read it from #479 and Should a conjunction inside a hyphenated surname keep its lowercase?Ortega-y-Gassetnow capitalizes toOrtega-Y-Gasset#478 entries.P9 (a particle that is also a suffix word, beside a family comma) takes P2's (particles join forward) clause on the part before a family comma and P6's (the trailing orphan particle) third exception. Why does
SMITH VD MA, JOHNread familySMITH MAwithVDas a suffix? #573 decided both. P6 now cites P9 for that exception, the way it cites S6 and S7 for the other two. The Why doesSMITH VD MA, JOHNread familySMITH MAwithVDas a suffix? #573 entry moves from decisions/P6 to decisions/P9.C13 (a credential opening the part after the comma) takes Should a comma part opening with a credential be a suffix comma?
John Smith, PhD Jonesreads familyJohn Smith#603's half of C8 (the listing form's part after the comma). C1's hub map names C13. The Should a comma part opening with a credential be a suffix comma?John Smith, PhD Jonesreads familyJohn Smith#603 entry moves from decisions/C8 to decisions/C13.One clause moved, no new ID
M.A.,M.Eng.andJack Ma.examples, moves to S3 (credentials written with interior periods). The recommendation said S4. It went to S3 because S3's signal is the periods shape. S4's signal is the words-to-spare count, so putting the clause there would have made S4 the next split candidate. docs/design/AGENTS.md now records this check.Kept, re-cited
Other changes
tests/v2/rules_budget.jsonis re-recorded. P3 shrinks from 1026 to 628 words. P8, P9 and C13 are new records. S3 grows by the moved clause.Behavior: no change. Every example line is the same set, and corpus_rules.jsonl is unchanged.
Review: the design-docs-reviewer ran on the branch and again on its fix commit. Every finding was fixed except one, left for Derek: S10 still applies its own words-to-spare count for numerals. It cites S4 for it, per rules/README.md's "S10's count is S4's". The reviewer's other open point, that T4's one-signal line mislabeled its case read, is resolved by restoring T4's two-signal line.
Full suite: 21855 passed. mypy and ruff are clean.
🤖 Generated with Claude Code