To summarize discussion we had on this:
1) The key thing that needs to happen is some controlling logic needs to know when *all* deployers are started. It can then wait for them all to be started before moving on to installing deployments. The tricky thing is finding out what "all" is.
2) Emanuel's patch above uses BatchBuilder and a listener to do that. But that's an implementation detail.
3) MSC-21 is only directly relevant because it *may* impact that particular implementation choice. Otherwise it's a red herring.
4) Activating subsystems is moving to an "update" class, e.g. draft at
http://github.com/dmlloyd/jboss-as/blob/domain-updates/domain/src/main/java/org/jboss/as/model/AbstractSubsystemUpdate.java
5) Instead of using a BatchBuilder/listener, David is going to add a method to AbstractSubsytemUpdate, something like
registerDeployers(SomeAppropriateContext)
That will be invoked during the bootup. When that has been called for all subsystems, and all deployers that were registered are started, then installing deployments can begin.