I think a possible solution would be to overwrite *Syncrhonizer.sync* in soledad, in order to defer the update of the last known gen/trans_id of the replica.
```python
158 
159         # exchange documents and try to insert the returned ones with
160         # the target, return target synced-up-to gen
161         new_gen, new_trans_id = sync_target.sync_exchange( 
162             docs_by_generation, self.source._replica_uid,
163             target_last_known_gen, target_last_known_trans_id,
164             self._insert_doc_from_target, ensure_callback=ensure_callback)
165 
166         # XXX would defer this until the received batch is decrypted and inserted
167 
168         print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
169         print "set replica gen/trans---"
170         # record target synced-up-to generation including applying what we sent
171         self.source._set_replica_gen_and_trans_id(
172             self.target_replica_uid, new_gen, new_trans_id)
173 
174         # if gapless record current reached generation with target
175         self._record_sync_info_with_the_target(my_gen)
176 
177         print "SYNCING : u1db-sync DONE"
178         return my_gen
```

thoughts?