Oh, pain, but that actually makes sense. So, all it really takes is to make sure that on game_restart all of Gameframe's global stuff is set again but that's just a bandaid to an issue Gamemaker is making from their misleading name function honestly.
At this point, I can see why some people hijacked game_restart to do things their own way instead of relying on it.