We don't have any doc that describes how the kernel works as it is implementation specific and it could change from one version to another. For example with the new multi-threaded kernel, the way it is done, is already different from the current kernel. What I meant by "did you check it?", I meant : did you check the code?
Let me try to explain simply without getting into too much details (if I can).
In your configuration files, you define all the components. According to the location of those files, they can be affected either to the RootContainer or to the PortalContainer(s) in case of the portal mode which is the mode used by Gatein. In case of the standalone mode, they will be affected to the StandaloneContainer. All those containers are ExoContainers, when you start an ExoContainer behind the scene it first gets all the components of type Startable, then it instantiates them, and finally it starts them. Any time a component is instantiated it is added to a List. This List will be used to define the startup sequence. It will also be used to define the shutdown sequence by reversing it.
To make it clear, let's give an example, let's say that we have A that depends on B and B that depends on C, and A and C are Startable.
The kernel gets all the components of type Startable, so it gets A and C. Then it tries to instantiate them, so first it will try to instantiate A but for that it will need to instantiate C because of B, so the first element in the list will be C, then B, then A. To get our startup sequence we keep only the Startable components of this List, so we will have only C and A. So it will first start C then A, and will stop A then C.
So far, I believe that it was clear for you, the use case that you mention is actually a specific one. In the hierarchy of ExoContainers (in portal more), we have first the RootContainer, then we can have one or more PortalContainer(s), then we can have one or more RepositoryContainer(s) (we have one RepositoryContainer per repository) and finally we can have one or more WorkspaceContainer(s) (we have one WorkspaceContainer per workspace). The PortalContainers are created by the RootContainer and the RepositoryContainer(s)/WorkspaceContainer(s) are created, initialized and started by the RepositoryService at startup.
Why do I see the RepositoryContainer in the shutdown sequence ?
Because the RepositoryContainer is added to the PortalContainer and an ExoContainer is Startable
Why the RepositoryContainer is the first element in the shutdown sequence ?
Because it is added in the startup phase so all the Startable components are already instantiated and added to the List that defines the startup sequence, which means that it will be the last element in the List so the first element to be stopped
Why I don't see the RepositoryContainer in the startup sequence?
Because it is added after by the RepositoryService in the startup phase
Why do you create/initialize/start the RepositoryContainer in the start method of RepositoryService?
Because this service depends on component plugins, so we need to be sure that we have all of them before creating the repositories and the workspaces which is only possible in the start method
I hope it is clear enough now