Missing pre/post-condition clauses default to being inherited, but empty ones take whatever indicator they were listed under (ensure or ensure-then). When pretty-printing empty clauses aren't printed at all, this means when re-parsing they become inherited even if they were initially tagged as 'ensure'.
The fix: change the equality for pre/post-condition clauses. Also update the shows instance omit this for empty clauses as it will help debugging.