2- No, there was never a requirement that defsystem should only be used within a .asd. Actually, the test system relies heavily on the opposite. The requirement is that .asd files be loaded in the correct context, by load-asd -- notably, the correct *package* must be bound, the correct readtable, etc.
I have been working on enforcing assumptions recently added to the ASDF
docs. Specifically, that OPERATION instances only be created by
MAKE-OPERATION and SYSTEMs only be parsed inside LOAD-ASD.
I should have a merge request up for review soon, but find that it's
more tricky than I expected, because we don't even play by the rules
ourselves! Specifically, there are calls to MAKE-INSTANCE on OPERATIONs
in the ASDF codebase itself.
Cheers,
r