86e51bb851
The dog id in the synced profile shares one last-write-wins timestamp with name and birthday, and that timestamp comes from each device's own clock. A device whose profile was stamped later (clock skew, or a more recent name/birthday edit) would refuse to adopt a newer server profile that had just gained an id, or even push its empty id back over the stored one — so the pedigree id set on one device never reached the others. Make the id sticky on both sides of sync: an empty value never clears a set one, and a device/server adopts an id it is missing regardless of the blob timestamp. When both sides have an id, the newer profile still wins, so the dog can still be changed. Name and birthday keep plain last-write-wins.