I expect the ownership of an assembly to not conflict between the client and server. I understand that ownership is reset when the AssemblyRootPart changes but the client should always reflect the server’s ownership.
This is expected. Intentionally causing the root part to change from the client is not supported, and will cause a desync. You’ll need to create welds etc from the server so things stay in sync.
Why is it expected that the client can change an object’s ownership? It isn’t replicated to the server but it doesn’t make sense for there to be two different owners of an assembly. I think that when the AssemblyRootPart changes on the client it should keep the previous owner of the assembly.