Skip to content

Conversation

@kegsay
Copy link
Member

@kegsay kegsay commented Sep 16, 2025

@kegsay kegsay changed the title Sticky Events MSC4354: Sticky Events Sep 16, 2025
It wasn't particulalry useful for clients, and doesn't help equivocation much.
@turt2live turt2live added proposal A matrix spec change proposal client-server Client-Server API kind:core MSC which is critical to the protocol's success needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. labels Sep 16, 2025
@github-project-automation github-project-automation bot moved this to Tracking for review in Spec Core Team Workflow Sep 16, 2025
@turt2live turt2live added the matrix-2.0 Required for Matrix 2.0 label Sep 16, 2025
Copy link
Member

@richvdh richvdh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nothing major, but I do have some minor questions, and a bunch of suggestions for making this easier to read (and hence likelier to land)

thus leak metadata. As a result, the key now falls within the encrypted `content` payload, and clients are expected to
implement the map-like semantics should they wish to.
[^ttl]: Earlier designs had servers inject a new `unsigned.ttl_ms` field into the PDU to say how many milliseconds were left.
This was problematic because it would have to be modified every time the server attempted delivery of the event to another server.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was problematic because it would have to be modified every time the server attempted delivery of the event to another server.

Doesn't the spec require that today with the age field?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah but not over federation. I mostly added this because Erik seemed to think this was a downside in his earlier proposal:

Also having a short expiry makes retries over federation annoying (as they are for events with age), since you need to mutate the contents before retrying a request

Do you want me to add anything to this?

kegsay and others added 6 commits October 29, 2025 08:51
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Timo <16718859+toger5@users.noreply.github.com>
turt2live added a commit to matrix-org/gomatrixserverlib that referenced this pull request Nov 3, 2025
MSC: matrix-org/matrix-spec-proposals#4354

This is for policyserv so we can block sticky events in our public rooms
(they aren't needed there)
@turt2live
Copy link
Member

This MSC appears to still be in flux and is failing to acquire checkboxes. Because I'm the one that initially asked for FCP, I'm cancelling that request at the moment. Another SCT member can put it forward again at any time.

@mscbot fcp cancel

@mscbot mscbot added proposal-in-review and removed proposed-final-comment-period Currently awaiting signoff of a majority of team members in order to enter the final comment period. disposition-merge labels Nov 18, 2025
@turt2live turt2live moved this from Ready for FCP ticks to Ready for general review in Spec Core Team Workflow Nov 18, 2025
@turt2live turt2live removed the 00-weekly-pings Tracking for weekly pings in the SCT office. 00 to make it first in the labels list. label Nov 18, 2025
@turt2live turt2live moved this from Ready for general review to Tracking for review in Spec Core Team Workflow Dec 2, 2025
Comment on lines 164 to 169
Over Simplified Sliding Sync, Sticky Events have their own extension `sticky_events`, which has the following response shape:

```js
{
"rooms": {
"!726s6s6q:example.com": {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clarify which rooms show up here. All rooms or only rooms relevant to the lists/room_subscriptions

- B) Persist the sticky events but wait a while before delivering them to clients.

Option A means servers don't need to store sticky events in their database, protecting disk usage at the cost of more bandwidth.
To implement this, servers MUST return a non-2xx status code from `/send` such that the sending server
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suspicious: rather than saying what code you should use, it says what code you shouldn't. If we want to suggest this approach I think we should provide stronger guidance.
But the /send endpoint already has per-event statuses, so this feels a bit off as an approach. Separately, a non-2xx response will likely just cause the sending server to retry and/or mark you as down.
For this reason it's hard to recommend this approach and I'm wondering if we should recommend against it, except as a fallback when you're desperate / dealing with a highly-likely malicious case?

@reivilibre reivilibre force-pushed the kegan/persist-edu branch 2 times, most recently from 2183282 to 68581b7 Compare December 16, 2025 16:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client-server Client-Server API kind:core MSC which is critical to the protocol's success matrix-2.0 Required for Matrix 2.0 proposal A matrix spec change proposal proposal-in-review unresolved-concerns This proposal has at least one outstanding concern

Projects

Status: Tracking for review

Development

Successfully merging this pull request may close these issues.