The design decision is that the engine stores a vCard that is not the one that it received. Instead, conceptually, it stores the result of merging local and remote data, which may lead to a different result and thus requires bumping the REV string. The "cache data in local file" is a special case where no merging happens, but it still follows the same rules in the engine. Changing that requires a different approach.