Skip to content

feat(release): sign Windows binaries via SignPath - #3553

Merged
max-sixty merged 2 commits into
mainfrom
signpath-code-signing
Jul 23, 2026
Merged

feat(release): sign Windows binaries via SignPath#3553
max-sixty merged 2 commits into
mainfrom
signpath-code-signing

Conversation

@max-sixty

Copy link
Copy Markdown
Owner

Summary

  • Signs the Windows release zip (wt.exe + git-wt.exe) via SignPath's free OSS code-signing program, using the test-signing policy (self-signed test certificate) while the project's Foundation-program application is under review.
  • Non-blocking (continue-on-error) so a signing hiccup can't take down crates.io/homebrew/winget/AUR publishing.
  • Recomputes the .sha256 checksum after signing, since the signed zip's bytes differ from the unsigned one.
  • Uses a dedicated low-privilege CI builds SignPath identity (submitter-only), not an admin account.

Test plan

  • actionlint clean (only pre-existing shellcheck style warnings elsewhere in the file)
  • Artifact configuration (zip containing wt.exe + git-wt.exe) validated against SignPath's own XML parser and against the real file layout inside a downloaded v0.68.0 Windows release zip
  • First real Windows build after merge will be the first live signing round-trip through GitHub Actions — watch that release's CI run

This was written by Claude Code on behalf of Max

max-sixty and others added 2 commits July 23, 2026 04:17
Adds a SignPath signing step to the Windows release build, gated
behind the SIGNPATH_API_TOKEN secret. Non-blocking (continue-on-error)
while the project is on SignPath's self-signed test certificate, so a
signing hiccup can't take down crates.io/homebrew/winget/AUR
publishing. Checksums are recomputed after signing since the signed
zip's bytes differ from the unsigned one.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The earlier commit used a self-serve free-trial org created by an
Okta signup quirk, not the "Worktrunk [OSS]" org SignPath's team
actually reviewed and approved for the Foundation program. Repoint at
the real org/project/policy slugs, which already had a dedicated
low-privilege "CI builds" submitter provisioned for this exact use.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@max-sixty
max-sixty merged commit 5f8c301 into main Jul 23, 2026
39 checks passed
@max-sixty
max-sixty deleted the signpath-code-signing branch July 23, 2026 19:19
max-sixty added a commit that referenced this pull request Jul 23, 2026
…rmat (#3556)

## Summary
- The SignPath action's `skip-decompress` defaults to `false`, so it
would have extracted the returned zip's contents as loose files into
`target/distrib/` instead of saving back a signed
`worktrunk-x86_64-pc-windows-msvc.zip`. The checksum step would have
silently hashed the still-unsigned zip, and the release would have
shipped unsigned Windows binaries with no CI failure to flag it.
- `sha256sum` without `-b` omits the `*` binary-mode marker;
cargo-dist's own checksums use `<hash> *<filename>` (confirmed against a
real release asset). Added `-b` to match.

Confirmed via `gh run view` on #3553's own CI run that
`build-local-artifacts` is skipped on PRs in this repo, so this code
path has never actually executed — this is the first real fix before it
runs for real on a tagged release.

## Test plan
- [x] `actionlint .github/workflows/release.yaml` — no new warnings
(same pre-existing shellcheck style notes as before)
- [x] Verified `skip-decompress` behavior against the action's own
`action.yml` input spec
- [x] Verified checksum format against a real downloaded release asset
(`v0.68.0`)

> _This was written by Claude Code on behalf of Max_
@max-sixty max-sixty mentioned this pull request Jul 23, 2026
max-sixty added a commit that referenced this pull request Jul 24, 2026
Highlights: clickable CI and dev-server-URL statusline segments in Claude Code (#3550), `wt merge --no-rebase` accepting merge-shaped fast-forward histories (#3509), a faster and lower-CPU `wt switch` picker (#3544, #3534), and SignPath code signing for the Windows release binary (#3553). Full details in CHANGELOG.md.

> _This was written by Claude Code on behalf of max_
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