If I want to reference a composite key, I have to use a composite reference, right? If so, this hierarchy definition would leak to components that use the composite one and the parent component name would be all over the place
{[:adapter/jetty :example/web-1] {:port 8080, :handler #ig/ref :handler/greet}
[:adapter/jetty :example/web-2] {:port 8081, :handler #ig/ref :handler/greet}
:example/app {:web #ig/ref [:adapter/jetty :example/web-2]} ;; the app 'component' now must know that the web-2 runs on jetty
:handler/greet {:name "Alice"}}
Oh right, you can reference just by one key, nice
{[:adapter/jetty :example/web-1] {:port 8080, :handler #ig/ref :handler/greet}
[:adapter/jetty :example/web-2] {:port 8081, :handler #ig/ref :handler/greet}
:example/app {:web #ig/ref :example/web-2}
:handler/greet {:name "Alice"}}
So my proposal is not that much useful after all 🙂