Link to problem area: https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3sync
I'm having a hard time following the description of /sync's behaviour. In particular, the third paragraph:
Further, like other members, the user's own membership event is eligible
for being considered redundant by the server. When a sync is limited,
the server MUST return membership events for events in the gap
(between since and the start of the returned timeline), regardless
as to whether or not they are redundant. This ensures that joins/leaves
and profile changes which occur during the gap are not lost.
Note that the default behaviour of state is to include all membership
events, alongside other state, when lazy-loading is not enabled.
Points of confusion:
-
I'm not sure what "being considered redundant by the server" refers to.
- Is this in the context of lazy-loading? I thought that involved a specific user-defined filter, rather than the server's discretion.
- The events which live the in the "gap" aren't redundant---they're just omitted---so I don't think it's talking about that.
-
"membership events for events in the gap" sounds like "all membership events which are in the gap" to me; it wasn't obvious to me that events "have" or "own" a membership event.
- It apparently means "the most recent membership event for each sender of an event in the gap".
- Must we only return such membership events in the
gap, or can they predate the gap? Put differently, can the server assume the client has a complete understanding of memberships at the since token, if it given? (Is this the meaning of redundant in the final penultimate sentence?)
-
"Note that the default behaviour of state is to include all membership events".
- All historical events back to the beginning of time?
- What about events after the
since token?
- Or just the most recent such event prior to the
since token?
- For each currently joined member? For members who have left/been kicked or banned?
Link to problem area: https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3sync
I'm having a hard time following the description of
/sync's behaviour. In particular, the third paragraph:Points of confusion:
I'm not sure what "being considered redundant by the server" refers to.
"membership events for events in the gap" sounds like "all membership events which are in the gap" to me; it wasn't obvious to me that events "have" or "own" a membership event.
gap, or can they predate the gap? Put differently, can the server assume the client has a complete understanding of memberships at thesincetoken, if it given? (Is this the meaning of redundant in thefinalpenultimate sentence?)"Note that the default behaviour of
stateis to include all membership events".sincetoken?sincetoken?