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.
Problem
On unnotarized, ad-hoc-signed arm64 builds,
imagecodecs's lazydlopenof_cms.abi3.sois 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.mdonfix/narrowband-flat-export-iccfor the full investigation, including:make run) — only in the packaged.appcom.apple.security.cs.disable-library-validationentitlement 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:
notarytool submit --wait+stapler staple, wired into.github/workflows/release.ymlOnce this lands, the LUT fallback becomes unnecessary (or can stay as a defensive fallback) and
NARROWBAND_ICC_ARM64_INVESTIGATION.mdcan 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.