GGPO is described in a Gamasutra article (that somewhat overpromises on how general it is): https://www.gamasutra.com/view/news/177508/The_lagfighting_techniques_behind_GGPOs_netcode.php
Global ordering between actors is somewhat possible, but I would say that it's always the "previous state" of an actor that affects the "next state" of another actor.
Thus, if A and B shoot each other on the same step, it doesn't matter who gets processed first. Both of the "previous" (alive) versions will "shoot" and generate "dead" targets in the next state. I e, the function is "stepWorld(oldState, newState)" where you area only allowed to read oldState, and only allowed to write newState. (And that will recursively hold for all entities in the world.)
If you keep copies of actor state for older time steps to implement lag compensated hitscan weapons, then this becomes pretty easy, because you "read" state at time step "stepFrom" and you "output" state at time step "stepTo."