From 857218e6dad756046d45916fd1e28ac4d5820cd2 Mon Sep 17 00:00:00 2001 From: Teknium <127238744+teknium1@users.noreply.github.com> Date: Sat, 5 Sep 2026 06:50:47 -0700 Subject: [PATCH] ci(lint): deepen the shallow checkout before the public-surface diff; the step is advisory and never fails the job The round-2 change made check_public_surface refuse to report a clean diff without a merge-base (exit 2). That correctly exposed that the lint job's depth-1 checkout plus a depth-1 fetch of the base has NO merge-base, so the advisory step had been silently reporting 0 drops on every PR. The step now deepens both sides until a merge-base exists and carries continue-on-error so an advisory check can never block the Windows-footguns job it rides in. --- .github/workflows/lint.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 633ea9ca66..6b4023ebe5 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -188,8 +188,15 @@ jobs: # Advisory: dropped public names / methods / test defs vs the PR base, printed into the log. # A refactor that silently removes a public symbol breaks plugins that import it; the Sep 2026 # decomposition opened with 1,703 such drops that reviewers had to find by hand. + # Advisory: it never fails the job. The checkout above is depth-1, so deepen both sides until + # a merge-base exists (the script refuses to report a clean diff without one, by design). - name: Public-surface diff vs base (advisory) if: github.event_name == 'pull_request' + continue-on-error: true run: | - git fetch --no-tags --depth=1 origin "${{ github.base_ref }}" + git fetch --no-tags --deepen=200 origin "${{ github.base_ref }}" HEAD + for i in 1 2 3; do + git merge-base "origin/${{ github.base_ref }}" HEAD >/dev/null 2>&1 && break + git fetch --no-tags --deepen=1000 origin "${{ github.base_ref }}" HEAD + done python scripts/ci/check_public_surface.py --base "origin/${{ github.base_ref }}" --head HEAD