The confusion lies in differences between the legacy R client and the Python client. The legacy R client did not do a 'synStore' for you when using 'synSetAnnotations', while the Python client does. So you could set annotations locally on an entity that wasn't stored yet. 's original problem was legitimate but has changed in the new R client. It should still be documented and made clear the intention of the function.
I’m moving this ticket to v0.6 epic since there is another ticket where we clearly state that this function “replaces” existing annotations.
Resolved for lengthy time (at least six months), closing in bulk