Skip to content

ci: ci-ok runs unless the run was cancelled (port #111 to main) - #114

Merged
addisdev merged 1 commit into
mainfrom
claude/determined-bohr-32nsy5
Oct 25, 2026
Merged

addisdev merged 1 commit into
mainfrom
claude/determined-bohr-32nsy5

Conversation

@addisdev

@addisdev addisdev commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

What and why

This is a verbatim cherry-pick of #111 (56cb295, merged into develop on 10-24) onto main. It changes one line in .github/workflows/ci.yml: ci-ok's if: always() becomes if: ${{ !cancelled() }}. The patch is identical to develop's, so the next develop → main release merges cleanly.

Why main needs it now. ci-ok failed 25 times between 10-11 and 10-21 (every attempt of every ci run, read from the Actions API). Those 25 failures are spread over 13 distinct branches. In 18 of the 25, no job failed. In each of those, concurrency: cancel-in-progress cancelled the run because a newer push had arrived. always() still ran ci-ok, which saw cancelled and went red on a commit nobody was judging any more. This is the only cause that recurs; every other cause appears once.

# Run Branch Upstream job Cause Class
18 38332873169, 38333239526, 38333412872, 38333816051, 38731782270, 38731838944, 38832533314, 38833027843, 38833402748, 38834726266, 38835056314, 38835856771, 38841556740, 38841942465, 38842222935, 39130913067, 39337894301, 39643995192 11 branches none failed, only cancelled superseded by a newer push, and the gate ran under always() PR iteration (gate defect: this PR)
1 38680892471 feat/ci-smoke desktop / cargo check; fleet / container smoke binaries/fleet-… not a directory; EACCES mkdir /home/fleet/.fleet/data real break, fixed in the PR's next push
1 38831874782 ci/never-run-list fleet / windows task smoke scheduled task result 0x80070002 (file not found); fixed by the next push's fleet/src/service.ts change real break, fixed in the PR's next push
1 38833751945 feat/adaptive-nights collector / windows-latest explore test spawned /bin/bash (ENOENT on Windows) real break, fixed in the PR's next push
1 38834544017 feat/adaptive-nights fleet / windows-latest EBUSY unlinking fleet.db in test cleanup flake (already handled: fleet/test/helpers.ts retries the delete)
1 38806351576 (attempt 1) develop push runner-android / unit-tests Robolectric SocketException fetching android-all from Maven; attempt 2 passed infrastructure (network)
1 38847338591 (attempt 1) develop → main (0.9.0) changelog coverage release PR #98 counted as unlisted real break, since fixed (isReleasePr in scripts/changelog-coverage.mjs)
1 38833079877 release/0.0.0-coverage-check changelog coverage #88 genuinely missing; a deliberate test of the check PR iteration (intended)

Verified

  • ci.yml parses; the diff against develop's copy of the job is empty.
  • A cancelled run no longer fails the gate. I cancelled this PR's first run (40197181682) by hand after what changed had finished. ci-ok concluded cancelled, not failure and not skipped; the ci-ok check run on 7628d16 read cancelled too. A cancelled required check does not count as passing, so a run cancelled by hand still blocks the merge, as always() did.
  • CI on this PR (a ci.yml change runs every suite), from a rerun of that run.
  • Docs: none touched.
  • CHANGELOG.md: not user-visible (CI only), same as ci: ci-ok runs unless the run was cancelled #111.

What is still not true

  • A cancelled ci-ok is still a non-green mark on the superseded commit. That's intended (it is not failure), but any tool that counts every non-success as red will still count it.
  • The counts come from my own pass over the Actions API, not from the dashboard that reported 13. 13 matches the number of distinct branches with a failed ci-ok.

🤖 Generated with Claude Code

https://claude.ai/code/session_019jHjgRysB6GajV3oDppruf

#111)

always() also ran it on a run that concurrency cancel-in-progress had
cancelled, and it failed on the cancelled jobs: a red check for a commit
nobody was judging any more (taylab-launch-kit v1.40.4). It still runs
when a job fails or times out.

(cherry picked from commit 56cb295)

Ported to main from develop: main's ci-ok gate still used always(), and
18 of the 25 ci-ok failures 10-11..10-21 were runs that cancel-in-progress
had cancelled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019jHjgRysB6GajV3oDppruf
@addisdev
addisdev merged commit 6c3d88a into main Oct 25, 2026
33 of 54 checks passed
addisdev pushed a commit that referenced this pull request Oct 26, 2026
Brings back what landed on main without going through develop:
#112 (Node.js 24 action majors), #114 (already here as #111; identical),
#110 vite 7.3.7, #109 fastify 5.12.6, #113 fast-uri, and #116 (gradlew.bat
and OFL-IBMPlex.txt stored with LF).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019jHjgRysB6GajV3oDppruf
addisdev pushed a commit that referenced this pull request Oct 26, 2026
ubuntu-latest has started handing out ubuntu-26.04 images, where
webkit2gtk-driver is gone ("no installation candidate"; replaced by
webkitgtk-webdriver, which still ships /usr/bin/WebKitWebDriver). The
desktop launch smoke failed at apt-get on PR #117's first run; #114's
green run the day before was on ubuntu-24.04.

Pick the package by whether apt has a candidate for the new name:
`apt-cache show` succeeds on 24.04 too, which knows the name and has
nothing to install under it. Checked against both releases' indexes:
24.04 picks webkit2gtk-driver 2.52.6, 26.04 picks webkitgtk-webdriver
2.52.0, and every other package in the step has a 26.04 candidate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019jHjgRysB6GajV3oDppruf
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