You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A meta-observation from the 2026-09-13 batch (#1420, #1406, #1422, #1421, #1407, #1410), worth recording because the pattern is about how these issues
get found and filed, not about any one fix.
Five of the six fixes were correct in the language they targeted and
unswept to at least one sibling that shares the defect. Each issue carried
a sibling-sweep section; each was either absent, incomplete, or — twice —
actively wrong.
Plus three found within the batch and fixed there, all of the same class:
C#'s catch_filter_clause (#1422's body named only when_clause), C#'s bare is type test (the Kotlin half landed in the same branch and the C# half did
not), and Kotlin's infix and / or / xor.
What is actually going wrong
.claude/rules/grammar-dispatch.md already closes with "when you fix one
language, sweep the rest", and every issue body has a sibling-sweep heading.
The rule is being followed as prose and not as a procedure:
Two fixes in one batch can share a defect and not see each other. The
C# and Kotlin halves of the bare-type-test gap landed in the same branch,
four commits apart, and only a whole-branch read connected them.
Suggested changes
Require a paste-able measurement, not a claim. A sibling-sweep section
should carry the command and its output per language, the way the
measurement tables in these issue bodies already do. A row without numbers
should read as un-swept.
Sweep the predicate's whole membership, not the construct. When a
terminal-kind set or dispatch arm changes, enumerate what else can occupy
that slot in each language sharing the set — bca dump on a fixture per
candidate production, not a grep for the construct.
Make the batch-level cross-check explicit. The whole-branch review found
two of the three within-batch gaps; per-issue review found neither. That
step already exists in batch-fix; this is evidence it should not be
skipped and should specifically look for two fixes that share a predicate.
Re-verify a quoted sweep before building on it, the same way AGENTS.md already requires for a deferred issue's premises. The failure
mode is identical: the claim ages, and nothing about reading it says so.
Summary
A meta-observation from the 2026-09-13 batch (#1420, #1406, #1422, #1421,
#1407, #1410), worth recording because the pattern is about how these issues
get found and filed, not about any one fix.
Five of the six fixes were correct in the language they targeted and
unswept to at least one sibling that shares the defect. Each issue carried
a sibling-sweep section; each was either absent, incomplete, or — twice —
actively wrong.
The seven gaps the batch left behind
casedouble-counts@availablegoto casecounts as a decisionCaseis_callvsabc.branchesPlus three found within the batch and fixed there, all of the same class:
C#'s
catch_filter_clause(#1422's body named onlywhen_clause), C#'s bareistype test (the Kotlin half landed in the same branch and the C# half didnot), and Kotlin's infix
and/or/xor.What is actually going wrong
.claude/rules/grammar-dispatch.mdalready closes with "when you fix onelanguage, sweep the rest", and every issue body has a sibling-sweep heading.
The rule is being followed as prose and not as a procedure:
whenarm double-counts its comparison operator #1421's body listed fourlanguages as clean "measured as part of fix(abc/csharp): relational pattern operator double-counts against its arm #1383 … so no need to re-derive".
Ruby was not clean. Nothing distinguishes a measured row from a remembered
one once it is written down.
predicate being changed. fix(abc): numeric operands score no condition in PHP, Groovy and the C family #1410 swept for numeric literals and missed
available_expression, which is not numeric but occupies the same slot inthe same set.
C# and Kotlin halves of the bare-type-test gap landed in the same branch,
four commits apart, and only a whole-branch read connected them.
Suggested changes
should carry the command and its output per language, the way the
measurement tables in these issue bodies already do. A row without numbers
should read as un-swept.
terminal-kind set or dispatch arm changes, enumerate what else can occupy
that slot in each language sharing the set —
bca dumpon a fixture percandidate production, not a grep for the construct.
two of the three within-batch gaps; per-issue review found neither. That
step already exists in
batch-fix; this is evidence it should not beskipped and should specifically look for two fixes that share a predicate.
AGENTS.mdalready requires for a deferred issue's premises. The failuremode is identical: the claim ages, and nothing about reading it says so.
Related
.claude/rules/grammar-dispatch.md, closing section.docs/development/lessons_learned.md— lesson fix(tests,mozjs): tree-sitter-javascript parse failures skip pdf.js tests #84 (deferred premises age)is the same shape one level up.