This defines a "spike" project to support T231930: Introduce Authority objects to represent the user performing a given action with some practical experience.
The spike is limited to:
- introducing a preliminary version of the Authority interface and minimal implementations as needed
- introducing a preliminary version of the PageIdentity interface and minimal implementations as needed
- changing permission checks in core REST endpoints to use Authority rather than User and/or PermissionManager
- use Authority for audience checks in RevisionStore
- introduce a getter for Authority into IContextSource
- introduce methods for obtaining an Authority from a User instance (or make User implement Authority)
- introduce methods for obtaining an PageIdentity from a Title instance (or make Title implement Authority)
The spike should tell us whether the modeling of Authority is sound, and should highlight migration issues. This information should flow back into the RFC.
All public signatures introduced during the spike should for now be marked as unstable or experimental or internal (as appropriate), so they can be removed or modified later without deprecation. It should be understood that the code created during the spike will in the end either be undone, or be made stable.