I found while working on the recent pprinter bug found by Jan Moringen that there is an issue related in a tangential way to my bootstrap headaches with my backq code but seems independent enough to warrant its own discussion.

Prior to the cross-compiler having seen the defmacro for DO-ANONYMOUS, it knows of the source transform for MAPCAR etc, and will therefore perform the transformation into a macro that does not yet exist. This seems very impolite of it.
The error message you get is that ((#:g100 #:g101)) is not a valid function call form. (It's the binding form of DO-ANONYMOUS)

How in general can we prevent a source transform from doing its effect when its effect is to transform into broken code? Or can't we?
I can imagine a sanity-check: if in the cross-compiler we treat NAME as an assumed function in any of the SB! packages, then if (cl:macro-function NAME) is non-nil (asking the host Lisp whether NAME is a macro), we should probably complain because this means that the cross-compiler is likely producing incorrect fasls.