I see what you mean: basically, for my pre-rendering purposes, the resulting node or fragment probably only has to implement .innerHTML (I grab that and that’s it), but other callers (including potentially PM itself?) may expect a more complete instance.
I rather suspect it should be possible to guarantee with a slightly more conditional typing along the lines of “if you do not provide an explicit Document, you get a full version of what your runtime provides, but if you do, then you shall receive whatever you have given”. This should require just a change in the return signature of serializer, I suppose. In fact, this should also be desirable even now, to any current users who provide their own document parameter to the serializer.
I might come up with a more thorough proposal (perhaps one I will have tested in a fork) and create a separate thread for that, if it’s shown to work as I claim without implementation changes and with minimal typing changes…