In general I recommend looking to TensorFlows documentation on what they consider to be a breaking change
In particular they exclude:
- Changing the type of exception thrown, unless the docs specified that that function threw that type of exception.** (which is even stronger than changing the message. They are allowed to change the type).
- Changing something from throwing a exception to returning the correct result, even if it was documented that it would throw an exception. (so functionality is allowed to be added)
- Return value of floating point operations. You can rely only on accuracy saying the same, not exact value.