This does not (can't) prevent forks across multiple relays because relays would have to coordinate for this. I won't try to fix an unfixable problem. The bigger issue is that we don't even have consistency for ONE relay, let alone multiple.
For multiple relays, you can still improve (not fully fix) the situation by ordering the writes deterministically across devices. So if a device has relay set ABC, you would first write on A, then on B, then on C. If every device does this, you can't fork.
If one of the relays (A) goes offline for a bit then comes back, and you're already advanced to stage x+1, then you wouldn't be able to write x+1 to A and would have to fill in A with the missing event x.
If two devices had two disjunct relay lists, you will fork and there is no way to prevent that without forcing relays to coordinate, which we don't want.
Login to reply