This is the basis for what I think a backwards compatibility break should be defined as and where they are appropriate.
Generally any change which will alter the previous behavior in any way is considered a backwards compatibility break. All backwards compatibility breaks must be voted on as per whatever the current voting rules are.
There are acceptable backwards compatibility breaks for minor releases (again, assuming they pass the vote):
- Emitting new warnings, notices, and deprecations
- Elevating a previous warning, notice or deprecation to be more strict (but not to an exception)
- Adding a concrete method, property or constant to an existing class or trait
- Adding an abstract method is not acceptable