This is a Sync Gateway requirement
Currently as per the RFC Insert, Upsert, Replace, Delete here then it states what behaviour should happen when the user defines a blank path. For replace it will perform a memcached subdocument operation which is a subdocument whole doc set command. For the other operations we don’t allowusers to use the blank path. In SDK2 we did allow blank path for delete, and it mapped to a subdocument whole doc remove command. The reason for allowing this is so that the user can write an xattr/vattr at the same time as deleting the doc.