Repository navigation
Close the Gaps Left by Narrowing a Blocked Promotion to Develop #2614
Copy link
Copy link
Closed
Labels
introducedReview finding classed introduced per local-strict-review Disposing of FindingsReview finding classed introduced per local-strict-review Disposing of FindingsskillsAgent skillAgent skill
Description
Problem
#2549 (for #2534) moved the blocked-promotion check from the unattended-handoff picker to the worker. A round now narrows to develop instead of returning STOP. The local strict-review pass on #2549, run after it merged develop, found four gaps in that move. The maintainer chose to merge #2549 as it stood (#2556), so they are filed here instead of editing that pull request again.
- A failed read reads as "not blocked". The picker's step "returns
STOPwhere a read it needs cannot run" did not move with the check. Worker step 3 says nothing about a failedgh issue list --label decisionread, so its "Where none does, continue to the promotion pull request" covers a failed read too. Undermainorreleasethe worker would then drive the blocked promotion and hand it tomerge-and-release. - An answer that lands mid-run unblocks the promotion before the parked lane applies it. Parking step 2 says the decision issue closes once answered, and worker step 3 checks only open decision issues. Once the answer closes the issue, the next round's worker sees the promotion as unblocked and drives it. The
blockedlane holding that answer is still untouched, since the picker never takes it and only an attended session hands it back. Where the park left no open thread for Merge Gate item 3 to stop on, such as the harness-refused-merge park, the promotion can merge before the answer is applied. The old pickerSTOPmade this unreachable within one run. - Two sessions can edit one promotion body. A narrowed-round worker does a read-modify-write of the blocked promotion's body to add its
Fixesline. An attended session may be working the parked lane at the same time, as picker step 2 itself allows.gh pr edit --bodyreplaces the whole body, so one session's edit can silently drop the other'sFixes #N, and that issue then stays open after the promotion merges. - "Parks only on a choice the maintainer alone can make" leaves no route for an action only the maintainer can take.
pr-review-conduct"Expected review loop" sends some actions, not choices, to the maintainer, for example a review stall with a human reviewer requested. "Only" bars parking on these, andSTOPis for repository- or session-wide states, so the worker has neither. The step already names one non-choice park, the harness-refused merge, so the list is incomplete as written.
Done when
- Worker step 3 returns
STOPor parks where the decision read cannot run. - A run does not drive a promotion whose blocking decision was answered but whose parked lane has not yet applied the answer.
- The promotion-body update cannot silently drop another session's
Fixesline. - Worker step 5 names the non-choice maintainer actions that still park.
- Generated copies are rebuilt with
build_dist.py.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
introducedReview finding classed introduced per local-strict-review Disposing of FindingsReview finding classed introduced per local-strict-review Disposing of FindingsskillsAgent skillAgent skill
Activity
Hand a Spent Edit Budget to the PR, and Narrow a Blocked Promotion to…
Close the Read-Then-Act Windows in the Unattended Worker's Promotion …
Close the Remaining Blocked-Promotion Gaps in the Unattended Worker (#…