I think that what is most important for now is that the inference rules be as simple as possible. Constraint type inference is already quite complicated. I don't think that we should make it more complicated. There will always be cases where a person can easily see what the answer is even if the inference algorithm can't.
For this to work we need to relax the structural type of constraints to ignore channel directions. This may have some unexpected consequences. Will experiment. If the relaxation is all that's needed, we can address this. Otherwise we will stick to the existing rules.