Static typing provides a level of strictness and therefore rigidity that trades away flexibility. Dynamic typing supports a level of looseness and supports flexibility. Test are like static typing in that they provide a level of strictness in that they only cover the current assumptions that the developer had made when writing the code. In the event of a code change, we are not aware if something is broken until perhaps we have a static type check or run our unit tests. However, in theory we can certainly move faster without this strictness, but that assumes a very capable developer.
That looseness that you find leaves a lot of implicit decisions that are not available to a future maintainer. As such the learning curve is much higher simply because less is actually documented in a dynamic typed system. Added flexibility implies greater degrees of freedom and therefore higher entropy. This is just a fundamental concept. You arguments are just throwing out strawmen and claiming that there is some equivalence in maintainability of dynamic typed languages. That certainly is not the case and you can ask anyone who stumbles upon a dynamic language implementation that they themselves did not write.