Some questions and notes:
How do I instrospect *SOURCE-REGISTRY*? The outlined API only puts stuff there, but doesn't tell me how to read it.
I would like to be able to mutate *SOURCE-REGISTRY* (even if by cloning without actual destructive operations) at runtime to isolate things.
Under which circumstances one is expected to use which of the configuration methods: are libraries that are composed of multiple systems allowed/expected to ship with configuration files? In particular, the purpose of the environment variable seems unclear to me.
Being able to specify individual files seems important to me.
COMMON-LISP-CONFIGURATION: Who will maintain this? What other things belong in there?
Having -SOURCE-REGISTRY-CONFIGURATION as a suffix in all the names seems excessive. Maybe just -SOURCE-REGISTRY?
I'm not sure I see the point of having both INITIALIZE- and ENSURE-, especially given CLEAR-.
PROCESS-SOURCE-REGISTRY-CONFIGURATION seems like a bad name, since it doesn't do that. PROCESS-FOR-SOURCE-REGISTRY maybe?
Caching: you mean caching by ASDF, not by the config system?
I think I might have a better overall idea of what you intend if you described this configuration system separately from the ways ASDF would use it -- in particular since it seems to me several things might want to use this to manage their own external resources.
Cheers,
-- Nikodemus