Parent: #227. Related delivery failure: the Craft 0.0.423 normal Pantry installation.
The normal published Darwin artifact changes a valid upstream Developer ID signed executable even though none of its loader paths need changing. normalizeMachoRuntime() in packages/ts-pantry/scripts/native-runtime.ts unconditionally invokes codesign --force --sign - after its loader inspection.
Actual evidence from publisher run 41428888448, Darwin job 125222315803:
- Original public Craft 0.0.423 executable: 14,893,984 bytes, SHA256
c96fe815e228088ce6fd04999b2db93f517d5a584a42f9e9c01bb6a0709948de. - Normal registry tar SHA256
33c8331bb8c72792839b70020760d8f818d84eace7a5f6f51a2a14de90b86c5fcontains exactly the installed executable: 14,979,728 bytes, SHA256ad38c72624e939e633ed5eb7a134685ded6819bad524f9665336e0ba637b4b7c. - Every pre-signature byte is identical except the three signature-size fields in
__LINKEDITandLC_CODE_SIGNATURE. The entire 85,744-byte growth is signature growth. - Both signatures verify cryptographically, but the original Developer ID team and hardened-runtime flag are replaced by ad-hoc signing. The original
com.apple.security.cs.allow-jitentitlement is lost. The installed CLI has not been executed.
Acceptance:
- Through the maintained
fixUp()seam, preserve an unchanged valid signed image byte-for-byte, including signature, identifier, flags and entitlements. Repeated normalization must be idempotent. - Keep required signing for actual loader changes and unsigned images. Include a dependency-only install-name rewrite performed by
bundleRuntimeLibraries()before normalization, while RPATHs and install IDs are already canonical. - Use real macOS compiler/codesign fixtures and signature verification, not mocked tool output or a Craft-specific skip flag.
- Publish corrected artifacts under a new immutable Pantry recipe revision and verify normal installation against the original upstream bytes before claiming delivery.
The correction belongs to the generic native-runtime normalizer. Do not skip loader checks, weaken publication validation or replace the native executable manually.
Related Linux delivery work: #266.