Note: self < other is not equivalent with other >= self. And there probably is a good reason it’s defined like this. This problem has a precedent, coming from a mistake made by the C++ specification, where min and max have been accidentally defined in an asymmetric manner.
Specifically, if you have a == b, you most often want/expect let (lo, hi) = (min(a, b), max(a, b)) to bind lo to a and hi to b. With this implementation of max(), hi would be bound to a too. This assumption is made, sometimes even unconsciously, in the context of pointer wrangling and unsafe code so IMO it’s best to regard this as a breaking change and keep the symmetry.