diff --git a/plugins/platforms/matrix/adapter.py b/plugins/platforms/matrix/adapter.py
index 30cdc1822a..e5e6766659 100644
--- a/plugins/platforms/matrix/adapter.py
+++ b/plugins/platforms/matrix/adapter.py
@@ -209,7 +209,7 @@ def _is_permanent_matrix_auth_error(exc: BaseException) -> bool:
A transient homeserver outage surfaces as a 5xx whose body may be an HTML
error page (Umbrel's app-proxy returns one). Naive substring checks like
``"403" in str(exc)`` false-positive on digits embedded in that HTML (an SVG
- coordinate such as ``40.4302`` contains ``403``) or in the ``since`` token
+ path coordinate such as ``1403.2`` contains ``403``) or in the ``since`` token
echoed by a timeout message, which stopped the sync loop permanently on a
passing blip. mautrix raises ``MatrixRequestError`` with ``errcode`` and
``http_status`` for every non-2xx, so classify on those alone; anything
diff --git a/tests/gateway/test_matrix.py b/tests/gateway/test_matrix.py
index aba2eca206..ec5b392f3a 100644
--- a/tests/gateway/test_matrix.py
+++ b/tests/gateway/test_matrix.py
@@ -1375,9 +1375,9 @@ class TestMatrixSyncLoop:
@pytest.mark.parametrize(
"exc",
[
- # Umbrel app-proxy 502: the SVG coordinate 40.4302 embeds "403".
+ # Umbrel app-proxy 502: an SVG path coordinate embeds "403".
_sync_error.__func__(
- '502: ',
+ '502: ',
http_status=502,
),
# Plain timeout echoing the pagination token, which embeds "401".