Currently in dDup if you merge A>B, then merge B>C, dDup will update the original result and change A>C.
If you later reset the B>C result, it seems that dDup should undo that second "chained" merge and return A>B. Currently it just leaves A>C which may be totally wrong.
I think you would have to capture a History of merges with some order so you could revert the result back to the result immediately prior to whatever you last reset.
1. Merge A>B
2. Merge B>C
2a. Updates A>C
3. Reset B<>C
3a. Update A>B since this was the result prior to step 2.