diff --git a/AGENTS.md b/AGENTS.md index 574b49b..f0a0c79 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -7910,5 +7910,34 @@ iOS Team Provisioning Profile: app.datametric360 | groups: [] The extension's App ID carries the group; the **main** App ID `app.datametric360` does not. Until App Groups is enabled on it in the portal and `group.app.datametric360` assigned, the archive fails -with the same entitlement mismatch, now naming target `App` instead of `DataMetric360Share`. The -delivered `.ipa` therefore still holds at 2026.8.30.8. +with the same entitlement mismatch, now naming target `App` instead of `DataMetric360Share`. + +### Resolved the same day — and two more silent defects on the way + +Owner completed portal step 3; from there the remaining failures were all in the setup script, and +**none of them made the archive fail**. Recorded because that is the pattern worth remembering: + +3. **The `.appex` had no executable.** `codesign -d` reporting `Executable=.../Info.plist` gave it + away; the bundle held only `Info.plist`, `_CodeSignature` and the profile, while its + `CFBundleExecutable` promised a binary. Cause: `addSourceFile(path, opt, group)` in the `xcode` + package only files the source into the **group** when a group is passed — it never attaches it to + a Sources phase. The `PBXBuildFile` existed but was orphaned and every Sources phase of the target + was empty. Fixed by handing the source to `addBuildPhase` directly. +4. **Then the path was wrong** — `Build input file cannot be found: ios/App/ShareViewController.swift`. + Without a group, Xcode resolves a bare filename against the project root; the file lives in + `DataMetric360Share/`. Fixed by passing the project-relative path. +5. **Then Swift itself failed** — and only now, because the file had never been compiled before. + The German quotation marks in the size-limit message were mixed: opening `„` (U+201E), closing a + plain ASCII `"` (U+0022), which ends a Swift string literal mid-sentence. Both sides typographic + now. + +**Final artifact, verified on the `.ipa` rather than the project (2026.9.2.7):** +`DataMetric360Share.appex` contains a real `Mach-O 64-bit executable arm64`; **both** app and +extension carry `group.app.datametric360`; URL scheme `datametric360` present; ad-hoc profile with +both devices to 2027-08-29; `codesign --verify --deep --strict` clean. Served from Gitea with a +matching SHA-256 and `bundle-version 2026.9.2.7` in the manifest. + +**The rule this whole sequence argues for: for native iOS changes, check the built bundle, never the +build result.** Four of the five defects produced either a successful archive or a silent +misconfiguration; only unzipping the `.ipa` and reading entitlements, binaries and plists exposed +them.