WIP: feat: Update policy server implementation to be closer to stable MSC4284 #1487

Draft
nex wants to merge 3 commits from nex/feat/policy-servers-2-electric-boogaloo into main
Owner

This pull request updates the MSC4284 policy server implementation to better match the now stabilised MSC.

Related Synapse pull request: https://github.com/element-hq/synapse/pull/19503

  • Update m.room.policy schema
  • Update event type to support both stable and unstable types
  • Drop legacy check endpoint
  • Verify policy server signatures when checking
  • Fall back to fetching a fresh signature if one is not attached to an event

Will also add:

  • Support for advertising /.well-known/matrix/policy_server
  • Support for the stable and unstable endpoints, hopefully with some built-in checks (for example to enforce DAG "correctness") and/or the option to pass through to another service

Pull request checklist:

  • This pull request targets the main branch, and the branch is named something other than
    main.
  • I have written an appropriate pull request title and my description is clear.
  • I understand I am responsible for the contents of this pull request.
  • I have followed the contributing guidelines:
This pull request updates the [MSC4284](https://github.com/matrix-org/matrix-spec-proposals/pull/4284) policy server implementation to better match the now stabilised MSC. Related Synapse pull request: https://github.com/element-hq/synapse/pull/19503 - [x] Update `m.room.policy` schema - [ ] Update event type to support both stable and unstable types - [x] Drop legacy check endpoint - [x] Verify policy server signatures when checking - [x] Fall back to fetching a fresh signature if one is not attached to an event Will also add: - [ ] Support for advertising `/.well-known/matrix/policy_server` - [ ] Support for the stable and unstable endpoints, hopefully with some built-in checks (for example to enforce DAG "correctness") and/or the option to pass through to another service **Pull request checklist:** <!-- You need to complete these before your PR can be considered. If you aren't sure about some, feel free to ask for clarification in #dev:continuwuity.org. --> - [x] This pull request targets the `main` branch, and the branch is named something other than `main`. - [x] I have written an appropriate pull request title and my description is clear. - [x] I understand I am responsible for the contents of this pull request. - I have followed the [contributing guidelines][c1]: - [x] My contribution follows the [code style][c2], if applicable. - [x] I ran [pre-commit checks][c1pc] before opening/drafting this pull request. - [ ] I have [tested my contribution][c1t] (or proof-read it for documentation-only changes) myself, if applicable. This includes ensuring code compiles. - [x] My commit messages follow the [commit message format][c1cm] and are descriptive. - [x] I have written a [news fragment][n1] for this PR, if applicable<!--(can be done after hitting open!)-->. <!-- Notes on these requirements: - While not required, we encourage you to sign your commits with GPG or SSH to attest the authenticity of your changes. - While we allow LLM-assisted contributions, we do not appreciate contributions that are low quality, which is typical of machine-generated contributions that have not had a lot of love and care from a human. Please do not open a PR if all you have done is asked ChatGPT to tidy up the codebase with a +-100,000 diff. - In the case of code style violations, reviewers may leave review comments/change requests indicating what the ideal change would look like. For example, a reviewer may suggest you lower a log level, or use `match` instead of `if/else` etc. - In the case of code style violations, pre-commit check failures, minor things like typos/spelling errors, and in some cases commit format violations, reviewers may modify your branch directly, typically by making changes and adding a commit. Particularly in the latter case, a reviewer may rebase your commits to squash "spammy" ones (like "fix", "fix", "actually fix"), and reword commit messages that don't satisfy the format. - Pull requests MUST pass the `Checks` CI workflows to be capable of being merged. This can only be bypassed in exceptional circumstances. If your CI flakes, let us know in matrix:r/dev:continuwuity.org. - Pull requests have to be based on the latest `main` commit before being merged. If the main branch changes while you're making your changes, you should make sure you rebase on main before opening a PR. Your branch will be rebased on main before it is merged if it has fallen behind. - We typically only do fast-forward merges, so your entire commit log will be included. Once in main, it's difficult to get out cleanly, so put on your best dress, smile for the cameras! --> [c1]: https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/CONTRIBUTING.md [c2]: https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/docs/development/code_style.mdx [c1pc]: https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/CONTRIBUTING.md#pre-commit-checks [c1t]: https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/CONTRIBUTING.md#running-tests-locally [c1cm]: https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/CONTRIBUTING.md#commit-messages [n1]: https://towncrier.readthedocs.io/en/stable/tutorial.html#creating-news-fragments
nex self-assigned this 2026-03-04 05:39:46 +00:00
feat: Update policy server implementation to be closer to stable MSC4284
Some checks failed
Update flake hashes / update-flake-hashes (pull_request) Waiting to run
Documentation / Build and Deploy Documentation (pull_request) Has been cancelled
Checks / Prek / Pre-commit & Formatting (pull_request) Has been cancelled
Checks / Prek / Clippy and Cargo Tests (pull_request) Has been cancelled
6f103939df
Untested
chore: Add news fragment
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Successful in 4m5s
Update flake hashes / update-flake-hashes (pull_request) Successful in 45s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 7m25s
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 1h0m0s
6c96945b0a
nex changed title from feat: Update policy server implementation to be closer to stable MSC4284 to WIP: feat: Update policy server implementation to be closer to stable MSC4284 2026-03-04 05:43:47 +00:00
nex added the due date 2026-06-01 2026-03-04 05:47:21 +00:00
Some checks failed
Documentation / Build and Deploy Documentation (pull_request) Successful in 4m5s
Update flake hashes / update-flake-hashes (pull_request) Successful in 45s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 7m25s
Required
Details
Checks / Prek / Clippy and Cargo Tests (pull_request) Failing after 1h0m0s
Required
Details
This pull request is marked as a work in progress.
This branch is out-of-date with the base branch
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin nex/feat/policy-servers-2-electric-boogaloo:nex/feat/policy-servers-2-electric-boogaloo
git switch nex/feat/policy-servers-2-electric-boogaloo
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

2026-06-01

Depends on
Reference
continuwuation/continuwuity!1487
No description provided.