Skip to content

Keep an Unattended Run Moving: Hand a Spent Edit Budget to the PR, and Narrow a Blocked Promotion to Develop #2534

Closed

Description

@ptr727

Problem

The maintainer's direction, in their words: "i want the cause fixed, they should not stop and ask, they should park the ask and then move on, interrupting the unattended session is counterproductive".

A run of unattended-handoff on 2026-10-07 and 2026-10-08 finished no lane in its first three rounds. Every worker parked, and the run then stopped. Two rules caused that, and neither case was a choice only the maintainer could make.

  1. Spending the local edit budget is treated as a maintainer decision. local-strict-review "Disposing of Findings" says that where an introduced finding is still open after the second round, "what remains goes to the maintainer", per pr-review-conduct "Escalate to the maintainer when". For a subagent, that section says it "escalates to whoever dispatched it and stops that unit of work there". So Decide Whether a Note-Stripped File-Table Row Counts as Coverage on Its Own (auto-2251) #2522 and Decide How to Finish Design Before Code After the Local Review Budget Ran Out #2525 each parked a lane whose fixes the worker had already written out. The maintainer's answer to both was just to apply the worker's own recommendation.
  2. A blocked promotion stops the whole run. Under scope main or release, the picker returns STOP where an open decision issue blocks the develop -> main pull request (Decision: Merge Promotion #2532 Over pr_review.py's Unrecognized Overview Block (#2480) #2533 on Promote develop to main: Gate Prose on the Merge Commit's Own Base #2532). So one parked promotion ends every later round, even rounds that could merge their own work to develop.

Change

  1. The edit budget running out is not an escalation. In local-strict-review "Disposing of Findings", when the second round leaves an introduced finding open, editing stops and the remaining findings go to the pull request rather than to the maintainer. The worker opens or updates the pull request with each remaining finding listed in its body, so the hosted review disposes of them under pr-review-conduct. The budget still bounds local editing, which is what its Why: line protects. Escalation stays for the cases pr-review-conduct "Escalate to the maintainer when" lists by nature: a genuine design trade-off, a finding judged real but not to be fixed, and an architectural redesign. Running out of budget is none of those.
  2. A blocked promotion narrows the run to develop instead of stopping it. In unattended-handoff, the picker's promotion check stops returning STOP and picks as usual. A worker that finds the open promotion blocked by a decision issue merges its own pull request to develop and closes its lane out, leaving its issue to close when the promotion merges. That holds under main or release. It does not open, merge, or release a promotion while that decision is open. STOP stays for states no round can work around, such as a missing label, an exhausted reviewer quota, or a refused push.
  3. Make parking, not stopping, the default stated once. unattended-handoff "The Worker" gets one line: a worker parks only on a choice only the maintainer can make, and anything with a determined outcome is applied or handed to the pull request's review instead.

Related

#2480 is the third cause seen in that run: pr_review.py cannot read Copilot's collapsible "N open findings" block, so a promotion parks on it (#2533). Fixing #2480 removes that one, and it is ordinary auto-resolvable work.

Done when

  • local-strict-review, pr-review-conduct where it restates the budget, and unattended-handoff say the above, regenerated with build_dist.py.
  • No skill sends a worker's spent edit budget to the maintainer as a decision.
  • A picker never returns STOP only because a decision blocks the promotion.

🤖 Generated with Claude Code

Activity

  1. added a commit that references this issue on Oct 9, 2026
    321d68a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions