Skip to content

Handle every GitHub workflow_run conclusion - #440

Merged
danielmorrison merged 1 commit into
mainfrom
github-conclusions
Sep 3, 2026
Merged

Handle every GitHub workflow_run conclusion#440
danielmorrison merged 1 commit into
mainfrom
github-conclusions

Conversation

@danielmorrison

Copy link
Copy Markdown
Member

Summary

ParseGithub only understood "", "success" and "failure". Any other conclusion (cancelled, skipped, timed_out, ...) raised "Unknown status", the webhook 500ed, and the Status row kept whatever it had, usually the yellow from the in-progress ping that came right before. That is how collectiveidea/sidedoor (cancelled run on 2025-08-02) and collectiveidea/kmp-lib (2026-07-18) ended up stuck in "building" for months.

Conclusions now map as follows (GitHub's list):

conclusion effect
"" / nil (still running) building: yellow on, red untouched (unchanged)
success green
failure, timed_out, startup_failure red
cancelled, skipped, neutral, stale, action_required inconclusive: clear yellow, leave red as it was
anything else logged with a warning and treated as inconclusive instead of raising

The reasoning for "inconclusive": a cancelled or skipped run says nothing about the health of the branch, so the last real result should stand. Clearing yellow but never touching red means a stray cancel can neither wedge a project in "building" nor hide a real failure.

Test plan

  • bundle exec rspec (68 examples, 0 failures)
  • bundle exec rake standard
  • After deploy, trigger and cancel a workflow on a watched repo and confirm the row returns to its previous colour with yellow cleared

https://claude.ai/code/session_01XpsxmpLCNWZYR8kE6vhM3x

ParseGithub only understood "", "success" and "failure". Any other
conclusion (cancelled, skipped, timed_out, ...) raised "Unknown status",
the webhook 500ed and the Status row kept whatever it had, usually the
yellow from the in-progress ping that preceded it. That is how
collectiveidea/sidedoor and collectiveidea/kmp-lib got wedged in
"building" for months.

Now:
- "" / nil          -> building (yellow), red untouched, as before
- success           -> green
- failure, timed_out, startup_failure -> red
- cancelled, skipped, neutral, stale, action_required -> inconclusive:
  clear yellow, leave red as it was. These say nothing about the health
  of the branch, so the last real result stands.
- anything else     -> logged and treated as inconclusive instead of
  raising, so a new GitHub conclusion can never wedge a row again.

Claude-Session: https://claude.ai/code/session_01XpsxmpLCNWZYR8kE6vhM3x
@danielmorrison
danielmorrison merged commit a5c914e into main Sep 3, 2026
2 checks passed
@danielmorrison
danielmorrison deleted the github-conclusions branch September 3, 2026 15:38
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