There's a world of difference between 'failure' and outputting an incorrect value, in a system without checks and balances.
Of course a system that outputs an incorrect value is failing! it is a form of 'automation complacency' to state it is not. Whether or not the system signals its 'own' failure is an entirely different story. The subsystem that checks whether there is a failure can fail as well (for example by not taking into account all possible failures)!
This is an old principle:
Quis custodiet ipsos custodes?
(Who will watch the watchers themselves?)
The guiding principle should be to always crosscheck available data (all radio altimeters, speed indicators, etc etc) and bail out to human intelligence when things do not make sense.
I notice it seems to be difficult for many to separate the analysis of causes from appointing blame. A path in a causality graph is simply a 'chain of events'. Each item in this chain exists, for if it would not the chain would break and the accident would not happen (in this way). That's all there is to it. It exists. It does not have the property 'importance' or 'blame'. All items in this chain are equivalent in the sense that they deserve study.
Many issues have become clear:
- aircraft with recurring defect
- failure not signalled
- source of good data ignored
- no data crosscheck / system bailout at next higher level hence no warning
- non-intuitive design of system (RH AP, AT uses LH RA, AP/AT not single system)
- no crosscheck at next next level for mode confusion between AP and AT hence no warning
- regarding as unimportant the gear warning / RA failure
- not monitoring primary flight parameters by crew
- late reaction on stall by crew
Many others might be hypothesized at this point.
One should objectively look at these.