Skip to content

Commit 2dcc4ce

Browse files
committed
fix(webhooks): poll GitHub's live test merge every 2s and build our own when it is unreachable
The probe now runs immediately, then every two seconds up to a bounded budget, and accepts a merge as soon as its second parent is the payload head — including when the API has already moved to a newer head, which is the measured rapid-push race. A first parent older than the API's base is logged, not rejected: GitHub freezes a head's merge when only the base moves and its own run for the push used that commit. When no merge of the payload head can be resolved, the engine builds merge(current base tip, payload head) with the merge builder and serves the run from its own mirror, with a warning. The bare `refs/pull/{n}/head` fallback is gone.
1 parent acdfcd1 commit 2dcc4ce

3 files changed

Lines changed: 972 additions & 435 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,12 @@ Releases before v0.27.0 predate the changelog.
6262
the runner itself, and the official runner's Docker command shape are
6363
unchanged.
6464

65-
- **A burst of pull-request deliveries no longer parks the webhook worker
66-
pool in merge-state polling**: a delivery whose payload head is no longer
67-
the pull request's current head falls back after a single probe instead of
68-
re-polling a merge that cannot be produced, at most half the worker pool may
69-
be waiting on GitHub's mergeability computation at once (a delivery that
70-
cannot claim a slot falls back to `refs/pull/{n}/head` rather than holding a
71-
worker), and a fork delivery the fork-workflow policy will skip spends no
72-
GitHub calls on a merge nothing will run.
65+
- **Fresh pull-request merge resolution**: Webhook-delivered `pull_request` and
66+
`pull_request_review` runs poll for GitHub's live test merge and accept it
67+
only when its second parent matches the payload head. If unavailable, the
68+
engine builds a merge of the current base and pinned payload head and serves
69+
it from its mirror; it never falls back to the bare pull-request head.
70+
Conflicted pull requests do not start `pull_request` runs.
7371

7472
- **Server integration tests no longer fail on a leaked static PAT**:
7573
`cargo test` shares one process environment across a whole test binary, so

0 commit comments

Comments
 (0)