Files
Sauci/.agents/learnings/promoted/2026-08-30-ios-extension-version-verification.md
T

1.4 KiB

id, date, status, scope, evidence, destination, review_after
id date status scope evidence destination review_after
2026-08-30-ios-extension-version-verification 2026-08-30 promoted iOS release artifact verification build 45 Xcode archive warning plus direct PlistBuddy inspection of the exported IPA .codex/skills/release-mobile/SKILL.md 2027-02-28

Symptom

The signed iOS build logged that the widget extension build number 44 did not match the containing app build number 45, even though export completed.

Reproduction

Build iOS version 1.0.6 with EAS auto-increment from build 44 to 45 and retain the archive log. Extract the resulting IPA with ditto, then read the containing app and every packaged extension Info.plist with PlistBuddy.

Cause

The archive warning described an intermediate state and was not authoritative for the exported package. Direct IPA inspection showed both the app and LiveDrawWidget.appex at version 1.0.6 build 45.

Remediation

For every iOS release, inspect version and build values in the exported app and all packaged extensions. Reject or rebuild only when the final IPA values differ; do not accept or reject a release from archive warnings alone.

Evidence

PlistBuddy read CFBundleShortVersionString 1.0.6 and CFBundleVersion 45 from both packaged plists. codesign --verify --deep --strict passed for the app, and the verified IPA SHA-256 was 9d4779bddac4647911a3a38e4ee37cf794c2b8691e0746a041b629c62b308e7f.