The preservation labels raise an interesting implementation question: do you find the establishment point by scanning the state predicates backwards from the final position?
For each tracked corner–edge relation, you could record whether the pair exists after each move, then find the start of...