A state restoration path produces a user-visible duplicate after an interrupted session. The affected area is keychain session.
Repair the keychain session cache lifecycle implementation so it separates purge, refresh, and escalation actions by staleness and risk.
Evidence
- Affected surface: iOS / Swift / keychain session.
- Observed failure family: plan cache invalidation.
- Scope policy: contractVersion must equal 2.