I am able to reproduce this on latest master .
Ideally, as foo is an inverse field of bar, there is no need to explicitly reference it.
The mutation will work perfectly fine and do what is expected if foo : { id: "1231"} is not supplied as a field to bar object.
We can consider solution 2 in which the inverse field will be ignored (foo in this case) will be ignored no matter what is supplied, the same parent or any other parent.