Thanks for looking at this! This comes up in typeshed every now and then and is something that could be quite nice for evolving generically typed APIs.
I have a preference for having the defaults live close to the class. TypeVar scoping and binding is kind of confusing as is. Could you spell out what the backward compatibility concerns with `class Box(Generic[T], T=int)` are?
It sucks that we don't have PEP 637 for this. Maybe we consider doing something more dramatic like `class Box(Generic(S, T, U=int))`?
It might be worth spelling out the rules for generic subclasses of generic classes that both have defaulted TypeVars are.
It'd also be good to write up some more real-world-code places where this would be useful. To what extent would we still want this if we had a commonly used `GenIter = Generator[T, None, None]` generic type alias in typing.py?