When you create a proc using Symbol#to_proc syntax, it reports the arity as -1, even though the required number of arguments is actually 1. This can happen based on lambda(&:hash), proc(&:hash), or some_method(&:hash). Opened a PR with a fix here: https://github.com/ruby/ruby/pull/2913.
Ooo just found https://bugs.ruby-lang.org/issues/9520. I kind of get the argument to keep it consistent with other procs, but this is still a special case within block types, and it will fail if you call it without an argument.
The proc created by Symbol#to_proc is not a lambda, but a proc
But in #16260, it was discussed that Symbol#to_proc behaves more like lambda, and so hopefully all of its introspection methods (#lambda?, #arity, #parameters) will be fixed.