qodo-gate: require the first review, not a review of every head - #360
Conversation
The head-pinned rule turned every review-response push into a fresh summon, and every summoned pass re-scans the diff and opens a new batch of ever-smaller findings — an unbounded fix/re-review treadmill (eleven rounds on a single PR, converging on one-line style nits). The first, whole-diff review is where the value is; thread resolution already keeps each finding accountable (address or dismiss with rationale in the thread); follow-up commits are maintainer judgment, as with a human reviewer who does not re-review every fixup. The gate now requires (a) at least one Qodo review on the PR and (b) all Qodo-authored threads resolved. The head-oid match and the update-in-place marker-comment fallback are gone — and with the fallback goes the `issues: read` permission it needed. Thread accounting (pagination, any-comment bot attribution) and the skip-qodo-gate escape hatch are unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
PR Summary by Qodoqodo-gate: require at least one Qodo PR review (not head-pinned) + resolved threads
AI Description
Diagram
High-Level Assessment
Files changed (1)
|
Code Review by Qodo
1.
|
Every inline reply wraps itself in a review object, so a busy PR exceeds 100 of them — and the bot's first review is the oldest, exactly what a last-100 window loses first. REST + --paginate, ids counted per line (per-page --jq), prefix-matched login (REST adds the [bot] suffix GraphQL omits). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Problem
The head-pinned gate rule makes every review-response push invalidate the review evidence: push a fix → summon
/review→ the bot re-scans the whole diff → it opens a fresh batch of findings → fix → push → repeat. On #359 this ran eleven rounds, converging on one-line style nits (float truncation vs ceil,maxover key views) long after the substantive findings were exhausted. The re-review passes also re-anchor stale comment bodies and open re-litigations of already-dismissed findings, so the loop does not terminate on its own.Change
The gate now requires:
Dropped: the head-oid match and the update-in-place marker-comment fallback (and the
issues: readpermission only that fallback needed). Follow-up commits after the review are maintainer judgment — the same contract as a human reviewer who does not re-review every fixup. Thread pagination, any-comment bot attribution, and theskip-qodo-gateescape hatch are unchanged.Validation
The workflow parses (same trigger set as the current file, which is the parser-accepted form from #357), and this PR itself runs under the new logic via the merge ref: its gate must see Qodo's first review of this PR plus resolved threads to go green — a live demonstration of exactly the intended flow.
🤖 Generated with Claude Code