Fix homebrew SHA mismatch race condition (#111)

Root cause: update-homebrew.yml triggered on release:published, which fires
before softprops/action-gh-release finishes uploading assets. The workflow
downloaded a 404 page instead of the DMG and committed its SHA.

Fix:
- Change trigger from release:published to workflow_run (fires after the
  release workflow completes, guaranteeing assets are uploaded)
- Add download validation with retries and file size checks
- Add SHA verification step before committing to the cask
- Add homebrew cask update to build-sign-upload.sh for local releases
- Add regression test (tests/test_homebrew_sha.sh)
- Update /release and /release-local skills with homebrew verification steps

Fixes #110
This commit is contained in:
Lawrence Chen 2026-02-19 17:44:00 -08:00 committed by GitHub
parent 41639d226c
commit fc1de08561
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 158 additions and 8 deletions

View file

@ -41,10 +41,15 @@ Full end-to-end release built locally. Bumps version, updates changelog, tags, t
./scripts/build-sign-upload.sh vX.Y.Z
```
This script handles: GhosttyKit build, xcodebuild, Sparkle key injection, codesigning, notarization (app + DMG), appcast generation, GitHub release upload, and cleanup.
This script handles: GhosttyKit build, xcodebuild, Sparkle key injection, codesigning, notarization (app + DMG), appcast generation, GitHub release upload, homebrew cask update, and cleanup.
If the script fails, run `say "cmux release failed"`.
### 7. Verify homebrew cask
- Run `bash tests/test_homebrew_sha.sh` to confirm the cask SHA matches the release DMG
- Update the homebrew-cmux submodule pointer: `git add homebrew-cmux && git commit -m "Update homebrew-cmux submodule to latest" && git push origin main`
## Changelog Guidelines
**Include only end-user visible changes:**

View file

@ -55,7 +55,13 @@ Prepare a new release for cmux. This command updates the changelog, bumps the ve
- Verify the release appears at: https://github.com/manaflow-ai/cmux/releases
- Check that the DMG is attached to the release
12. **Notify**
12. **Verify homebrew cask update**
- The "Update Homebrew Cask" workflow triggers automatically after the release workflow completes
- Watch: `gh run list --workflow=update-homebrew.yml --limit=1` and `gh run watch`
- Verify: `cd homebrew-cmux && git pull && grep version Casks/cmux.rb`
- Run `bash tests/test_homebrew_sha.sh` to confirm the SHA matches
13. **Notify**
- On success: `say "cmux release complete"`
- On failure: `say "cmux release failed"`