Looking for some ECS architecture advice for a specific case

Really sorry to bring this back once again, but I am still having trouble figuring out the “correct” way to make this work afterall. I’ll try to reiterate my problem more clearly and without a wall of text. Here’s pseudocode for a simplified version of what I want to be able to do:

public class MyMainManager
{
    // This would be called every fixed update
    public void TickSimulation()
    {
        // [?] Tell a certain group of systems to run an update
        // For example: Receive network messages, and restore the world to a past state

        // In the case where we are in an online game and have received past data,
        // we might need to "resimulate" several frames of the entire game's simulation within one frame
        while(haveToResimulateAFrame)
        {
            // [?] Tell all simulation-related systems to run an update
            // For example: tick the simulation of all characters and projectiles
        }

        // [?] Tell another group of systems to run an update
        // For example: Handle input for local players

        // [?] Tell all simulation-related systems to run an update (the same systems we used in the resimulation loop, but this time it's for the present frame, after gathering input)
        // For example: tick the simulation of all characters and projectiles
    }
}

I think my problem is essentially this:
I need to be able to put systems into groups, and then manually tell them “MySystemGroup.DoYourUpdate()”. And all of the jobs of one group must be guaranteed to be finished before updating the next group. I think simply having this would solve all of my problems. Right now I’m not sure that [UpdateInGroup] and [UpdateBefore] satisfy this need, because of the part in the while loop in my example code. How would I handle telling a certain group to keep updating multiple times until a certain condition is met, and then run other groups? Would I be expected to put each of my 3 different groups in their own separate ECS Worlds, and manually tell their world to update from some kind of main loop?