Let's look at the context of passing in the configuration singleton to the initializer:

1. Changes to Suretax.configuration can can break code that depends on it. However, the singleton returns a Configuration object, which should be the most stable thing in the codebase. It is therefore reasonable to depend on it as a developer. 
2. When a class injects the Suretax.configuration via the initializer, it's clear that it's a configuration object being passed in. Therefore, what it's doing is transparent to the maintainer.
3. The class can be reused even if there are no configuration attributes available, as the values from any missing configuration will be either be nil and fail validation, or be overridden by (hopefully valid) attributes passed in as arguments. From a consumer's point of view, the code is very usable.

I'm not sure how the experience of Rspec and Capybara applies here. Our configuration class is simple and is used in very specific ways in the library. As long as the correct attribute readers are in place within these classes, the likelihood of a breaking change seems really low.

I like the idea of avoiding the dependency altogether, but the `MyClass` example you give sets hardcoded defaults. What if you'd like the class to have access to the configuration attributes without making the user merge in the defaults when initializing the class? 

I'd like it to be possible to configure the library once, and have it just work from there on out.