This is just to give a quick update of where the domain-updates branch is at. (This is a topic branch in my github instance dedicated to the purpose of converting to an update-driven server startup.)
The new Main is in place; we now have separate mains for domain vs standalone startup. However I have not successfully integrated with Server<->SM communications yet. Also, there are tests which do not compile because of the change in the class structure of Server. The new main accepts a bootstrap command object (which includes the initial server model update list) across its stdin and starts up from that. It then monitors stdin; when it reads an EOF or exception, it shuts down. Because of this it's not strictly necessary for the Server to maintain a connection to the PM as far as I can see.
I have extracted John's protocol stuff into a separate protocol module which I envision can be reused by Server<->SM, SM<->PM and SM<->SM/DC communications layers.
I introduced a new ServerController service as the entry point for server model updates. It handles the synchronization and stuff as well.
I think that's all the major points....
This branch is now merged. If you see any problems... fix them!