George Cook
04/10/2026, 3:41 PMPylon
04/10/2026, 3:42 PMPylon
04/10/2026, 7:32 PMPylon
04/10/2026, 8:51 PMit seems to be also impacting just normal pushes (gt submit). For example if I submit two stacks at once, only the top runs CI.
This doesnt seem correct, would you be able to share an example PR where youre seeing this?
Pylon
04/10/2026, 8:56 PMGeorge Cook
04/13/2026, 8:14 AMGeorge Cook
04/13/2026, 10:19 AMalb-metrics-db/backfill-and-tooling after running gt submit
Is this something to do with the way that you push under the hood? Is it doing one push updating all of the remotes at once? Not sure if GH would trigger separate webhook events to circle for thatGeorge Cook
04/13/2026, 10:50 AMPylon
04/13/2026, 3:26 PMGeorge Cook
04/14/2026, 7:39 AMPylon
04/14/2026, 3:05 PMGeorge Cook
04/14/2026, 3:07 PMPylon
04/14/2026, 3:29 PMGeorge Cook
04/15/2026, 7:45 AMPylon
04/15/2026, 2:03 PMGeorge Cook
04/15/2026, 3:28 PMPylon
04/15/2026, 5:10 PMWhy does it work? What works?George Cook
04/16/2026, 8:40 AMPylon
04/16/2026, 2:02 PMmain > stack_a > stack b then you run gt submit --> this pushes all the branches github. ci will run on stack_a before stack_b due to github's own behavior. gh procceses the push events and triggers Actions -- graphite doesn't control the CI execution order.
you merge stack_a but haven't yet merged stack_b , you create stack_c and modify stack_b. then you run gt submit. this pushes the changes from stack_b and creates stack_c. ci gets re-triggered because the head SHA changes. stack_c is a new branch so gh triggers CI for its first push.
do you happen to have concurrency set up within gh?George Cook
04/20/2026, 7:54 AMmain > stack_a > stack b - only stack-b is running after a submit. Is that the expected behaviour? We don’t have concurrency turned on.
In my examples above, I’m not talking about creating a new branch. It works as expected and runs ci for both if I make a change to stack_a and a restack stack_b and submit.
Is there any chance I can get the same person to reply or a DM or something - I’m having to re-explain the same thing quite a few times and I feel like we’re not getting anywhere.Pylon
04/20/2026, 1:50 PMstack_a and a restack stack_b and submit.
>
>
this is expected behavior due to githubPylon
04/20/2026, 1:52 PMWe don’t have concurrency turned on.
We recommend using GitHub’s concurrency configuration to ensure that you do not have duplicated CI. This may be the behavior that you're seeing since this is not enabled.
George Cook
04/22/2026, 9:39 AMPylon
04/22/2026, 1:53 PMIf I push all of the branches at once, do we not expect the branches to all run in CI?
You are absolutely correct we would expect this to run on all Prs in the stack.
If I push for the first time, only the top of the stack runs ci.
This is not expected. Going to set up Circle CI and have a test myself. Will report back. In the meantime, would you be able to push up a test stack and leave it in that state so i can look into our logs to see if there is anything that stands out?
George Cook
04/22/2026, 2:00 PMgt-test-two is the only CI run.Pylon
04/22/2026, 2:07 PMgt create -m "branch name" in fact i usually just gt c -am "branch name" to stage add all changes to the new branch, saves you from needing to modify which is a bit more the classic git workflow of making a branch then committing changes. Maybe yoyu prefer that workflow but just in case-Pylon
04/22/2026, 3:23 PMgit push sends multiple refs in a single invocation, even though GitHub sends multiple push webhook events (one per ref), CircleCI only creates a pipeline for one of them (appears to be the last ref in the command, aka top of the Graphite stack as youve seen). Sequential pushes of the same branches work fine, atomic multi-ref pushes don't. gt submit pushes stacked branches in a single git push, so the update is atomic and you hit this.
Quick workaround (not ideal, but unblocks you): submit PRs individually instead of running gt submit --stack. So rather than creating branch A, B, C and submitting the whole stack at once, gt submit on each one as you go.
I'd also recommend filing this with CircleCI, since the fix ultimately lives on their side (or they can share how to get around this). Here's a minimal repro you can attach:
# Triggers only 1 pipeline (BUG)
git checkout -b atomic-1; git commit --allow-empty -m "1"
git checkout -b atomic-2; git commit --allow-empty -m "2"
git checkout -b atomic-3; git commit --allow-empty -m "3"
git push origin atomic-1 atomic-2 atomic-3
# Triggers 3 pipelines (expected)
git push origin atomic-1
git push origin atomic-2
git push origin atomic-3George Cook
04/22/2026, 3:47 PM