Repository navigation
fix(source-control): take babysit head pushers from the branch activity API - #11072
melodic-automation-lanes[bot] wants to merge 4 commits into
Conversation
Lane-Activity: work-resolve-issue/resolve-issue
|
claude-security-review reviewed Incremental security review of 5571c35 (since 50c8eca): no security findings. The only change since the last review is in I read this only as a test fixture and checked no other file. It is not on a trusted path, because only the production critical-findings: 0 |
|
claude-review reviewed Incremental review of The change makes
The tests still exercise what their docstring describes: which lanes' runs get listed. Spend: no cost or hold implications. |
|
Unattended merge: native auto-merge leaves this pull request unarmed at head |
|
The unattended merge path armed native auto-merge at head |
Lane-Activity: pr-unblock/resolve-conflicts
|
A lane run on this pull request's head failed because the token broker refused it as workflow-modified: |
The token broker refused a lane run on the previous head as workflow-modified (.github/workflows/pr-unblock.yml). This commit changes no file.
Lane-Activity: pr-unblock/fix-ci
There was a problem hiding this comment.
The pr-verify verifier failed head 5571c35a9c4cd589554296cf90884426a198f63b. What it wrote, as data:
What it wrote (27 lines)
Summary: Issue #7354 asked for option (b) from owner decision D6: take head pushers from the branch
activity API, plus the head-in-list hardening. The diff does that, and the code looks correct and
fails closed. But the owner's latest trusted comment on #7354 (2026-10-29 23:11, after this PR
opened) closed the issue as "hardening deferred". It says hardening against the organization's own
actors waits until open issues and open PRs both reach 0, and returns then "as configuration"
(owner decisions Q15/Q16). This PR delivers now, as hard-coded unattended-merge gate behavior, the
hardening the owner put off and asked to come back in a different form. The spec's current intent
is not met, so this should not merge as-is.
- spec-text.json #7354 last comment: the owner closed the issue as "hardening deferred" until open
issues = 0 and open PRs = 0, to return "as configuration". This PR still says `Closes #7354` and
hard-codes the hardening. Fix: hold or close this PR until the reopen trigger fires, or get a new
owner decision that overrides Q15/Q16. When the work resumes, make the activity-based pusher
exclusion configurable, as the owner asked, not always on.
- pr body: the Python tests and ruff were not run by the lane. They are left to CI, so the changed
test counts (`3 + 2 * 4`, `1 + 3 + 2 * 4`) have only been traced by hand.
- plugins/source-control/skills/babysit-prs/scripts/babysit_merge.py:3193: the activity read follows
every page with no cap. A reused branch name with a long history costs unbounded reads. The PR
body says the merge policy's own branch_activity read stops at 20 pages. When this returns, apply
a similar cap and refuse with `head-pusher-unproven` past it.
- plugins/source-control/skills/babysit-prs/scripts/babysit_merge.py:3193: `repos/{repo}/activity`
is read on the base repo. For a cross-repo (fork) head, the activity is empty or belongs to a
same-named base branch, so the gate refuses with push-history. That fails closed, but no test or
doc line covers or states it.
- plugins/source-control/skills/babysit-prs/scripts/babysit_merge.py:3196: the activity read uses
the verdict reader's token (`read_env`). The PR does not confirm that this token can read
repository activity. A permission error would block every unattended merge rather than refuse with
a clear reason. Confirm the token's scope or map the error to a `head-pusher-unproven` reason.
There was a problem hiding this comment.
pr-unblock / address-feedback: UNCERTAIN, left open
Evidence: plugins/source-control/skills/babysit-prs/scripts/babysit_merge.py:3193, plugins/source-control/skills/babysit-prs/scripts/babysit_merge.py:3196
The main finding is about scope, not code. The verifier reports that the owner closed issue 7354 as hardening deferred until open issues and open PRs both reach 0, and wants it to come back later as configuration (owner decisions Q15/Q16). This PR adds the activity-based head-pusher exclusion now, always on, inside the unattended-merge gate (babysit_merge.py:3193-3201, through _head_pushers at :3098). The code can't settle whether to hold or close this PR, make the exclusion configurable, or get a new owner decision that overrides Q15/Q16. That is the owner's call on shared merge infrastructure, so this lane made no edit. The verifier framed the follow-ups as work for when the issue reopens, so none was applied here. Each one is confirmed in the code: (1) the activity read at :3195 goes through fetch_paginated_api with no page cap; (2) it reads repos/{repo}/activity on the base repo, so a fork head fails closed with head-pusher-unproven:push-history, and no test or doc covers that; (3) it uses the verdict reader token (read_env, :3149), and a permission error raises instead of mapping to a head-pusher-unproven reason. A person needs to decide whether this PR goes ahead before those are fixed.
|
pr-unblock / address-feedback finished round 1 of max 4 on 5571c35. |
|
The pr-unblock lane stopped
When a retry on this head can change the outcome, the lane runs one on its own, up to its per-head cap, and edits this comment if it stops again; a run that does not stop clears the status. When no retry can (a review thread the lane does not take or settle, or a failing check after the retries are spent), a person resolves the threads or gets the checks green, then dispatches the workflow below: that run finds the cause gone and clears the status. On a pull request the lanes App opened, the dispatchers start that run once per stop; on any other, a person does. A new commit to the branch starts clean. To run it again on this head now, dispatch the gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=11072 -f activity=address-feedback |
Closes #7354
Summary
Opened by the work-resolve-issue lane. The run's own summary:
Not verified
Fix
_head_pushersreads the actors of the head branch's activity (newest first, deletions skipped) and refusespush-history/push-actor._lane_evidenceadds those actors toexcluded, using the read token, refuses `head-noVerification
The runner ran each check from the base copy against 91103c8:
The run reports:
Left out: the items under Not verified.
Related
#7354