It looks like it's merging the values incorrectly

It looks like it should be merging the evaluated value of id with the id field, and not with the evaluated value field.

foo.(evalid)=(evalid)
foo.id = (evalid)