zamer nochi: M-188 pervyy priyom stal priborom i srazu nashyol dyru vo vcherashney zeleni; M-189 trebovanie dat vozrazhenie stalo raznaryadkoy; M-190 datchik celosti hozyaystva sovral tretiy raz - v peredache perepisan

This commit is contained in:
Дмитрий
2026-08-03 10:54:24 +03:00
parent e6b8bf163b
commit ecc81d4eee
2 changed files with 96 additions and 2 deletions
@@ -3859,3 +3859,84 @@ C5 — там **«✅ 178 записей за месяц, всё в порядк
файлов** — при занятом файле деньги владельца выброшены зря, а переставить мешает то, что
список файлов известен лишь после восьмого шага; и **три вопроса о грязи неизбежны**, потому
что у обоих нижних есть второй зовущий помимо дороги, и правило обязано держаться у каждого.
---
## М-188. 🟢 ПЕРВЫЙ ПРИЁМ СТАЛ ПРИБОРОМ — И ТУТ ЖЕ ПОКАЗАЛ, ЧТО ВЧЕРАШНЯЯ ПРОВЕРКА НИЧЕГО НЕ СТЕРЕГЛА
Помощник построил первую в затее проверку класса «два прогона одновременно». **1578 проверок
в 50 файлах.** Доказано вырезанием: он заменил зов замка на «считаем, что заняли» —
| прибор | ответ |
|---|---|
| новый сторож класса | 🔴 покраснел |
| его же вчерашние поведенческие проверки | 🟢 **остались зелёными целиком** |
⇒ То есть замок можно было вырезать, и **ни одна вчерашняя проверка этого не заметила бы**.
🪤 И тем же резом вскрылась причина: вчерашняя проверка «файлы вправду заняты» спрашивала
разрешение **за своего** — а оно отвечает «можно» и когда занято им самим, и когда
**не занято никем**: пустой список читается как «всё свободно». ⇒ Лечение: спрашивать
**за чужого** — отказ чужому единственное, что доказывает замок.
🔑 Класс: **проверка спрашивала у защиты то, на что та отвечает «да» в обоих случаях**
родня «лишь бы не пусто вместо ровно да» (образец вырезания второго рода). ⇒ И общий вывод:
**приём, ставший прибором, в первый же час нашёл дыру в том, что вчера принято зелёным.**
Мера «сколько приёмов стало приборами» — 1 из 2, и первый окупился немедленно.
🟢 И отдельно про честность: дыру «заявка против факта» (М-187) помощник **зафиксировал
нарочно** — написал проверку, чья **зелень есть плохая новость**, и сказал это внутри неё
словами: покраснеет — значит дыру закрыли, перепишите проверку. Так невылеченное перестаёт
быть невидимым.
---
## М-189. 🔴 МОЁ ТРЕБОВАНИЕ «ДАЙ ОДНО ВОЗРАЖЕНИЕ КАЖДЫЙ КРУГ» — ТОТ ЖЕ КЛАСС, ЧТО «НАПИШИ N ПРОВЕРОК», КОТОРЫЙ Я САМ ЖЕ ОТМЕНИЛ
Возражение помощника о моём методе, и оно самое неудобное за смену, потому что бьёт
в лекарство, а не в болезнь.
Судья нашёл перекос (М-175): возражения ушли в метод, продукт остался без них, и виноват был
я — хвалил за один род показаний. Лечение я выбрал прямое: **вписал в каждое поручение
«дай хотя бы одно возражение про построенное»**. Четыре круга подряд оно работало и дало
четыре настоящие находки, включая самое опасное место затеи.
⇒ И на пятом помощник сказал: «сегодня я потратил заметную часть внимания на то, чтобы
возражение **было**, а не на то, чтобы дострелить сторожа до класса. Ваше требование
ничем не отличается от требования «напиши N проверок», которое вы сами сегодня отменили
как работающее против находок».
🔑 Класс: **лекарство от перекоса само стало разнарядкой.** Заказанное число возражений —
такой же потолок, выданный за задание, как заказанное число проверок (М-145), и вредит
тем же способом: внимание уходит на выполнение формы. ⇒ Разница между «прибор показывает»
и «прибор обязан показать» — та же, что между замером и разнарядкой.
⇒ Лечение, принятое: **требовать не возражение, а разбор** — «назови, что в построенном тобой
может обмануть владельца ночью, и если не нашёл ничего, скажи это прямо и объясни, почему
считаешь, что нечему». Пустой ответ становится допустимым и потому честным.
🪤 И его же вторая половина, тоже верная: **прибор вышел на один приём и на одну дорогу.**
Сторож смотрит на **место** (текст известной дороги), а не на **класс** — заведёт кто-то
завтра вторую дорогу, откатывающую угол, и сторож промолчит. Настоящий сторож класса должен
был бы спрашивать: «покажи всех, кто зовёт откат, и докажи, что каждый прежде занял файлы».
⇒ Помощник назвал это сам, сдавая работу: **«это лучше, чем ничего, и хуже, чем вы думаете,
приняв работу»**.
---
## М-190. МОЙ ДАТЧИК ЦЕЛОСТИ ХОЗЯЙСТВА СОВРАЛ ТРЕТИЙ РАЗ ТЕМ ЖЕ СПОСОБОМ
Моя ошибка, поймал сам — но только потому, что число показалось странным.
Я вписал в передачу шаг 0 «посчитать пакеты без описания» (М-178) и тут же применил его:
ответ — **58 разодранных**. ⇒ Перепроверил: все 58 — это **папки-обёртки** вида `@имя/`,
у которых описания не бывает никогда по устройству. Честный ответ: **957 пакетов, разодрано 0**.
🔑 Это **третий раз за смену**, когда мой датчик врёт тем же способом: он считает **форму**,
а не суть (М-108 — правило мерило форму; М-131 — код выхода после конвейера; и теперь).
⇒ И самое опасное: я успел записать негодный датчик **в передачу как обязательный первый шаг
смены** — смена 7 получила бы ложную тревогу в первую же минуту и пошла бы чинить целое.
⇒ Датчик в передаче переписан целиком, с явным пропуском обёрток и с честным ответом
на конец смены. **Правило: датчик, попадающий в передачу, обязан быть проверен на заведомо
исправном хозяйстве** — то есть должен уметь показать ноль там, где всё цело.
@@ -12,8 +12,21 @@
> проверок не сработало — уже не восстановить.
>
> **ПЕРВЫМ ДЕЛОМ СМЕНЫ, до всякой задачи:** посчитать в `.claude/worktrees/night1/node_modules`
> пакеты без файла описания — и внешние (`*/`), и вложенные (`@*/*/`). **Ноль — работать
> можно. Не ноль — сторожа врут, и всё зелёное этой смены недостоверно**, пока не починено.
> пакеты без файла описания. 🔴 **Датчик пиши так, а не иначе — я на нём попался трижды:**
> внешние имена берём, **но папки-обёртки, начинающиеся с `@`, ПРОПУСКАЕМ** (у обёртки
> описания не бывает никогда, и она даст ложную тревогу), а вложенные берём как `@*/*/`.
>
> ```sh
> M=node_modules; miss=0; tot=0
> for d in $M/*/; do n=$(basename "$d"); case "$n" in @*) continue;; esac
> tot=$((tot+1)); [ -f "$d/package.json" ] || miss=$((miss+1)); done
> for d in $M/@*/*/; do tot=$((tot+1)); [ -f "$d/package.json" ] || miss=$((miss+1)); done
> echo "пакетов: $tot, разодрано: $miss"
> ```
>
> На конец смены 6 честный ответ: **957 пакетов, разодрано 0.**
> **Ноль — работать можно. Не ноль — сторожа врут, и всё зелёное этой смены недостоверно**,
> пока не починено.
> Лечение: `npm ci --ignore-scripts` в корне угла. 🪤 Она падает примерно раз из трёх
> (это стена 6) — **повтори, а не делай выводов с первого раза**; вторая попытка на смене 6
> дала 1112 пакетов за две минуты.