When Core Data detects a duplicate entry, it deletes the previous entry. This caused Delta to delete the associated ROM and Save State files. Now, there is a check in prepareForDeletion to make sure the object being deleted is not simply being replaced by a newer entry during a merge.
Failed because app attempted to extract the game into the containing folder, which in this case was read-only. Fixed by extracting to temporary directory instead.