935cc237db
Fold the transient/permanent sync-loop tests into one parametrized table and add the two classifier branches that had no loop-level coverage: a 401 whose body was rewritten to HTML by a reverse proxy (errcode dropped, so only http_status can stop the loop) and a 429 M_LIMIT_EXCEEDED that must be retried because neither errcode nor status is an auth signal. Deleting the http_status fallback in _is_permanent_matrix_auth_error now fails the 401-html case. Hoist _sync_error to module level so parametrize can call it directly instead of the staticmethod.__func__ workaround. Trim the test_ws_auth_retry docstring, which still described a Matrix test class that moved to test_matrix.py.