With a sibyllin error message ERROR: operator does not exist: direction_state = direction_state_old HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
If we drop and recreate the constraint it works
This does not surprise me - why do you believe it is a bug? What should happen?