Mid-stack PRs miss stack-aware `pull_request` triggers: PRs are created before the stack object exists
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 45/100
Direção de pesquisa
Comece pelo fluxo de gh stack submit e reproduza a stack de quatro ramificações com um workflow pull_request filtrado para main. Rastreie quando os PRs membros são criados, quando a stack é registrada e como o comportamento do disparo do workflow é observado por meio das check suites. Está concluído quando cada PR membro recebe a execução esperada do workflow, incluindo os PRs intermediários da stack criados antes do registro da stack.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
What happened
On gh stack submit, PRs are created a few seconds before the stack object itself exists. pull_request workflows with a branches: filter are evaluated against each PR's literal base at open time, so mid-stack PRs are filtered out and never dispatched. They are not re-evaluated once the stack is registered, so they permanently show no checks.
This contradicts the documented behaviour in Optimizing CI for stacked pull requests: "A workflow configured to run on pull_request events targeting main runs for every pull request in the stack."
Reproduction
-
In a repo with the stacks preview enabled, add a workflow with:
on: pull_request: branches: [ "main" ] -
Create a 4-branch stack and
gh stack submit. -
Observe CI runs only on the bottom PR and the topmost PR. The middle PRs get a check suite with zero runs.
Observed timeline
Stack of 4 (PRs #10–#13, stack #14, stack.base.ref = main, size: 4):
| Time (UTC) | Event | Workflow dispatched |
|---|---|---|
| 13:24:13 | PR #10 opened (7 → main) |
yes — literal base is already main |
| 13:24:17 | PR #11 opened (8 → 7) |
no — check suite 85146388656, latest_check_runs_count: 0 |
| 13:24:21 | PR #12 opened (9 → 8) |
no — check suite 85146406327, latest_check_runs_count: 0 |
| 13:24:24 | PR #13 opened (10 → 9) |
no — first check suite, 0 runs |
| 13:24:26 | stack #14 created (GET /repos/{owner}/{repo}/stacks/14 → created_at) |
|
| 13:24:31 | second check suite on PR #13's head | yes — this is the run that appears |
The bottom PR runs because its base is literally main, independent of any stack awareness. The top PR runs because its dispatch landed after stack registration at 13:24:26 and got a second check suite. PRs #11 and #12 had their opened events fully processed before the stack existed, were rejected by the branches: [main] filter, and nothing re-dispatched them afterwards.
Reproduced identically on an earlier stack of 3 in the same repo: bottom PR ran, middle skipped, top ran.
Expected behavior
Every PR in the stack is evaluated against stack.base.ref, as documented — either by creating the stack before its PRs, or by re-evaluating pull_request workflow triggers for all member PRs once the stack is registered.
Actual behavior
Only PRs whose trigger evaluation happens after stack registration get stack-aware treatment. Mid-stack PRs are silently left with no checks, which is indistinguishable from "queued" and blocks merge on repos with required checks.
Not a duplicate of
- #319 — merge refs are healthy here:
refs/pull/{10,11,12,13}/mergeall exist and point at current commits, and all four PRs reportmergeable: true. - #379 — that concerns
pathsfilters being selected from the topmost PR. This isbranchesfilters and a registration-ordering race; the affected PRs get a check suite with zero runs rather than a workflow selected from the wrong PR.
Workaround
Remove the branches: filter from the pull_request trigger so CI runs regardless of base.
- Linguagem predominante
- Go
- Estrelas
- 1.5k
- Forks
- 73
- Merge médio
- 1d 8h
- PRs com merge (30d)
- 7
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de github/gh-stack
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
-
feature request topic: cli - general
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
feature request topic: auto-merge
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
bug topic: docs
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 68/100
Todas as issues de github/gh-stack
Issues semelhantes
-
textual definition
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100
geneontology/go-ontology#32653 ·
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 75/100
-
needs design
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
Priority/High ready-for-agent Severity/Major Type/Bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100