Она есть там, где она достаточно важна, чтобы о ней заботится.
В 1996 г. ракета "Ариан-5" взорвалась через 40 секунд после старта с Куру. Как показало расследование, взрыв произошел из-за ошибки в программном обеспечении. А именно, выражающее горизонтальную составляющую скорости ракеты относительно платформы 64-битовое число с плавающей точкой конвертировалось в 16-битовое целое со знаком. Эта конвертация привела к вычислительной ошибке. Ракета и груз стоили $500 млн. Неожиданный трудноуловимый баг? Да. Нашли, когда очень захотели найти? Да. Больше ракеты по этой причине не падают. Падают по другим.
Ну вот Ваш же пример про то, что прослеживаемости по факту нет, а есть только некая иллюзия прослеживаемости. И это даже в такой специфической области, как программы для космической техники. Я в своё время интересовался стоимостью тестирования одной функциональной точки в разных отраслях применения программного обеспечения и был шокирован тем, что тестирование программ для космической техники стоит в
тысячи раз дороже тестирования типовых бизнес-приложений. И всё равно неожиданное поведение алгоритмов случается.
По сути, проконтролировать каждое действие алгоритма в каждом из возможных сценариев возможно только в самых простейших случаях, когда мы и руками все эти действия можем выполнить без особого труда. Реальные программы нужны явно не для этих случаев. Даже элементарный калькулятор нужен для того, чтобы нам не выполнять эти вычисления на бумажке столбиком, что довольно утомительно. Так что за калькулятором никто не проверяет, а просто верят ему. Тотальный контроль за алгоритмами и проверка того, что они делают, это путь в никуда. Качественная программа сегодня - не та, каждый шаг которой проверяем, а та, которая устойчива к критическим сбоям. Т.е. мы можем испортить некоторый кусок данных и кода, но программа не повиснет намертво, а всё равно будет выдавать "примерно" то, что нужно. Но и контролировать работу такой программы нужно только выборочно и на "примерное" соответствие результата ожиданиям.
Так это претензии не к повторяемости и прослеживаемости, а к вычислительным ресурсам. При любых ресурсах можно найти задачи, их превосходящие. Но для многих задач ресурсов хватает, как показывают нам торчащие из каждого кармана смартфоны.
Для многих задач ресурсов хватает, но на некоторые задачи неожиданно может не хватить даже огромного количества ресурсов. И что в таком случае должен сделать качественно написанный алгоритм? Вовремя обнаружить проблему и пойти по обходному пути. А тупо написанный алгоритм просто повиснет. Но именно наличие в алгоритме таких обходных путей делает его поведение слабо предсказуемым.
Вот только нейросети не надо сюда вмешивать. Конечно, обученная нейросеть работает по алгоритму (ух ты, я говорю как Webpack!), но этот алгоритм она вырабатывает сама в процессе обучения.
Я не очень понимаю, чем алгоритмы, которые "вырабатывают другие алгоритмы в процессе обучения" отличаются от "просто алгоритмов". Если Вы считаете, что нейросети "не надо вмешивать" по той причине, что они "слишком велики для понимания человеком", так алгоритмы, которые "не слишком велики", это, по сути, игрушки, которые не делают ничего такого, что нельзя сделать руками. Они, в общем-то, и не нужны. Самые примитивные бизнес-приложения уже в некотором смысле "слишком велики для понимания человеком".