feat: move Homebrew formula update from CI job into goal-release flow#2273
Merged
Merged
Conversation
Closes #2271 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Wait for the release to be published (not draft) before merging the formula, restoring the ordering guarantee of the removed needs: publish gate (draft asset URLs 404 for unauthenticated users) - Filter the Publish Assets run list by the release branch and poll until the run appears - Document branch/PR reuse for re-runs of the formula step - Reword installation docs: formula is updated as part of each release Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Owner
Author
|
Thanks! Merged as part of the automated /goal-pr flow. 🎉 |
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.
Summary
Closes #2271
Moves the Homebrew tap formula update out of the dedicated
homebrewCI job in.github/workflows/publish.ymland into the/goal-releasecommand flow (direction 2 from the issue: keep asset building in CI, move the formula update into the release flow driven by the AI).Changes
.rulesync/commands/goal-release.md: adds a new Step 5 "Update the Homebrew Formula". After the release PR merges, the command waits for thePublish Assetsworkflow run to succeed, downloads the release'sSHA256SUMS, regeneratesFormula/rulesync.rbwithscripts/generate-homebrew-formula.ts, and — becausemainis branch-protected (thepull_requestrule blocks direct pushes even for admins; the admin bypass isbypass_mode: pull_request) — lands the change via a PR that is merged immediately withgh pr merge --admin --merge --delete-branch. Skips cleanly when the formula is already up to date, and refuses to commit anything other thanFormula/rulesync.rb..rulesync/skills/draft-release/SKILL.md: adds a note that the formula is intentionally not updated at draft time (the checksums only exist afterPublish Assetsruns) and points manual-release users at the post-merge step..github/workflows/publish.yml: removes thehomebrewjob (checksum download, formula regeneration,homebrew-formula/<tag>branch push, auto-merge PR, and theHOMEBREW_FORMULA_TOKENcredential handling), leaving a pointer comment. Thepublishjob is unchanged.scripts/generate-homebrew-formula.ts/Formula/rulesync.rb: update the generated header comment to reference the new flow instead of the removed CI job. The generator itself stays the single source of formula generation logic.Why this shape
The issue's key constraint is that the formula embeds sha256 checksums of release binaries that only exist after the release PR merges and
publish-assets.ymluploads them, so the formula cannot land in the release PR itself (direction 1 would require byte-identical local rebuilds — fragile). Direction 2 was chosen: the formula update becomes a synchronous, AI-driven step of/goal-release. Compared to the old CI job this removes theHOMEBREW_FORMULA_TOKENdependency, the auto-merge failure mode, and the out-of-band job complexity; the remaining PR is created and merged immediately within the release flow (a direct push tomainis not possible under the branch ruleset).Notes
.claude/,.opencode/, etc.) are gitignored; only the.rulesync/sources are tracked, andpnpm generatewas run.pnpm cicheckpasses (7059 tests, content checks green).🤖 Generated with Claude Code