> It's clear to me exactly what is happening, but I guess my thought was
> that this behavior is a bug. If the code that runs the autovivication
> block can recognize that the value for the undefined key was set, then
> perhaps the block return value should be ignored.

Eek.  Consider that in the common case, where the undefined key is being set
as the last statement in the block, the correct value will be automatically
returned.  So only in edge cases would the set value and the returned value
differ, and as a programmer I would be *most* surprised if the set value was
the one that was used while the returned value was the one that was dropped!