Graal seems to be continually almost ready to use, but never quite there.

What do you mean? I've been using it as the default JVM since 2019 or so in both development and production.

My experience has involved zero headaches or serious problems due to Graal, and it comes with appreciable performance improvements.

One of the more impressive and badass hardcore programming language engineering efforts, and still under active development right now. It's remarkable technology.

Amazing that it comes from within Oracle, I was surprised.

My experience has involved zero headaches

How? most libs use reflection.

Reflection only matters if you are using graal for AOT. It's still a full JVM.

Also, reflection is supported in AOT mode. The analysis, however, does require reachability metadata in some cases. In the best case, libraries provide and maintain appropriate configuration for this. Reachability metadata can also be shared via https://github.com/oracle/graalvm-reachability-metadata.