The current guards should be fine, but maybe we want to add a gate check for all the sync provider functions here that it's allowed to be a provider, either instead of or in addition to handling it in the functions individually.
This way if it starts syncing and has a syncer then we can send a "go elsewhere" command right away instead of a "I don't have you" and then have it try again just to get a "go elsewhere".