diff --git a/CHANGES.md b/CHANGES.md
index ef671e73f1780b84d7a21ea05a355e7404077d57..78498c10b5512152d358d83f1d6768fc54060dd4 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,88 @@
+Synapse 1.55.0rc1 (2022-03-15)
+==============================
+
+This release removes a workaround introduced in Synapse 1.50.0 for Mjolnir compatibility. **This breaks compatibility with Mjolnir 1.3.1 and earlier. ([\#11700](https://github.com/matrix-org/synapse/issues/11700))**; Mjolnir users should upgrade Mjolnir before upgrading Synapse to this version.
+
+Features
+--------
+
+- Add third-party rules callbacks `check_can_shutdown_room` and `check_can_deactivate_user`. ([\#12028](https://github.com/matrix-org/synapse/issues/12028))
+- Improve performance of logging in for large accounts. ([\#12132](https://github.com/matrix-org/synapse/issues/12132))
+- Add experimental env var `SYNAPSE_ASYNC_IO_REACTOR` that causes Synapse to use the asyncio reactor for Twisted. ([\#12135](https://github.com/matrix-org/synapse/issues/12135))
+- Support the stable identifiers from [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440): threads. ([\#12151](https://github.com/matrix-org/synapse/issues/12151))
+- Add a new Jinja2 template filter to extract the local part of an email address. ([\#12212](https://github.com/matrix-org/synapse/issues/12212))
+
+
+Bugfixes
+--------
+
+- Use the proper serialization format for bundled thread aggregations. The bug has existed since Synapse v1.48.0. ([\#12090](https://github.com/matrix-org/synapse/issues/12090))
+- Fix a long-standing bug when redacting events with relations. ([\#12113](https://github.com/matrix-org/synapse/issues/12113), [\#12121](https://github.com/matrix-org/synapse/issues/12121), [\#12130](https://github.com/matrix-org/synapse/issues/12130), [\#12189](https://github.com/matrix-org/synapse/issues/12189))
+- Fix a bug introduced in Synapse 1.7.2 whereby background updates are never run with the default background batch size. ([\#12157](https://github.com/matrix-org/synapse/issues/12157))
+- Fix a bug where non-standard information was returned from the `/hierarchy` API. Introduced in Synapse v1.41.0. ([\#12175](https://github.com/matrix-org/synapse/issues/12175))
+- Fix a bug introduced in Synapse 1.54.0 that broke background updates on sqlite homeservers while search was disabled. ([\#12215](https://github.com/matrix-org/synapse/issues/12215))
+- Fix a long-standing bug when a `filter` argument with `event_fields` which did not include the `unsigned` field could result in a 500 error on `/sync`. ([\#12234](https://github.com/matrix-org/synapse/issues/12234))
+
+
+Improved Documentation
+----------------------
+
+- Fix complexity checking config example in [Resource Constrained Devices](https://matrix-org.github.io/synapse/v1.54/other/running_synapse_on_single_board_computers.html) docs page. ([\#11998](https://github.com/matrix-org/synapse/issues/11998))
+- Improve documentation for demo scripts. ([\#12143](https://github.com/matrix-org/synapse/issues/12143))
+- Updates to the Room DAG concepts development document. ([\#12179](https://github.com/matrix-org/synapse/issues/12179))
+- Document that the `typing`, `to_device`, `account_data`, `receipts`, and `presence` stream writer can only be used on a single worker. ([\#12196](https://github.com/matrix-org/synapse/issues/12196))
+- Document that contributors can sign off privately by email. ([\#12204](https://github.com/matrix-org/synapse/issues/12204))
+
+
+Deprecations and Removals
+-------------------------
+
+- **Remove workaround introduced in Synapse 1.50.0 for Mjolnir compatibility. Breaks compatibility with Mjolnir 1.3.1 and earlier. ([\#11700](https://github.com/matrix-org/synapse/issues/11700))**
+- Remove backwards compatibilty with pagination tokens from the `/relations` and `/aggregations` endpoints generated from Synapse < v1.52.0. ([\#12138](https://github.com/matrix-org/synapse/issues/12138))
+- The groups/communities feature in Synapse has been deprecated. ([\#12200](https://github.com/matrix-org/synapse/issues/12200))
+
+
+Internal Changes
+----------------
+
+- Simplify the `ApplicationService` class' set of public methods related to interest checking. ([\#11915](https://github.com/matrix-org/synapse/issues/11915))
+- Add config settings for background update parameters. ([\#11980](https://github.com/matrix-org/synapse/issues/11980))
+- Correct type hints for txredis. ([\#12042](https://github.com/matrix-org/synapse/issues/12042))
+- Limit the size of `aggregation_key` on annotations. ([\#12101](https://github.com/matrix-org/synapse/issues/12101))
+- Add type hints to tests files. ([\#12108](https://github.com/matrix-org/synapse/issues/12108), [\#12146](https://github.com/matrix-org/synapse/issues/12146), [\#12207](https://github.com/matrix-org/synapse/issues/12207), [\#12208](https://github.com/matrix-org/synapse/issues/12208))
+- Move scripts to Synapse package and expose as setuptools entry points. ([\#12118](https://github.com/matrix-org/synapse/issues/12118))
+- Add support for cancellation to `ReadWriteLock`. ([\#12120](https://github.com/matrix-org/synapse/issues/12120))
+- Fix data validation to compare to lists, not sequences. ([\#12128](https://github.com/matrix-org/synapse/issues/12128))
+- Fix CI not attaching source distributions and wheels to the GitHub releases. ([\#12131](https://github.com/matrix-org/synapse/issues/12131))
+- Remove unused mocks from `test_typing`. ([\#12136](https://github.com/matrix-org/synapse/issues/12136))
+- Give `scripts-dev` scripts suffixes for neater CI config. ([\#12137](https://github.com/matrix-org/synapse/issues/12137))
+- Move `synctl` into `synapse._scripts` and expose as an entry point. ([\#12140](https://github.com/matrix-org/synapse/issues/12140))
+- Move the snapcraft configuration file to `contrib`. ([\#12142](https://github.com/matrix-org/synapse/issues/12142))
+- Enable [MSC3030](https://github.com/matrix-org/matrix-doc/pull/3030) Complement tests in CI. ([\#12144](https://github.com/matrix-org/synapse/issues/12144))
+- Enable [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) Complement tests in CI. ([\#12145](https://github.com/matrix-org/synapse/issues/12145))
+- Add test for `ObservableDeferred`'s cancellation behaviour. ([\#12149](https://github.com/matrix-org/synapse/issues/12149))
+- Use `ParamSpec` in type hints for `synapse.logging.context`. ([\#12150](https://github.com/matrix-org/synapse/issues/12150))
+- Prune unused jobs from `tox` config. ([\#12152](https://github.com/matrix-org/synapse/issues/12152))
+- Move CI checks out of tox, to facilitate a move to using poetry. ([\#12153](https://github.com/matrix-org/synapse/issues/12153))
+- Avoid generating state groups for local out-of-band leaves. ([\#12154](https://github.com/matrix-org/synapse/issues/12154))
+- Avoid trying to calculate the state at outlier events. ([\#12155](https://github.com/matrix-org/synapse/issues/12155), [\#12173](https://github.com/matrix-org/synapse/issues/12173), [\#12202](https://github.com/matrix-org/synapse/issues/12202))
+- Fix some type annotations. ([\#12156](https://github.com/matrix-org/synapse/issues/12156))
+- Add type hints for `ObservableDeferred` attributes. ([\#12159](https://github.com/matrix-org/synapse/issues/12159))
+- Use a prebuilt Action for the `tests-done` CI job. ([\#12161](https://github.com/matrix-org/synapse/issues/12161))
+- Reduce number of DB queries made during processing of `/sync`. ([\#12163](https://github.com/matrix-org/synapse/issues/12163))
+- Add `delay_cancellation` utility function, which behaves like `stop_cancellation` but waits until the original `Deferred` resolves before raising a `CancelledError`. ([\#12180](https://github.com/matrix-org/synapse/issues/12180))
+- Retry HTTP replication failures, this should prevent 502's when restarting stateful workers (main, event persisters, stream writers). Contributed by Nick @ Beeper. ([\#12182](https://github.com/matrix-org/synapse/issues/12182))
+- Add cancellation support to `@cached` and `@cachedList` decorators. ([\#12183](https://github.com/matrix-org/synapse/issues/12183))
+- Remove unused variables. ([\#12187](https://github.com/matrix-org/synapse/issues/12187))
+- Add combined test for HTTP pusher and push rule. Contributed by Nick @ Beeper. ([\#12188](https://github.com/matrix-org/synapse/issues/12188))
+- Rename `HomeServer.get_tcp_replication` to `get_replication_command_handler`. ([\#12192](https://github.com/matrix-org/synapse/issues/12192))
+- Remove some dead code. ([\#12197](https://github.com/matrix-org/synapse/issues/12197))
+- Fix a misleading comment in the function `check_event_for_spam`. ([\#12203](https://github.com/matrix-org/synapse/issues/12203))
+- Remove unnecessary `pass` statements. ([\#12206](https://github.com/matrix-org/synapse/issues/12206))
+- Update the SSO username picker template to comply with SIWA guidelines. ([\#12210](https://github.com/matrix-org/synapse/issues/12210))
+- Improve code documentation for the typing stream over replication. ([\#12211](https://github.com/matrix-org/synapse/issues/12211))
+
+
 Synapse 1.54.0 (2022-03-08)
 ===========================
 
diff --git a/changelog.d/11700.removal b/changelog.d/11700.removal
deleted file mode 100644
index d3d3c48f0fc43136a9ba04bfe09e447323570efd..0000000000000000000000000000000000000000
--- a/changelog.d/11700.removal
+++ /dev/null
@@ -1 +0,0 @@
-Remove workaround introduced in Synapse 1.50.0 for Mjolnir compatibility. Breaks compatibility with Mjolnir 1.3.1 and earlier.
diff --git a/changelog.d/11915.misc b/changelog.d/11915.misc
deleted file mode 100644
index e3cef1511eb63f40e0b1b3c9219565e65a41882c..0000000000000000000000000000000000000000
--- a/changelog.d/11915.misc
+++ /dev/null
@@ -1 +0,0 @@
-Simplify the `ApplicationService` class' set of public methods related to interest checking.
\ No newline at end of file
diff --git a/changelog.d/11980.misc b/changelog.d/11980.misc
deleted file mode 100644
index 36e992e645a34cd9bf5645c46d673d3fdc39eb18..0000000000000000000000000000000000000000
--- a/changelog.d/11980.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add config settings for background update parameters.
\ No newline at end of file
diff --git a/changelog.d/11998.doc b/changelog.d/11998.doc
deleted file mode 100644
index 33ab7b7880be3e7bde7874a029233d825f11e6a8..0000000000000000000000000000000000000000
--- a/changelog.d/11998.doc
+++ /dev/null
@@ -1 +0,0 @@
-Fix complexity checking config example in [Resource Constrained Devices](https://matrix-org.github.io/synapse/v1.54/other/running_synapse_on_single_board_computers.html) docs page.
\ No newline at end of file
diff --git a/changelog.d/12028.feature b/changelog.d/12028.feature
deleted file mode 100644
index 5549c8f6fcf63c5a7a3d751323e23c30904be3e5..0000000000000000000000000000000000000000
--- a/changelog.d/12028.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add third-party rules rules callbacks `check_can_shutdown_room` and `check_can_deactivate_user`.
diff --git a/changelog.d/12042.misc b/changelog.d/12042.misc
deleted file mode 100644
index 6ecdc960210c7edbb22d0632b2fbdd86fb3551fd..0000000000000000000000000000000000000000
--- a/changelog.d/12042.misc
+++ /dev/null
@@ -1 +0,0 @@
-Correct type hints for txredis.
diff --git a/changelog.d/12090.bugfix b/changelog.d/12090.bugfix
deleted file mode 100644
index 087065dcb1cdbf2a13b7bc4cf9546755334ca4c1..0000000000000000000000000000000000000000
--- a/changelog.d/12090.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Use the proper serialization format for bundled thread aggregations. The bug has existed since Synapse v1.48.0.
diff --git a/changelog.d/12101.misc b/changelog.d/12101.misc
deleted file mode 100644
index d165f73d13e8c1f8114e1a1a70e15e27748d7061..0000000000000000000000000000000000000000
--- a/changelog.d/12101.misc
+++ /dev/null
@@ -1 +0,0 @@
-Limit the size of `aggregation_key` on annotations.
diff --git a/changelog.d/12108.misc b/changelog.d/12108.misc
deleted file mode 100644
index b67a701dbb52a5e2a582b8b0f31cdda4d733322b..0000000000000000000000000000000000000000
--- a/changelog.d/12108.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add type hints to tests files.
diff --git a/changelog.d/12113.bugfix b/changelog.d/12113.bugfix
deleted file mode 100644
index df9b0dc413dd18e2e03d8399d53eea9a504fb252..0000000000000000000000000000000000000000
--- a/changelog.d/12113.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a long-standing bug when redacting events with relations.
diff --git a/changelog.d/12118.misc b/changelog.d/12118.misc
deleted file mode 100644
index a2c397d907553a7ea560bf66826c9f4ca7c777cb..0000000000000000000000000000000000000000
--- a/changelog.d/12118.misc
+++ /dev/null
@@ -1 +0,0 @@
-Move scripts to Synapse package and expose as setuptools entry points.
diff --git a/changelog.d/12120.misc b/changelog.d/12120.misc
deleted file mode 100644
index 3603096500322d1b5928f60005ab39a912cc4d0e..0000000000000000000000000000000000000000
--- a/changelog.d/12120.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add support for cancellation to `ReadWriteLock`.
diff --git a/changelog.d/12121.bugfix b/changelog.d/12121.bugfix
deleted file mode 100644
index df9b0dc413dd18e2e03d8399d53eea9a504fb252..0000000000000000000000000000000000000000
--- a/changelog.d/12121.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a long-standing bug when redacting events with relations.
diff --git a/changelog.d/12128.misc b/changelog.d/12128.misc
deleted file mode 100644
index 0570a8e3272f1e741d05ff60b76104afeb586ae9..0000000000000000000000000000000000000000
--- a/changelog.d/12128.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix data validation to compare to lists, not sequences.
diff --git a/changelog.d/12130.bugfix b/changelog.d/12130.bugfix
deleted file mode 100644
index df9b0dc413dd18e2e03d8399d53eea9a504fb252..0000000000000000000000000000000000000000
--- a/changelog.d/12130.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a long-standing bug when redacting events with relations.
diff --git a/changelog.d/12131.misc b/changelog.d/12131.misc
deleted file mode 100644
index 8ef23c22d5245e19c90d5d166585225b125ae575..0000000000000000000000000000000000000000
--- a/changelog.d/12131.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix CI not attaching source distributions and wheels to the GitHub releases.
\ No newline at end of file
diff --git a/changelog.d/12132.feature b/changelog.d/12132.feature
deleted file mode 100644
index 3b8362ad35ed3063cecc0f21fd4737784cf4982b..0000000000000000000000000000000000000000
--- a/changelog.d/12132.feature
+++ /dev/null
@@ -1 +0,0 @@
-Improve performance of logging in for large accounts.
diff --git a/changelog.d/12135.feature b/changelog.d/12135.feature
deleted file mode 100644
index b337f51730e61b7d0379bc4d1d26dc7f25d17081..0000000000000000000000000000000000000000
--- a/changelog.d/12135.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add experimental env var `SYNAPSE_ASYNC_IO_REACTOR` that causes Synapse to use the asyncio reactor for Twisted.
diff --git a/changelog.d/12136.misc b/changelog.d/12136.misc
deleted file mode 100644
index 98b1c1c9d8ac4b94eb7e0b9dfa4420ad0114f357..0000000000000000000000000000000000000000
--- a/changelog.d/12136.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove unused mocks from `test_typing`.
\ No newline at end of file
diff --git a/changelog.d/12137.misc b/changelog.d/12137.misc
deleted file mode 100644
index 118ff77a91c61dc6acce6066b9bd845e89bf3a21..0000000000000000000000000000000000000000
--- a/changelog.d/12137.misc
+++ /dev/null
@@ -1 +0,0 @@
-Give `scripts-dev` scripts suffixes for neater CI config.
\ No newline at end of file
diff --git a/changelog.d/12138.removal b/changelog.d/12138.removal
deleted file mode 100644
index 6ed84d476cd93321d77bc6d2793efd7f1d9f4e2d..0000000000000000000000000000000000000000
--- a/changelog.d/12138.removal
+++ /dev/null
@@ -1 +0,0 @@
-Remove backwards compatibilty with pagination tokens from the `/relations` and `/aggregations` endpoints generated from Synapse < v1.52.0.
diff --git a/changelog.d/12140.misc b/changelog.d/12140.misc
deleted file mode 100644
index 33a21a29f0f485ed184bbeeebd1d6a422d01fb6e..0000000000000000000000000000000000000000
--- a/changelog.d/12140.misc
+++ /dev/null
@@ -1 +0,0 @@
-Move `synctl` into `synapse._scripts` and expose as an entry point.
\ No newline at end of file
diff --git a/changelog.d/12142.misc b/changelog.d/12142.misc
deleted file mode 100644
index 5d09f90b5244d93d1067adbc9663c7170e8e3cf6..0000000000000000000000000000000000000000
--- a/changelog.d/12142.misc
+++ /dev/null
@@ -1 +0,0 @@
-Move the snapcraft configuration file to `contrib`.
\ No newline at end of file
diff --git a/changelog.d/12143.doc b/changelog.d/12143.doc
deleted file mode 100644
index 4b9db74b1fc9e8d4d24ff89a342e266df016abf3..0000000000000000000000000000000000000000
--- a/changelog.d/12143.doc
+++ /dev/null
@@ -1 +0,0 @@
-Improve documentation for demo scripts.
diff --git a/changelog.d/12144.misc b/changelog.d/12144.misc
deleted file mode 100644
index d8f71bb203eb2d06cfc12dd30f7be9248ad1b940..0000000000000000000000000000000000000000
--- a/changelog.d/12144.misc
+++ /dev/null
@@ -1 +0,0 @@
-Enable [MSC3030](https://github.com/matrix-org/matrix-doc/pull/3030) Complement tests in CI.
diff --git a/changelog.d/12145.misc b/changelog.d/12145.misc
deleted file mode 100644
index 4092a2d66e45618698d90fa91e675edf0b4410dd..0000000000000000000000000000000000000000
--- a/changelog.d/12145.misc
+++ /dev/null
@@ -1 +0,0 @@
-Enable [MSC2716](https://github.com/matrix-org/matrix-doc/pull/2716) Complement tests in CI.
diff --git a/changelog.d/12146.misc b/changelog.d/12146.misc
deleted file mode 100644
index b67a701dbb52a5e2a582b8b0f31cdda4d733322b..0000000000000000000000000000000000000000
--- a/changelog.d/12146.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add type hints to tests files.
diff --git a/changelog.d/12149.misc b/changelog.d/12149.misc
deleted file mode 100644
index d39af96723656421aa10f31a0d19f5590e16279a..0000000000000000000000000000000000000000
--- a/changelog.d/12149.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add test for `ObservableDeferred`'s cancellation behaviour.
diff --git a/changelog.d/12150.misc b/changelog.d/12150.misc
deleted file mode 100644
index 2d2706dac76926d85e193a0b3d030d774035d9d1..0000000000000000000000000000000000000000
--- a/changelog.d/12150.misc
+++ /dev/null
@@ -1 +0,0 @@
-Use `ParamSpec` in type hints for `synapse.logging.context`.
diff --git a/changelog.d/12151.feature b/changelog.d/12151.feature
deleted file mode 100644
index 18432b2da9a558d6c64869d699f34e5950b79be1..0000000000000000000000000000000000000000
--- a/changelog.d/12151.feature
+++ /dev/null
@@ -1 +0,0 @@
-Support the stable identifiers from [MSC3440](https://github.com/matrix-org/matrix-doc/pull/3440): threads.
diff --git a/changelog.d/12152.misc b/changelog.d/12152.misc
deleted file mode 100644
index b9877eaccbee52b5362206fd846f3628346a667c..0000000000000000000000000000000000000000
--- a/changelog.d/12152.misc
+++ /dev/null
@@ -1 +0,0 @@
-Prune unused jobs from `tox` config.
\ No newline at end of file
diff --git a/changelog.d/12153.misc b/changelog.d/12153.misc
deleted file mode 100644
index f02d140f387148809d25d083b230acecf9cf5ab9..0000000000000000000000000000000000000000
--- a/changelog.d/12153.misc
+++ /dev/null
@@ -1 +0,0 @@
-Move CI checks out of tox, to facilitate a move to using poetry.
\ No newline at end of file
diff --git a/changelog.d/12154.misc b/changelog.d/12154.misc
deleted file mode 100644
index 18d2a4728be92d800998422a618775a7e2a4d054..0000000000000000000000000000000000000000
--- a/changelog.d/12154.misc
+++ /dev/null
@@ -1 +0,0 @@
-Avoid generating state groups for local out-of-band leaves.
diff --git a/changelog.d/12155.misc b/changelog.d/12155.misc
deleted file mode 100644
index 9f333e718a869fc963ef89242f4292781c8ae031..0000000000000000000000000000000000000000
--- a/changelog.d/12155.misc
+++ /dev/null
@@ -1 +0,0 @@
-Avoid trying to calculate the state at outlier events.
diff --git a/changelog.d/12156.misc b/changelog.d/12156.misc
deleted file mode 100644
index 4818d988d7715b586a51b4f2e2d256dec7d17cee..0000000000000000000000000000000000000000
--- a/changelog.d/12156.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix some type annotations.
diff --git a/changelog.d/12157.bugfix b/changelog.d/12157.bugfix
deleted file mode 100644
index c3d2e700bb1d6b62c15ba7f15f3414317c24cc81..0000000000000000000000000000000000000000
--- a/changelog.d/12157.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug introduced in #4864 whereby background updates are never run with the default background batch size.
diff --git a/changelog.d/12159.misc b/changelog.d/12159.misc
deleted file mode 100644
index 30500f2fd95d88bc7fb2c86dad666b6e10d4cc26..0000000000000000000000000000000000000000
--- a/changelog.d/12159.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add type hints for `ObservableDeferred` attributes.
diff --git a/changelog.d/12161.misc b/changelog.d/12161.misc
deleted file mode 100644
index 43eff08d467e22f2539ca504d2578fd4135edd9c..0000000000000000000000000000000000000000
--- a/changelog.d/12161.misc
+++ /dev/null
@@ -1 +0,0 @@
-Use a prebuilt Action for the `tests-done` CI job.
diff --git a/changelog.d/12163.misc b/changelog.d/12163.misc
deleted file mode 100644
index 13de0895f5faebc60650bb69dcf41b1d8a47d1ef..0000000000000000000000000000000000000000
--- a/changelog.d/12163.misc
+++ /dev/null
@@ -1 +0,0 @@
-Reduce number of DB queries made during processing of `/sync`.
diff --git a/changelog.d/12173.misc b/changelog.d/12173.misc
deleted file mode 100644
index 9f333e718a869fc963ef89242f4292781c8ae031..0000000000000000000000000000000000000000
--- a/changelog.d/12173.misc
+++ /dev/null
@@ -1 +0,0 @@
-Avoid trying to calculate the state at outlier events.
diff --git a/changelog.d/12175.bugfix b/changelog.d/12175.bugfix
deleted file mode 100644
index 881cb9b76c2042a08f5f4d8ce6557addddf9705c..0000000000000000000000000000000000000000
--- a/changelog.d/12175.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug where non-standard information was returned from the `/hierarchy` API. Introduced in Synapse v1.41.0.
diff --git a/changelog.d/12179.doc b/changelog.d/12179.doc
deleted file mode 100644
index 55d8caa45a8cbc684f8e92d1387afbad2230a4b0..0000000000000000000000000000000000000000
--- a/changelog.d/12179.doc
+++ /dev/null
@@ -1 +0,0 @@
-Updates to the Room DAG concepts development document.
diff --git a/changelog.d/12180.misc b/changelog.d/12180.misc
deleted file mode 100644
index 7a347352fd919a4f7458dd35f93e88c3aa4499f7..0000000000000000000000000000000000000000
--- a/changelog.d/12180.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add `delay_cancellation` utility function, which behaves like `stop_cancellation` but waits until the original `Deferred` resolves before raising a `CancelledError`.
diff --git a/changelog.d/12182.misc b/changelog.d/12182.misc
deleted file mode 100644
index 7e9ad2c75244df4a7318113232b8ec619bab580f..0000000000000000000000000000000000000000
--- a/changelog.d/12182.misc
+++ /dev/null
@@ -1 +0,0 @@
-Retry HTTP replication failures, this should prevent 502's when restarting stateful workers (main, event persisters, stream writers). Contributed by Nick @ Beeper.
diff --git a/changelog.d/12183.misc b/changelog.d/12183.misc
deleted file mode 100644
index dd441bb64ff756f1195755676f3bb6214d9118c0..0000000000000000000000000000000000000000
--- a/changelog.d/12183.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add cancellation support to `@cached` and `@cachedList` decorators.
diff --git a/changelog.d/12187.misc b/changelog.d/12187.misc
deleted file mode 100644
index c53e68faa5084fd5dd69172e35cb6bbc751af455..0000000000000000000000000000000000000000
--- a/changelog.d/12187.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove unused variables.
diff --git a/changelog.d/12188.misc b/changelog.d/12188.misc
deleted file mode 100644
index 403158481cee0726e523a9877f9687804abf75e4..0000000000000000000000000000000000000000
--- a/changelog.d/12188.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add combined test for HTTP pusher and push rule. Contributed by Nick @ Beeper.
diff --git a/changelog.d/12189.bugfix b/changelog.d/12189.bugfix
deleted file mode 100644
index df9b0dc413dd18e2e03d8399d53eea9a504fb252..0000000000000000000000000000000000000000
--- a/changelog.d/12189.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a long-standing bug when redacting events with relations.
diff --git a/changelog.d/12192.misc b/changelog.d/12192.misc
deleted file mode 100644
index bdfe8dad98a6fa3740c327375284f7ed18842740..0000000000000000000000000000000000000000
--- a/changelog.d/12192.misc
+++ /dev/null
@@ -1 +0,0 @@
-Rename `HomeServer.get_tcp_replication` to `get_replication_command_handler`.
diff --git a/changelog.d/12196.doc b/changelog.d/12196.doc
deleted file mode 100644
index 269f06aa3386314e9002f3abf119e65ba36ac835..0000000000000000000000000000000000000000
--- a/changelog.d/12196.doc
+++ /dev/null
@@ -1 +0,0 @@
-Document that the `typing`, `to_device`, `account_data`, `receipts`, and `presence` stream writer can only be used on a single worker.
\ No newline at end of file
diff --git a/changelog.d/12197.misc b/changelog.d/12197.misc
deleted file mode 100644
index 7d0e9b6bbf4cf952e504c1d3c6cde772d4572505..0000000000000000000000000000000000000000
--- a/changelog.d/12197.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove some dead code.
diff --git a/changelog.d/12200.removal b/changelog.d/12200.removal
deleted file mode 100644
index 312c7ae32597db27190508d16fa98653c08552cb..0000000000000000000000000000000000000000
--- a/changelog.d/12200.removal
+++ /dev/null
@@ -1 +0,0 @@
-The groups/communities feature in Synapse has been deprecated.
diff --git a/changelog.d/12202.misc b/changelog.d/12202.misc
deleted file mode 100644
index 9f333e718a869fc963ef89242f4292781c8ae031..0000000000000000000000000000000000000000
--- a/changelog.d/12202.misc
+++ /dev/null
@@ -1 +0,0 @@
-Avoid trying to calculate the state at outlier events.
diff --git a/changelog.d/12203.misc b/changelog.d/12203.misc
deleted file mode 100644
index 892dc5bfb7e369f2db4991c10e5ea4d7d5dce82f..0000000000000000000000000000000000000000
--- a/changelog.d/12203.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix a misleading comment in the function `check_event_for_spam`.
diff --git a/changelog.d/12204.doc b/changelog.d/12204.doc
deleted file mode 100644
index c4b2805bb1123aae444a49cbb1f14894daa87d00..0000000000000000000000000000000000000000
--- a/changelog.d/12204.doc
+++ /dev/null
@@ -1 +0,0 @@
-Document that contributors can sign off privately by email.
diff --git a/changelog.d/12206.misc b/changelog.d/12206.misc
deleted file mode 100644
index df59bb56cdb87dc390d504e984347d9553c46533..0000000000000000000000000000000000000000
--- a/changelog.d/12206.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove unnecessary `pass` statements.
diff --git a/changelog.d/12207.misc b/changelog.d/12207.misc
deleted file mode 100644
index b67a701dbb52a5e2a582b8b0f31cdda4d733322b..0000000000000000000000000000000000000000
--- a/changelog.d/12207.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add type hints to tests files.
diff --git a/changelog.d/12208.misc b/changelog.d/12208.misc
deleted file mode 100644
index c5b635679931a2a89a97559edea11a73a655ce47..0000000000000000000000000000000000000000
--- a/changelog.d/12208.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add type hints to tests files.
\ No newline at end of file
diff --git a/changelog.d/12210.misc b/changelog.d/12210.misc
deleted file mode 100644
index 3f6a8747c256b250a42334753836eb1009962f90..0000000000000000000000000000000000000000
--- a/changelog.d/12210.misc
+++ /dev/null
@@ -1 +0,0 @@
-Update the SSO username picker template to comply with SIWA guidelines.
diff --git a/changelog.d/12211.misc b/changelog.d/12211.misc
deleted file mode 100644
index d11634a1ee0fc2d7f94b4dfd2eed7f21fc7d5fb3..0000000000000000000000000000000000000000
--- a/changelog.d/12211.misc
+++ /dev/null
@@ -1 +0,0 @@
-Improve code documentation for the typing stream over replication.
\ No newline at end of file
diff --git a/changelog.d/12212.feature b/changelog.d/12212.feature
deleted file mode 100644
index fe337ff99057ec234a21912f1053d510d5591be6..0000000000000000000000000000000000000000
--- a/changelog.d/12212.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add a new Jinja2 template filter to extract the local part of an email address.
diff --git a/changelog.d/12215.bugfix b/changelog.d/12215.bugfix
deleted file mode 100644
index 593b12556beb36f7e2881751fce18d83552fe144..0000000000000000000000000000000000000000
--- a/changelog.d/12215.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug introduced in 1.54.0 that broke background updates on sqlite homeservers while search was disabled.
diff --git a/debian/changelog b/debian/changelog
index 02136a0d606f37938a55a96342ab1f4cf0eb6d7b..09ef24ebb0d3bf2cac3a6828bab12478720796c6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+matrix-synapse-py3 (1.55.0~rc1) stable; urgency=medium
+
+  * New synapse release 1.55.0~rc1.
+
+ -- Synapse Packaging team <packages@matrix.org>  Tue, 15 Mar 2022 10:59:31 +0000
+
 matrix-synapse-py3 (1.54.0) stable; urgency=medium
 
   * New synapse release 1.54.0.
diff --git a/synapse/__init__.py b/synapse/__init__.py
index 4b00565976928805c8e98944eda0e3e0dfe0d34f..870707f476436eb1ba621e65c37d4658b45855b4 100644
--- a/synapse/__init__.py
+++ b/synapse/__init__.py
@@ -68,7 +68,7 @@ try:
 except ImportError:
     pass
 
-__version__ = "1.54.0"
+__version__ = "1.55.0rc1"
 
 if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)):
     # We import here so that we don't have to install a bunch of deps when
diff --git a/synapse/events/utils.py b/synapse/events/utils.py
index b2a237c1e04ac4ce1d316d2d49a145f31c969eb8..a0520068e0f9b294153ce2bef8d558af1a1d0ab2 100644
--- a/synapse/events/utils.py
+++ b/synapse/events/utils.py
@@ -530,9 +530,12 @@ class EventClientSerializer:
 
         # Include the bundled aggregations in the event.
         if serialized_aggregations:
-            serialized_event["unsigned"].setdefault("m.relations", {}).update(
-                serialized_aggregations
-            )
+            # There is likely already an "unsigned" field, but a filter might
+            # have stripped it off (via the event_fields option). The server is
+            # allowed to return additional fields, so add it back.
+            serialized_event.setdefault("unsigned", {}).setdefault(
+                "m.relations", {}
+            ).update(serialized_aggregations)
 
     def serialize_events(
         self,
diff --git a/tests/rest/client/test_relations.py b/tests/rest/client/test_relations.py
index 3dbd1304a87d53358b86b7cf00af1e2001a90ea6..f3741b30018539b6f37c4e4a99d116554bf83806 100644
--- a/tests/rest/client/test_relations.py
+++ b/tests/rest/client/test_relations.py
@@ -981,6 +981,34 @@ class RelationsTestCase(BaseRelationsTestCase):
             [annotation_event_id_good, thread_event_id],
         )
 
+    def test_bundled_aggregations_with_filter(self) -> None:
+        """
+        If "unsigned" is an omitted field (due to filtering), adding the bundled
+        aggregations should not break.
+
+        Note that the spec allows for a server to return additional fields beyond
+        what is specified.
+        """
+        self._send_relation(RelationTypes.ANNOTATION, "m.reaction", "a")
+
+        # Note that the sync filter does not include "unsigned" as a field.
+        filter = urllib.parse.quote_plus(
+            b'{"event_fields": ["content", "event_id"], "room": {"timeline": {"limit": 3}}}'
+        )
+        channel = self.make_request(
+            "GET", f"/sync?filter={filter}", access_token=self.user_token
+        )
+        self.assertEqual(200, channel.code, channel.json_body)
+
+        # Ensure the timeline is limited, find the parent event.
+        room_timeline = channel.json_body["rooms"]["join"][self.room]["timeline"]
+        self.assertTrue(room_timeline["limited"])
+        parent_event = self._find_event_in_chunk(room_timeline["events"])
+
+        # Ensure there's bundled aggregations on it.
+        self.assertIn("unsigned", parent_event)
+        self.assertIn("m.relations", parent_event["unsigned"])
+
 
 class RelationPaginationTestCase(BaseRelationsTestCase):
     def test_basic_paginate_relations(self) -> None: