Sorry for the delay. I wanted to eliminate some complexities from the app I'm working on and try to reproduce the problem in a simpler example, which I have managed to do.
In my example I have a Northwind db with Orders and Order Details. A verifier checks that at least one Order Detail is present. I have done nothing special so far (that is, I haven't tried any of the techniques discussed above). If I add a new Order Detail and save, all is well. But if I edit the Order Date and save then the verifier on the client passes OK, but the verifier on the server complains that there are no Order Details.
If I set a breakpoint and look at what the verifier has to work with on the server then it's obvious -- there are no Order Details on the Order. I am not sure that this is a bug, but it doesn't seem consistent with your statement about getting the expected behavior -- maybe we're at cross-purposes here?
It is frequently the case that you want verifiers to run client side only, eg where you have legacy data that breaks the rules, or when the conditions for a valid value change from version 1.1 to 1.2.
It would be very nice if verifiers had a flag to indicate whether they should execute client side, server side, or both.
Thinking about this further, it is not really a client/server issue, but rather a new data/old data issue. Still, having control over where verifiers execute via a simple flag would be nice.
BTW I am happy to upload my example if you want to take a look.