docs-matrix-spec/content/rooms/v9.md
Patrick Cloke 4abea9a6ca
Add room version 11 (#1604)
* Remove duplicate words.

* Add information on room version 11.

* Note some event changes.

* Newsfragment

* Fix-up event schema.

* Apply suggestions from code review

Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>

* Fix 'new in this version'.

* Clarify creator field.

* Fix-up event format & examples.

* Move the Redactions section to the client section.

* Reference the sender instead of the creator.

* More links

* Even more links.

* Fix order of headers.

* Fix typos.

Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>

* Clarify description of creator.

Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>

* Clean-up intro paragraphs for redactions.

* Clean-up examples and language.

* Review comments.

* FIx-up markup tags.

---------

Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
2023-08-15 00:18:45 -06:00

2.7 KiB

title type weight
Room Version 9 docs 90

This room version builds on version 8 to add additional redaction rules that were unintentionally missed when incorporating v8.

Client considerations

See room version 8 for specific details regarding the addition of restricted rooms.

Clients which implement the redaction algorithm locally should refer to the redactions section below for a full overview.

Redactions

{{< added-in this=true >}} m.room.member events now keep join_authorised_via_users_server in addition to other keys in content when being redacted.

{{% boxes/rationale %}} Without the join_authorised_via_users_server property, redacted join events can become invalid when verifying the auth chain of a given event, thus creating a split-brain scenario where the user is able to speak from one server's perspective but most others will continually reject their events.

This can theoretically be worked around with a rejoin to the room, being careful not to use the faulty events as prev_events, though instead it is encouraged to use v9 rooms over v8 rooms to outright avoid the situation.

Issue #3373 has further information. {{% /boxes/rationale %}}

The full redaction algorithm follows.

{{% rver-fragment name="v9-redactions" withVersioning="true" %}}

Server implementation components

{{% boxes/warning %}} The information contained in this section is strictly for server implementors. Applications which use the Client-Server API are generally unaffected by the intricacies contained here. The section above regarding client considerations is the resource that Client-Server API use cases should reference. {{% /boxes/warning %}}

Room version 8 added a new restricted join rule to allow members of a room to join another room without invite. Room version 9 is based upon v8 with the following considerations.

Redactions

See above.

Unchanged from v8

The following sections have not been modified since v8, but are included for completeness.

Handling redactions

{{% rver-fragment name="v3-handling-redactions" %}}

Event IDs

{{% rver-fragment name="v4-event-ids" %}}

Event format

{{% rver-fragment name="v4-event-format" %}}

Deprecated event content schemas

{{% rver-fragment name="v1-deprecated-formatting-off-spec" %}}

{{% rver-fragment name="v1-stringy-power-levels" %}}

Authorization rules

{{< rver-fragment name="v8-auth-rules" >}}

State resolution

{{% rver-fragment name="v2-state-res" %}}

Canonical JSON

{{% rver-fragment name="v6-canonical-json" %}}

Signing key validity period

{{% rver-fragment name="v5-signing-requirements" %}}