As a Roblox developer, it is currently too hard to know why physics or touched events stopped replicating when the root part is desynced on server and client. You can do this by running client only code by accident.
For example
- Create a weld on the client between 2 parts
- Result: Now the root part is desynced
- Failure: Touched events will be rejected by the server for 1 of 2 parts
There should be a visual way to see which parts are acting like this. Sometimes a desync is fine, but oftentimes it can be a pain to debug.