From Haskell 2010 report, section 5.4. "an instance declaration is in scope if and only if a chain of import declarations leads to the module containing the instance declaration. ".
I indeed checked with a simple program and it does bring in scope instances recursively, that is even if they are not directly in the imported module.
Why is that recursive behavior desirable/necessary? Would it be so bad if it only brought in scope all the instances contained only inside the target module? (I don't want to import one specific instance). Would that really increase the number of imports so much? Are there some fundamental/compilation/historical reasons it cannot be this way?
My current impression is that a big part of the hostility regarding orphan instances might be based on that premiss, as a bad risk is that you unintentionally import an undesired orphan from some deeply buried module.