I used a generic function with list combination to collect from the mixins only the slots that should be reported over RPC. The user is not among them since it is always reported to the user that triggered the error.
Here's a suitably abstracted implementation of the idea: https://gist.github.com/spacebat/dbad3b50684b3a516071abb3757...
Yes I am likening RPC programming to dealing with monsters in the darkness.
https://dl.dropboxusercontent.com/u/734346/JIT-Compilation-o...
Postmodern[0] defines simple wrapper objects so that you can access databases rows as objects. The same goes for the Elephant persistent database[1]. Cells[2] define metaobjects for classes with dataflow dependencies where slots can be automatically updated in a reactive fashion.
:AROUND methods and the like are used quite often. In fact, the default way of defining a "constructor" function for your class is to specialize "initialize-instance" with an :after qualifier, so that you can fill slots that could not be initialized with the arguments to "make-instance" or the default initargs.
[0] http://marijnhaverbeke.nl/postmodern/
Design by contract implemented via method combinations / MOP.