I hinted at the need to break MAKE OBJECT! into component operations, and I think WRAP is one of those components... where it shouldn't run the code.
Because you might want to write something like:
all wrap [
x: ...
y: ...
z: ...
]
So the evaluation should be separate, as eval wrap [...]
Does EVAL WRAP deserve a special name?
Maybe, but I can't think of a good one offhand. I sort of feel like those two words together are "right-sized" for the intent.
Everything in actual code that this is tripping on was a bug.
The casualties are things that are intentionally scrappy, like the tests.
I don't think the answer is to do something like WRAP/DEEP on the tests for their convenience...we don't want tests to be different from what runs in the console... and we don't want what runs in the console to be that different from what you could put in a script.
Basically just have to bite the bullet, and turn tests like all [x: ...]
into all wrap [x: ...]
or all [let x: ...]
or whatever.
It is a little disappointing that things break when you say all wrap [(x: ...) ...]
but I think that's just life. Binding is becoming more of a conscious effort and that has ramifications, that's one of them.