Skip to content

fix: map cancelled check runs to failure, preserve raw conclusion#464

Merged
mlahargou merged 2 commits into
masterfrom
map-cancelled-to-failure
Jun 17, 2026
Merged

fix: map cancelled check runs to failure, preserve raw conclusion#464
mlahargou merged 2 commits into
masterfrom
map-cancelled-to-failure

Conversation

@mlahargou

Copy link
Copy Markdown
Member

Summary

  • Cancelled GitHub Actions runs (manual cancel or timeout) now map to failure instead of error, so they block merge like real failures
  • The description field in commit_statuses now stores the raw GitHub conclusion (cancelled, failure, timed_out, etc.) instead of the mapped state, so Grafana dashboards can differentiate between true failures and cancelled runs
  • Updated both the webhook path (githubHooks.js) and the refresh path (git-manager.js) for consistency

Context

GitHub Actions reports skipped/cancelled jobs with conclusion cancelled, which was falling into the default case in mapCheckToStatus() and being recorded as state='error'. This polluted CI dashboards with ~800 false error entries per week.

The description column is only used for display text in the Pulldasher UI popover — no code branches on its value. Storing the raw conclusion is arguably better UX since it tells users why a check failed.

Test plan

  • Deploy and verify cancelled runs show as failure (not error) in commit_statuses
  • Verify Pulldasher UI shows raw conclusion text in the status popover
  • Verify skipped runs still map to success

🤖 Generated with Claude Code

Cancelled runs (manual cancel or timeout) now map to "failure"
instead of "error" so they block merge like real failures.

The description field now stores the raw GitHub conclusion
(cancelled, failure, timed_out, etc.) instead of the mapped
state, so dashboards can differentiate between true failures
and cancelled runs. Updated both the webhook and refresh paths
for consistency.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@mlahargou mlahargou force-pushed the map-cancelled-to-failure branch from 509d9fb to b41eab0 Compare June 17, 2026 17:42
@mlahargou

mlahargou commented Jun 17, 2026

Copy link
Copy Markdown
Member Author

QA 📱

Before:
image

After:
image

@erinemay

Copy link
Copy Markdown

cr 👍 makes sense to me.

  • description now stores the actual gh output instead of a copy of state
  • cancelled now returns failure instead of falling through to error

deploy_block 🌵
Did you mean to add a timed_out case mapped to failure too? Hard to tell from the description whether you want timeout mapped to failure vs error, or if the dashboards will/can use the new description value of the test result.

These GitHub check conclusions represent runs that did not
complete successfully and should block merge.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@mlahargou

mlahargou commented Jun 17, 2026

Copy link
Copy Markdown
Member Author

Good call. QA 📱 CR 📱 carry-over

Ref: https://docs.github.com/en/graphql/reference/checks#enum-checkconclusionstate

@mlahargou mlahargou merged commit 8abb715 into master Jun 17, 2026
1 check passed
@mlahargou mlahargou deleted the map-cancelled-to-failure branch June 17, 2026 20:23
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