I think I see your point, but I'm not sure if changing how Literals interact with generics is the right way of resolving it. Basically, as a general philosophy, I think it's important to prioritize having the type system itself be as internally consistent as possible, even if that means it sometimes makes performing inference more challenging.
For example, one spec-compliant way Pyre could reducing the need for excessive lookahead would be to decide that TypeVars can never *implicitly* be bound to a Literal type. This is almost the same as the idea you proposed in the issue tracker, with the core difference that users would still be allowed to explicitly construct generics parameterized by Literals. So, writing type hints like "G[Literal[7]]" would still be legal and the limitations would just be in how you perform inference.
Another spec-compliant way that also makes the tension you talked about vanish entirely would be to continue to infer that all int expressions like "7" are of type int and make users jump through some hoops if they want it to have an inferred type of Literal[7] instead. The idea is that while Literal[7] might be just another subclass of int, there's no requirement saying that there needs to be an easy "constructor" for this subclass. (Granted, this would make actually using Literal types somewhat inconvenient, but neither this PEP nor PEP 484 requires high-quality type inference so...)
Finally, possibly one change I do think we could make is to have the spec require best-effort rather then full backwards compatibility instead. This would let type checkers not have to worry about preserving compatibility in every single edge case. Would that help in your case?
-- Michael