> まず確認ですが、valid_civil? が jd or nil を返すという仕様から
> true or false を返すようになったのは 1.9 から (というか Date2
> から?) の仕様変更ですよね。

はい。

> その点を修正した上で、rubyspec が以下の挙動の変化を検出しました。

晦日からの数えかたの変更です。1.8 では以下のようになっていて、飛んだと
ころにも日を割り当てられているかのように数えていました。

  #     October 1582
  #   S   M  Tu   W  Th   F   S
  #     -31 -30 -29 -28 -17 -16
  # -15 -14 -13 -12 -11 -10  -9
  #  -8  -7  -6  -5  -4  -3  -2
  #  -1                  

1.9 では、

  #     October 1582
  #   S   M  Tu   W  Th   F   S
  #     -21 -20 -19 -18 -17 -16
  # -15 -14 -13 -12 -11 -10  -9
  #  -8  -7  -6  -5  -4  -3  -2
  #  -1                  

のように本当に存在するものだけ数えるようにしています。どっちが正しいと
いうわけではないのですが、このような例外的なところでの挙動を選択しなれ
ばなりません。年の日のほうのあつかいと揃えるとともに、このほうが都合が
よいのでそうしました。

したがって、1582年-3月-18日は、1.8 では存在するが、1.9 では存在しないと
いうことになります。