diff --git a/PARITY.md b/PARITY.md index 6c49ca8..4b2d3a5 100644 --- a/PARITY.md +++ b/PARITY.md @@ -17,7 +17,7 @@ screen renders. | Protocol engine | `Sources/E2E`, 15 files | `engine`, 10 files | | App layer | ~9,700 lines, 45 files | accounts, contacts, chat, photos | | Tests | XCUITest + JS interop | 114 unit + 37 cross-engine + 15 on-device + live round trips | -| Ships to | nobody (no signing team) | a debug APK that installs and runs | +| Ships to | TestFlight, once a distribution cert is minted (see below) | a debug APK that installs and runs; the release keystore is configured | Android's engine is **verified against the web engine in both directions** (`engine/test/interop-kotlin.mjs`), which is a stronger claim than the iOS app @@ -334,3 +334,26 @@ for the app to settle before deciding anything. first takes the message and the other reports zero, which reads as "nothing was sent". Run a single `autoreply` at a time. +## Signing, on both sides (2026-08-25) + +**iOS was pinned to the wrong Apple team, and that — not a missing membership — +is what made TestFlight unreachable.** `project.yml` carried +`DEVELOPMENT_TEAM: "2W7DA3A8W2"`, the free personal team attached to the iCloud +address on the build Mac. Meanwhile an **App Store provisioning profile for +`net.flamenet.messenger` already exists**, issued to team `M5923Y84P5` — the +team that ships hittfitness and shepherdgiving — and valid until 2027-06-04. A +personal team cannot produce a distribution build at all, so every archive would +have failed at signing while naming the certificate rather than the team ID that +put it out of reach. The team is now `M5923Y84P5`. + +⚠️ **Still outstanding: no distribution certificate in the build Mac's +keychain.** `security find-identity -v -p codesigning` returns exactly one +identity, the personal-team *development* one. Signing in to Xcode with the App +Store Connect account mints the distribution certificate and the matching +profile; nothing in this repository can do it, and nothing here should try. + +**Android needs none of that.** The release `signingConfig` reads +`~/.flamenet-android-signing.properties` — present on the build Mac since +2026-08-23 — so `:app:assembleRelease` produces a signed APK that can go +straight to a tester. That asymmetry is why Android reaches testers first, and +it has nothing to do with which app is more finished.