El operador de doble splat modifica destructivamente el hash: ¿es esto un error de Ruby?

Me di cuenta de lo que encuentro un comportamiento muy sorprendente con el** operador (doble splat) en Ruby 2.1.1.

Cuando se usan pares clave-valor antes de un**hash, el hash permanece sin modificar; sin embargo, cuando los pares clave-valor solo se usan después de**hash, el hash se modifica permanentemente.

h = { b: 2 }

{ a: 1, **h }        # => { a: 1, b: 2 }
h                    # => { b: 2 }

{ a: 1, **h, c: 3 }  # => { a: 1, b: 2, c: 3 }
h                    # => { b: 2 }

{ **h, c: 3 }        # => { b: 2, c: 3 }
h                    # => { b: 2, c: 3 }

A modo de comparación, considere el comportamiento del single-* operador en matrices:

a = [2]

[1, *a]     # => [1, 2]
a           # => [2]

[1, *a, 3]  # => [1, 2, 3]
a           # => [2]

[*a, 3]     # => [2, 3]
a           # => [2]

La matriz permanece sin cambios en todo momento.

¿Suponemos el comportamiento a veces destructivo de** es intencional, o se parece más a un error?

En cualquier caso, ¿dónde está la documentación que describe cómo** operador debe trabajar?

También hice esta preguntaen el foro Ruby.

ACTUALIZAR

El error se corrigió en Ruby 2.1.3+.

Respuestas a la pregunta(2)

Su respuesta a la pregunta