Files
chanora/apps/chanora_flutter/macos
Edison Jwa f4ffde2752 docs(release): add closed-source export-compliance plan; TestFlight workaround
App Store Connect rejected the iOS upload with 'Invalid Export
Compliance Code' because ITSAppUsesNonExemptEncryption was <true/>
without an accompanying ITSEncryptionExportComplianceCode. Apply a
TestFlight-only workaround now and document the full production path
that needs to land before any public App Store / Mac App Store release.

Info.plist (ios + macos)
- ITSAppUsesNonExemptEncryption set to <false/> on both platforms to
  unblock TestFlight internal-test uploads. This is NOT correct for
  public release: Chanora ships non-system crypto (chacha20poly1305 in
  chanora_storage, custom Ed25519/P-256/EAX in tsclientlib, bundled
  TLS in rustls), so the value MUST be flipped back to <true/> with a
  valid ITSEncryptionExportComplianceCode before any public submission.

docs/release/export-compliance.md (new)
- Closed-source mass-market path under EAR §740.17(b)(1) with Note 3
  to Category 5, Part 2 of the CCL (reclassifies the app from
  ECCN 5D002.c.1 to ECCN 5D992.c).
- BIS annual self-classification report as CSV per Supplement No. 8
  to Part 742, with authorization type MMKT; recipients crypt@bis.doc
  .gov + enc@nsa.gov; deadline Feb 1 for prior calendar year; no fee,
  no pre-approval, file within 30 days of first export.
- Apple App Store Connect questionnaire answers for Chanora, with the
  supporting-documentation upload (sent BIS CSV + cover sheet).
- Step-by-step revert plan once Apple issues the UUID, including the
  optional CHANORA_IOS_EXPORT_COMPLIANCE_CODE build-variable pattern
  (procivis/one-wallet style) to keep the UUID out of git.
- Annual maintenance plus the fallback to CCATS / SNAP-R if Chanora
  ever adds non-standard crypto or E2EE DMs.
- References to Apple docs, eCFR §740.17, Supplement No. 8, and real-
  world closed-source iOS Info.plist examples (Keybase, Status.im,
  Cryptomator) confirming the UUID format and key placement.

Verification
- plutil -lint apps/chanora_flutter/ios/Runner/Info.plist: OK
- plutil -lint apps/chanora_flutter/macos/Runner/Info.plist: OK

Follow-up
- README.md / LICENSE-{APACHE,MIT} / DEC-020 still declare Chanora as
  Apache-2.0/MIT dual-licensed. The closed-source export-compliance
  doc assumes proprietary distribution; the license decision needs
  reconciliation before submission so the BIS CSV and Apple
  questionnaire answers match the actual distribution model.
2026-06-08 05:46:26 +09:00
..