Thanks for bringing this up!
By the time PEP 604 goes live, the final aspect of PEP 563 will also go live: the behavior known as `from __future__ import annotations` will be the default.
This means that forward references are only needed rarely (and in some cases for backwards compatibility).
So I think it's fine if we don't allow ` int | 'str' `, requiring this to be written instead as ` 'int | str' `. We certainly can't allow ` 'int' | 'str' `.
Regarding `None | None`, I think that also shouldn't be allowed -- at least one of the arguments should be a type (or another union, or a generic alias like `list[int]`).
I think we will need to add these decisions explicitly to the PEP. Philippe or Maggie, can you propose a way to do this?
--Guido