Repository navigation
fix(dev-lead): verify an additive fix a pass made in a file the finding names (#2269) - #2303
Conversation
…ng names (#2269) A `fixed` comment disposition verified only when the cited diff removed a token the finding names (#2004). A fix that only adds lines, such as a missing assertion or guard, removes nothing, so it could never verify and its comment stayed open (PR #2205, commit 3e5025b). Maintainer ruling on #2269: option 1. A commit that removes no named token now verifies when this pass produced it and its diff changes a file the finding names by its full repo path (`this-pass-touches-named-file`). It must still be on the pushed head, off the base branch, non-empty and dated after the finding. A commit from an earlier pass, or one outside the named files, keeps the removed-token rule. This is the rule a review-thread claim already passes. - cdv_finding_paths, cdv_touches_named_file: pure helpers. - cdv_fixed_verdict takes an eighth argument, <touches_named>. - rdc_fixed_verdict passes the commit's own files against the finding's paths. - Both prompts and docs/pr-review-agent/maintainer-comment-gate.md state it. - Tests: 8 pure (one on the real PR #2205 comment and the diff of 3e5025b, saved under tests/fixtures/comment-disposition/) and 4 through the full script. 9 of the 12 fail on main's sources; the other 3 are the guards that an unrelated or earlier commit still does not verify. Closes #2269 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ve-fixed-disposition
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 59 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
dev-lead is withholding action on this item. It is labeled To re-enable automated pickup: remove the |
|
Advisory bots were rate-limited; auto-approval is withheld until they recover. pr-review-sweep will re-review this PR after 2026-10-11T19:16:12Z. |
There was a problem hiding this comment.
Code Review
This pull request implements support for verifying additive fixes (fixes that only add lines without removing tokens) under rule #2269. It introduces helper functions to extract file paths from finding bodies and check if the current pass's commit touches those files, updating relevant documentation, prompts, and unit tests. The review feedback suggests optimizing the cdv_touches_named_file function by using pure Bash associative arrays instead of spawning grep inside a loop, which improves performance.
QA Lead — test-risk advisoryRisk tier: MEDIUM. This PR widens what the approval gate accepts as a verified What I'd shore up (highest leverage first):
Escalate? No. The gate loosening is the trade-off the maintainer chose, and it fails closed. The Advisory only — I comment, I do not change code. Ground: BMAD Test Architecture |
CodeAnt Nitpicks1 code suggestion1. The named-file rule also accepts commits that add the finding's token, so an introducing change from this pass can still mark the original finding fixed.Logic error · |
CodeAnt PR Risk: Medium Risk
Assessed commit: |
…ditive fix (#2269) Review (CodeAnt, QA Lead): the new path accepted `content-adds-token` as well as `content-no-token-removed`. For a finding like "remove `eval` from x.sh", a commit from this pass that adds another `eval` to that file would have verified. The path is now limited to a diff that neither removes nor adds a token the finding names; `content-adds-token` fails whatever pass made the commit, as before this branch. - Prompts and the gate doc say so. - Tests: the boundary at the pure level and through the full script; a table of the forms reviewer bots write a location in; renamed and deleted files; and one that pins the accepted limit that a comment-only line in the named file verifies. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ve-fixed-disposition
…#2269) The comment names a test file, so the pass also goes through the test-tamper guard. The test serves the guard's base-branch lookup and gives the repo an origin to fetch main from, then checks the disposition verifies and the comment is minimized. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
Advisory bots were rate-limited; auto-approval is withheld until they recover. pr-review-sweep will re-review this PR after 2026-10-11T19:32:25Z. |



Summary
A
fixedcomment disposition can now verify a fix that only adds lines.this-pass-touches-named-file.content-adds-token, unchanged from Afixeddisposition citing the WRONG sha can never verify — comment is never minimized, dev-lead refuses to re-answer, PR blocks permanently (#1977) #2004). For a finding like "removeevalfromx.sh", a commit that adds anotherevalis the defect again. This boundary came from review (CodeAnt, QA Lead); the first push accepted it.fixeddisposition citing the WRONG sha can never verify — comment is never minimized, dev-lead refuses to re-answer, PR blocks permanently (#1977) #2004) unchanged.scripts/lib/comment-disposition-verify.sh:cdv_finding_pathsandcdv_touches_named_file(pure), and an eighth argument tocdv_fixed_verdict.rdc_fixed_verdictinscripts/dev-lead-fix-reviews.shsupplies it.fix-bot-comment.md,fix-reviews.md) anddocs/pr-review-agent/maintainer-comment-gate.mdstate the rule.Problem
Closes #2269. The #2004 rule accepts a
fixeddisposition only when the cited diff removes a token the finding names. A finding such as "this test never asserts X" is fixed by adding the assertion, so nothing is removed, the verdict iscontent-no-token-removed, and the comment stays open until a human clears it. On PR #2205, commit3e5025bdadded one line for a CodeAnt finding and could never have verified.The maintainer chose option 1 from the issue on 2026-10-11: align with the rule a review-thread claim already passes (
acv_claim_in_pass), limited to commits the pass itself made. This PR is narrower than that option as written in one respect: it does not accept a diff that adds a named token. An additive fix that repeats the finding's own token (for example an assertion that greps for the named string) therefore still does not verify. Widening that is a separate decision.Risk
Medium. This widens what the approval gate accepts as a verified
fixeddisposition.foo.shdoes not matchscripts/foo.sh, and a link's URL is not read as a file.Known limits:
path:line" check from the issue is not implemented.Test plan
tests/dev-lead/unit/test_comment_disposition_verify.bats(one runs the real PR feat: implement issue #1787 — calibrate solution-architect escalation so conforming changes are not escalated #2205 CodeAnt comment and the real diff of3e5025bd, saved undertests/fixtures/comment-disposition/), 7 intests/dev-lead/unit/test_fix_reviews.batsthrough the full script (one runs the real comment against its test file, through the test-tamper guard).main's scripts, prompts and doc, 9 fail. The 3 that pass either way are the guards that an earlier-pass commit, or one outside the named files, still does not verify. The 6 added in review were not re-run againstmain.test_comment_disposition_verify.bats: 71/71. The#2269tests intest_fix_reviews.bats: 7/7. Of the#2004tests beside them, 2 fail locally; those 2 failures (#2004 AC4(c)and(e)) fail the same way onmainbecause they call GNUsed -i, which this Mac lacks. CI is the authority.shellcheck --severity=warning -xon both scripts,scripts/check-duplicate-decls.sh,markdownlint-cli2on the doc: clean.Rollback
Revert this PR. A comment already minimized under the new rule stays minimized.
Monitoring
In a
fix-bot-commentorfix-reviewsrun log:`fixed` disposition verified against <sha> (this-pass-touches-named-file). Inert until the dev-lead channel tag moves onto it (next autocut todev-lead/v139-next, then ring promotion).Interaction contract
🤖 Generated with Claude Code