Btw @eygraber about that parent/child injection change. I had originally had a more permissive check to just try to find potential leaks when using scopes, but I ran into a few problems with it.
1. It had some holes, you could easily get around it by inserting an unscoped dep between 2 scoped ones and it would compile but still leak. I could try to fix it but I was worried that I would have to keep chasing issues like that.
2. Which leads to another problem which is the logic here was subtle and I think it would be hard to understand what is allowed vs what is not, vs the simpler model that you can only go 'up' the graph to parents and not back down.
3. I checked dagger and verified that it behaves the same way with it's subcomponents.
Just letting you know how I landed where I did.