I think it's ok. If it doesn't match we require reload, which is the current behavior whether it matches or not. So the downside is confusing the user by requiring reload when they think they are sending the same value and thus won't require reload. But why would the user be aware they are doing that, and thus get confused? Sounds like an edge case.

There's another JIRA out there related to have AD.validate do simple type conversions to ensure the model stores the intended type, and not some readily convertible variant. So if the user passes string "1" in an op for an INT attribute, we store 1 and not "1". If that were implemented for 9, it would cover nearly any "spurious not equals" cases, other than the expression one Emmanuel discusses in his code comment.