I take it that the community's voted in favor of style #1, which is consequently the style that we also adopted for the new workflow package. That's decided, then.
And I'll take Jeff's and Tillman's suggestions to heart and tigthen up the args a bit, including making the input/output specs use ad_page_contract style. The reason I didn't originally was that I wanted to stay 100% close to the current PL/SQL API, but I suppose that's not really a valid concern. We're trying to simplify and improve things, anyway.
Regarding making ad_proc also be able to implement, an alternative to throwing more work at ad_proc would be to have a separate acs_sc::impl::proc procedure for defining implementation procs, which, in turn, does call ad_proc to actually define the proc.
How does that sound?