Skip to content

Run CI on branch pushes again - #17

Merged
chrisuthe merged 1 commit into
mainfrom
chrisuthe/task/fix-the-push-trigger-ci-yml-lost-in-the-release
Aug 19, 2026
Merged

Run CI on branch pushes again#17
chrisuthe merged 1 commit into
mainfrom
chrisuthe/task/fix-the-push-trigger-ci-yml-lost-in-the-release

Conversation

@chrisuthe

Copy link
Copy Markdown
Member

PR #15 gave ci.yml a push filter of tags-ignore: ['**'], intending "every branch push, except tags". GitHub's ref-filter semantics make that the opposite: a push that names only tags/tags-ignore does not fire for branch pushes at all. Branch-push CI has been silently dead since it landed — on every branch, including main.

Evidence it was real

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 a v* push to release.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 build main and no chrisuthe/task/* branch: the same bug in a better disguise.

release.yml said "ci.yml ignores 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.yml needs no change; its header claim ("called by ci.yml on a push") is what the fix makes true again.

Two docs/ROADMAP.md shipped entries (items 10 and 12) asserted the tags-ignore reasoning, including an explicit argument for the broken spelling. Both now describe the branches filter.

Verification

  • Live proof: pushing this branch produced CI run 32296100028, event push, on 590feb5 — 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.
  • actionlint clean on all three workflows.
  • CTest: 346/347. The one failure, 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-byte sun_path limit. The identical binary passes from a short CWD. No C++ is touched by this diff.

`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
chrisuthe marked this pull request as ready for review August 19, 2026 20:05
@chrisuthe
chrisuthe merged commit 3719532 into main Aug 19, 2026
6 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant