From ed50c6e04f5226664a532e811838c9eaf512a2e6 Mon Sep 17 00:00:00 2001 From: Rod Boev Date: Thu, 29 Oct 2026 15:31:09 -0500 Subject: [PATCH 1/7] fix(ci): cancel superseded sibling pin checks New PR commits make earlier dependency verdicts obsolete. Stop those runs so they release runners for the current commit, while each merge-group run keeps its own result. --- .github/workflows/sibling-pins.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/sibling-pins.yml b/.github/workflows/sibling-pins.yml index d32cac443f..28b854cf86 100644 --- a/.github/workflows/sibling-pins.yml +++ b/.github/workflows/sibling-pins.yml @@ -12,6 +12,10 @@ on: merge_group: types: [checks_requested] +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} + cancel-in-progress: true + permissions: contents: read From 9bffee95571b7e8b91063521cd267adb348fb86e Mon Sep 17 00:00:00 2001 From: Rod Boev Date: Thu, 29 Oct 2026 15:31:17 -0500 Subject: [PATCH 2/7] fix(ci): avoid sibling pin checks on PR text edits Changing a PR title or description leaves its dependency files unchanged. Reserve runner time for events that can change the dependency verdict. --- .github/workflows/sibling-pins.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sibling-pins.yml b/.github/workflows/sibling-pins.yml index 28b854cf86..00df50e8c5 100644 --- a/.github/workflows/sibling-pins.yml +++ b/.github/workflows/sibling-pins.yml @@ -8,7 +8,7 @@ name: Sibling pins on main # The action reads only the candidate's dependency files. on: pull_request: - types: [opened, synchronize, reopened, edited] + types: [opened, synchronize, reopened] merge_group: types: [checks_requested] From 3816e08a05a8d50572dede14b9872e45722db8a2 Mon Sep 17 00:00:00 2001 From: Rod Boev Date: Thu, 29 Oct 2026 16:22:03 -0500 Subject: [PATCH 3/7] fix(ci): recheck sibling pins when a PR base changes The sibling pin check reads the proposed merge with the PR's base. A new base can bring different dependency pins, so dropping all PR edits left a stale verdict after a retarget. Title and description edits still cannot change that verdict and skip the check. A skipped job reports success. The skipped run gets its own check name so it cannot satisfy the required sibling check. It also gets its own concurrency group, so a text edit cannot cancel a check that is still running for the latest commit. --- .github/workflows/sibling-pins.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/sibling-pins.yml b/.github/workflows/sibling-pins.yml index 00df50e8c5..196a52316e 100644 --- a/.github/workflows/sibling-pins.yml +++ b/.github/workflows/sibling-pins.yml @@ -8,12 +8,12 @@ name: Sibling pins on main # The action reads only the candidate's dependency files. on: pull_request: - types: [opened, synchronize, reopened] + types: [opened, synchronize, reopened, edited] merge_group: types: [checks_requested] concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} + group: ${{ github.workflow }}-${{ github.event.action == 'edited' && !github.event.changes.base && github.run_id || github.event.pull_request.number || (github.event_name == 'pull_request' && github.ref) || github.run_id }} cancel-in-progress: true permissions: @@ -21,7 +21,8 @@ permissions: jobs: sibling-pins: - name: Sibling pins on main + name: ${{ github.event.action == 'edited' && !github.event.changes.base && 'PR metadata' || 'Sibling pins on main' }} + if: github.event.action != 'edited' || github.event.changes.base runs-on: ubuntu-latest timeout-minutes: 10 steps: From 9e7782d88344231c9b4161026ae0f1e6a54e57ac Mon Sep 17 00:00:00 2001 From: Rod Boev Date: Thu, 29 Oct 2026 16:36:35 -0500 Subject: [PATCH 4/7] ci: keep sibling cancellation independent of PR payload fields Replacement dependency checks need the same cancellation group even when an event omits pull request details. A single merge-ref key keeps those runs together while text-only edits retain their independent groups. --- .github/workflows/sibling-pins.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sibling-pins.yml b/.github/workflows/sibling-pins.yml index 196a52316e..e5fb58f2bd 100644 --- a/.github/workflows/sibling-pins.yml +++ b/.github/workflows/sibling-pins.yml @@ -13,7 +13,7 @@ on: types: [checks_requested] concurrency: - group: ${{ github.workflow }}-${{ github.event.action == 'edited' && !github.event.changes.base && github.run_id || github.event.pull_request.number || (github.event_name == 'pull_request' && github.ref) || github.run_id }} + group: ${{ github.workflow }}-${{ github.event.action == 'edited' && !github.event.changes.base && github.run_id || (github.event_name == 'pull_request' && github.ref) || github.run_id }} cancel-in-progress: true permissions: From 4bd40e13c5c955fe2f7fb74bee0c9300934a70b8 Mon Sep 17 00:00:00 2001 From: Rod Boev Date: Thu, 29 Oct 2026 17:07:19 -0500 Subject: [PATCH 5/7] ci: document sibling check edit handling A title or description edit must preserve an active sibling check and its required result, while a base edit still needs validation. Keep that rationale next to the cancellation groups so later workflow changes retain both cases. --- .github/workflows/sibling-pins.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/sibling-pins.yml b/.github/workflows/sibling-pins.yml index e5fb58f2bd..b835afeec0 100644 --- a/.github/workflows/sibling-pins.yml +++ b/.github/workflows/sibling-pins.yml @@ -12,6 +12,8 @@ on: merge_group: types: [checks_requested] +# Text edits use a separate group and check name to preserve the required result. +# Base changes still rerun the checker because they can change candidate pins. concurrency: group: ${{ github.workflow }}-${{ github.event.action == 'edited' && !github.event.changes.base && github.run_id || (github.event_name == 'pull_request' && github.ref) || github.run_id }} cancel-in-progress: true From 0a687bdb7f28cc2519a3832753cd34fa7c084a4b Mon Sep 17 00:00:00 2001 From: Rod Boev Date: Thu, 29 Oct 2026 19:17:20 -0500 Subject: [PATCH 6/7] ci: keep skipped check names readable GitHub can show a conditional job name as its literal expression when the job is skipped. Keep the check name readable for title and body edits, and describe the existing skip and cancellation behavior accurately. --- .github/workflows/sibling-pins.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/sibling-pins.yml b/.github/workflows/sibling-pins.yml index b835afeec0..14f9c35860 100644 --- a/.github/workflows/sibling-pins.yml +++ b/.github/workflows/sibling-pins.yml @@ -12,8 +12,8 @@ on: merge_group: types: [checks_requested] -# Text edits use a separate group and check name to preserve the required result. -# Base changes still rerun the checker because they can change candidate pins. +# Text edits skip sibling-pin work without cancelling code validation. +# Base changes still rerun the check. concurrency: group: ${{ github.workflow }}-${{ github.event.action == 'edited' && !github.event.changes.base && github.run_id || (github.event_name == 'pull_request' && github.ref) || github.run_id }} cancel-in-progress: true @@ -23,7 +23,7 @@ permissions: jobs: sibling-pins: - name: ${{ github.event.action == 'edited' && !github.event.changes.base && 'PR metadata' || 'Sibling pins on main' }} + name: Sibling pins on main if: github.event.action != 'edited' || github.event.changes.base runs-on: ubuntu-latest timeout-minutes: 10 From cdf4bbadec0bc8dfdd5c7f6fc4770b35d1f50f1d Mon Sep 17 00:00:00 2001 From: Rod Boev <106971+rodboev@users.noreply.github.com> Date: Thu, 29 Oct 2026 20:37:09 -0500 Subject: [PATCH 7/7] fix(ci): preserve sibling pin results after metadata edits Check consumers group results by name. Skipped title and body edits need a distinct name so they leave the dependency verdict visible while avoiding runner work for those edits. --- .github/workflows/sibling-pins.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sibling-pins.yml b/.github/workflows/sibling-pins.yml index 14f9c35860..5e1af353a1 100644 --- a/.github/workflows/sibling-pins.yml +++ b/.github/workflows/sibling-pins.yml @@ -23,7 +23,7 @@ permissions: jobs: sibling-pins: - name: Sibling pins on main + name: ${{ github.event.action == 'edited' && !github.event.changes.base && 'PR metadata' || 'Sibling pins on main' }} if: github.event.action != 'edited' || github.event.changes.base runs-on: ubuntu-latest timeout-minutes: 10