Skip to content

Sign and notarize the macOS release, and trim the README - #16

Merged
oddessentials merged 3 commits into
mainfrom
feat/macos-signing
Nov 10, 2026
Merged

oddessentials merged 3 commits into
mainfrom
feat/macos-signing

Conversation

@oddessentials

@oddessentials oddessentials commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner
  • A sign-macos job, in the release-signing environment, takes the macOS build's zip and checks its hash. tools/macos/sign.sh then signs the finished app (kits included) with the Developer ID Application certificate and the hardened runtime from a temporary keychain, notarizes it, staples it and zips it again, as agent-guild's installer script does.
  • The job runs the signed app (world creation and the MCP smoke test) and checks its signature: Developer ID for team H3FY62W58W, hardened runtime, no entitlements, and Gatekeeper accepting it as notarized.
  • The release publishes only that signed zip, checked against sign-macos's hash, so the ad-hoc zip can never ship. Pull requests stay ad-hoc signed.
  • The app already runs under the hardened runtime with no entitlements, so none are added, and the check refuses any.
  • tests/macos_signature.sh checks the refusals without credentials or network, and runs in every macOS build.

README

  • Carries docs/readme-cleanup forward unchanged. The README holds only the install button and the "For agents" link.
  • The install button shows Windows and Apple marks after "AGENT GUILD: BUILDERS" in place of "FOR WINDOWS". tools/make_install_button.py draws them, and both button images are regenerated.

Validation

  • A manual run of the signing commit, 42755134747, signed, notarized and stapled the app. The signed app passed the smoke test and every signature check. release was skipped. The branch was allowed in release-signing only for that run.
  • Locally, tests/macos_signature.sh passed against the packaged app, and removing each rule from check_app makes its test fail. actionlint and shellcheck are clean.

🤖 Generated with Claude Code

oddessentials and others added 3 commits November 9, 2026 22:41
A sign-macos job, in the release-signing environment, takes the build's zip,
signs the finished app (kits included) with the Developer ID Application
certificate and the hardened runtime from a temporary keychain, notarizes and
staples it, and zips it again, as agent-guild's installer script does. It then
runs the signed app, serves MCP from it, and checks its signature, entitlements
and Gatekeeper acceptance. The release publishes only that zip; pull requests
stay ad-hoc signed.

The app already runs under the hardened runtime with no entitlements, so none
are added, and the check refuses any. tests/macos_signature.sh checks the
refusals without credentials or network, and runs in every macOS build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@oddessentials oddessentials changed the title Sign and notarize the macOS release with the Developer ID Sign and notarize the macOS release, and trim the README Nov 10, 2026
@oddessentials
oddessentials merged commit b947d1e into main Nov 10, 2026
5 checks passed
@oddessentials
oddessentials deleted the feat/macos-signing branch November 10, 2026 04:54
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