Removing a required field is currently not supported and is where you’d need the partner collection approach. We’re currently working on adding support for removing fields and switching fields between optional and required without restarting sync, but no ETA on that being released.
The concept of a “corresponding object” with a different _id value doesn’t make much sense. The _id field is the objects’ unique identifiers, so two objects with different _ids are just two unrelated objects. Are you doing some sort of data initialization where you check if any objects exist, and if none do create a set of expected objects? If so then what you saw happen could make sense: Client A creates objects, and then some other objects linking to those objects. Schema is updated on the server without adding the required field to the existing documents, so all existing documents are marked as non-syncable. Client B starts and creates a new set of objects. Client A starts and gets a client reset due to sync being restarted. The fresh data downloaded doesn’t contain any of the objects it created (as they’re unsyncable) but does have the objects Client B created after the schema change. All of the links are pointing to null because the objects they linked to have been deleted.