diff --git a/docs/orchestrator-norms-scratchpad.md b/docs/orchestrator-norms-scratchpad.md index b304a662..3d20d38d 100644 --- a/docs/orchestrator-norms-scratchpad.md +++ b/docs/orchestrator-norms-scratchpad.md @@ -535,3 +535,33 @@ HTTP-код, количество, номер строки кода. Никак `PIPESTATUS`/код возврата; контроль прибора строить на ОЖИДАЕМОМ СОДЕРЖИМОМ, а не на количестве строк. ⚠ Родня записанного выше класса «обёртка вокруг встроенной команды даёт 127, а счётчик печатает 0» — механизм тот же, программа другая: **ненулевой код молчит, когда его вывод отправлен в `/dev/null`.** + +## ⛔ НОРМА СТОЯЛА В ЭТОМ ЖЕ ФАЙЛЕ, НАПИСАННАЯ МНОЮ, И НЕ СРАБОТАЛА: её ТРИГГЕР был у́же предмета (18.09) + +Выше по файлу записано: «**разрешая агенту ПРОГОНЫ, ты принимаешь решение о ЧУЖОМ замере** — предупредить +соседа обязан». Я написал это сам после случая 17.09 и сегодня нарушил, не заметив. + +**Что произошло.** Батарея бэкенд-сессии `final8` ушла в `MAKE_EXIT=2` на пакете, которого зона не трогала: +локальной HTTP-фикстуре сбросили соединение под нагрузкой, и тест честно объявил, что до своего предмета не +дошёл. В её окне у меня работали **семь агентов** — пять верификаторов рабочего процесса и два субагента, — +и в задании я разрешил дословно «одиночный `go test` одного пакета или `go build`, если это единственный +способ ответить», а одному прямо заказал прогон `tmctl`, который тянет компиляцию половины дерева. Косвенная +улика: в кеше сборки за 35 минут тронуто **5474** файла при общем объёме 125 280. + +⛔ **Почему норма не поймала — и это единственное, ради чего запись.** Её триггер в моей голове был «когда я +ЗАПУСКАЮ прогон». А я прогона не запускал: я **выдал семерым агентам мандат, в котором прогон разрешён**. +Между «я гоню тяжёлое» и «я создал семь субъектов, каждый из которых вправе гнать тяжёлое» разницы для соседа +нет никакой, а для срабатывания нормы — вся. ⇒ **норма, чей триггер сформулирован через СВОЁ действие, слепа +к делегированию**; переписываю её предмет: предупреждать соседа надо, когда **в моём периметре появляется +право на тяжёлый прогон**, кем бы оно ни исполнялось. + +⚠ И вторая половина, про честность формулировки: разделить, чья именно компиляция уронила фикстуру, нечем — +кеш сборки общий. Поэтому в чужой отчёт идёт **дизъюнкция**, а не удобная определённость: «в окне работали и +её батарея, и мои агенты с правом собирать; прибора, который это разделит, у нас нет». Соблазн написать +«скорее всего флейк» велик ровно потому, что он снимает вопрос с обоих. + +⭐ **Что зона сделала правильно и что я забираю в прибор кампании:** её тест не позеленел молча, дойдя не до +предмета, а напечатал `premise:` и назвал, почему вывод невозможен. ⇒ при разборе логов мутационной кампании +запись, чей текст падения говорит `premise:` или `connection reset by peer`, засчитывать поимкой НЕЛЬЗЯ — это +**НЕ ИЗМЕРЕННАЯ** запись, и её число печатается ТРЕТЬИМ рядом с пойманными и выжившими, а не растворяется в +них. Неизмеренное, прочитанное как пойманное, закрывает вопрос, не задав его.