Here's an alternate idea (that I'm just tossing out there but don't necessarily recommend): define a subclass of `Module` that provides the `assertions` accessor and accepts an argument for what additional assertion module to include:

``` ruby
module RSpec
  module Core
    class AssertionAdapter < Module
      def initialize(assertion_module)
        module_exec do
          include assertion_module

          attr_writer :assertions
          def assertions
            @assertions ||= 0
          end
        end
      end
    end
  end
end
```

Then the `:test_unit` option will be translated to `RSpec::Core::AssertionAdapter.new(::Test::Unit::Assertions)` and the `:minitest` option will be translated to `RSpec::Core::AssertionAdapter.new(::Minitest::Assertions)`.

I'm on the fence about which solution is best, honestly.  This idea is potentially confusing (subclassing `Module` is pretty non-standard) but it feels like the right kind of abstraction for this -- the adapter is it's own thing, not tied to test_unit _or_ minitest and can receive any assertion module as an argument.

If you feel like switching to this feel free, otherwise I'm fine merging what you have.  You clearly thought about this a lot and you're thinking about the right things :).