> typed language vs dynamic
You are not approaching this from the correct angle. "dynamic" and "static" types is a red-herring for safety. Yes, when we are rushing some feature in our day jobs we can try to call functions with their wrong types. But these are not critical systems.
If you DO have a critical system, you are going to have to invest _massive_ engineering resources. You are going to exercise all code paths. If you get a "type" error, you haven't done your job correctly. Because this was a code path not exercised before, and that should not happen. The additional type checks at compile time are a drop in the bucket compared to all the testing you have to do.
That said, most such applications will be very traditional. C or C++, maybe ADA. Despite having types, the C family you give you a whole lot more failure scenarios. For instance, it's very easy to corrupt your entire process memory in C, that is something that not many "dynamic" languages will let you do. And yet people build mission critical systems with them.
That's not the only possible answer though. For an interesting autonomous system, please look into NASA's Deep Space 1, in particular the Remote Agent. Written in Lisp, it had spacecraft controls for a few days. It could self-diagnose and correct issues. For a long time, it was the most advanced piece of software to ever control a spacecraft. And Lisp is "dynamic" typed (but strongly typed)
Now, they do test in "production", but it's more like they have lots of staging environments. Some of them may be simulators, some of them may be replicas. At the end of the day, this is no different from any other software: it has inputs (airspeed, altitude, heading, roll, pitch, yaw, servo positions, charts, weather radar, etc) and outputs (controlling the servos, changing radio frequencies, etc). You can simulate some or all of them.