9157740069
Forgejo Actions doesn't consistently honor `on.push.branches` as a filter — the merge commit landing on main after a release PR was still triggering the full CI workflow on a SHA that had already passed on dev, burning ~1 minute of runner time for no reason. The `build` job already had a ref guard, so no duplicate images were being pushed, but typecheck/lint/test ran unconditionally. Add the same guard (`refs/heads/dev` or `refs/tags/v*`) to those three so main pushes trigger the workflow but every job skips immediately with zero runner time. Also tightened the build job's tag filter from `refs/tags/` to `refs/tags/v` for consistency with the new guards and to avoid ever building from a non-version tag. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>