What seems like a saner answer to me is to change the backend so that it will accept these ALTER commands in either order, with the same end state. The reason it throws an error now, IMO, is just so that blindly issuing the same ALTER ADD CONSTRAINT twice will fail. But we could deal with that by saying that it's okay as long as the initially-targeted constraint doesn't already have conislocal = true.