Consolidate Homebrew release into CI - #141
Conversation
Confidence Score: 4/5Not safe to merge until same-version tag and manual releases share one concurrency group. A focused executable check reproduced one independently actionable release coordination failure and confirmed that the release jobs inherit the conflicting workflow-level concurrency setting. Files Needing Attention: .github/workflows/ci.yml needs its workflow-level concurrency key normalized for manual and tag-triggered releases.
What T-Rex did
|
| permissions: {} | ||
|
|
||
| concurrency: | ||
| group: ci-${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref }} |
There was a problem hiding this comment.
Same-tag releases are not serialized
A tag push for vX.Y.Z uses ci-refs/tags/vX.Y.Z, while a manual run for that same tag uses ci-vX.Y.Z. These are separate concurrency groups, allowing both trusted release runs to overlap and race GitHub release creation, source-asset upload, tap dispatch, and Formula branch publication. Normalize the tag representation in both branches of the group expression so a manual retry and the tag-triggered release serialize together.
Artifacts
Focused CI concurrency validation script
- The executed deterministic Python source reads `.github/workflows/ci.yml`, evaluates the two requested event contexts, and checks release-job concurrency scope; it demonstrates the exact condition under test.
Focused CI concurrency validation output
- The captured Python execution from `/home/user/repo` exited successfully and shows the two distinct concurrency group strings; the takeaway is that the runs are not serialized together.
Eliminates the duplicate Homebrew workflow and uses the normal three-platform CI build as the release input. Tag/manual release jobs remain side-effect isolated with job-scoped permissions. The separately merged registry repair remains intact.\n\nVerified: actionlint .github/workflows/ci.yml; git diff --check.