Skip to content

Cancel in-flight review runs when PR HEAD advances #887

@fullsend-ai-retro

Description

@fullsend-ai-retro

What happened

On PR #856, the review run at 22:14 UTC (run 25765362056) reviewed commit 5647043 but HEAD had already moved to 0a9d6cf. The review was discarded as stale-head after completing its full execution. Three other review runs in the dispatch repo (25811116008, 25810828932, 25798377140) failed, likely hitting the same stale-head condition after doing substantial work. Each failed run consumed compute for checkout, GCP setup, environment setup, and partial agent execution before detecting the stale state.

What could go better

When a new commit is pushed to a PR, any in-flight review run for that PR should be cancelled immediately rather than allowed to run to completion and then discard its results. GitHub Actions supports concurrency groups with cancel-in-progress: true which is the standard mechanism for this. Confidence is high — stale-head detection already exists (the agent correctly discards stale reviews), but it happens too late in the pipeline. Cancelling early would save the full agent execution cost. This is complementary to the dedup proposal: dedup prevents unnecessary dispatches, while cancel-in-progress stops runs that become unnecessary mid-flight.

Proposed change

Add a concurrency block to the review dispatch workflow (likely review.yml in fullsend-ai/.fullsend or the fullsend.yaml dispatcher) keyed on (source_repo, pr_number) with cancel-in-progress: true. When a new push triggers a fresh review dispatch, GitHub Actions will automatically cancel any in-flight review for the same PR. The concurrency key should NOT include the SHA (unlike the dedup proposal), so that a new push cancels the old review rather than allowing them to run in parallel. Example: concurrency: group: review-${{ inputs.repo }}-${{ inputs.pr_number }} with cancel-in-progress: true.

Validation criteria

After implementation, review runs that complete with a stale-head discard should drop to zero across the next 20 merged PRs. Any review run that starts should either complete with a valid verdict (approve/request-changes/comment) or be cancelled by GitHub Actions — never complete and then discard its own results.


Generated by retro agent from #856

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions