You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CI watch reads a same-head run's cancelled checks as failed after a PR is labelled #927
#893 (PR #925) adds the labeled activity type to CI's pull_request trigger, so the test:macos label starts the full macOS suite on a PR's current head. The concurrency group cancels an older CI run still in progress for the PR. With synchronize the cancelled run was on an older commit; with labeled (and reopened, already a default type) it is on the same head.
The cancelled run's unfinished jobs stay on that head as cancelled check runs, beside the new run's. GitHub::checks_on (src/github.rs:787) reads commits/{sha}/check-runs, which returns check runs of every check suite on the commit, and CI watch's reading (src/ci.rs:464-471) reads Cancelled as Failed. So a Run whose CI watch is on a PR into main when someone labels it mid-run can see failures that never happened and start a Repair.
Evidence
On PR #925, head d554e2d, test:macos was added while CI run 39537982242 was still running its Linux test job. GitHub cancelled that run and started 39539107043. Then:
listed test three times on the one head: cancelled (run 39537982242), success (an earlier probe run on the same commit) and in_progress (run 39539107043).
#893's brief fixes both sides of the conflict: "The concurrency group and cancel-in-progress policy stay as they are", and "The factory's CI watch accepts success, neutral or skipped checks. Don't change it." Within those, the workflow can't keep the cancelled check runs off the head. PR #925 only documents the limit in docs/ci-performance.md: label a PR after its CI run has finished. Fixing it means either:
CI watch reading a check run as superseded when a newer run of the same workflow exists for the same head;
or a concurrency policy that doesn't cancel on labeled.
The Day shift has to choose which. #839 is related: it covers checks cancelled by a newer push, where the head changes; here it doesn't.
Folded into #839. Its Agent Brief covers this same-head case alongside #839's moved Issue branch: when a workflow has more than one run on the watched head, only the most recent run's checks count. Closing this one so the fix is a single Ticket.
Activity
Address review: point the gate's filter comment at the docs, keep the…
JacobStephens2 commentedon Oct 21, 2026
Folded into #839. Its Agent Brief covers this same-head case alongside #839's moved Issue branch: when a workflow has more than one run on the watched head, only the most recent run's checks count. Closing this one so the fix is a single Ticket.