Skip to content

[ci] Fail required gates closed on cancellations - #3514

Open
joshlf wants to merge 1 commit into
Grlosy5kwxiwxexwdtdxzx7i2ezmymtrqfrom
G25sqrb3x2qf3c2e26jcymmrjhitfoijb
Open

[ci] Fail required gates closed on cancellations#3514
joshlf wants to merge 1 commit into
Grlosy5kwxiwxexwdtdxzx7i2ezmymtrqfrom
G25sqrb3x2qf3c2e26jcymmrjhitfoijb

Conversation

@joshlf

@joshlf joshlf commented Jul 31, 2026

Copy link
Copy Markdown
Member

The required sentinels used failure(), which is false when an upstream
job is cancelled or skipped. GitHub treats a skipped required job as a
successful check, so those results could silently satisfy branch
protection.

Run each sentinel with always() and inspect every needs result in a
shared, tested action. Require success by default, reject workflow
cancellation and unknown states, and make intentional skips an explicit
policy naming an existing dependency.

Strengthen the structural checker to require an exact dependency set,
always(), and exactly one shared result checker invocation. This makes
new jobs and conditions fail closed until their gate policy is updated.


Latest Update: v7 — Compare vs v6

📚 Full Patch History

Links show the diff between the row version and the column version.

Version v6 v5 v4 v3 v2 v1 Base
v7 vs v6 vs v5 vs v4 vs v3 vs v2 vs v1 vs Base
v6 vs v5 vs v4 vs v3 vs v2 vs v1 vs Base
v5 vs v4 vs v3 vs v2 vs v1 vs Base
v4 vs v3 vs v2 vs v1 vs Base
v3 vs v2 vs v1 vs Base
v2 vs v1 vs Base
v1 vs Base
⬇️ Download this PR

Branch

git fetch origin refs/heads/G25sqrb3x2qf3c2e26jcymmrjhitfoijb && git checkout -b pr-G25sqrb3x2qf3c2e26jcymmrjhitfoijb FETCH_HEAD

Checkout

git fetch origin refs/heads/G25sqrb3x2qf3c2e26jcymmrjhitfoijb && git checkout FETCH_HEAD

Cherry Pick

git fetch origin refs/heads/G25sqrb3x2qf3c2e26jcymmrjhitfoijb && git cherry-pick FETCH_HEAD

Pull

git pull origin refs/heads/G25sqrb3x2qf3c2e26jcymmrjhitfoijb

Stacked PRs enabled by GHerrit.

@codecov-commenter

codecov-commenter commented Jul 31, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.85%. Comparing base (a06310f) to head (1d9867a).

Additional details and impacted files
@@                        Coverage Diff                         @@
##           Grlosy5kwxiwxexwdtdxzx7i2ezmymtrq    #3514   +/-   ##
==================================================================
  Coverage                              91.85%   91.85%           
==================================================================
  Files                                     20       20           
  Lines                                   6093     6093           
==================================================================
  Hits                                    5597     5597           
  Misses                                   496      496           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@joshlf
joshlf force-pushed the Grlosy5kwxiwxexwdtdxzx7i2ezmymtrq branch from 72c863c to e166a02 Compare July 31, 2026 23:39
@joshlf
joshlf force-pushed the G25sqrb3x2qf3c2e26jcymmrjhitfoijb branch from f0716f1 to d04c064 Compare July 31, 2026 23:39
@joshlf
joshlf force-pushed the Grlosy5kwxiwxexwdtdxzx7i2ezmymtrq branch from e166a02 to 43998f3 Compare July 31, 2026 23:45
@joshlf
joshlf force-pushed the G25sqrb3x2qf3c2e26jcymmrjhitfoijb branch from d04c064 to 42b7a55 Compare July 31, 2026 23:45
@joshlf
joshlf force-pushed the Grlosy5kwxiwxexwdtdxzx7i2ezmymtrq branch from 43998f3 to df82b8b Compare August 1, 2026 00:04
@joshlf
joshlf force-pushed the G25sqrb3x2qf3c2e26jcymmrjhitfoijb branch from 42b7a55 to 5093546 Compare August 1, 2026 00:04
The required sentinels used `failure()`, which is false when an upstream
job is cancelled or skipped. GitHub treats a skipped required job as a
successful check, so those results could silently satisfy branch
protection.

Run each sentinel with `always()` and inspect every `needs` result in a
shared, tested action. Require success by default, reject workflow
cancellation and unknown states, and make intentional skips an explicit
policy naming an existing dependency.

Strengthen the structural checker to require an exact dependency set,
`always()`, and exactly one shared result checker invocation. This makes
new jobs and conditions fail closed until their gate policy is updated.

gherrit-pr-id: G25sqrb3x2qf3c2e26jcymmrjhitfoijb
@joshlf
joshlf force-pushed the Grlosy5kwxiwxexwdtdxzx7i2ezmymtrq branch from df82b8b to a06310f Compare August 1, 2026 00:08
@joshlf
joshlf force-pushed the G25sqrb3x2qf3c2e26jcymmrjhitfoijb branch from 5093546 to 1d9867a Compare August 1, 2026 00:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants