I'm not sure what counts as first in this context, but fwiw if a logging subsystem is present during boot we always execute it's Stage.RUNTIME steps first before proceeding on to doing the parallel execution of the other subsystems. We could probably without too much trouble get a bit more grimy, e.g. to get the subsystem ops to run before a few others if they don't already. Beyond that I sense we wouldn't be talking grimy, we'd be talking horrible. :)Darran and I had a brief discussion about what we could do because at least parts of Elytron and logging are generally needed before other things are configured. Elytron would likely need to be first because logging will have to use capabilities from it.I've wondered if there should be a new Stage.PRE_RUNTIME type of stage, but I can also see where that may get abused.This is starting to smell bad.Elytron needs DS it seems, and DS needs ? and, well, this is why we use MSC. :) We hadn't had deps from logging to other subsystems before, which is what made the minor boot op ordering tricks we do useful, but since we now do, then we're really down to MSC. Boot op ordering tricks can help optimize common cases like a logging subsystem not having elytron dependencies, but I don't think we should try and create a duplicate MSC.
--Brian StansberryManager, Senior Principal Software EngineerRed Hat