Just had a flash of inspiration, by thinking about a potential difference between these two things:
x: '~unset~ y: ~unset~
The first is legal and puts a BAD-WORD! into the variable x.
Right now, the second is an error...because the evaluator doesn't like executing BAD-WORD!s.
But what if the second did not put a typical BAD-WORD! into y, but put it into a distinctly "unset" state? And what if many contexts couldn't tell the difference...but ^-based detection could tell the difference?
>> ^x == '~unset~ >> ^y == ~unset~
It's very much parallel to how ~void~ is shaping up as having a kind of dual nature. Some functions are invisible, and some modes of calling those invisible functions give ~void~ when it needs a reified result. Other functions are not invisible, but return ~void~ as a way of saying that they don't have a meaningful result. When you flip into modes where you care which it is...you shift into a quoted domain, where the unquoted ~void~ is a special non-valued signal. Void isotopes, basically.
I'll have to turn this over in my head a few times, but on the surface of it... this feels like the solution we've been waiting for. Unset isotopes.