I may be misunderstanding the idea behind the keyword arguments, but I would expect them to behave similarly to regular arguments when used with splat.
In the current design, keyword arguments are NOT omittable at a callee side.
In other words, you cannot pass keyword arguments to a method that does not support keyword argments.
Other possible behavior is to ignore the passed arguments silently (as you expected), but I'm afraid if it is rather error-prone than useful. It tends to hide bugs.
If you really want to do so, you can use ** parameter explicitly.
def hello(**dummy)
puts "hello"
end
A bare ** (#7662) is indeed useful in this use case. I'm not so positive to this use case itself, though.