Ok, what about this: if some code fails to compile due to not succeeding in type inference, remove the impls added in the previous rustc version and try again (maybe repeat this a few times). If the code compiles, then rustc has some evidence that maybe the code used to work, and broke due to a rustc update that wasn't perfectly backwards compatible. Then emit a suggestion to add some type annotation or turbofish that would fix the problem.
If the code already existed before the breakage, then one can be reasonably sure that rustc suggestion was correct.