Problem
Both macOS binaries published in v0.0.92 fail strict code-signature verification after downloading and extracting the exact GitHub release assets.
Release: https://github.com/craft-native/craft/releases/tag/v0.0.92
Reproduction
gh release download v0.0.92 --pattern "craft-darwin-*.zip"
unzip craft-darwin-arm64.zip -d arm64
unzip craft-darwin-x64.zip -d x64
codesign --verify --deep --strict --verbose=4 arm64/craft
codesign --verify --deep --strict --verbose=4 x64/craftBoth report:
invalid signature (code or signature have been modified)The arm64 binary exits 134 when invoked with --version on an Apple Silicon host. Signature metadata still contains TeamIdentifier 3JJRNQW6B7 and hardened-runtime flags, but the Authority is unavailable and the sealed code no longer verifies.
The downloaded bytes match release-manifest.json exactly:
- arm64 SHA-256 bb13ba8af990d686480df6d082bad6a26cf9979867219b47429d3e00dffd1249, size 4558116
- x64 SHA-256 b51fae5d4fd69f8f24192e6cbb8215aeb0a3057d05e6cf8dfe3e8c4b4bb32dda, size 5052897
Likely release-path gap
release.yml verifies each binary immediately after signing and notarizes a temporary archive, but the Pantry Publish & Release action subsequently creates the distributed archives. Any transformation or replacement between those steps is not verified. The release asset gate checks only asset names, not signatures or executable behavior.
Expected / acceptance criteria
- Determine what changes or replaces the Mach-O after codesign.
- Preserve valid Developer ID signatures through packaging for both architectures.
- Download the final release archives in CI, extract them, run codesign --verify --deep --strict, and execute craft --version on arm64 (plus x64 where available).
- Verify the final downloadable artifacts, not only pre-publication workspace files.
- Do not cut the next release until the final-asset check is green.
Discovered during the post-merge release audit for #254, #242, and #220. Related manifest completeness issue: #281.