I think that at a minimum, anything that breaks backwards compatibility should require a TIP.
Joel - do you mean changes to "actual" or "documented" functionality?
I'm assuming (based on the poster and timing) that this TIP is a reaction to the ad_page_contract stuff, so within that context - if the rule is that changes to the documented behaviour of core APIs require a TIP then Jun's changes wouldn't have required one (since the behaviour when vars are set before ad_page_contract is called isn't specified in the documentation).
Conversely, if the rule is that any changes to behaviour of core APIs for a given set of inputs (changes to existing functionality rather than API additions) require a TIP, then people are in effect being encouraged to add flags to handle the quirks of their own requirements, which in my opinion is likely to lead to a *more* fragmented and harder to understand API.
I don't know what the solution here is, but I don't think it lies in setting formal rules that won't in practice be followed.