Skip to content

feat: macOS code signing and notarization#3

Merged
eudicy merged 4 commits into
mainfrom
005-macos-signed-release
May 4, 2026
Merged

feat: macOS code signing and notarization#3
eudicy merged 4 commits into
mainfrom
005-macos-signed-release

Conversation

@eudicy

@eudicy eudicy commented May 3, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add build/entitlements.plist with 4 Hardened Runtime entitlements required for PyInstaller binaries under codesign --options=runtime
  • Add Apple cert import, codesign, ditto zip, notarytool submit, and post-notarization spctl/codesign verification steps to macOS job in release.yml
  • Split checksum step into macOS (hashes .zip) and Linux variants; macOS artifact is now risus-macos-arm64.zip
  • Add guaranteed API key cleanup step with if: always() to prevent key leakage on failure
  • Update build.yml to run CI on this feature branch
  • Document all 6 Apple signing secrets and pre-tag verification step in AGENTS.md

Test plan

  • Configure all 6 Apple signing secrets in repository Settings → Secrets (see AGENTS.md § Signing Setup)
  • Push a release tag (git tag v1.x.y && git push origin v1.x.y) and confirm macOS job completes as "Build & Sign (macos-latest)"
  • Verify release asset is risus-macos-arm64.zip (not bare binary)
  • On a clean macOS machine: download zip, extract, run spctl --assess --type execute --verbose risus-macos-arm64 — must show accepted and source=Notarized Developer ID
  • Run codesign --verify --deep --strict --verbose=2 risus-macos-arm64 — must exit 0
  • Confirm no Gatekeeper dialog on first run (T014 in specs/005-macos-signed-release/tasks.md)

🤖 Generated with Claude Code

galadriel and others added 4 commits May 3, 2026 21:18
Specification, implementation plan, research decisions, data model,
contracts, quickstart guide, and task list for notarized macOS release.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude Code <noreply@anthropic.com>
checkout v6, setup-python v6, upload-artifact v7,
download-artifact v8, action-gh-release v3,
import-codesign-certs v7.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude Code <noreply@anthropic.com>
- Add build/entitlements.plist with 4 Hardened Runtime entitlements
  required for PyInstaller binaries under codesign --options=runtime
- Add import-codesign-certs, codesign, ditto, notarytool, and spctl
  verification steps to macOS job in release.yml
- Split checksum step into macOS (hashes .zip) and Linux variants
- macOS artifact is now risus-macos-arm64.zip (signed + notarized)
- Add guaranteed API key cleanup step with if: always()
- Update build.yml to run CI on 005-macos-signed-release branch
- Document 6 Apple signing secrets and pre-tag verification in AGENTS.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@eudicy eudicy merged commit 1fb9d52 into main May 4, 2026
6 checks passed
@eudicy eudicy deleted the 005-macos-signed-release branch May 4, 2026 18:17
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