Ah, in case it is not clear, where I find the metaphor broken is in that you=
 can add methods to a mixin and have them available in classes that already i=
ncluded it, but if you include a new ancestor, then method dispatch in class=
es that already included the module aren't aware of the new chain.

Conceptually, in my view, you are augmenting the module either way, and a me=
thod dispatch that followed really dynamically the pointers of the ancestor c=
hain at the time of the call would find the methds no matter how you augment=
 the mixin.

So I wonder whether this is a design sacrifice for optimization purposes.