樽家です。

> むらたです。
*snip*
> こうしてみると、以下の仕様に一貫性がないように感じます。
>
> assert_equal(nil, (2..1).max)
> assert_equal(nil, (2.0..1.0).max)
> assert_raise(TypeError) { (1.0...2.0).max }
>
> 次の、tarui さんによる追加は一貫性が無い方に分類できると思います。
>
> assert_raise(TypeError) { (1.5...2).max }
> assert_raise(TypeError) { (1...1.5).max }
>
>
> Range#max の明確な定義が必要ですよね。
*snip*

ここで一貫性がないとされている
assert_raise(TypeError) { (1.0...2.0).max }
は#974で導入されてます。
で、その時の議論をみると、

matz>  * 万人が納得する (万人じゃなくて多くが、でもいいけど)
matz>  * かつ有用な
matz>最大値の唯一の定義は存在しなさそうだ、ということです

という理由でエラーにしています。
このときはendがfloatの時だけを問題にしてましたが、
だったらbeginがfloatの時も問題でしょう。

今回のbug報告はこの時の変更に追従して変更すべきだったのを
変更してなかったんではないかというバグ報告として挙げていて、
maxとはどうあるべきかまでは踏み込んでないつもりです。

そういう議論をするならどっちかというと、#4577ですかね。。

-- 
樽家昌也(Masaya TARUI)
No Tool,No Life.