1- The requirement to always use make-operation currently only applies to code within ASDF itself and well-behaved extensions. Before you enforce it more widely, you have to make sure no one in Quicklisp does it. You could have shared initialize check that: a) no instance of that class with given initargs exists yet in *operations* and hopefully b) there initargs are always null (goodbye, make-build!)

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.



On Fri, Sep 23, 2016, 09:49 Robert Goldman <rpgoldman@sift.net> wrote:
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