Sanitize Ios Project Task
Conditionally ensures a source iOS Info.plist has the SSOT references enabled by this task's propagation inputs. Each enabled entry points at its build variable:
CFBundleDisplayName →
$(PRODUCT_NAME) CFBundleName → $
(PRODUCT_NAME) CFBundleShortVersionString →$(MARKETING_VERSION) CFBundleVersion → $
(CURRENT_PROJECT_VERSION)App-name propagation enables the first two entries; marketing-version and build-number propagation independently enable the remaining entries. When no string entry or optional Boolean flag is enabled, the task is a no-op. Existing conflicts follow conflictPolicy. The default is fail-closed: one conflict aborts the entire plan and leaves the plist byte-for-byte untouched.
Also propagates DSL-driven boolean feature flags from kiteSsot { ios { } }:
ITSAppUsesNonExemptEncryption ← ios.usesNonExemptEncryption CADisableMinimumFrameDurationOnPhone ← ios.proMotion120Hz
The plist is parsed with mandatory XML hardening (sanitizeInfoPlist). Binary, malformed, duplicate-key, unsafe-entity, and non-lossless inputs fail without writing. Generated plists are unsupported by this source-file migration task.