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: each workflow once per PR commit, and no PR blind to a push path (S37) #875
Three ways a workflow's on: block either spends runner time twice or skips a PR. They are classified by speed doubles in the build-speed loop's tooling (pure text, 16 fixtures). The tool lives outside this repo.
The S37 PR (branch ci/push-pr-once) handles the six path-filtered DOUBLE_ON_PR workflows and the three that are PR_BLIND on main. Each pull_request path list now holds every push path.
A push: branches: [main] change on its own would have addedPR_BLIND workflows. Five of the six listed their own workflow file under push paths only, so the push run on the PR branch was the only run that tested an edit to the workflow. That is the hand-copied-list defect again: two path lists in one file, kept in step by hand.
DOUBLE_GLOB (brain-ci, codegen, fpga-formal, fpga-formal-comb): whether pushes to feat/* and fix/** should run without a PR is the owner's call.
Not measured
Runner minutes saved. The run count is the measured quantity; minutes per run vary by workflow.
Whether any external tooling relies on a push run for a non-main branch (a status check required by branch protection on a non-main branch, for instance).
A measurement for the DOUBLE_GLOB decision, brain-ci only. It is still the owner's call; this is only the cost.
brain-ci's last 200 runs (2026-10-02 14:47Z to 2026-10-05 03:37Z) covered 146 commits. 45 of them ran twice, once as push and once as pull_request: 44 on fix/* branches, 1 on feat/*. Events: 91 push, 95 pull_request, 13 workflow_dispatch, 1 schedule.
Runner time: one push run measured 8.7 min wall clock and about 11 job-minutes. I have not totalled job-minutes over the 45. Run wall clock includes queueing and re-runs, so it is not a usable sum.
The push half of a double tests the branch head, and the pull_request half tests the merge with main. If brain-ci's push were narrowed to [main, 'v*'], a fix/* branch with no PR would get no brain-ci run until a PR is opened or someone dispatches it. workflow_dispatch is already on the workflow.
The other three DOUBLE_GLOB workflows, measured the same way as brain-ci above: gh run list --workflow <file> --limit 400, then the commits that ran on both push and pull_request.
workflow
runs read
window
commits run twice
wall clock of the push half
fpga-formal.yml
43
06-29 .. 10-04
10 of 33 (8 fix/, 2 feat/)
235 min
fpga-formal-comb.yml
11
07-01 .. 10-04
0 of 11
0
codegen.yml (ralph/dev-*)
400
08-24 .. 10-05
0 of 358
0
Wall clock includes queue time, so 235 min is an upper bound on runner time, not billed minutes.
So the glob doubles that cost anything are brain-ci's (45 of 146 commits, earlier comment). fpga-formal.yml is about 2.4 min a day over 97 days. The other two have never doubled in the window read. No change proposed for these three. The brain-ci decision is still the owner's.
Not measured: whether the push runs on fix/** gave anyone feedback before the PR was opened, which is the reason to keep them.
Activity
gHashTag commentedon Oct 5, 2026
A measurement for the
DOUBLE_GLOBdecision, brain-ci only. It is still the owner's call; this is only the cost.brain-ci's last 200 runs (2026-10-02 14:47Z to 2026-10-05 03:37Z) covered 146 commits. 45 of them ran twice, once as
pushand once aspull_request: 44 onfix/*branches, 1 onfeat/*. Events: 91 push, 95 pull_request, 13 workflow_dispatch, 1 schedule.What each extra run costs:
The push half of a double tests the branch head, and the pull_request half tests the merge with main. If brain-ci's
pushwere narrowed to[main, 'v*'], afix/*branch with no PR would get no brain-ci run until a PR is opened or someone dispatches it.workflow_dispatchis already on the workflow.🤖 Generated with Claude Code
gHashTag commentedon Oct 5, 2026
The other three
DOUBLE_GLOBworkflows, measured the same way as brain-ci above:gh run list --workflow <file> --limit 400, then the commits that ran on bothpushandpull_request.fpga-formal.ymlfix/, 2feat/)fpga-formal-comb.ymlcodegen.yml(ralph/dev-*)Wall clock includes queue time, so 235 min is an upper bound on runner time, not billed minutes.
So the glob doubles that cost anything are brain-ci's (45 of 146 commits, earlier comment).
fpga-formal.ymlis about 2.4 min a day over 97 days. The other two have never doubled in the window read. No change proposed for these three. The brain-ci decision is still the owner's.Not measured: whether the push runs on
fix/**gave anyone feedback before the PR was opened, which is the reason to keep them.🤖 Generated with Claude Code