Im pretty sure clients will be experiencing a desync no matter what you do. I believe current practice (if you need absolute server authority) is to have each client recieve an updated frame from the server at set intervals to minimize “desycn” (which would be mostly graphical since all calculations are handled server side in this setup), but implemented poorly, it leads to alot of rubberbanding and poor client experience.
I guess you could TRY and sync everyone to the slowest client by calculating everyones ping and implementing an appropriate delay, effectively “ripple casting” the timeline to everyone so it arrives at more or less the same time at each client. I don’t see that as being practical for mundane events though and may only be applicable if you really really need to sync things for major triggers and whatnot.
My understanding of netcode is only basic though so if someone more knowledgable comes along, please feel free to correct me.
Bonus:
Just output a timeline “time” float and set the new client to start playimg from that position.