That is an extremely interesting story that I would like to understand better. Which pointers would you recommend to read more about mutation in HANSEI?
My intuition would be that the mutation should not be observable in this case, as it is only done on "private" data that the List.map function allocate, owns, and which never escapes in its immutable form. While I understand why mutating global data is an observable side-effect that can play badly with any form of backtracking/probabilistic monad, I do not have any intuition about why mutating a privately-owned heap fragment would perturb the system. If I was pressed to make an hypothesis (while not knowing the system), I would guess that this is because of an implementation detail of HANSEI, not because of its actual semantic requirements.