I don't understand these "never failed" comments. Without further context, it's meaningless. If I write a python script and never change anything in its environtment or inputs, it won't fail either. That's not specific to cobol.
I understand the context to be that COBOL, as a DSL for batch processing, declares its .data and .bss segments, or the equivalents on host systems, statically in the DATA DIVISION and usually doesn't dynamically allocate memory. This, coupled with CPU, memory, and I/O bandwidth reservation from a job scheduler on an exclusive hot-swappable partition on a host (z/OS aka MVS) plus USVs, redundant disks/disk ports, and networks makes "never fail" much more a consequence and primary objective of mainframe architectures where COBOL workloads are usually run.
I imagine the backwards compatibility story of COBOL is a little better than Python's
If you're actually patching your python installs, that is by no means certain.
If the python script has external dependencies… lol.
COBOL changes very slowly, once in a decade or two. Python does not offer support of a release for more than 3 years and a half [1].
[1] https://en.wikipedia.org/wiki/History_of_Python