Run CI on branch pushes again - #17
Merged
chrisuthe merged 1 commit intoAug 19, 2026
Merged
Conversation
`ci.yml` filtered its `push` with `tags-ignore: '**'`, and a `push` that names only tag filters does not fire for branches at all -- so branch-push CI has been dead since that landed, on every branch including main. The comment above it claimed the opposite, and argued for the spelling that caused it. `branches: '**'` is the same rule read the other way: naming only branch filters excludes tags on its own, which is what leaves a `v*` push to release.yml. The comment now describes that rule in both directions, and says why the glob is doubled -- `'*'` does not match a `/`, so it would build main and no task branch. release.yml and the two ROADMAP entries described the old mechanism by name.
chrisuthe
marked this pull request as ready for review
August 19, 2026 20:05
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR #15 gave
ci.ymlapushfilter oftags-ignore: ['**'], intending "every branch push, except tags". GitHub's ref-filter semantics make that the opposite: apushthat names onlytags/tags-ignoredoes not fire for branch pushes at all. Branch-push CI has been silently dead since it landed — on every branch, includingmain.Evidence it was real
main's last workflow run is32264846473at 14:34 UTC, before both Publish a tagged release from the payload CI already builds #15 and Build a macOS installer .pkg from the staged install payload #16 merged. Neither merge produced a run.32278476234(16:53 UTC) — the rebased Build a macOS installer .pkg from the staged install payload #16 branch, the first push to carry the newci.yml— ispull_request-only. Every earlier branch push produced apushrun alongside itspull_requestone.The fix
branches: ['**']. The same documented rule read the other way round: naming only branch filters excludes tag events on its own, which is exactly what leaves av*push torelease.yml, and what the original comment wanted.The comment is rewritten to describe the rule in both directions, so the trap is named rather than re-derived, and to say why the glob is doubled —
'*'does not match/, so it would buildmainand nochrisuthe/task/*branch: the same bug in a better disguise.release.ymlsaid "ci.ymlignores tags for the same reason" — the effect still holds but it named a mechanism that no longer exists, so it now points at the branches filter.build.ymlneeds no change; its header claim ("called byci.ymlon a push") is what the fix makes true again.Two
docs/ROADMAP.mdshipped entries (items 10 and 12) asserted thetags-ignorereasoning, including an explicit argument for the broken spelling. Both now describe the branches filter.Verification
32296100028, eventpush, on590feb5— the first push-event run on any branch since the bug landed. The branch carried the broken trigger until this commit, so this run could not have existed before it.actionlintclean on all three workflows.ConfigMerge.AConfiguredControlSocketIsAbsolutizedUnderDaemonize, is environmental and unrelated — it absolutizes a relative control socket against the CWD, and this worktree's 88-character path makes the result 107 bytes against macOS's 103-bytesun_pathlimit. The identical binary passes from a short CWD. No C++ is touched by this diff.