From 4e95f22aceb689c5bfdcfa444cbcbe2f1e3194e3 Mon Sep 17 00:00:00 2001 From: squid-protocol Date: Fri, 9 Oct 2026 01:50:42 -0400 Subject: [PATCH] ci: evidence-refresh retries enabling auto-merge until the bot PR's checks register The first full (Db2) refresh (run after #4745) opened bot PR #4756 but failed at 'Enable squash auto-merge': GitHub refuses auto-merge on a PR in clean status, which a freshly opened PR is until its checks register. Retry for up to 10 minutes; never merge before CI runs; leave the PR open with a warning if the checks never appear. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01MQNoe4wPJgr7dbUvs3DG6D --- .github/workflows/evidence-refresh.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/evidence-refresh.yml b/.github/workflows/evidence-refresh.yml index 516f8dc18a..141b9e8330 100644 --- a/.github/workflows/evidence-refresh.yml +++ b/.github/workflows/evidence-refresh.yml @@ -521,7 +521,16 @@ jobs: GH_TOKEN: ${{ secrets.AUTOMATION_PAT }} PR: ${{ steps.cpr.outputs.pull-request-number }} REPO: ${{ github.repository }} - run: gh pr merge "$PR" --repo "$REPO" --auto --squash + # Right after the PR is opened its checks may not have registered yet, and GitHub then refuses auto-merge on a + # "clean" PR ("Pull request is in clean status"). Retry until the checks exist; never merge before CI has run + # (if it never gets there, the PR stays open for a person / the merge watcher). + run: | + for i in $(seq 1 20); do + if out=$(gh pr merge "$PR" --repo "$REPO" --auto --squash 2>&1); then echo "$out"; exit 0; fi + echo "$out" + case "$out" in *"clean status"*) sleep 30 ;; *) exit 1 ;; esac + done + echo "::warning title=Evidence refresh::auto-merge could not be enabled (checks never registered); PR #$PR left open" - name: Fail when a re-proof failed if: steps.refresh.outcome == 'failure' || steps.ledger_sweep.outcome == 'failure' || needs.db2.result == 'failure'