Skip to content

Audit the released image, and the app inside it - #1

Merged
max1874 merged 1 commit into
mainfrom
audit-release
Sep 8, 2026
Merged

Audit the released image, and the app inside it#1
max1874 merged 1 commit into
mainfrom
audit-release

Conversation

@max1874

@max1874 max1874 commented Sep 8, 2026

Copy link
Copy Markdown
Owner

release.sh verified the disk image and stopped there. That is how the app inside it shipped without a ticket of its own — nothing looked at the app. Stapling it fixed the artifact, but the fix had no guard, so it could disappear as quietly as it arrived.

scripts/audit-release.sh checks both, plus the Developer ID authority, hardened runtime, secure timestamp, Gatekeeper verdict, architecture and version. release.sh calls it in place of its two inline checks. It takes a path, so a downloaded image can be put through the same audit:

./scripts/audit-release.sh ~/Downloads/TypeSwitch-1.0.0.dmg 1.0.0

Verified

Against the current build/TypeSwitch-1.0.0.dmg:

Release audit passed: Developer ID signature, hardened runtime, secure timestamp,
tickets stapled to both the image and the app, Gatekeeper accepts, arm64 present.

Every failure path was exercised too — wrong version, missing image, and an image with no notarization ticket all exit 1, and the cleanup trap leaves nothing mounted.

🤖 Generated with Claude Code

release.sh verified the disk image and stopped there, which is how the
app inside it came to be shipped without a ticket of its own: nothing
looked. That was fixed by stapling the app, but the fix had no guard, so
it could go away as quietly as it arrived.

audit-release.sh checks both, along with the Developer ID authority, the
hardened runtime, the secure timestamp, the Gatekeeper verdict, the
architecture and the version. release.sh calls it in place of its two
inline checks, and it takes a path, so a downloaded image can be put
through the same audit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@max1874
max1874 merged commit 38222f3 into main Sep 8, 2026
1 check passed
@max1874
max1874 deleted the audit-release branch September 8, 2026 14:41
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