What I can’t get a handle on is that these principles and guidelines seem to be have an assumption of a client and server relationship. This is a consequence of its synchronous procedure call roots. That is, in a peer-to-peer relationship, shouldn’t the pre and post conditions be symmetric? If that were so, wouldn’t compatibility be much more restrictive? That is you can only be conservative in all your communication since everyone is equally a sender?