Repository navigation
fix(packaging): keep the cask postflight installable under Homebrew's install steps - #676
Merged
Merged
Conversation
… install steps The release workflow rewrites GoReleaser's legacy postflight block into Homebrew's install-step DSL by turning each line that starts with system_command into a run step. The catalog refresh assigned its result (result = system_command ...) and called opoo, so it survived the rewrite and Homebrew rejected the published cask as invalid, which also hides it from brew outdated. Drop the install-time refresh (the binary ships an offline catalog baseline), point to cr catalog update in the caveats, and have the render check require every postflight line to be a bare system_command call.
monit-reviewer
approved these changes
Oct 20, 2026
monit-reviewer
left a comment
There was a problem hiding this comment.
Automated PR Review
Reviewed commit: acc1cfb4c68a
Profile: claude-monit-reviewer - Posting as: monit-reviewer
Summary
| Reviewer | Findings |
|---|---|
| automation:ci-release | 0 |
| harness-engineering:repo-health | 0 |
| policies:conventions | 0 |
| structure:harness-engineering | 0 |
Reviewer Coverage
automation:ci-release— complete (broad); skipped: none; constraints: noneharness-engineering:repo-health— complete (constrained); skipped: none; constraints: nonepolicies:conventions— complete (broad); skipped: none; constraints: No local convenience copies of ../cli-common/docs or ../.github were present in the workbench; reviewed against the canonical breadcrumb docs referenced from memory of their public contents was avoided, and no finding was made that depends on their exact text.structure:harness-engineering— complete (broad); skipped: none; constraints: none
Inspected files (2)
.goreleaser.ymlscripts/verify-package-render.sh
0 PR discussion threads considered. 0 summarized; 0 resolved.
Completed in 2m 00s | ~$1.25 (est.) | claude-sonnet-5 | cr 0.10.319
| Field | Value |
|---|---|
| Model | claude-sonnet-5 |
| Reviewers | automation:ci-release, harness-engineering:repo-health, policies:conventions, structure:harness-engineering |
| Engine | claude_cli · claude-sonnet-5 |
| Reviewed by | cr · monit-reviewer |
| Duration | 2m 00s wall · 3m 44s compute |
| Cost | ~$1.25 (est.) |
| Pricing basis | anthropic-public-2026-09-23 |
| Tokens | 52 in / 10.0k out |
Per-workstream usage
orchestrator-selection— claude-sonnet-5- In: 4
- Out: 3.4k
- Cache read: 38.7k
- Cache create: 38.7k
- Cost: ~$0.20 (est.)
- Duration: 37s
automation:ci-release— claude-sonnet-5- In: 10
- Out: 1.5k
- Cache read: 230.3k
- Cache create: 40.5k
- Cost: ~$0.22 (est.)
- Duration: 44s
harness-engineering:repo-health— claude-sonnet-5- In: 14
- Out: 1.9k
- Cache read: 339.5k
- Cache create: 40.5k
- Cost: ~$0.25 (est.)
- Duration: 51s
policies:conventions— claude-sonnet-5- In: 8
- Out: 1.3k
- Cache read: 158.2k
- Cache create: 36.6k
- Cost: ~$0.19 (est.)
- Duration: 37s
structure:harness-engineering— claude-sonnet-5- In: 10
- Out: 1.5k
- Cache read: 216.4k
- Cache create: 40.1k
- Cost: ~$0.22 (est.)
- Duration: 39s
orchestrator-rollup— claude-sonnet-5- In: 6
- Out: 390
- Cache read: 150.4k
- Cache create: 33.2k
- Cost: ~$0.17 (est.)
- Duration: 13s
piekstra
marked this pull request as ready for review
October 20, 2026 20:31
piekstra
added a commit
to open-cli-collective/.github
that referenced
this pull request
Oct 21, 2026
) ## Summary `modernize.sh render` converts only lines that start with `system_command`. A call anywhere else on a line, such as `result = system_command ...`, was left inside the `*_steps` block, and Homebrew rejects the whole cask (`undefined method 'system_command' for an instance of Homebrew::InstallSteps::DSL`). The release then publishes an uninstallable cask that `brew outdated` silently skips; this is what happened to `codereview-cli`. `render` now fails and prints the offending lines when any non-comment `system_command` remains after the rewrite, so the release stops before the tap is updated. ## Validation - `bash actions/homebrew-alias/test_modernize.sh`: all pass, including a new case for an assigned `system_command`. - Every cask currently in `homebrew-tap` renders unchanged except `codereview-cli.rb`, which is the broken one and is now rejected. The cask fix itself: open-cli-collective/codereview-cli#676
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
The published
codereview-clicask has been invalid under Homebrew's install-step DSL since the catalog refresh was added to the postflight hook. Homebrew rejects it withundefined method 'system_command' for an instance of Homebrew::InstallSteps::DSL, sobrew upgradefails andbrew outdatedsilently leaves cr out.The shared release workflow's modernizer turns each line that starts with
system_commandinto arunstep. The refresh line assigned the result (result = system_command ...) and the next line calledopoo, so both stayed in thepostflight_stepsblock.cr catalog update. The binary ships an offline catalog baseline, and install steps run sandboxed without network access by default, so the refresh has no working equivalent there.cr catalog update.scripts/verify-package-render.shnow requires every postflight line to be a baresystem_commandcall, the form the modernizer converts.The companion change makes the modernizer fail on a call it cannot convert: open-cli-collective/.github#51
Validation
goreleaser release --snapshot --clean --skip=publish,beforethenscripts/verify-package-render.sh: OK.actions/homebrew-alias/modernize.sh render, loads in Homebrew 7 (Cask::CaskLoader::FromContentLoader) with aPostflightStepsartifact. The currently published cask fails the same load with the error above.result = system_command ...line into the rendered cask makes the render check fail.