Skip to content

"MSC4289: Explicitly privilege room creators" did not specify what a creator's power level should be upon room downgrade #2253

@anoadragon453

Description

@anoadragon453

Spec: https://spec.matrix.org/v1.16/rooms/v12/
MSC: MSC4289

Problem description

v12 rooms have the concept of a room "creator", and "additional creators". These users have infinite power level in the room. When upgrading a prior room version to v12, the room's creator (and any specified additional creators) are granted this power. The MSC considers this path in several places.

However the MSC did not consider downgrading a v12 room to a prior version that does not support giving creators infinite power level. What power levels should a homeserver set a v12 room's creators to when "upgrading" a v12 room to v11?

This question came up on the Synapse issue tracker. After some discussion, the conclusion was that the homeserver should try to preserve the power level structure as best it can given the auth rules of prior room versions. That is, to set the creator and additional creators' power level to the maximum number allowed by the JSON rules of the room version. And to demote any other user that may already be at that power level by 1. Thus, creators remain the most powerful users in the room following the upgrade, and the calculation is simple to implement.


As it stands, if homeservers take no special care during the process, creators can end up with power level 0 after the upgrade as the creators aren't mentioned in the users dict of power levels events. This results in an effectively broken room upon upgrading.

I propose the above be added to MSC4289 as a post-accepted clarification, rather than initiating a new MSC. Thoughts welcome.

Metadata

Metadata

Assignees

No one assigned

    Labels

    clarificationAn area where the expected behaviour is understood, but the spec could do with being more explicit

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions