Ah, and I missed the sense of your response, because I hadn't thought it through.

"These options" are never made available to anything, ever.  They are used to parse command line options (or validate a supplied Ruby hash), to normalize names, and then the *results* of that are passed to the block.

This shapes the processing from input to block, but it doesn't pass what I think of as "these options" through.

Having noticed that, I think the rest of the text could use some improvements, but should stay.  The improvements:

 * document how the option name is selected from those given
 * what normalization is performed
 * what case preserving or case sensitive behaviour there is
 * when that validation is applied
 * what input the block actually gets (eg: hash keys by normalized name; is that a string or a symbol?)