> We'll have to do this for every formatter, which would mean maintaining both sets of formatters simultaneously. 

The `LegacyMethodDefinitions` module would, by design, be the exact code from the RSpec 2.14 versions of these classes, and would be intended to be "frozen".  The module exists primarily to provide a subclass that behaves identically to how it behaved in 2.14, so there would not be reasons to continue changing it.  I don't see it being a maintenance burden.

> The idea of the mix-in is to add a translation layer on top of one implementation rather than splitting the implementation...

I find the mix-in approach you've adopted to be hard to wrap my head around.  The approach I've suggested above is, IMO, far easier to reason about and understand.  It also avoids the `rescue NoMethodError` problem that I really want to avoid.