Skip to content

source-control:babysit-prs: refresh_pr_branch.py's active-human-review-stop check false-fires on self-authored replies (#473-class, freshness gate) #902

Description

@kyle-sexton

Lane: babysit (safe tier)

Triggering example: melodic-software/claude-code-plugins#848 (also reproduced on #849, #859, #861, #869, melodic-software/dotfiles#280 in the same cycle). Snapshot reports branch_freshness.state == "behind" and mutation_policy.branch_write_allowed == true, so the orchestrator attempted the guarded refresh:

python refresh_pr_branch.py --pr melodic-software/claude-code-plugins#848 --expected-head-sha 3cf7fa23d020753095ad435e319e6c42b0cd3a97 --lease-token <token> --state-dir <state-dir> --apply

Result: ERROR: snapshot has an active human review stop.

Observed vs expected: The PR's only human_blocking_feedback_ids entry is comment:5032743107, authored by kyle-sexton (the babysit lane's own self-login) — a prior-cycle classification reply ("Post-green review classification (work lane): ... No action needed ... Flipping to ready, handing off to the babysit lane"). There is no actual open human blocker on this PR — human_changes_requested is false and the comment explicitly says no action is needed. Expected: a self-authored comment under the configured self-login should not count as an "active human review stop" blocking the freshness-refresh gate, the same way #473 fixed this for the needs_worker new_human_blocking_feedback arm. All 6 behind-base PRs in the current queue hit this identically, permanently blocking freshness refresh (and therefore the merge gate, which also needs a fresh branch) for any PR the lane has ever left a classification reply on.

Category: bug

Repro: any PR where branch_freshness.state == "behind" and the only human_blocking_feedback_ids entry is a self-authored (self-login) general/review comment.

Work-class: C3 (bug-fix-shaped) — attended triage 2026-07-23, operator-ratified. 🤖

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: highSignificant impact, or blocks an imminent release; staff this cycle.status: readyTriaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions