Repository navigation
Description
local-strict-review "Disposing of Findings" tells an agent which findings are owed a fix and how many rounds it gets, but never which ones are fixed by deleting the text rather than correcting it. One class regenerates under correction, and the skill already names the phenomenon without saying what to do about it.
The gap, in the skill's own words
The two-round budget bullet carries this rationale:
Why:past the second round nearly every finding is against text the previous round's fix wrote, so the rounds are producing the defects they find rather than removing them.
That is the observation. The disposition it implies is missing: the rule stops the loop by capping rounds, and never says that for one class of finding the correction itself is what regenerates it.
Evidence, from #1484
Fourteen local passes over one change, roughly 45 findings. The code was right from round 1 and barely moved. Two mechanism defects surfaced, an entry check placed in a job whose matrix it could not gate, and a filter admitting a value that ran green on an unpinned interpreter. Everything else was prose, and four separate times a round's prose fix was the next round's finding:
| the claim a round wrote | what the next round found |
|---|---|
| an unquoted integer entry "resolves to whatever interpreter of that major version uv finds" | false for every integer but a bare 3, since uv reads a dotless digit run as a full version, so 313 selects 3.13 while 30 and 300 fail |
| a corrected row count in a comment beside a case table | the correction introduced a second off-by-one, in the other half of the same comment |
a bad interpreter version "fails in setup-uv" |
setup-uv only exports UV_PYTHON; the failure lands two steps later, in the dependency sync |
| a test comment claiming its case proves the escape order | it cannot, its input carries no newline, so both orderings pass it |
Each is a claim about how a mechanism works. Over the same fourteen rounds, claims about what something costs at a boundary, this input is refused, this leg runs green on an interpreter nobody chose, this check name changes, this coverage flag appears, were raised once and never returned.
Three times the fix was to delete the mechanism sentence rather than tighten it, and each of those stopped recurring: the row counts became two group labels, the uv claim became "some of those numbers uv resolves rather than refusing", and an earlier round cut three explanatory paragraphs to two.
Why this is not one pull request's bad luck
Four memories from earlier sessions circle the same shape without stating it: growing an enumeration introduces defects, a pointer's cost is the sentence beside it, new prose does not converge under review, and replacing a vague pointer with a crisp rule overreaches. Four private notes orbiting one unstated rule is the signal it belongs in the tree.
A memory also cannot reach a subagent. Every reviewer a pass dispatches starts from an empty context, so nothing tells the seat disposing of the findings to prefer deletion, and nothing tells the reviewer that an over-precise mechanism claim is worth raising as a defect rather than as a wording preference.
Suggested remedy
One bullet in local-strict-review "Disposing of Findings", in that section's existing shape, a bolded rule and a Why: line. Roughly: a finding against a claim about how an external tool, runtime, or expression behaves is disposed of by deleting the claim rather than by making it more precise, since such a claim is rarely load-bearing for the decision its reader is making, is the part most likely to be verified wrong from outside the tree, and is version-specific to something this repository does not control. A corollary worth the same sentence: a count stated beside a list is the same trap, so state the category and let the list carry the number.
The section is that skill's own prose rather than the generated include from pr-review-conduct "Every finding ends in one of five outcomes", so it is editable there directly, and scripts/build_dist.py regenerates the two distribution copies.
The risk this carries, stated rather than discovered later
This is new canonical prose in a carried skill, which is the category measured on #1312 as holding five to seven findings for twelve rounds while light edits went to zero in one or two. A section-sized treatment would become an instance of the thing it warns against. Keep it to one bullet, or close this as not worth its own drift surface.
Not filed here
No change to pr-review-conduct's five outcomes, which this sits beside rather than extends. No registry or spec change.
Activity
ptr727 commentedon Oct 23, 2026
Closed under the maintainer's decision (ptr727, 2026-10-23) on #3391: the backlog keeps real bugs with a stated failure, features the maintainer wants, and open decisions. A finding the review loop filed on code or text a change did not touch, a refactor or consolidation chore, a tracker, a wording item, or a guard shape no session has produced is closed rather than worked. Reopen with the input and the wrong result if this issue states one.