From a9391c5900296e538f7191fea19e36aaa3629554 Mon Sep 17 00:00:00 2001 From: Hongming Wang Date: Thu, 30 Apr 2026 05:28:03 -0700 Subject: [PATCH] fix(ci): drop --depth=1 from migration collision check fetch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The check has been blocking the staging→main auto-promote PR (#2361) since 2026-04-30T07:17Z with: fatal: origin/main...: no merge base Root cause: the workflow does `git fetch origin --depth=1` which overwrites checkout@v4's full-history clone with a shallow tip — destroying the ancestry the subsequent `git diff origin/main...HEAD` (three-dot, merge-base form) needs. This deadlocks every staging→main promote PR until manually fixed. The auto-promote runs were succeeding at the gate-check phase but the subsequent PR-merge step waited 30 min for the failing check and timed out, skipping the publish + redeploy dispatch tail. Fleet recovery for any production-only fix went through staging fine but never reached main. Fix: drop --depth=1 so the explicit fetch preserves full history. The leading comment is updated to call out this trap so a future maintainer doesn't re-add the flag thinking it's a perf win. No test added: this is a workflow-config one-liner that the existing PR check itself exercises end-to-end (the real signal is PR #2361 going green after this lands). Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/check-migration-collisions.yml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check-migration-collisions.yml b/.github/workflows/check-migration-collisions.yml index 6d9c0c3f..c84259d9 100644 --- a/.github/workflows/check-migration-collisions.yml +++ b/.github/workflows/check-migration-collisions.yml @@ -44,8 +44,15 @@ jobs: # gh CLI uses GH_TOKEN from env GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - # Make sure base ref is fetched (checkout@v4 with fetch-depth=0 - # fetches history but not necessarily named refs in the form we - # expect; explicit fetch is cheap insurance). - git fetch origin "${{ github.event.pull_request.base.ref }}" --depth=1 || true + # Ensure the named base ref exists locally. checkout@v4 with + # fetch-depth=0 pulls full history, but the explicit fetch is + # cheap insurance against form-of-ref differences across runs. + # + # IMPORTANT: do NOT pass --depth=1 here. The script below uses + # `git diff origin/...` (three-dot, merge-base form), + # which fails with "fatal: no merge base" if the base ref is + # shallow. The auto-promote staging→main PR (#2361) was blocked + # by exactly this for ~5h on 2026-04-30 — the depth=1 fetch + # overwrote checkout@v4's full-history clone with a shallow tip. + git fetch origin "${{ github.event.pull_request.base.ref }}" || true python3 scripts/ops/check_migration_collisions.py