Skip to content

chore(ci): use !cancelled() instead of always() for final job#906

Merged
jdx merged 1 commit intomainfrom
ci/cancelled-fix
May 3, 2026
Merged

chore(ci): use !cancelled() instead of always() for final job#906
jdx merged 1 commit intomainfrom
ci/cancelled-fix

Conversation

@jdx
Copy link
Copy Markdown
Owner

@jdx jdx commented May 3, 2026

Summary

  • Combined with the workflow's cancel-in-progress group, if: always() overrides cancellation and runs the final aggregator even on superseded commits.
  • !cancelled() still runs on upstream success or failure but skips when the workflow is cancelled — saves a runner and avoids confusing error annotations on already-superseded shas.
  • Caught by Cursor Bugbot on a sibling repo (chore(ci): add final aggregator job for branch protection endevco/pitchfork#413). Same final-aggregator pattern + cancel-in-progress: true here, so the same fix applies.

Test plan

  • CI passes on this PR

🤖 Generated with Claude Code


Note

Low Risk
Low risk CI-only change that adjusts when the final job runs; main impact is potentially skipping failure aggregation on cancelled/superseded runs.

Overview
Updates the GitHub Actions final aggregator in ci.yml to use if: ${{ !cancelled() }} instead of always(), so it still runs after upstream success/failure but does not run when the workflow is cancelled (e.g., due to cancel-in-progress). This avoids consuming runners and emitting misleading failure annotations on superseded commits.

Reviewed by Cursor Bugbot for commit 3b8b543. Bugbot is set up for automated code reviews on this repo. Configure here.

Combined with the workflow's `cancel-in-progress` group, `if: always()`
overrides cancellation and runs the aggregator even on superseded
commits. `!cancelled()` still runs on upstream success or failure but
skips when the workflow is cancelled.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented May 3, 2026

Greptile Summary

Replaces if: always() with if: ${{ !cancelled() }} on the final aggregator job in the CI workflow. Since the workflow already uses cancel-in-progress: true, always() was causing the aggregator to run even on cancelled (superseded) workflow runs, wasting a runner and generating confusing annotations — !cancelled() preserves the "run on success or failure" semantics while correctly respecting cancellation.

Confidence Score: 5/5

Safe to merge — correct, well-understood GitHub Actions best practice with no functional regressions.

Single-line CI config fix with no code logic changes; the semantics of !cancelled() vs always() are well-defined and the fix directly addresses the stated problem with cancel-in-progress.

No files require special attention.

Important Files Changed

Filename Overview
.github/workflows/ci.yml Single-line change: if: always()if: ${{ !cancelled() }} on the final aggregator job; correct fix for the cancel-in-progress interaction.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[New commit pushed] --> B{cancel-in-progress}
    B -- "existing run active" --> C[Cancel previous workflow]
    B -- "no existing run" --> D[Run all CI jobs]
    C --> E{final job condition}
    D --> F[All jobs complete success/failure]
    F --> E
    E -- "always() ❌" --> G[final runs anyway\nwastes runner + noisy annotations]
    E -- "!cancelled() ✅" --> H{Was workflow cancelled?}
    H -- yes --> I[final skipped]
    H -- no --> J[final runs\nchecks all job results]
Loading

Reviews (1): Last reviewed commit: "chore(ci): use !cancelled() instead of a..." | Re-trigger Greptile

@jdx jdx merged commit 1317e8c into main May 3, 2026
22 checks passed
@jdx jdx deleted the ci/cancelled-fix branch May 3, 2026 15:28
@jdx jdx mentioned this pull request May 3, 2026
jdx added a commit that referenced this pull request May 5, 2026
### 🚀 Features

- **(builtins)** add `buildifier` format and lint built-ins by
[@plx](https://github.com/plx) in
[#896](#896)

### 🐛 Bug Fixes

- **(step)** only auto-batch when rendered command exceeds ARG_MAX by
[@jdx](https://github.com/jdx) in
[#901](#901)

### 📚 Documentation

- thank Namespace for GitHub Actions runner support by
[@jdx](https://github.com/jdx) in
[#895](#895)

### 🔍 Other Changes

- **(ci)** use !cancelled() instead of always() for final job by
[@jdx](https://github.com/jdx) in
[#906](#906)
- **(docs)** remove shrill.en.dev analytics script by
[@jdx](https://github.com/jdx) in
[#903](#903)
- remove rust-cache from release jobs by [@jdx](https://github.com/jdx)
in [#893](#893)
- invert CLAUDE.md/AGENTS.md so AGENTS.md is canonical by
[@jdx](https://github.com/jdx) in
[#905](#905)
- set dev profile debug to 1 by [@jdx](https://github.com/jdx) in
[#907](#907)

### 📦️ Dependency Updates

- update anthropics/claude-code-action digest to fefa07e by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#897](#897)
- update jdx/mise-action digest to 1648a78 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#898](#898)
- update apple-actions/import-codesign-certs action to v7 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#900](#900)
- update autofix-ci/action action to v1.3.4 by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#899](#899)
- lock file maintenance by
[@renovate[bot]](https://github.com/renovate[bot]) in
[#908](#908)

### New Contributors

- @plx made their first contribution in
[#896](#896)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk release bookkeeping: primarily version string updates across
manifests and docs with no functional code changes in this diff.
> 
> **Overview**
> Updates the project for the `v1.45.0` release by bumping the crate/CLI
version (`Cargo.toml`, `Cargo.lock`, `hk.usage.kdl`, generated CLI docs)
and adding the `1.45.0` entry to `CHANGELOG.md`.
> 
> Refreshes documentation and example configs to reference the new
versioned Pkl package URLs (`docs/*.md`, `docs/public/*.pkl`,
`hk-example.pkl`).
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
cfe2da5. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: mise-en-dev <123107610+mise-en-dev@users.noreply.github.com>
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request May 8, 2026
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [hk](https://github.com/jdx/hk) | minor | `1.43.0` → `1.45.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>jdx/hk (hk)</summary>

### [`v1.45.0`](https://github.com/jdx/hk/blob/HEAD/CHANGELOG.md#1450---2026-05-04)

[Compare Source](jdx/hk@v1.44.3...v1.45.0)

##### 🚀 Features

- **(builtins)** add `buildifier` format and lint built-ins by [@&#8203;plx](https://github.com/plx) in [#&#8203;896](jdx/hk#896)

##### 🐛 Bug Fixes

- **(step)** only auto-batch when rendered command exceeds ARG\_MAX by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;901](jdx/hk#901)

##### 📚 Documentation

- thank Namespace for GitHub Actions runner support by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;895](jdx/hk#895)

##### 🔍 Other Changes

- **(ci)** use !cancelled() instead of always() for final job by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;906](jdx/hk#906)
- **(docs)** remove shrill.en.dev analytics script by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;903](jdx/hk#903)
- remove rust-cache from release jobs by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;893](jdx/hk#893)
- invert CLAUDE.md/AGENTS.md so AGENTS.md is canonical by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;905](jdx/hk#905)
- set dev profile debug to 1 by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;907](jdx/hk#907)

##### 📦️ Dependency Updates

- update anthropics/claude-code-action digest to [`fefa07e`](jdx/hk@fefa07e) by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;897](jdx/hk#897)
- update jdx/mise-action digest to [`1648a78`](jdx/hk@1648a78) by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;898](jdx/hk#898)
- update apple-actions/import-codesign-certs action to v7 by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;900](jdx/hk#900)
- update autofix-ci/action action to v1.3.4 by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;899](jdx/hk#899)
- lock file maintenance by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;908](jdx/hk#908)

##### New Contributors

- [@&#8203;plx](https://github.com/plx) made their first contribution in [#&#8203;896](jdx/hk#896)

### [`v1.44.3`](https://github.com/jdx/hk/blob/HEAD/CHANGELOG.md#1443---2026-04-30)

[Compare Source](jdx/hk@v1.44.2...v1.44.3)

##### 🐛 Bug Fixes

- **(hook)** do not stage fixes when fail\_on\_fix=true by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;892](jdx/hk#892)
- use site domain for plausible data-domain by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;886](jdx/hk#886)
- make text-mode progress output usable in CI by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;890](jdx/hk#890)

##### 📚 Documentation

- prefix GitHub star count with ★ glyph by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;883](jdx/hk#883)

##### 🔍 Other Changes

- **(release)** dedupe sponsor section in release notes by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;881](jdx/hk#881)
- switch analytics from gtm/goatcounter to plausible by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;885](jdx/hk#885)
- migrate to namespace.so runners by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;891](jdx/hk#891)

### [`v1.44.2`](https://github.com/jdx/hk/blob/HEAD/CHANGELOG.md#1442---2026-04-26)

[Compare Source](jdx/hk@v1.44.1...v1.44.2)

##### 🐛 Bug Fixes

- **(builtins)** silence pklr deprecation warnings on Builtins.pkl load by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;880](jdx/hk#880)
- **(ci)** serialize docs lint step by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;874](jdx/hk#874)
- **(config)** include main pkl path in cache fresh files by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;879](jdx/hk#879)
- **(docs)** stack banner message and link on mobile by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;865](jdx/hk#865)
- **(docs)** pin banner close button to top-right corner on mobile by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;867](jdx/hk#867)

##### 📚 Documentation

- **(site)** show release version and github stars by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;872](jdx/hk#872)

##### 🔍 Other Changes

- add pr-closer workflow by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;876](jdx/hk#876)

##### 📦️ Dependency Updates

- bump communique 1.0.3 → 1.0.4 by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;868](jdx/hk#868)
- update anthropics/claude-code-action digest to [`2da6cfa`](jdx/hk@2da6cfa) by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;869](jdx/hk#869)
- update anthropics/claude-code-action digest to [`567fe95`](jdx/hk@567fe95) by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;870](jdx/hk#870)
- bump communique to 1.1.2 by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;875](jdx/hk#875)

### [`v1.44.1`](https://github.com/jdx/hk/blob/HEAD/CHANGELOG.md#1441---2026-04-24)

[Compare Source](jdx/hk@v1.44.0...v1.44.1)

##### 🐛 Bug Fixes

- **(git)** skip untracked scan when HK\_STASH\_UNTRACKED=false by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;861](jdx/hk#861)
- **(run)** add post-commit and pre-rebase subcommands by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;858](jdx/hk#858)

##### 📚 Documentation

- **(install)** recommend global hooks as primary setup path by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;855](jdx/hk#855)
- add cross-site announcement banner by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;857](jdx/hk#857)
- respect banner expires field by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;862](jdx/hk#862)

##### 🔍 Other Changes

- vendor bats test helpers instead of git submodules by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;859](jdx/hk#859)

##### 📦️ Dependency Updates

- bump communique to 1.0.3 by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;863](jdx/hk#863)
- update anthropics/claude-code-action digest to [`e58dfa5`](jdx/hk@e58dfa5) by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;864](jdx/hk#864)

### [`v1.44.0`](https://github.com/jdx/hk/blob/HEAD/CHANGELOG.md#1440---2026-04-23)

[Compare Source](jdx/hk@v1.43.0...v1.44.0)

##### 🚀 Features

- **(check)** implement --plan, --why, and --json by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;848](jdx/hk#848)
- **(cocogitto)** add cocogitto conventional commits config to hk builtin config by [@&#8203;hituzi-no-sippo](https://github.com/hituzi-no-sippo) in [#&#8203;838](jdx/hk#838)
- **(git)** support GIT\_DIR/GIT\_WORK\_TREE for bare-repo dotfile managers by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;847](jdx/hk#847)
- **(install)** use Git 2.54 config-based hooks with --global support by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;853](jdx/hk#853)

##### 🐛 Bug Fixes

- use text progress in CI by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;845](jdx/hk#845)

##### 📚 Documentation

- generalize agent guidelines by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;846](jdx/hk#846)
- add releases nav and aube lock by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;849](jdx/hk#849)

##### 🔍 Other Changes

- **(release)** append en.dev sponsor blurb to release notes by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;854](jdx/hk#854)
- bump communique to 1.0.1 by [@&#8203;jdx](https://github.com/jdx) in [#&#8203;850](jdx/hk#850)

##### 📦️ Dependency Updates

- update actions-rust-lang/setup-rust-toolchain digest to [`2b1f5e9`](jdx/hk@2b1f5e9) by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;832](jdx/hk#832)
- update anthropics/claude-code-action digest to [`c3d45e8`](jdx/hk@c3d45e8) by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;833](jdx/hk#833)
- update rust crate tokio to v1.52.1 by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;834](jdx/hk#834)
- update actions/upload-pages-artifact action to v5 by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;835](jdx/hk#835)
- update taiki-e/upload-rust-binary-action digest to [`f0d45ae`](jdx/hk@f0d45ae) by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;839](jdx/hk#839)
- update rust crate clx to v2 by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;836](jdx/hk#836)
- update anthropics/claude-code-action digest to [`0d2971c`](jdx/hk@0d2971c) by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;841](jdx/hk#841)
- update anthropics/claude-code-action digest to [`38ec876`](jdx/hk@38ec876) by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;842](jdx/hk#842)
- lock file maintenance by [@&#8203;renovate\[bot\]](https://github.com/renovate\[bot]) in [#&#8203;851](jdx/hk#851)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNjguNSIsInVwZGF0ZWRJblZlciI6IjQzLjE2OC41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiLCJhdXRvbWF0aW9uOmJvdC1hdXRob3JlZCIsImRlcGVuZGVuY3ktdHlwZTo6bWlub3IiXX0=-->
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.

1 participant