docs(review): skip the challenger when there are no findings - #1009
docs(review): skip the challenger when there are no findings#1009guyoron1 wants to merge 1 commit into
Conversation
The challenger is an opus dispatch whose only inputs are the merged findings from steps 6a-6c; on a clean PR it adjudicates an empty list at the cost of a serial opus call and latency segment. Skip the dispatch when the set is empty and proceed straight to the verdict - the empty-findings approval path is unchanged. The skip is noted in the orchestrator's own reasoning for auditability; there is no field for it in the strict agent-result.json schema and it does not belong in the posted review body. Signed-off-by: guy oron <goron@redhat.com>
Functional tests did not runFunctional tests run automatically for org/repo members and collaborators on pull requests. For other contributors, a maintainer must add the |
PR Summary by QodoSkip challenger dispatch when review findings are empty
AI Description
Diagram
High-Level Assessment
Files changed (1)
|
Code Review by Qodo
1. Empty set bypasses checks
|
| **Skip when there is nothing to adjudicate.** If the merged finding set | ||
| from steps 6a–6c is empty, skip the challenger dispatch entirely and | ||
| proceed straight to the verdict with the empty set — the empty-findings | ||
| approval path (step 7) is unchanged; this skip does not add anything to |
There was a problem hiding this comment.
2. Behavior change lacks authorization 📜 Skill insight § Compliance
The PR makes a non-trivial orchestrator behavior change with more than 20 changed lines but does not link an authorizing issue. The explanatory PR description does not satisfy the rule's explicit linked-issue requirement.
Agent Prompt
## Issue description
The non-trivial challenger-dispatch change has no linked issue authorizing the work.
## Issue Context
The diff contains more than 20 changed lines and changes the review orchestrator's behavior. Link an issue that explicitly authorizes skipping challenger dispatch for empty finding sets.
## Fix Focus Areas
- skills/pr-review/SKILL.md[830-833]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| **Skip when there is nothing to adjudicate.** If the merged finding set | ||
| from steps 6a–6c is empty, skip the challenger dispatch entirely and | ||
| proceed straight to the verdict with the empty set — the empty-findings | ||
| approval path (step 7) is unchanged; this skip does not add anything to |
There was a problem hiding this comment.
3. Challenger skip lacks tests 📜 Skill insight ▣ Testability
The operational review skill now skips the challenger when findings are empty, but the PR includes no test change covering that behavior. A test should prove both that empty findings suppress dispatch and that non-empty findings still dispatch the challenger.
Agent Prompt
## Issue description
The new empty-findings challenger skip is an untested behavioral change.
## Issue Context
Add repository-standard behavioral coverage demonstrating that an empty merged finding set skips challenger dispatch and proceeds to approval, while a non-empty set still invokes the challenger.
## Fix Focus Areas
- skills/pr-review/SKILL.md[830-849]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| from steps 6a–6c is empty, skip the challenger dispatch entirely and | ||
| proceed straight to the verdict with the empty set — the empty-findings | ||
| approval path (step 7) is unchanged; this skip does not add anything to |
There was a problem hiding this comment.
4. Empty set bypasses checks 🐞 Bug ≡ Correctness
The new instruction says to proceed straight to the verdict with an empty set, bypassing step 6e checks that run after the challenger and can independently add findings. A clean dimension review could therefore approve a protected-path or scope-unauthorized PR without emitting the mandatory finding.
Agent Prompt
## Issue description
The empty-findings branch says to proceed directly to the verdict, which can skip mandatory orchestrator-only checks that occur after the challenger and may add findings.
## Issue Context
Only the challenger dispatch should be skipped. The workflow must continue through steps 6e, 6e-1, and 6f before reaching the verdict.
## Fix Focus Areas
- skills/pr-review/SKILL.md[830-849]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| tool calls) regardless of change size. Both assignments override the | ||
| classification-based constraint from step 3e. | ||
| 4. **Challenger** — always dispatch (unchanged). | ||
| 4. **Challenger** — always dispatch when findings exist (step 6d). |
There was a problem hiding this comment.
1. challenger examples stay unconditional 📜 Skill insight ≡ Correctness
The updated rule makes challenger dispatch conditional on the current merged finding set, but the re-review examples still list the challenger unconditionally based on prior findings. This internal contradiction can cause the challenger to be dispatched after a successful re-review produces no findings.
Agent Prompt
## Issue description
The challenger dispatch rule is conditional on findings, while the re-review examples still present challenger dispatch as unconditional.
## Issue Context
Update the examples to clarify that the challenger appears only when steps 6a–6c produce findings during the current review, including re-reviews.
## Fix Focus Areas
- skills/pr-review/SKILL.md[347-347]
- skills/pr-review/SKILL.md[354-366]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
|
Code review by qodo was updated up to the latest commit c302b85 |
Heyaa : )
Noticed the challenger — a serial opus dispatch whose only inputs are the merged findings — runs even on a clean PR, where it adjudicates an empty list for real money and latency.
Two hunks in
skills/pr-review/SKILL.md:sub-agent-failurefinding. Dispatch mechanics, output parsing, and the fallback-on-failure path are untouched.Verdict logic unchanged — an empty set approved before and approves now. The skip is noted in the orchestrator's own reasoning trace, not the review body: step 7 forbids footers and the result schema is
additionalProperties: false, so there's no honest place for it in the output — auditable in the transcript, invisible to the PR author.One trade-off, disclosed rather than buried: this forfeits the challenger's secondary, explicitly not-owned allowance to flag something it happens to notice while reading the diff. Exercising that on every clean PR would mean re-reading the whole diff each time — exactly the cost this skip exists to remove.
Prompt-only change; the challenger exists only on the claude review path, so this is complete for the only path that has one to skip.