Top level comments


Choose names carefully

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)


critque-function

I'm confused by critique-function.

Avoid global variables

*critics* could be

An amp-manager solution has the problem that it does not exist a compile time.

Use Eta (not Ada) conversion

#'(lambda (analysis) (deployment-plan analysis)))
->
 #'deployment-plan

Questions

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.

define-critic-type

The initialize-instance should be inherited.

The (when ,get-default-object-function should happen at macroexpansion time.