
Тест упал на строке, где выполняется git init. Естественное движение - поправить эту строку. Добавить проверку, что каталог не пустой, и пойти дальше: тест зелёный, задача закрыта.
А теперь настоящая история из первоисточника. git init действительно выполнился не там - он создал репозиторий прямо в исходниках проекта. Проверка на пустой каталог сделала бы тест зелёным. И оставила бы живой причину: тест читал временный каталог до того, как тот вообще создавался.
Root Cause Tracing - техника из набора Superpowers, которая формализует движение в обратную сторону: от симптома вверх по цепочке вызовов и значений, пока не найдётся место, где корректное состояние впервые стало некорректным. Чинить нужно там.
Ценность здесь не в новой технологии. Отладка через стек вызовов старше большинства читателей. Ценность в том, что дисциплина записана как процесс с запретами - и написана она для агента, у которого соблазн залатать видимое место особенно силён.
Железный закон
Техника не живёт сама по себе. В репозитории она лежит внутри более крупного скила и является его частью - skills/systematic-debugging/root-cause-tracing.md. На сторонних каталогах встречается отдельная карточка "root-cause-tracing", но первоисточник устроен именно так, и это важно для понимания: трассировка назад - один из инструментов внутри процесса, а не процесс целиком.
Сам процесс открывается формулировкой, которая не оставляет пространства для торга:
Дальше идут четыре фазы, и каждую нельзя пропустить: расследование причины, разбор образца, гипотеза с проверкой, и только потом реализация. Пока не закрыта первая фаза, предлагать исправления запрещено.
Отдельно оговорено, когда этот процесс нужен особенно: под давлением сроков, когда "очевидное быстрое решение" само просится, когда вы уже пробовали несколько починок и когда предыдущая не сработала. То есть ровно в тех обстоятельствах, где его обычно и бросают.