We can choose to promise not to do any of these

I've documented the changes that apply to profiles as well, though the primary concern is what can happen to resources. Deprecating and replacing profiles is less of a concern, so feel free to ignore those bits that are marked as specific to profiles.

Fundamental changes:

Non-backward compatible (Changes that break constraints on an old version) (These will most commonly occur when there's an expansion of the use-case or recognition we'd been overly restrictive)

Non-forward compatible (Introducing constraints not satisfied by old version) (These will most commonly occur when there's a change to the understanding of the 80% or a determination the existing resource doesn't work)