Skip to content

fix(release): attribute desktop candidates to the operator - #6831

Merged
wpfleger96 merged 2 commits into
mainfrom
duncan/drop-wes-release-identity
Aug 25, 2026
Merged

fix(release): attribute desktop candidates to the operator#6831
wpfleger96 merged 2 commits into
mainfrom
duncan/drop-wes-release-identity

Conversation

@wpfleger96

Copy link
Copy Markdown
Member

The desktop release tooling hardcoded one contributor's personal identity into every release candidate commit. scripts/prepare-desktop-release.sh committed the candidate with a git -c user.name='Wes' -c user.email='wesbillman@users.noreply.github.com' override, and scripts/desktop_release.py validate required the candidate author to be exactly Wes <wesbillman@users.noreply.github.com> plus a matching Signed-off-by trailer. That leaked from Wes's working setup into the validation contract in #3568, so a release cut by any other operator was falsely attributed to and signed off by Wes (as happened on #6828).

Change

  • prepare-desktop-release.sh: drop the -c identity overrides so git commit -s uses the operator's own configured identity to author and sign off the candidate. The automation Co-authored-by trailer is unchanged.
  • desktop_release.py validate: replace the exact-Wes checks with structural ones — the commit author must be non-empty, the body must contain a Signed-off-by trailer whose name and email match the commit author (honest DCO), and the existing automation Co-authored-by regex check stays. Failure messages remain specific.
  • test-desktop-release-candidate.sh: the fixture candidate now commits under the harness's own identity, and a new negative case rewrites the author to a mismatched identity and asserts the validator rejects it.

Release authorization is bound to the merged PR via the GitHub API in scripts/verify-desktop-release-merge.sh, never the commit author field, so this does not weaken the trust model. RELEASING.md and .github/workflows/desktop-release-candidate.yml reference no author identity and need no change.

Verified locally: scripts/test-desktop-release-candidate.sh passes, including the new sign-off/author-mismatch rejection.

The desktop release tooling hardcoded Wes's personal identity into every
release candidate commit: prepare-desktop-release.sh committed with a
`git -c user.name='Wes'` override and the validator required exactly that
author plus a matching Signed-off-by. That leaked from one contributor's
setup, so a candidate cut by anyone else was falsely attributed to and
signed off by Wes.

Commit the candidate with the operator's own configured identity and
validate the sign-off structurally: the author must be non-empty and the
body must carry a Signed-off-by trailer matching that author (honest DCO),
alongside the existing automation Co-authored-by trailer. Release
authorization is bound via the PR API in verify-desktop-release-merge.sh,
not the author field, so this does not weaken the trust model.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
@wpfleger96
wpfleger96 requested a review from a team as a code owner August 25, 2026 21:24
The prior sign-off check used an unanchored `f"Signed-off-by: {author}"
in body` substring test, which accepted a prose line merely containing
the trailer text and a real trailer with trailing garbage. The empty
author guard was also ineffective: `%an <%ae>` renders `" <>"` for an
empty raw author, which is truthy.

Read the author name and email separately (rejecting either empty), and
require exactly one Signed-off-by line matching the author with a
both-ends-anchored multiline regex. Tests add prose-embedded, trailing-
garbage, and duplicate-trailer rejection cases alongside the existing
author mismatch case.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
@wpfleger96
wpfleger96 merged commit 820a858 into main Aug 25, 2026
24 checks passed
@wpfleger96
wpfleger96 deleted the duncan/drop-wes-release-identity branch August 25, 2026 22:51
wpfleger96 pushed a commit that referenced this pull request Aug 25, 2026
…-history

* origin/main:
  feat(desktop): add KLIPY GIF search to composers (#5554)
  fix(desktop): respect automatic mention preference after send (#6837)
  fix(release): attribute desktop candidates to the operator (#6831)
  fix(ci): check out source in docker.yml merge job (#6833)
  chore(release): release Buzz Desktop version 0.5.19 (#6828)
  Remove public relay signing key fallback (#6729)
  docs(nest): make commit attribution policy-neutral (#6707)
  fix(desktop-messages): preserve inline agent mentions with persistent addressing (#6793)

Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
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