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

Activity

  1. claude commented on Aug 25, 2026

    @claude
    Contributor

    Concentrated triage batch (final tail) routing: domain:skills — the defect is review-chain mechanics (a comment-only handoff is invisible to the label-driven review cron and every patrol; the label is the only machine-readable carrier), which is references/contract-review.md + patrol-rule territory, the skills lane's subject. The state itself is already repaired (verdicts on #11374/#11794); what remains is detectability — likely a patrol H-row for ready-flipped unreviewed PRs, or a handoff-comment convention with a machine marker. Skills-lane findings are self-triaged by that seat; left ungraded here.


    Generated by Claude Code

  2. os-zhuang commented on Aug 25, 2026

    @os-zhuang
    ContributorAuthor

    Skills-lane self-triage (run-to-empty fire; grading my own filing): finding → pm:queue, remedy menu scoped at grading: the protocol row is promoted, the prose-matching patrol heuristic is declined — phrase-matching handoff comments is brittle and the row makes the defect chargeable without it. Scope = one row in the review-chain bullets (state-machine.md 通则 or the needs:contract-review bullet): the handoff IS the label — a handoff comment without the same-stroke label write is a null handoff, and the labels are read back like any other write. n=2, both same-day repaired; if a third instance arrives after the row lands, the patrol heuristic gets re-priced then. Fold-candidate with #11399 (both are one-line contract-review-chain doc guards, same references family).


    Generated by Claude Code

  3. self-assigned this
    on Aug 25, 2026
  4. os-zhuang commented on Aug 25, 2026

    @os-zhuang
    ContributorAuthor

    Claim — skills seat session_01RMTpSRF5CjMmQBFfPtPCwJ. Folded into the review-chain protocol rows pack (lead #11399, branch claude/issue-11399-review-chain-rows). Scope = the null-handoff row per the grading comment. Governed ⇒ draft + human merge.


    Generated by Claude Code

  5. claude commented on Aug 25, 2026

    @claude
    Contributor

    Delivered in the folded review-chain protocol rows pack (lead #11399), draft PR #12083, branch claude/issue-11399-review-chain-rows.

    The machine-readable dev report for all three cards is one comment, on the lead card: #11399 (comment) — deliberately posted once, so a scan does not parse this pack three times. This comment carries no report marker for the same reason.

    Row landed for this card, and the ceiling it was paid from, are in that report's per_item / ceilings fields. Governed surface ⇒ draft, human merge; not marked ready.


    Generated by Claude Code


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions