name-description -> description, short-description on-off-p -> onp, runp, runablep auto-fix-p is a 3 valued predicate, maybe "P" prefix isn't appropriate. cruddy-object -> object, target, subject (avoid value judgements)
I'm confused by critique-function.
*critics* could be
An amp-manager solution has the problem that it does not exist a compile time.
#'(lambda (analysis) (deployment-plan analysis))) -> #'deployment-plan
Why must critic-list contain elements of the same type?
Should report-rows be kept on the object like concerns are?
Why do define-critic :test's return a thunk rather than the object itself?
Run-all-criticscontains knowledge about critic types. Critics
should be more self organizing.
The initialize-instance should be inherited.
The (when ,get-default-object-function should happen
at macroexpansion time.