The problem seems to be that unique_modify() calls unique_search() passing it an Operation that contains the assertion, which fails within the search. The failure is propagated back to the modification. The assertion control should not apply to internal operations performed by the unique overlay. The solution to me is not straightforward, apart from explicitly removing the assert control when calling unique_search(). I understand this solution is by no means general; similar problems may surface in other overlays and with other controls.
p.