UPDATE 2026: This was an interesting line of thinking to go down, but once ~null~ and ~okay~ antiforms became the LOGIC! type, and TRASH! became an unstable antiform... I kind of had to accept that the "all stable types that can be tested for truthiness are the same things that can be tested with TYPE OF".
So type of null is LOGIC!, and then type of cond null is ~null~ antiform if you want it.
One of the principal ideas of the null state is to be a falsey state a variable can hold that reflects it hasn't been assigned... but that you can access without getting an error on word fetch.
Increasingly I've come to believe that functions should not accept NULL states as arguments, unless they are specifically designed for doing conditional tests (e.g. IF needs to take NULL in its condition slot...)
I think that if you write code that says if not text? var [...] and VAR was null, that should be an error to cue you into the fact that your test was meaningless. We now have empty splice that can serve a role of a "friendlier" form of nothing (called "NONE"). So you can use that for your variable if you need tests like this to succeed (although the answer will be SPLICE! for the type...)
If you really want to "opt out" and get the test to fail on null, there's COND which will make the result of a typecheck null... and then that will let you say "I meant to do that".
Should Testing Quoted Values Soft Fail?
I kind of feel like you're potentially missing some of the picture if you're working with quoted values and don't realize it:
>> foo: first ['<thing>]
== '<thing>
>> tag? foo
== ~null~ ; anti
I mean, it is a tag... it's just a quoted one. Same with pinned/lifted/tied values.
>> bar: @<thing>
== @<thing>
>> tag? bar
== ~null~ ; anti
These could give FAILURE! back, and you could say try tag? bar if you wanted to say "yeah I know it's quoted, and I want that to not be a match".
(I've discussed leading colon as a shorthand for TRY in the modern world, so it could be :tag? bar in that world, for people who like brevity.)
I don't think having a speedbump here is as likely to be as inconvenient as one might think. And it could cue you to ask tag? noquote bar or tag? plain bar or whatever your particular meaning was.
I'm not as confident about this as I am about the need to panic (not error) on null.
What To Call The Typeset?
I think the set of things that we're talking about the signature testing for here is "every stable value state except for LOGIC! and TRASH!"
I've struggled with the SOMETHING? term and the over-generality of NOTHING?... and here I think we don't want ~okay~ to pass either ... and ~okay~ seems like something.
TESTABLE?
TYPECHECKABLE?
Well, I'll have to think about it. In any case, I'm sure enough that I want to start failing on NULL.