Doing this validation in the ChangeOp would be consistent with validation for terms and snaks.
However, sitelink uniqueness is a hard constraint, actually enforced by a nunique key in the database. That may mean that it does need to be checked every time the item is saved (not just when the sitelink is modified).
Version: unspecified
Severity: normal
Whiteboard: u=dev c=backend p=0