From e897366a720e1907e0b19bdaf37978bc2cfbbb49 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Wed, 17 Jun 2026 17:29:26 +0100 Subject: [PATCH] Clarify that RSH3h isn't meant to re-initialise the device RSH8a says "The LocalDevice is initialised when first required" but it doesn't say "only when first required"; Marat pointed out that RSH3h could arguably be interpreted as meaning "perform this initialisation process again". (I'm on the fence and think that "initialisation" implies a one-off thing, but no harm in clarifying.) --- specifications/features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifications/features.md b/specifications/features.md index c96fffb2a..db6992c71 100644 --- a/specifications/features.md +++ b/specifications/features.md @@ -1057,7 +1057,7 @@ The core SDK provides an API for wrapper SDKs to supply Ably with analytics info ### Activation State Machine - `(RSH3)` In platforms that support receiving push notifications, in order to connect the device's push features with Ably's, the library must perform the process described in the following abstract state machine. While this process should be implemented in whatever way better fits the concrete platform, it should be taken into account that its lifetime is that of the *app* that runs it, which outlives that of the `RestClient` instance or (typically) the process running the app. This typically forces some kind of on-disk storage to which the state machine's state must be persisted, so that it can be recovered later by new instances and processes running the app triggered by external events. - - `(RSH3h)` The Activation State Machine is initialised when first required (i.e. when an event first needs to be delivered to it). Initialisation comprises, in order: (1) the `LocalDevice` is initialised per [`RSH8a`](#RSH8a), which may, per [`RSH8a1`](#RSH8a1), discard the persisted Activation State Machine data; (2) the in-memory state machine is then constructed from the persisted Activation State Machine data, or starts in `NotActivated` if no such data is persisted. The state machine must not process any events before this initialisation has completed. + - `(RSH3h)` The Activation State Machine is initialised when first required (i.e. when an event first needs to be delivered to it). Initialisation comprises, in order: (1) the `LocalDevice` is initialised per [`RSH8a`](#RSH8a) (if it has not already been initialised), which may, per [`RSH8a1`](#RSH8a1), discard the persisted Activation State Machine data; (2) the in-memory state machine is then constructed from the persisted Activation State Machine data, or starts in `NotActivated` if no such data is persisted. The state machine must not process any events before this initialisation has completed. - `(RSH3a)` State `NotActivated` (the initial one). - `(RSH3a1)` On event `CalledDeactivate`: - `(RSH3a1a)` This clause has been deleted. It was valid up to and including specification version `3.0.0`.