After years of pondering this idea (in various forms),
and several rounds of discussion on several forums,
I've written it up.
"This proposal tackles the thorny topic of Overlapping
for both type classes and Type Families/Associated types,
by annotating instance heads with type-level apartness
Type-level disequality predicates appear in Sulzmann &
in the type-level case selection in HList 2004;
and in various guises in Haskell cafe discussions in
This proposal builds on the apartness testing implemented
as part of the Closed Type Families work."