Skip to content

[finding] A comment-only review handoff is invisible to the review gate AND to every patrol — two ready-flipped PRs sat unreviewed until the maintainer noticed by hand #11994

Description

@os-zhuang

Filed as recording; measured 2026-08-25 while repairing the state (verdicts now on #11374 / #11794).

What happened

The domain:engine seat delivered two PRs — #11699 (delivering #11374 route A) and #11876 (delivering #11794) — flipped both to ready, and wrote on each a handoff comment: "Ready for triage review — ⛔ deliberately NOT enqueued … the maintainer directed that this go to triage review". No needs:contract-review label was hung on any of the four carriers (either PR, either card). The label-driven review cron (which lists open cards by that single label) therefore never saw them; both sat ready-and-unreviewed for ~5–13 hours until the maintainer noticed the labels had never changed and reported it in chat. One of the two (#11876) had been dispatched below CONTRACT_REVIEW_TIER by explicit quota ruling with the review chain as the named compensation — so the missing link was the exact link the ruling depended on.

The mechanism gap, precisely

  • The review gate's inbox is list_issues(labels: [needs:contract-review], state: open). A handoff that exists only as prose in a PR comment has no representation in that query.
  • H31 (contract-review dual-carrier split) detects a label present on ONE carrier and missing from the other. Zero-on-both is indistinguishable from "no review owed" — by construction, since the label is the only machine-readable claim that a review IS owed.
  • No patrol reads handoff comments. The failure is silent on every existing scan: not a half-state, not a split, not queue rot.

Not claimed

  • ⛔ Not a claim the review chain's label protocol is wrong — the label IS the right bus; the defect is that nothing catches a seat that writes the prose and skips the label.
  • ⛔ Not measured: how often this shape occurs. This is n=2 from one seat in one evening (both repaired same-day).

Possible directions (triage, not a recommendation)

  • A patrol heuristic: an OPEN, READY (non-draft) PR by a bot identity whose body/comments contain a "review" handoff phrase but which carries none of the review-chain labels ⇒ flag. Phrase-matching prose is brittle; the value is that this exact shape is loud ("Ready for triage review" is a fixed formula in seat handoff comments).
  • A protocol row in the state-machine doc: "the handoff IS the label — a handoff comment without the same-stroke label write is a null handoff", plus read-back discipline quoted at the seat that skipped it. Cheap, already half-stated in the review-chain bullets; makes the defect chargeable to the seat rather than invisible.
  • Both, or nothing (n=2, same-day repair, and the dispatching seat has now been named on both cards).

Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions