A user restores an application backup onto a new phone. The encrypted database returns, but its key does not. The app opens to an endless loading state because storage recovery and key recovery were designed as one event even though the operating system treats them differently.
The opposite failure is worse: data intended to stay device-bound becomes readable after restore because both ciphertext and key entered backup.
Do not infer this behavior from API names such as “secure storage.” Test the exact device, OS, backup mechanism, key attributes, and lifecycle transition.
Declare the security contract
Choose one policy per data class:









