I was thrown today when a "header" object didn't run through its validateForSave() method when adding or deleting objects from a "detail". It appears that isNoop is true for the header object because no base attributes get modified. When one is modified it alters the modFound variable which ultimately gets returned from that method. In the case of To-many relationships, this variable is never modified (nor is the relationship checked). In the case of To-one relationships, it does appear to do the right thing (just reading the code).
Am I missing something? Thanks! -Lon