You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
A failed Self-merge goes back round the Repair loop; policy refusals leave the PR ready #93
The Self-merge becomes the goal of the Repair loop. If a merge attempt fails, the Merge run goes back round the loop: merge the Base branch, hand a conflict to a conflict Repair, push, watch CI and hand red CI to a CI-fix Repair, all within the Run's budgets. Then it tries the merge again on the new green head. thirdshift never parses GitHub's error text to decide why a merge failed.
A round that finds nothing to do (Base branch unchanged, no conflict, CI green or absent, mergeable) and still can't merge is a policy refusal, for example merge commits disallowed or a review required. The Run is then a Failed run that leaves the PR ready for review, not a draft: it exits 1, prints the PR URL on stdout and puts GitHub's error on stderr. Any other failure is a Failed run exactly as today.
Acceptance criteria
A merge that fails because the Base branch moved into a conflict leads to a conflict Repair, then a successful merge.
A merge that fails because CI went red on a new head leads to a CI-fix Repair, then a successful merge.
Rounds and Repairs taken because of a failed merge count against the Run's existing budgets, and the Run fails once they're spent.
A merge refused when there is nothing left to fix exits 1, prints the PR URL on stdout, puts GitHub's error on stderr, and leaves the PR open and ready for review (not a draft).
The fake gh can be told to refuse merges with a given error.
README's Failed runs section documents the ready-for-review exception, and the Usage section has the Merge run outcomes (merged, merged with warnings, policy refusal, other failure).
Activity