Skip to content

Notarize macOS release builds to fix arm64 ICC/CMS import failure #1

Description

@thetalkingdrum

Problem

On unnotarized, ad-hoc-signed arm64 builds, imagecodecs's lazy dlopen of _cms.abi3.so is refused by AMFI (Error Domain=AppleMobileFileIntegrityError Code=-423 "The file is adhoc signed or signed by an unknown certificate chain"). This breaks color management for Flat/Print exports with Narrowband Scan or a custom ICC profile on Apple Silicon Macs (works fine on Intel).

Root cause confirmed on real M1 Pro hardware — see NARROWBAND_ICC_ARM64_INVESTIGATION.md on fix/narrowband-flat-export-icc for the full investigation, including:

  • Reproduction steps and log evidence tying the AMFI denial to the exact moment of failure
  • Why this never surfaces in dev mode (make run) — only in the packaged .app
  • A tested-and-ruled-out free workaround (com.apple.security.cs.disable-library-validation entitlement doesn't help — wrong gate)

That branch already ships a workaround (falls back to a LUT-based ICC transform instead of silently skipping color management), so this is not launch-blocking. This issue tracks the durable fix.

Fix

Notarize the release build:

  • Apple Developer ID Application certificate (requires paid Apple Developer Program membership, $99/year)
  • notarytool submit --wait + stapler staple, wired into .github/workflows/release.yml
  • CI secrets for the certificate/notarization credentials

Once this lands, the LUT fallback becomes unnecessary (or can stay as a defensive fallback) and NARROWBAND_ICC_ARM64_INVESTIGATION.md can be deleted.

Cost/lift

Requires a paid Apple Developer Program membership plus CI secret management — bigger lift than a code fix, hence tracked separately rather than blocking fix/narrowband-flat-export-icc.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions