Repository navigation
Standing blocks for the gate files S3, S4, S6, S10, H3 and P5 (#762) - #795
Merged
Merged
Conversation
The gates phase 2 of the vocabulary model (#752) will re-read: each file now opens with what is in force and the entry that decided it, and leaves the exempt list (88 -> 82). Writing them found four entries whose heads did not say a later decision had replaced part of them, now marked under the README's edit kind 1: S6's accepted `abdul Smith Jr Ma` (reversed by S7's #544), S4's `Doe, Jane nee Smith MA` maiden reading (by M2's #601), P5's view comparison (by #614), and S10's one-case `v` (by #721). The README's Standing bullet now says to look for those first, across the folder, naming the cases #776 and this batch found. S6 holds two entries dated 2026-09-14 and two dated 2026-09-18 with no issue, which a date-only pointer could not tell apart; a pointer may now carry the words that open its entry's head (`— 2026-09-14 (Derek)`), and a bare-date head never matches a qualified pointer. New rows pin both; the qualified ones fail on the previous checker. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The checker let an issue pointer name several entries of one date and issue, and two S10 lines landed on the wrong sibling (#718's report entry for its comma review, #721's for its PR review) with nothing failing. A pointer now resolves to exactly one entry: where several share its date and issue it goes on with the words the entry's head continues with (`— 2026-10-18 #718 review`), a bare pointer names the entry whose head ends there, and one still naming entries with different heads is a finding. A parenthesized supersession note in a head is not read, so marking an entry does not break its pointers. P8's #383 lines were ambiguous among three entries and now name `#383 + #479` or `#383/#479`. A test pins each target, since a pointer landing on a sibling passes every finding. S4's maiden line cited a family-comma example #601 had taken out of the clause; it cites the comma-less one, and the head marker names both things #601 superseded there. P5's three family-comma and name-word clauses come from #425 (PR #426), whose paragraphs #614's bullet was inserted into on 2026-10-07; the line points there, the marker names the #369 application #614 also superseded, and an edit kind 2 note says where the paragraphs belong. S10 marks its two in-file reversals, S6 its marker issue-first and its helper's callers without a short list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The second review found two P8 entries with the same head words (`2026-09-13 #383/#479`), so each Standing line pointing there landed on both and the checker passed it, a row having blessed that. Where heads are the same words, the pointer now goes on with the words its entry's text opens with (`— 2026-09-13 #383/#479, AMENDS`), and a pointer still naming more than one entry is ambiguous, twins included. The target test pins both twins; the unqualified row fails on the previous checker. Also: S10's #721 PR-review entry marks the mechanism #722 replaced, and S6's helper sentence no longer says only later stages call it (segment runs before classify). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Python 3.13 deprecated the positional form, and CI runs with DeprecationWarning as an error, so the three newest build jobs failed on the pointer resolver while 3.11 and 3.12 passed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 #795 +/- ##
=======================================
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:
|
Three reviewers on #795. Pointer resolution: - words that continue no candidate's head are now a finding where candidates share a date and issue, so a typo (`#718 reveiw`) no longer falls back to the bare entry in silence; - the longest head the words continue wins, so an entry whose head another's extends (`review`, `review round`) can be named; - a head's words are matched against the whole rest of the line, so a period inside them (`v2.4`) no longer cuts them, and a date inside them is part of the pick rather than a second pointer; - an issue is the pointer's only when no comma or parenthesis stands between it and the date, so prose after a date-only pointer (`— 2026-09-24, see #500`) is not read as its issue; - `_clean` drops a supersession note in any case, and a parenthesis never closed is text. The 68 real pointers resolve exactly as before (compared against the previous resolver). New rows fail on the previous commit for the new behavior; the reviewers' mutation rows (twins differing by a note, "opens with", a trailing space, the bare-sibling pins) pass there and kill the mutants they were written for. Blocks: H3's #316 entry marks the `Dr Smith V` reading S10's #718 reversed, missed when the block was written; H3's numeral example shows its title; S10's report line also points at #718's PR review; S4 says "left as it is" as its entry does. README: the pointer sentence states the new behavior, #776's two cases are attributed to writing and review, and the batch's count is dated and includes H3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The re-review found the fix commit narrowing what it widened: limiting the date-to-issue window to 20 characters with no comma or parenthesis stopped a pointer copied whole from its head (`2026-09-19 (Derek), #533`) from reading its issue, and where a bare sibling shared the date it resolved to that sibling in silence. The 40-character window is back; an issue written in prose right after a date-only pointer is again read as the pointer's and fails loudly, which the module comment now says. Every head in the files with Standing blocks, copied whole, resolves to its own entry but P8's twins, which fail as ambiguous. The words after a pointer now end at the next pointer's date as well as at `.` or `;`, so `— 2026-10-17 #718, 2026-10-18 #721` reads both; a Not-standing line's unmatched words are reported as such rather than as "no entry"; the docstring lists the unmatched-words finding, and the README says prose after a shared-date pointer goes after a `.` or `;`. The real pointers number 70, not the 68 the previous message gave; all resolve as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The re-review found two shapes where a date inside the words a pointer continues its entry's head with was still read as a second pointer: with one candidate, where resolution returned before reading any words (S4's head copied whole, `2026-09-14 (Derek), scope corrected 2026-09-18`, also cited S4's separate 2026-09-18 entry), and with the words cut short at that date, new in the previous commit. The words a resolved pointer read are now its common prefix with the named entry's head continuation, in every branch. Two rows, whose inner dates name no entry so that a stray second pointer fails, fail on the previous commit. The 64 real lines resolve as before, and every head copied whole now resolves to its own entry except the two pairs of twins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A date-only pointer joined by a comma to a pointer with an issue (`— 2026-09-24, 2026-10-23 #741`) read that issue as its own, the window between a date and its issue letting a second date through. The window now stops at another date, as it stops at `—`, `.` and `;`. The new row fails on the previous commit; the real lines resolve as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…3.15 The 3.15 build jobs failed on 2a26d17: os.path.commonprefix warns there, and warnings are errors. The trap is the one AGENTS.md's Gotcha added in this PR records, and 2a26d17 was not run on 3.15 before it was pushed. The full suite now passes on 3.15 and 3.11. 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.
Part of #762, the first batch. These are the gates that phase 2 of the vocabulary model (#752) will re-read: S3 (credentials with interior periods), S4 (the ambiguous acronym needs words to spare), S6 (the case signal at the suffix slot), S10 (the trailing roman numeral), H3 (the title run's floor) and P5 (bound given names). Each file now opens with what is in force and the entry that decided it, and leaves the exempt list (88 → 82). Landing them before #752 starts gives its spec the current answer per gate, and keeps the two efforts out of each other's files.
What changes
abdul Smith Jr Ma, reversed by S7's Should a credential run after a comma keep its comma when the last word is an ambiguous acronym?John Smith, PhD MEngreads firstPhD, lastJohn Smith#544;abdul Smith Jr Maloses the family name — P5's reserve does not mirror S2's bare-acronym fork #425 view comparison and itsSheik abdul Maapplication of theSheik abdul salamsplits the bound given name thatabdul salam ahmedjoins #369 precedent, superseded by Rethink the credential-run rule (S2): read a name's trailing run once, over name units, and bind it before any join #614;john vread V as the family name, asJOHN Vandjohn xdo? #721 and Read a one-case one-letter numeral as its capital does (#721) #722.abdul Smith Jr Maloses the family name — P5's reserve does not mirror S2's bare-acronym fork #425 entry (PR refactor(group): one trailing peel for assign and the bound-given reserve (#425) #426); Rethink the credential-run rule (S2): read a name's trailing run once, over name units, and bind it before any join #614's bullet was inserted between them on 2026-10-07. The note says so and moves no text.— 2026-10-18 #718 review,— 2026-09-14 (Derek)).— 2026-09-13 #383/#479, AMENDS).Review
Dr Smith V, reversed by S10's Should "John V" and "Malcolm X" read V and X as the family name rather than a generational suffix? #718), missed when the block was written;review,review round) being unreachable;Found, not fixed
Log claims that went stale with no entry saying so. They're in dated entries rather than Standing lines, so they're left for whoever revisits each file:
Smith V, Maunder strict mode now reads family 'V', suffix 'Ma'.Abd van der Berg née Jonesreports no family name — the bound-given join counts words the maiden name takes away #411 entry:Berg, abd née Jonesnow reads given 'abd'.SMITH VD MA, JOHNread familySMITH MAwithVDas a suffix? #573 entry:DOE, JANE PHD VD PROF. MA, noted in Require a Standing block in new decisions files, and backfill the five split out on 2026-10-19 #776.Test plan
uv run pytest: 22,238 passed, 123 skipped, 3 xfailed, on 3.11 and on 3.15. CI caught two stdlib deprecations a 3.11 run cannot see: a positionalre.splitmaxsplit (3.13) andos.path.commonprefix(3.15). The trap is now in AGENTS.md's Gotchasuv run mypy,uv run ruff check🤖 Generated with Claude Code