Skip to content

update PRs: a run that never ran decides nothing - #570

Merged
Nawid3333 merged 1 commit into
mainfrom
ci/never-run-runs
Oct 24, 2026
Merged

Nawid3333 merged 1 commit into
mainfrom
ci/never-run-runs

Conversation

@Nawid3333

Copy link
Copy Markdown
Owner

Found by the first real rolling pull request of the player libraries, #567, right after #566 merged.

The bug, as measured

A pull request opened with GITHUB_TOKEN gets pull_request runs that wait for an approval and never run: completed, action_required. They are created after the runs toolchain-updates.yml starts on the branch, so they have the higher run ids. On #567's commit 2b4d8a0a:

40050773333 CI           pull_request       completed action_required
40050773308 Real streams pull_request       completed action_required
40050767568 Real streams workflow_dispatch  in_progress
40050766100 CI           workflow_dispatch  in_progress

Two lookups take "the newest run on the commit":

  • update-prs.yml's live-suite check would read action_required as a failed live run, so the pull request could never be called ready;
  • live-streams.yml's hand-off would take the action_required CI run as the newest, see that it did not pass, and hand nothing over, so no verdict would come after the live suite.

The fix

Both lookups, and the weekly check for a rolling pull request's head without a deciding live run (toolchain-updates.yml), leave out runs concluded action_required or skipped.

Tested

New cases in update-prs-decide.test.sh (a newer never-run run next to one that passed: ready; only a never-run run: the live suite is started), live-streams-hand-off.test.sh (the CI run that ran is handed over) and toolchain-updates.test.sh (a head with only a never-run live run gets one). In WSL (verify:linux workflows): without the fix, 4 checks fail (1 + 2 + 1); with it, 230, 704 and 96 checks pass, actionlint and zizmor included.

#567 itself: once this is on main, its decision is started again by hand (Update PRs, with its CI run), and its branch then takes main, so the chain runs once more on the fixed files.

🤖 Generated with Claude Code

The first rolling pull request of the player libraries (#567) showed it:
a pull request this repository's token opens gets pull_request runs that
wait for an approval and never run (completed, action_required), and
they come AFTER the runs started on its branch, so they are the newest
on its commit. update-prs.yml read that live run as a failure (the pull
request could never be ready), and the live suite's hand-off took that
CI run as the newest and handed nothing over (no verdict after the live
suite). Both now leave out runs concluded action_required or skipped,
and so does the weekly check for a head without a deciding live run.
Each new test fails without this (4 checks red, run in WSL).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Nawid3333
Nawid3333 merged commit de081fa into main Oct 24, 2026
26 checks passed
@Nawid3333
Nawid3333 deleted the ci/never-run-runs branch October 24, 2026 01:56
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