The add_categorical method was assuming it was adding a fresh definition of an operator, not one borrowed from a module, so it overrode the existing precedence with the defaults, which are wrong if the existing precedence doesn't happen to match the default.
Fixed with bb598968c68bff2163322aea040bd81ec6097ae4 Test in fae390f38efad9e51d2224951d7eb3d47fe9b889