Skip to content

fix(release): include GoReleaser config in release paths - #26

Merged
zzwong merged 2 commits into
mainfrom
fix/release-packaging-changes
Sep 12, 2026
Merged

fix(release): include GoReleaser config in release paths#26
zzwong merged 2 commits into
mainfrom
fix/release-packaging-changes

Conversation

@zzwong

@zzwong zzwong commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add .goreleaser.yaml to the release-worthy paths while retaining every default Go/version path.
  • Document that packaging-only feat/fix changes qualify for the existing dual-gate release process.

Evidence

Arch support in #25 changed only .goreleaser.yaml. Its push workflow succeeded but logged release gate: skip (path=false commit=true):
https://github.com/open-cli-collective/google-cli/actions/runs/33845702271

The later manual dry-run failed for a separate reason: the shared workflow expected a push-only commit-message payload. That fix is in open-cli-collective/.github#44 and must be promoted to v1 after merge.

Validation

  • Exercised the shared path gate using this workflow’s configured paths: .goreleaser.yaml, Go source, go.mod, go.sum, and version.txt qualify; README and workflow-only changes still skip.
  • make test build — race-enabled tests and both binary builds passed.
  • actionlint v1.7.12 — passed (ShellCheck unavailable locally).
  • git diff --check — passed.
  • make check: module tidiness passed; lint could not run because the installed golangci-lint was built with Go 1.25, below the repo’s Go 1.26.4 target. CI uses the shared pinned linter.

Release note

This PR changes only workflow/docs files and therefore does not itself trigger a release. Arch packages will ship on the next qualifying feat/fix commit. Neither this PR nor the shared fix bypasses the release gates or creates a release tag.

@monit-reviewer monit-reviewer left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated PR Review

Reviewed commit: f0535ddf0b76
Profile: claude-reviewer-gh - Posting as: monit-reviewer

Summary

Reviewer Findings
automation:ci-release 0
documentation:docs 1
policies:conventions 0
structure:repo-health 1
documentation:docs (1 finding)

Major - docs/development.md:66

"Packaging-only changes therefore ship too" overstates what the gate actually covers. The configured release-paths in .github/workflows/auto-release.yml are **.go,go.mod,go.sum,version.txt,.goreleaser.yaml — nothing under packaging/. This repo has a real packaging/ tree (packaging/identity.yml, packaging/winget/*, packaging/chocolatey/*), so a maintainer reading this sentence would reasonably expect a fix: merge touching only a WinGet/Chocolatey manifest or identity.yml to cut a release, when it would be skipped with path=false.

Suggested fix: scope the claim to what the paths list actually says, e.g. "Changes to the GoReleaser config alone therefore ship; changes only under packaging/ do not." Alternatively, if packaging manifests are meant to qualify, add packaging/** to release-paths so the doc and the workflow agree. It would also help to name .github/workflows/auto-release.yml as the place the path list is configured, since this prose now duplicates that list and will drift from it silently.

structure:repo-health (1 finding)

Major - .github/workflows/auto-release.yml:21

The stated invariant in the adjacent comment is "packaging changes must ship even when no Go source changed", but the new path list only covers .goreleaser.yaml. This repo's packaging surface is larger: packaging/identity.yml, packaging/chocolatey/**, and packaging/winget/** are all versioned and, per docs/development.md, drive Chocolatey/WinGet/Homebrew/Linux publication. A fix:/feat: squash merge touching only packaging/winget/OpenCLICollective.google-readwrite.installer.yaml or packaging/identity.yml will still log release gate: skip (path=false commit=true) — the exact failure mode #25 hit and this PR exists to fix, reintroduced one directory over.

Second, structural cost: overriding release-paths here forks a local copy of the upstream default list. Any future path the shared workflow adds to its default (a new manifest, a new lockfile) will silently not apply to this repo, and nothing fails loudly when that drift happens.

Concrete fix: extend the list to cover the whole packaging surface, e.g. release-paths: "**.go,go.mod,go.sum,version.txt,.goreleaser.yaml,packaging/**". If some packaging files are deliberately excluded (for instance generated WinGet manifests that the release itself rewrites, which would otherwise create a release-triggers-release loop), say so in the comment so the omission is a recorded decision rather than an oversight.

Reviewer Coverage

  • automation:ci-release — complete (constrained); skipped: none; constraints: The reusable workflow open-cli-collective/.github/.github/workflows/auto-release.yml@v1 is not checked out here, so the default value of release-paths, its accepted separator/glob syntax, and whether **.go matches nested packages under its matcher could not be verified directly. Findings rely...
  • documentation:docs — complete (constrained); skipped: none; constraints: The shared reusable workflow open-cli-collective/.github/.github/workflows/auto-release.yml@v1 is not checked out here, so the exact glob semantics of release-paths were verified only against the path list configured in this repo, not against the gate implementation.
  • policies:conventions — complete (constrained); skipped: none; constraints: No local convenience copies of ../.github or ../cli-common/docs are checked out in this workbench, so the shared auto-release.yml input name release-paths, its default value, and its glob-matching semantics could not be verified against the source of truth. Review limited to the two assigned changed files; the shared workflow's path-gate implementation was not inspectable.
  • structure:repo-health — complete (constrained); skipped: none; constraints: Scope limited to the two assigned changed files; the release gate's runtime behavior was not executed. The shared reusable workflow (open-cli-collective/.github@v1) is not available in this checkout, so the upstream default value and validation semantics of the release-paths input could not be verified directly.
Inspected files (2)
  • .github/workflows/auto-release.yml
  • docs/development.md

0 PR discussion threads considered. 0 summarized; 0 resolved.


Completed in 2m 57s | ~$2.05 (est.) | claude-opus-5 | cr 0.10.302
Field Value
Model claude-opus-5
Reviewers automation:ci-release, documentation:docs, policies:conventions, structure:repo-health
Engine claude_cli · claude-opus-5
Reviewed by cr · monit-reviewer
Duration 2m 57s wall · 5m 50s compute
Cost ~$2.05 (est.)
Pricing basis anthropic-public-2026-09-02
Tokens 68 in / 19.3k out

Per-workstream usage

  • orchestrator-selection — claude-opus-5
    • In: 6
    • Out: 2.3k
    • Cache read: 41.3k
    • Cache create: 22.9k
    • Cost: ~$0.31 (est.)
    • Duration: 34s
  • automation:ci-release — claude-opus-5
    • In: 18
    • Out: 5.1k
    • Cache read: 198.1k
    • Cache create: 24.2k
    • Cost: ~$0.47 (est.)
    • Duration: 1m 32s
  • documentation:docs — claude-opus-5
    • In: 12
    • Out: 2.6k
    • Cache read: 115.5k
    • Cache create: 22.4k
    • Cost: ~$0.35 (est.)
    • Duration: 55s
  • policies:conventions — claude-opus-5
    • In: 14
    • Out: 3.7k
    • Cache read: 135.4k
    • Cache create: 22.1k
    • Cost: ~$0.38 (est.)
    • Duration: 1m 04s
  • structure:repo-health — claude-opus-5
    • In: 12
    • Out: 3.5k
    • Cache read: 116.8k
    • Cache create: 20.7k
    • Cost: ~$0.35 (est.)
    • Duration: 1m 03s
  • orchestrator-rollup — claude-opus-5
    • In: 6
    • Out: 2.2k
    • Cache read: 88.9k
    • Cache create: 9.4k
    • Cost: ~$0.19 (est.)
    • Duration: 38s

Comment thread .github/workflows/auto-release.yml
Comment thread docs/development.md Outdated
@zzwong
zzwong marked this pull request as draft September 12, 2026 05:23

@monit-reviewer monit-reviewer left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated PR Review

Reviewed commit: 087cc8e2889e
Profile: claude-reviewer-gh - Posting as: monit-reviewer

Summary

Reviewer Findings
automation:ci-release 0
documentation:docs 1
policies:conventions 0
structure:repo-health 0
documentation:docs (1 finding)

Nits - docs/development.md:66

The prose is now accurate: the path list (**.go, go.mod, go.sum, version.txt, .goreleaser.yaml) matches release-paths in .github/workflows/auto-release.yml exactly, .goreleaser.yaml exists at the repo root with that spelling, and "GoReleaser configuration changes therefore ship too" no longer overstates coverage of packaging/**.

Remaining small issue: the list is now duplicated in prose with no pointer to where it is configured, and the next paragraph tells readers to follow the shared release/distribution standards "rather than duplicating workflow policy here." When the gate paths change, nothing links the two copies, so the guide drifts silently.

Suggested fix: name the source in the sentence, e.g. "...as configured by release-paths in .github/workflows/auto-release.yml."

Reviewer Coverage

  • automation:ci-release — complete (constrained); skipped: none; constraints: Both prior inline threads are settled. The packaging/** gap (identity.yml, winget, chocolatey manifests still outside the release-path set) was explicitly scoped out by the author, and the workflow comment and docs no longer claim broader packaging coverage, so it is not re-raised. The reusable workflow open-cli-collective/.github/.github/workflows/auto-release.yml@v1 is not checked out here, so the default release-paths value and its exact separator/glob semantics (including whether **.go matches nested packages) could not be verified directly; the PR documents exercis...
  • documentation:docs — complete (constrained); skipped: none; constraints: The shared reusable workflow open-cli-collective/.github/.github/workflows/auto-release.yml@v1 is not checked out here, so release-paths glob semantics were verified only against the repo's configured value and file tree, not the gate implementation.
  • policies:conventions — complete (constrained); skipped: none; constraints: No local convenience copies of ../.github or ../cli-common/docs are checked out in this workbench, so the shared auto-release.yml input name release-paths, its default value, and its glob-matching semantics could not be verified against the source of truth. Review limited to the two assigned changed files; the shared workflow's path-gate implementation was not inspectable.
  • structure:repo-health — complete (constrained); skipped: none; constraints: Scope limited to the two assigned changed files; the release gate's runtime behavior was not executed. The shared reusable workflow (open-cli-collective/.github@v1) is not present in this checkout, so the upstream default value and validation semantics of the release-paths input could not be verified directly.
Inspected files (2)
  • .github/workflows/auto-release.yml
  • docs/development.md

0 PR discussion threads considered. 0 summarized; 0 resolved.


Completed in 1m 19s | ~$1.23 (est.) | claude-opus-5 | cr 0.10.302
Field Value
Model claude-opus-5
Reviewers automation:ci-release, documentation:docs, policies:conventions, structure:repo-health
Engine claude_cli · claude-opus-5
Reviewed by cr · monit-reviewer
Duration 1m 19s wall · 2m 20s compute
Cost ~$1.23 (est.)
Pricing basis anthropic-public-2026-09-02
Tokens 38 in / 6.3k out

Per-workstream usage

  • automation:ci-release — claude-opus-5
    • In: 8
    • Out: 1.3k
    • Cache read: 140.4k
    • Cache create: 9.4k
    • Cost: ~$0.20 (est.)
    • Duration: 30s
  • documentation:docs — claude-opus-5
    • In: 8
    • Out: 1.7k
    • Cache read: 127.7k
    • Cache create: 9.9k
    • Cost: ~$0.21 (est.)
    • Duration: 34s
  • policies:conventions — claude-opus-5
    • In: 8
    • Out: 1.2k
    • Cache read: 124.4k
    • Cache create: 8.3k
    • Cost: ~$0.18 (est.)
    • Duration: 27s
  • structure:repo-health — claude-opus-5
    • In: 8
    • Out: 1.3k
    • Cache read: 125.9k
    • Cache create: 9.0k
    • Cost: ~$0.18 (est.)
    • Duration: 30s
  • orchestrator-rollup — claude-opus-5
    • In: 6
    • Out: 801
    • Cache read: 76.1k
    • Cache create: 41.2k
    • Cost: ~$0.47 (est.)
    • Duration: 18s

Comment thread docs/development.md
## Releases

There is one release stream for both binaries. `version.txt` contains the major/minor line (`1.2`), and automatic releases create `v1.2.N` tags. A squash merge to `main` whose final commit begins with `feat:` or `fix:` triggers the automatic release decision; documentation, test, CI, and chore-only merges do not cut a release.
There is one release stream for both binaries. `version.txt` contains the major/minor line (`1.2`), and automatic releases create `v1.2.N` tags. A squash merge to `main` whose final commit begins with `feat:` or `fix:` triggers the automatic release decision when it changes Go source, `go.mod`, `go.sum`, `version.txt`, or `.goreleaser.yaml`. GoReleaser configuration changes therefore ship too; documentation, test, CI, and chore-only merges do not cut a release.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The prose is now accurate: the path list (**.go, go.mod, go.sum, version.txt, .goreleaser.yaml) matches release-paths in .github/workflows/auto-release.yml exactly, .goreleaser.yaml exists at the repo root with that spelling, and "GoReleaser configuration changes therefore ship too" no longer overstates coverage of packaging/**.

Remaining small issue: the list is now duplicated in prose with no pointer to where it is configured, and the next paragraph tells readers to follow the shared release/distribution standards "rather than duplicating workflow policy here." When the gate paths change, nothing links the two copies, so the guide drifts silently.

Suggested fix: name the source in the sentence, e.g. "...as configured by release-paths in .github/workflows/auto-release.yml."

Reply inline to this comment.

@zzwong
zzwong marked this pull request as ready for review September 12, 2026 05:45
@zzwong
zzwong merged commit f012d08 into main Sep 12, 2026
11 checks passed
@zzwong
zzwong deleted the fix/release-packaging-changes branch September 12, 2026 05:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants