Lane: babysit. Triggering PR: #567 (fix/499-babysit-snapshot-approve-nits-classification). Source: Codex P1 re-review thread #567 (comment).
Finding
A reviewer bot can submit a formal APPROVED-state review whose body carries a live CRITICAL/IMPORTANT finding (e.g. Verdict: Approve overall. IMPORTANT: authorization bypass.). In collect_feedback (plugins/source-control/skills/babysit-prs/scripts/babysit_feedback.py) the elif state in {"APPROVED", "DISMISSED"}: ignored.append(record) branch short-circuits to ignored before the has_blocking_text / has_blocking_severity predicate is reached, so the severity marker is never inspected — no blocker, no worker dispatch. The same short-circuit exists on the non-bot (human) path a few lines above.
Why this is a deferred design question, not a PR #567 fix
Per the no-false-guarantees rule, PR #567 does not ship a present-tense guarantee this finding contradicts: its CHANGELOG/docstring wording was narrowed to the enforced behavior (severity stays blocking in a comment or non-APPROVED-state review), with this issue cited as the caveat. The classifier itself is left unchanged in #567.
The design question to decide
Should a formal APPROVED/DISMISSED-state review (bot and human) have its body severity-scanned before the ignored short-circuit — i.e. can a live CRITICAL/IMPORTANT in the body override the reviewer's explicit approval state? If yes, define the precedence and the false-positive guard; apply consistently across both paths.
Belongs to the #534 shared-classifier design space; likely umbrella-fold at triage.
Lane: babysit. Triggering PR: #567 (fix/499-babysit-snapshot-approve-nits-classification). Source: Codex P1 re-review thread #567 (comment).
Finding
A reviewer bot can submit a formal
APPROVED-state review whose body carries a liveCRITICAL/IMPORTANTfinding (e.g.Verdict: Approve overall. IMPORTANT: authorization bypass.). Incollect_feedback(plugins/source-control/skills/babysit-prs/scripts/babysit_feedback.py) theelif state in {"APPROVED", "DISMISSED"}: ignored.append(record)branch short-circuits toignoredbefore thehas_blocking_text/has_blocking_severitypredicate is reached, so the severity marker is never inspected — no blocker, no worker dispatch. The same short-circuit exists on the non-bot (human) path a few lines above.Why this is a deferred design question, not a PR #567 fix
789ec6c183): theelif state in {"APPROVED", "DISMISSED"}: ignoredlines are unchanged context in that diff — PR fix(source-control): babysit snapshot classifies Approve-with-nits bot review as non-blocking (#499) #567 neither added nor modified the short-circuit. It only added severity detection on the *non-*APPROVED-state branch.APPROVEDverdict yield a blocker based on body prose is a contract change to how explicit review states are treated, and it spans both the bot and human paths (the human path has the identicalAPPROVED/DISMISSED → ignoredshort-circuit). It carries a false-positive surface (descriptive severity words in an otherwise-clean approval) and interacts with the approval-downgrade heuristic.Per the no-false-guarantees rule, PR #567 does not ship a present-tense guarantee this finding contradicts: its CHANGELOG/docstring wording was narrowed to the enforced behavior (severity stays blocking in a comment or non-
APPROVED-state review), with this issue cited as the caveat. The classifier itself is left unchanged in #567.The design question to decide
Should a formal
APPROVED/DISMISSED-state review (bot and human) have its body severity-scanned before theignoredshort-circuit — i.e. can a liveCRITICAL/IMPORTANTin the body override the reviewer's explicit approval state? If yes, define the precedence and the false-positive guard; apply consistently across both paths.Belongs to the #534 shared-classifier design space; likely umbrella-fold at triage.