You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Lowercase RFC 2119 keywords in clauses imported from PR #480
Follow-up to 54a3a02. The clauses pulled in from PR #480 use the
uppercase RFC 2119 convention (MUST etc.); lowercase them for
consistency with the prose style preferred on this branch.
Touches the 10 occurrences of MUST in RTO5c10, RTLO4g1-g2,
RTLO4h1-h3, RTLM7a3, RTLM7i, RTLM8a3 and RTLM24e1c. The
pre-existing uppercase keywords in RTLO4f1-f7 (getFullPaths) are
intentionally left alone.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: specifications/objects-features.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -174,7 +174,7 @@ Objects feature enables clients to store shared data as "objects" on a channel.
174
174
-`(RTO5c1b1c)` This clause has been deleted (redundant to [RTO5f3](#RTO5f3)).
175
175
-`(RTO5c2)` Remove any objects from the internal `ObjectsPool` for which `objectId`s were not received during the sync sequence
176
176
-`(RTO5c2a)` The object with ID `root` must not be removed from `ObjectsPool`, as per [RTO3b](#RTO3b)
177
-
-`(RTO5c10)` After re-establishing the `ObjectsPool` per [RTO5c1](#RTO5c1) and [RTO5c2](#RTO5c2), the client MUST rebuild every `parentReferences` map ([RTLO3f](#RTLO3f)). Specifically:
177
+
-`(RTO5c10)` After re-establishing the `ObjectsPool` per [RTO5c1](#RTO5c1) and [RTO5c2](#RTO5c2), the client must rebuild every `parentReferences` map ([RTLO3f](#RTLO3f)). Specifically:
178
178
-`(RTO5c10a)` For each `LiveObject` in the internal `ObjectsPool` ([RTO3](#RTO3)), reset its `parentReferences` to an empty map as defined in [RTLO3f2](#RTLO3f2)
179
179
-`(RTO5c10b)` After [RTO5c10a](#RTO5c10a) has completed, for each `LiveMap` in the internal `ObjectsPool`, iterate its `LiveMap#entries` as per [RTLM11](#RTLM11)
180
180
-`(RTO5c10b1)` For each iterated entry whose value type is `LiveObject`, call `addParentReference(parent, key)` on the `LiveObject` (per [RTLO4g](#RTLO4g)), passing the iterated `LiveMap` as `parent` and the iterated entry key as `key`
@@ -367,12 +367,12 @@ Objects feature enables clients to store shared data as "objects" on a channel.
367
367
-`(RTLO4a5)` If the `siteSerial` for this `LiveObject` is null or an empty string, return true
368
368
-`(RTLO4a6)` If the `siteSerial` for this `LiveObject` is not an empty string, return true if `ObjectMessage.serial` is greater than `siteSerial` when compared lexicographically
369
369
-`(RTLO4g)` internal `addParentReference(parent, key)` method - records that the `LiveMap``parent` references this `LiveObject` at `key`
370
-
-`(RTLO4g1)` If `parent` is already present in `parentReferences`, `key`MUST be added to the existing set associated with `parent`
371
-
-`(RTLO4g2)` Otherwise, a new entry MUST be inserted into `parentReferences` for `parent` with a set containing only `key`
370
+
-`(RTLO4g1)` If `parent` is already present in `parentReferences`, `key`must be added to the existing set associated with `parent`
371
+
-`(RTLO4g2)` Otherwise, a new entry must be inserted into `parentReferences` for `parent` with a set containing only `key`
372
372
-`(RTLO4h)` internal `removeParentReference(parent, key)` method - removes the recorded reference from `parent` at `key`
373
-
-`(RTLO4h1)` If `parent` is not present in `parentReferences`, the call MUST be a no-op
374
-
-`(RTLO4h2)` Otherwise, `key`MUST be removed from the set associated with `parent`
375
-
-`(RTLO4h3)` If, as a result of [RTLO4h2](#RTLO4h2), the set associated with `parent` is empty, the `parent` entry MUST be removed from `parentReferences`
373
+
-`(RTLO4h1)` If `parent` is not present in `parentReferences`, the call must be a no-op
374
+
-`(RTLO4h2)` Otherwise, `key`must be removed from the set associated with `parent`
375
+
-`(RTLO4h3)` If, as a result of [RTLO4h2](#RTLO4h2), the set associated with `parent` is empty, the `parent` entry must be removed from `parentReferences`
376
376
-`(RTLO4e)` protected `tombstone` - a convenience method used to tombstone this `LiveObject`. The realtime system reserves the right to tombstone an object (i.e. mark it for deletion from the objects pool) by publishing an `OBJECT_DELETE` operation at any time if the object is orphaned (not a descendant of the root object) or remains uninitialized (no `*_CREATE` operation has been received) for an extended period. Only the realtime system may publish an `OBJECT_DELETE` operation; clients must never send it. This method describes the steps the client library must take when it needs to tombstone an object locally. Eventually, tombstoned objects will be garbage collected following the procedure described in [RTO10](#RTO10)
377
377
-`(RTLO4e1)` Expects the following arguments:
378
378
-`(RTLO4e1a)``ObjectMessage`
@@ -699,7 +699,7 @@ Objects feature enables clients to store shared data as "objects" on a channel.
699
699
-`(RTLM7h)` If the private `clearTimeserial` is non-null, and the provided `serial` is null or the `clearTimeserial` is lexicographically greater than or equal to `serial`, discard the operation without taking any action. Return a `LiveMapUpdate` object with `LiveMapUpdate.noop` set to `true`, indicating that no update was made to the object
700
700
-`(RTLM7a)` If an `ObjectsMapEntry` exists in the private `data` for the specified key:
701
701
-`(RTLM7a1)` If the operation cannot be applied to the existing entry as per [RTLM9](#RTLM9), discard the operation without taking any action. Return a `LiveMapUpdate` object with `LiveMapUpdate.noop` set to `true`, indicating that no update was made to the object
702
-
-`(RTLM7a3)` If the current `ObjectsMapEntry` is of type `LiveObject`, before [RTLM7a2](#RTLM7a2e) is applied, the parent reference recorded on existing `ObjectsMapEntry`MUST be removed:
702
+
-`(RTLM7a3)` If the current `ObjectsMapEntry` is of type `LiveObject`, before [RTLM7a2](#RTLM7a2e) is applied, the parent reference recorded on existing `ObjectsMapEntry`must be removed:
703
703
-`(RTLM7a3a)` To check `ObjectsMapEntry` is of type `LiveObject`, validate `ObjectsMapEntry.data` has a `objectId` field, retrieve corresponding `LiveObject` from `ObjectsPool` using given `objectId`
704
704
-`(RTLM7a3b)` If `LiveObject` exists, call its `removeParentReference(parent, key)` method per [RTLO4h](#RTLO4h), passing this `LiveMap` as `parent` and the operation's key as `key`
705
705
-`(RTLM7a2)` Otherwise, apply the operation to the existing entry:
@@ -717,7 +717,7 @@ Objects feature enables clients to store shared data as "objects" on a channel.
717
717
-`(RTLM7c1)` This clause has been replaced by [RTLM7g1](#RTLM7g1) as of specification version 6.0.0.
718
718
-`(RTLM7g)` If `MapSet.value.objectId` is non-empty:
719
719
-`(RTLM7g1)` Create a new `LiveObject` for this `objectId` in the internal `ObjectsPool` per [RTO6](#RTO6)
720
-
-`(RTLM7i)` A parent reference MUST be recorded on the `LiveObject` newly referenced by this entry (if any):
720
+
-`(RTLM7i)` A parent reference must be recorded on the `LiveObject` newly referenced by this entry (if any):
721
721
-`(RTLM7i1)` If `MapSet.value.objectId` is not present, no action is required
722
722
-`(RTLM7i2)` Otherwise, call `addParentReference(parent, key)` per [RTLO4g](#RTLO4g) on the `LiveObject` in the local `ObjectsPool` with `objectId` equal to `MapSet.value.objectId` (guaranteed to exist per [RTLM7g](#RTLM7g)), passing this `LiveMap` as `parent` and the operation's key as `key`
723
723
-`(RTLM7f)` Return a `LiveMapUpdate` object with a `LiveMapUpdate.update` map containing the key used in this operation set to `updated`, and `LiveMapUpdate.objectMessage` set to the provided `ObjectMessage`
@@ -732,7 +732,7 @@ Objects feature enables clients to store shared data as "objects" on a channel.
732
732
-`(RTLM8g)` If the private `clearTimeserial` is non-null, and the provided `serial` is null or the `clearTimeserial` is lexicographically greater than or equal to `serial`, discard the operation without taking any action. Return a `LiveMapUpdate` object with `LiveMapUpdate.noop` set to `true`, indicating that no update was made to the object
733
733
-`(RTLM8a)` If an `ObjectsMapEntry` exists in the private `data` for the specified key:
734
734
-`(RTLM8a1)` If the operation cannot be applied to the existing entry as per [RTLM9](#RTLM9), discard the operation without taking any action. Return a `LiveMapUpdate` object with `LiveMapUpdate.noop` set to `true`, indicating that no update was made to the object
735
-
-`(RTLM8a3)` If the current `ObjectsMapEntry` is of type `LiveObject`, before [RTLM8a2](#RTLM8a2) is applied, the parent reference recorded on existing `ObjectsMapEntry`MUST be removed:
735
+
-`(RTLM8a3)` If the current `ObjectsMapEntry` is of type `LiveObject`, before [RTLM8a2](#RTLM8a2) is applied, the parent reference recorded on existing `ObjectsMapEntry`must be removed:
736
736
-`(RTLM8a3a)` To check `ObjectsMapEntry` is of type `LiveObject`, validate `ObjectsMapEntry.data` has a `objectId` field, retrieve corresponding `LiveObject` from `ObjectsPool` using given `objectId`
737
737
-`(RTLM8a3b)` If `LiveObject` exists, call its `removeParentReference(parent, key)` method per [RTLO4h](#RTLO4h), passing this `LiveMap` as `parent` and the operation's key as `key`
738
738
-`(RTLM8a2)` Otherwise, apply the operation to the existing entry:
@@ -758,7 +758,7 @@ Objects feature enables clients to store shared data as "objects" on a channel.
758
758
-`(RTLM24d)` Set the private `clearTimeserial` to the provided `serial`
759
759
-`(RTLM24e)` For each `ObjectsMapEntry` in the internal `data`:
760
760
-`(RTLM24e1)` If `ObjectsMapEntry.timeserial` is null or omitted, or the `serial` is lexicographically greater than `ObjectsMapEntry.timeserial`:
761
-
-`(RTLM24e1c)` If the current `ObjectsMapEntry` is of type `LiveObject`, the parent reference recorded on existing `ObjectsMapEntry`MUST be removed:
761
+
-`(RTLM24e1c)` If the current `ObjectsMapEntry` is of type `LiveObject`, the parent reference recorded on existing `ObjectsMapEntry`must be removed:
762
762
-`(RTLM24e1c1)` To check `ObjectsMapEntry` is of type `LiveObject`, validate `ObjectsMapEntry.data` has a `objectId` field, retrieve corresponding `LiveObject` from `ObjectsPool` using given `objectId`
763
763
-`(RTLM24e1c2)` If `LiveObject` exists, call its `removeParentReference(parent, key)` method per [RTLO4h](#RTLO4h), passing this `LiveMap` as `parent` and the iterated entry key as `key`
764
764
-`(RTLM24e1a)` Remove the entry from the internal `data` map. The entry is not retained as a tombstone.
0 commit comments