That’s expected, for now, though we may change the wording around.
To pull the curtain back a bit: Luau has a concept of the “error type,” (*error-type* as you see it, I’m just going to say error for short). We use this when you write something that is clearly an error, for example if you try to index into a number: it’s so we can emit something that doesn’t cause cascading errors. We’d rather error once exactly where the bug is than emit a bunch of errors because you made one mistake. Most operations on error produce an error and do not raise a script analysis warning / red squiggles.
any is built on top of this: it is meant to be the same as unknown | error. One consequence is that refinements against any, like you’re seeing above, become the refinement or error.
I’m going to consider this fixed for now, but feedback taken that seeing *error-type* is a confusing.