I think it’s important to actually implement the fallback and see how it goes and how often it causes resolution to stuck.
To avoid non-deterministic behavior the fallback has to work as a crate-global pass during import resolution, e.g. “1. Iterate import resolution until it saturates” -> “2. Simultaneously fallback all determined unresolved imports to extern crates” -> repeat “1” -> … See https://github.com/rust-lang/rfcs/pull/2126#issuecomment-327776317
(FWIW, after implementing the crate
/extern
stuff I’m not so vehemently against the RFC 2126 as written, i.e. Variant 2 with fallback, so I’m interested in how it would look in fully implemented backward-compatible form.)