> It's not breaking, it was implementation defined
And randomised at interpreter start, since Python 3.3.
> It's not breaking
And that's sort of the problem. If it was broken, you'd know it and you'd fix/rearchitect it. Instead, it will appear to work.
Sort of. You'd only know based on the interpreter you were using. You wouldn't know unless you tested other Python interpreters.
For example, if you wrote something in pypy it would be ordered versus cpython.
If a new guarantee or behaviour were a breaking change, every non-patch release of a semversioned tool (which python isn't) would be major.