I like the idea of composing subclasses of C::A into the larger application, but I didn't see how you implemented this bit of the 'technical specification':
"...so it's easier to just disallow the whole C::A than it is to disallow certain run-modes."
If REPORTS => reports.cgi is in the navigation template on every page, then how do you prevent the user from executing that particular C::A? And I don't think that
# Display some method of choosing reports, probably with some author
# checks in there
inside sub choose counts; it's still disallowing a certain run-mode named "choose". :-)
p.s. I enjoyed and learned something from being sidetracked by http://firstname.lastname@example.org/msg00849.html.