Skip to content

fix(release): pin desktop PR operations to block/buzz - #5212

Merged
wesbillman merged 1 commit into
mainfrom
carl/fix-release-gh-repo
Aug 10, 2026
Merged

fix(release): pin desktop PR operations to block/buzz#5212
wesbillman merged 1 commit into
mainfrom
carl/fix-release-gh-repo

Conversation

@wesbillman

Copy link
Copy Markdown
Collaborator

Summary

Pin every GitHub CLI PR operation in the Desktop release helper to block/buzz.

Without an explicit repository, gh refuses to create the release PR in checkouts that have multiple GitHub remotes and no configured default. This happens after the candidate has already been generated, validated, committed, and pushed.

Add release-contract assertions covering the list, edit, and create paths so repository qualification cannot regress.

Validation

  • bash -n scripts/prepare-desktop-release.sh scripts/test-release-ref-contract.sh
  • scripts/test-release-ref-contract.sh
  • pre-push branch-skew

Avoid GitHub CLI repository ambiguity when a checkout has multiple remotes.
Keep the release contract test guarding all list, edit, and create paths.

Co-authored-by: Carl <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@buzz.block.builderlab.xyz>
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
@wesbillman
wesbillman requested a review from a team as a code owner August 7, 2026 17:42
@wesbillman

Copy link
Copy Markdown
Collaborator Author

Independent review by Carl on Wes’s behalf at exact head 7ebc13969c1e8760c42c367c483a66bc37985a2a: clear. The fix is correct, minimal, and safe; no blocker found.

I reproduced the precondition in the review checkout: it has origin plus contributor, and gh repo set-default --view reports that no default repository is configured. Unqualified gh pr ... is therefore ambiguous exactly as described. Adding --repo block/buzz to list, edit, and create pins both read and write operations to the canonical repository and removes ambient remote/default-repo dependence. The option placement is valid for all three gh commands.

The three call sites are the complete PR-operation surface in prepare-desktop-release.sh; candidate generation/validation was already explicitly pinned to block/buzz. Branch creation, force-with-lease semantics, candidate SHA/tag binding, PR body, and release authorization are unchanged. This also fails safer than ambient inference: it cannot accidentally find/edit/create the release PR in a contributor fork merely because that remote became GitHub CLI’s default.

Validation at this exact head: bash -n passed for both scripts; scripts/test-release-ref-contract.sh passed including its signed-canary/cache subcontracts; git diff --check passed; worktree clean; remote head unchanged. I also confirmed current main merges without a reported conflict.

The added assertions are static contract guards rather than a mocked end-to-end gh execution. That matches the existing test’s style and adequately pins this three-token regression, though a future release-script test harness could stub gh if this script accumulates more behavior. Not a reason to delay this fix.

Operational note: this is not required to unblock the release already in progress because the documented two-command workaround exists. Merge after exact-head CI is green; it prevents the next release from reaching the final PR step and falling into the same stupid little pit.

@wesbillman
wesbillman merged commit c1e20a8 into main Aug 10, 2026
26 checks passed
@wesbillman
wesbillman deleted the carl/fix-release-gh-repo branch August 10, 2026 15:59
wpfleger96 pushed a commit that referenced this pull request Aug 10, 2026
…gaps

* origin/main: (35 commits)
  feat(desktop): time-based sweep for stale localStorage caches (#5453)
  ci(release): gate OSS desktop auto-update promotion (#5398)
  fix(release): pin desktop PR operations to block/buzz (#5212)
  fix(search): surface exact short profile names (#5480)
  Reduce repeated ACP session context (#5423)
  feat(desktop): NIP-AM agent-usage backend — P2 emission/transport/archive + P4a aggregation/D6 (#4000)
  fix(desktop): resolve overlapping member mentions (#5225)
  chore(deps): update react monorepo (#4441)
  ci(security): allow retired relay pool advisory (#5404)
  chore(deps): update dependency @tanstack/react-virtual to v3.14.9 (#4439)
  chore(deps): update all non-major dependencies (#3049)
  chore(deps): update rust crate anyhow to v1.0.104 (#4447)
  chore(deps): update rust crate arc-swap to v1.9.2 (#4448)
  chore(deps): update rust crate async-trait to v0.1.91 (#4458)
  chore(deps): update rust crate diffy to v0.5.1 (#4466)
  chore(deps): update rust crate async-compression to v0.4.43 (#4456)
  chore(deps): update rust crate clap to v4.6.6 (#4465)
  fix(desktop): preserve Welcome banner dismissal (#5406)
  fix(agent): retry LLM completion on malformed 2xx JSON body (#5351)
  fix(desktop): welcome banner overlap and missing dismiss control (#5330)
  ...

# Conflicts:
#	crates/buzz-acp/src/config.rs
wpfleger96 added a commit that referenced this pull request Aug 10, 2026
…gaps

* origin/main: (35 commits)
  feat(desktop): time-based sweep for stale localStorage caches (#5453)
  ci(release): gate OSS desktop auto-update promotion (#5398)
  fix(release): pin desktop PR operations to block/buzz (#5212)
  fix(search): surface exact short profile names (#5480)
  Reduce repeated ACP session context (#5423)
  feat(desktop): NIP-AM agent-usage backend — P2 emission/transport/archive + P4a aggregation/D6 (#4000)
  fix(desktop): resolve overlapping member mentions (#5225)
  chore(deps): update react monorepo (#4441)
  ci(security): allow retired relay pool advisory (#5404)
  chore(deps): update dependency @tanstack/react-virtual to v3.14.9 (#4439)
  chore(deps): update all non-major dependencies (#3049)
  chore(deps): update rust crate anyhow to v1.0.104 (#4447)
  chore(deps): update rust crate arc-swap to v1.9.2 (#4448)
  chore(deps): update rust crate async-trait to v0.1.91 (#4458)
  chore(deps): update rust crate diffy to v0.5.1 (#4466)
  chore(deps): update rust crate async-compression to v0.4.43 (#4456)
  chore(deps): update rust crate clap to v4.6.6 (#4465)
  fix(desktop): preserve Welcome banner dismissal (#5406)
  fix(agent): retry LLM completion on malformed 2xx JSON body (#5351)
  fix(desktop): welcome banner overlap and missing dismiss control (#5330)
  ...

# Conflicts:
#	crates/buzz-acp/src/config.rs

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
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.

1 participant