@adamf, first of all, thanks for your valuable input, it really helps us understanding the issue. I think you are right in the sense that the application was relying on the existing bug (zero latency bug) to work properly and I think this fix in 1.4 solved a critical issue.
One the other hand, I am not sold on the fact that the client shouldn't make any assumption about the one-shot replication, because according to the documentation of one-shot replication, "by default a replication runs long enough to transfer all the changes from the source to the target database, then quits." Now, if we can't make any assumption based of the quitting of one-shot replication, how can we use one-shot replication reliably? Does that mean we need to start the one-shot replication over and over again expecting all the documents to get pulled? If so, how is that different from continuous replication?
Can you confirm if couchbase (likely in 2.0) is heading towards the direction of getting rid of one-shot replication? If so, we will ensure ourself onboard early to use only continuous replication. If not, do you mind providing some suggestions on the reliable way of using one-shot replication down the road?
Again, really appreciated your help with the issue we encountered.