A state restoration path produces a user-visible duplicate after an interrupted session. The affected area is keychain session.
Repair the keychain session activity stream implementation so it splits activity after the configured inactivity gap and counts sessions per actor.
Evidence
- Affected surface: iOS / Swift / keychain session.
- Observed failure family: sessionize event activity.
- Scope policy: contractVersion must equal 2.