Generalizing coercions to infer typeclass arguments

Yes, that too.
The nice thing with the canonical structures point of view (if not the implementation), is that canonical projections of structures with a carrier type are often (if not always) coercions, and if coercions respect the uniform inheritance condition and canonical instances respect forgetful inheritance, then the graph of coercions/canonical projections can be visited in any direction – finer structure → coarser structure is guaranteed to exist (and is the only direction implemented as of today), while the converse needs a “canonical” declaration, whether in the form of a hint or a tc instance – with the guarantee that all existing paths (with same source and target) are convertible (or loops are definitionaly contractible). This would be a really nice addition.
(A nice, complementary addition to all of this would be try and always pick the shorter path and make conversion aware of path composition)

EDIT: maybe I should give a bit more details, imagine a small hierarchy of structures written in a packed type-class style e.g. following the packed class methodology or a variant as in HB, and making the classes typeclasses, as in:

Class isA T := {...}.
Structure A := mkA {Asort :> Type; Aclass : isA}.
Class isB T := { ... (* including isA *) }.
Structure B := mkB {Bsort :> Type; Bclass : isB}.
Class isC T := { ... (* including isB *) }.
Structure C := mkC {Csort :> Type; Cclass : isC}.

Then we get the following coerciongraph (which is automatically generated by HB):
C >-> B >-> A >-> Sortclass, where each coercion is canonical as well. For any instance T0 of the structures A, B and/or C, HB will make sure that canonical inference commutes with coercions (hence respecting forgetful inheritance). Hence one can imagine Coq provides a coercion mechanism which will try to convert an element of any type in this graph to any other by finding a suitable path in the non-directed coercion graph… provided enough instances (cs or tc, or a merge of them) exist, with the guarantee (via HB discipline and uniform inheritance) that any other (existing) path in the graph (thus leading to slightly different head symbols along the way) are convertible to the selected one.