I was doing post-update validation inside CollectionAfterChangeHook and throwing errors if something went wrong down the line (in another system which was called using APIs).
It worked well until I realized this onevery important non explicit consequence
of throwing errors inside CollectionAfterChangeHook.
⭕ After the error, when user hits SAVE again, anew, duplicate,
object is created, not updated as it would be when no errors are throw.
@KasparTr if you have time please open an issue, this sounds like something that might need to be looked at and fixed in core?