передача смене 9: найден корень всех бед (программа переехала, затея падала в оболочку), первое живое рождение, правила 29-42 добыты, все прежние перенесены поимённо
This commit is contained in:
@@ -0,0 +1,442 @@
|
||||
# ПРОМТ девятой смены: состояние + что делать дальше
|
||||
|
||||
**Дата:** 03.08.2026, писалась ПО ХОДУ смены 8. Затея «дело идёт без владельца» — ночной
|
||||
работник трудится восемь часов без человека, утром шлёт письмо.
|
||||
|
||||
> 🔴🔴🔴 **ШАГ 0 — ТРИ ПРИБОРА. Смена 8 подтвердила снова: сошлись знак в знак.**
|
||||
>
|
||||
> **1. Цело ли хозяйство** (первым делом, до всякой задачи):
|
||||
> ```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"
|
||||
> ```
|
||||
> На конец смены 8: **957 пакетов, разодрано 0.** Не ноль — сторожа врут, всё зелёное
|
||||
> недостоверно. Лечение: `npm ci --ignore-scripts` в корне угла, падает примерно раз из трёх —
|
||||
> **повтори, а не делай выводов с первого раза**.
|
||||
>
|
||||
> **2. Полный прогон:** `npm run test:tools` из корня угла (около минуты).
|
||||
> **3. Узкий на мигание:** упавшее прогнать в одиночку трижды. Зелено трижды — мигает
|
||||
> под нагрузкой; красно — сломано вправду.
|
||||
>
|
||||
> 🪤 **Первой строкой любой проверочной команды печатай, ГДЕ ты**
|
||||
> (`git rev-parse --show-toplevel`). Смена 7 попалась на этом в первые минуты.
|
||||
|
||||
🔴 **Правило этой бумаги, добытое кровью шести смен.** Передача устаревает **сама на себя**,
|
||||
в первую очередь в ЧИСЛАХ. **Ни одно число отсюда не брать на веру — собирать командой
|
||||
на входе.** 🆕 Смена 8 добавила к этому: улики множатся ПО ХОДУ смены, и число, названное
|
||||
час назад, устаревает само (помощник насчитал 5 улик там, где к концу смены стало 6, — и был
|
||||
прав на свой час).
|
||||
|
||||
---
|
||||
|
||||
## 🟢🟢 ЧТО ИЗМЕНИЛОСЬ ЗА СМЕНУ 8 — ГЛАВНОЕ
|
||||
|
||||
**Смена 8 нашла КОРЕНЬ, из-за которого не работало ничего, и вылечила его.**
|
||||
|
||||
| что стояло в передаче 8 | что оказалось |
|
||||
|---|---|
|
||||
| «прибор денег молчит, догадка — урезанное окружение» | **догадка НЕВЕРНА.** То же окружение со старыми ключами работает. Виноват один ключ |
|
||||
| «ворота врезаны у `smoke-longrun`» | врезана **не та дверь**: она проверяла исправность прибора, а не хватает ли денег |
|
||||
| «слепота вылечена» (след замера) | вылечена **у одного платного входа из двух** |
|
||||
| «лечение обвеса срезает цену втрое (0,157 → 0,053 $)» | **не воспроизвелось.** Чистый замер: обвес срезан, цена упала на **8 %**, а не втрое |
|
||||
| «в счёте две головы разом» | **в пяти уликах из шести заказанной нет ВОВСЕ** — не добавка, а замена |
|
||||
|
||||
### 🔑 КОРЕНЬ — один на все беды сразу
|
||||
|
||||
Затея зовёт программу-помощника двумя дорогами: хорошей (напрямую) и запасной (через
|
||||
оболочку). Хорошая искала файл `cli.js`. **Программа переехала:** теперь это настоящий
|
||||
исполняемый файл `bin/claude.exe` (пакет 2.1.142). Старое имя не находилось ⇒ затея молча
|
||||
сваливалась на оболочку ⇒ **оболочка склеивает все доводы в одну строку без кавычек**.
|
||||
|
||||
Отсюда ВСЁ:
|
||||
· ключ со значением «пустая строка» **исчезал** — прибор замера умирал молча (искали 2 смены);
|
||||
· **сам вопрос замера не доходил** — программа отвечала «Здесь пока нет вопроса, скажи, что
|
||||
нужно сделать» за полные деньги. Три «замера» были деньгами за пустоту;
|
||||
· **задание работника рвалось**: он получил **два знака `«Ты»` вместо 2481** и вежливо
|
||||
переспросил: «Дмитрий, кажется, сообщение оборвалось… Что хочешь сделать?»
|
||||
|
||||
**Лечение врезано:** имя нутра не зашито нигде — его называет сам пакет в своём `package.json`.
|
||||
Запасная дорога через оболочку **убрана совсем**: тихая дорога, которая ломает, хуже громкого
|
||||
отказа. Плюс сторож класса «довод, который не переживёт склейку».
|
||||
|
||||
### 🟢 Что случилось впервые за всю историю затеи
|
||||
|
||||
1. **Родился живой работник целиком** — работник, надзиратель отдельным процессом, признаки
|
||||
жизни, замок файлов, все бумаги прогона. Работы не сделал (см. корень), причина найдена.
|
||||
2. **Два отказа ПО СУЩЕСТВУ.** Шесть смен затея отказывала только по неисправности прибора.
|
||||
Теперь: «Израсходовано 78,0 % запаса, а прогоны запускаются, пока меньше 71,4 %…
|
||||
Прогоны не запускаются до 2026-08-07 — тогда запас обновится».
|
||||
3. **Датчики денег заговорили с владельцем.** Оба (какой головой вправду работали; срезан ли
|
||||
обвес) были построены прежде, работали правильно — и их приговор **выбрасывался по дороге**.
|
||||
Теперь печатается на всех трёх платных дорогах, проверено живым запуском.
|
||||
4. **Настоящий ответ прибора:** «есть.» — 6 токенов (было 287–438 токенов переспрашивания).
|
||||
|
||||
---
|
||||
|
||||
## 🔴 ПРИНЦИП РАБОТЫ — ЕГО И НАДО ПРОДОЛЖИТЬ
|
||||
|
||||
1. **КРУГ = ОДНА ЗАДАЧА.** Переписал помощнику задание целиком → он работает в углу →
|
||||
коммитит → 🔴 **ТЫ САМ гоняешь проверки и выносишь приговор**. Между кругами
|
||||
не останавливаешься и владельца не переспрашиваешь.
|
||||
2. **СВОЕЙ РУКОЙ КОДА НЕ ПИШЕШЬ.** Твоя работа — задания, приборы, приговор, бумаги.
|
||||
🆕 Исключение, оправдавшее себя: **диагностический прибор в `.night/`** — им смена 8 развела
|
||||
оси и нашла корень. Он вне хранилища и не код затеи.
|
||||
3. **ПРАВЩИК — НЕ АВТОР.** Нашёл беду — отдай чинить другому.
|
||||
4. **ОТЧЁТ ПОМОЩНИКА — НЕ ДОКАЗАТЕЛЬСТВО.** Числа перезапускай своей рукой. 🆕 И отчёт СУДЬИ
|
||||
тоже: смена 8 перепроверила каждое его обвинение и все подтвердились — но проверять надо.
|
||||
5. **ТРОЕ-ЧЕТВЕРО РАЗОМ, ФАЙЛЫ У НИХ РАЗНЫЕ.** И не только файлы: общее хозяйство
|
||||
(библиотеки, базы, `.night/`) в списках файлов не значится, а ломает всех разом.
|
||||
В каждое поручение: «в общем углу ничего не устанавливать, не пересобирать, не удалять».
|
||||
🆕 Смена 8 держала троих разом (spawn / supervisor / cli) — столкновений ноль.
|
||||
6. **В КАЖДОЕ ПОРУЧЕНИЕ — ПРОСЬБА О РАЗБОРЕ, А НЕ РАЗНАРЯДКА НА ВОЗРАЖЕНИЯ.** «Назови, что
|
||||
в построенном тобой может обмануть владельца; не нашёл — скажи прямо». **Пустой ответ
|
||||
допустим.** 🆕 Смена 8: **четыре круга из четырёх дали разбор, и трое поспорили с заданием
|
||||
по существу** — двое оказались правы, и один из споров дал главную находку дня.
|
||||
6-бис. 🔴🔴 **ТРЕТИЙ ПРИБОР — СУДЬЯ. Заводить каждую смену, не реже раза.** Помощник,
|
||||
не писавший ни задания, ни работы. **На смене 8 он снова дал улов крупнее всех кругов
|
||||
вместе, и весь улов — по надзирателю.** Наказ — в разделе «Судья» ниже.
|
||||
7. **ЗЕЛЁНОЕ ПРИНИМАЙ ВЫРЕЗАНИЕМ, и обязательно ВТОРОГО РОДА.**
|
||||
8. **ВОРОТА ВСЛЕПУЮ** — двое помощников в отдельных углах-копиях, которым не сказано,
|
||||
что построено, а сказано, что затея ОБЯЗАНА уметь.
|
||||
9. **ЗАПИСЫВАЙ ПО ХОДУ, НЕ В КОНЦЕ.** 🆕 И заказывай это помощнику ЖЁСТЧЕ, чем «коммить
|
||||
по частям»: **первый коммит через пять минут, до всякой разведки** (см. правило 32).
|
||||
10. **ЧЕСТНОСТЬ ВПЕРЁД УСПЕХА.** Свою ошибку называй первой, до находок. 🆕 Смена 8 сказала
|
||||
владельцу неверное **три раза** и все три поправила вслух — это дороже, чем не ошибиться.
|
||||
|
||||
🔴 И помни, ЗАЧЕМ это всё: роль надзирателя ночью будет исполнять ПРОГРАММА. Каждая твоя
|
||||
ошибка — список того, что программа обязана уметь.
|
||||
|
||||
---
|
||||
|
||||
## 🔴🔴 ПРАВИЛА, ДОБЫТЫЕ СМЕНОЙ 8
|
||||
|
||||
**29. 🔴🔴 САМЫЙ ДЕШЁВЫЙ ПРИБОР — ПРОЧЕСТЬ ГЛАЗАМИ, ЧТО ПРОГРАММА ОТВЕТИЛА (М-229).**
|
||||
Смена целый день разбирала служебные поля ответа и **ни разу не прочла сам текст ответа**.
|
||||
А в нём было написано прямым текстом: «Здесь пока нет вопроса — скажи, что нужно сделать».
|
||||
Прибор был бесплатный и лежал в тех же файлах. ⇒ **Прежде чем измерять ответ — прочти его.**
|
||||
|
||||
**30. 🔴 ОТМЕНЯЯ ДОКАЗАННОЕ ПРЕЖДЕ, СРАВНИ СИЛУ УЛИК, А НЕ СВЕЖЕСТЬ (М-229).** Смена 7
|
||||
доказала подмену головы арифметикой по прейскуранту. Смена 8 отменила это **одним полем
|
||||
из одного файла** и записала отмену в код примечанием. Проверенная правда была откачена назад.
|
||||
⇒ Новая улика не главнее только оттого, что новая.
|
||||
|
||||
**31. 🔴 ПРАВИЛО, КОТОРОЕ ТЫ САМ ЗАПИСАЛ, НЕ УЗНАЁТСЯ В ЛИЦО (М-229).** Смена 8 дважды прошла
|
||||
мимо собственных правил: седьмого вопроса вырезания («заказ или исполнение?») и правила 21
|
||||
(«принято ≠ применено»). Оба записаны накануне её же рукой.
|
||||
⇒ Правила надо не помнить, а **применять списком**, как приборы шага 0.
|
||||
|
||||
**32. 🔴 ПЕРВЫЙ КОММИТ ЧЕРЕЗ ПЯТЬ МИНУТ, ДО ВСЯКОЙ РАЗВЕДКИ (М-219).** Помощник потратил
|
||||
двадцать действий и десять минут на разведку, не записал ни знака — обрыв стёр всё целиком.
|
||||
«Коммить по частям» — совет, который не сработал. ⇒ В поручении заказывай **самую малую
|
||||
полезную правку первой**, с коммитом, и только потом разбор. Смена 8 так и делала —
|
||||
все последующие круги пережили обрывы без потерь.
|
||||
|
||||
**33. 🔴 БЕЙ ПО ОДНОЙ ОСИ ЗА РАЗ (М-217).** Две смены искали причину, меняя сразу две вещи.
|
||||
Один замер, менявший **только одну** ось (то же окружение, другие ключи), убил догадку
|
||||
за минуту. ⇒ Замер, меняющий сразу две вещи, не отвечает ни на что.
|
||||
|
||||
**34. 🔴🔴 ТИХАЯ ЗАПАСНАЯ ДОРОГА, КОТОРАЯ ЛОМАЕТ, ХУЖЕ ГРОМКОГО ОТКАЗА (М-224).** Запасная
|
||||
дорога через оболочку выглядела безобидной («ну хоть как-то запустим»), а превращала
|
||||
«программы нет» в «программа есть, но всё врёт». ⇒ Смена 8 убрала её совсем. Отказ виден
|
||||
сразу и стоит ноль; поломка видна утром и стоит ночь работы.
|
||||
|
||||
**35. 🔴 ЖЁСТКОЕ ИМЯ ЧУЖОЙ ПРОГРАММЫ — КАПКАН С ОТЛОЖЕННЫМ СРОКОМ (М-224).** Спрашивай
|
||||
у самого пакета, чем его звать (`package.json`), а не записывай имя файла. Иначе следующий
|
||||
переезд повторит ту же беду с новым именем.
|
||||
|
||||
**36. 🔴🔴 ИМЯ ЗАЩИТЫ — ЧАСТЬ ЗАЩИТЫ (М-226).** Дверь звалась «денежные ворота», а спрашивала
|
||||
исправность прибора. Прошлая смена честно её врезала, честно записала «ворота стоят» и была
|
||||
уверена, что сторожит деньги. **Никакой сторож «дорога без ворот» этого не поймал бы.**
|
||||
⇒ Имя, обещающее больше, чем защита делает, работает как ложный датчик: оно закрывает вопрос
|
||||
в голове читающего.
|
||||
|
||||
**37. 🔴 ПРАВИЛО КЛАССА ЛЕЧИТ БУДУЩИЕ СЛУЧАИ, НО НЕ ТОТ, ИЗ КОТОРОГО ДОБЫТО (М-226).**
|
||||
Спрашивай отдельно: **«а мою СЕГОДНЯШНЮЮ беду этот сторож поймал бы?»** Смена 8 спросила —
|
||||
ответ был «нет», и главной правкой стало переименование, а не сторож.
|
||||
|
||||
**38. 🔴 СРЕЗАЛ ПРИЧИНУ — ПЕРЕМЕРЯЙ СЛЕДСТВИЕ, А НЕ ОБЪЯВЛЯЙ ЕГО (М-228).** «Инструменты
|
||||
срезаны в ноль» и «цена упала втрое» — два разных утверждения, и первое не влечёт второго.
|
||||
Замер: инструменты 46→0, службы 51→0, а цена **всего на 8 % ниже**.
|
||||
|
||||
**39. 🔴🔴 У УЛИКИ БЫВАЕТ ВТОРОЕ ХРАНИЛИЩЕ, КОТОРОГО ТЫ НЕ ЗАВОДИЛ (М-230).** Причину смерти
|
||||
работника нашли не в построенном следе (он был пуст), а в **стенограмме**, о которой затея
|
||||
не знала. ⇒ Прежде чем строить свой след, спроси: «а не пишет ли это кто-то ещё?»
|
||||
⇒ И к правилу 25: **«второе место того же класса» не обязано быть таким же по устройству.**
|
||||
Искали второй платный вход — а вторым местом оказалось второе хранилище.
|
||||
|
||||
**40. 🪤 ПРИГОВОР «ЭТОГО НЕТ НА ДИСКЕ» — ТОЛЬКО ВТОРЫМ ПРИБОРОМ (М-222).** Оболочка этого
|
||||
хозяйства врёт **не только при записи, но и при чтении**: `ls` сказал «каталога нет»
|
||||
о существующем и полном каталоге. `node` и git сказали правду. Едва не прибрал живой угол.
|
||||
|
||||
**41. 🪤 ПРИБОР НАДЗИРАТЕЛЯ ВМЕШИВАЕТСЯ В ИЗМЕРЯЕМОЕ (М-220).** Первое рождение убила **моя
|
||||
собственная мерка времени**: ждал команду вживую 6 минут 40 секунд и оборвал. Заведение
|
||||
работника занимает ~15 минут (ставится хозяйство в его углу). ⇒ **Живое рождение запускать
|
||||
только в фоне.**
|
||||
|
||||
**42. 🔴 ОТКАЗ ОБЯЗАН РАЗЛИЧАТЬ «ОТВЕТ ПРИШЁЛ, НО НЕ ТОТ» И «ОТВЕТА НЕ БЫЛО ВОВСЕ» (М-216).**
|
||||
Слив этих двух состояний в одну строку стоил двух смен поиска не в ту сторону.
|
||||
🪤 И он ещё не закрыт: у работника «встал» и «умер молча» — **по-прежнему одно слово**
|
||||
(`stalled`), и мертворождённый считается годным к платной пересдаче.
|
||||
|
||||
---
|
||||
|
||||
## 🔑 ПРАВИЛА ПРЕЖНИХ СМЕН — перенесены ПОИМЁННО, все в силе
|
||||
|
||||
> Обязанность пишущего передачу (М-171): пройти прежнюю передачу **по правилам поимённо**
|
||||
> и отметить каждое как перенесённое или **намеренно снятое**. **Снято за смену 8: ничего.**
|
||||
> Все 28 правил + четыре правила смены 6 перенесены целиком.
|
||||
|
||||
1. 🔴 «УСТРАНЕНА ВОТ ЭТА ПРИЧИНА», А НЕ «БЕДА УСТРАНЕНА». Вслух добавляй, чего не искал.
|
||||
2. 🔴 ЗАЩИТА, КОТОРУЮ НИКТО НЕ ЗОВЁТ, НЕ БЫВАЕТ ПРОВЕРЕННОЙ. 🆕 **За смену 8 нарушено ещё
|
||||
раз, третий подряд** — датчики денег никем не читались. Зовущих считали у ворот и не считали
|
||||
у датчиков. 🪤 Датчик зовущих (`schyot-zovushchih.mjs`) врёт нулём в **четырёх** случаях:
|
||||
передача значением, зов в своём же файле, постоянные, переименование при ввозе.
|
||||
Считай ещё и глазами.
|
||||
3. 🔴 ПЛАН — ГИПОТЕЗА, А НЕ ПРИКАЗ, ровно как и твоё поручение. Клади в поручение
|
||||
«спорь и с планом тоже». 🆕 За смену 8 это окупилось трижды.
|
||||
4. 🔴 ГРАНИЦУ ВЛАДЕЛЬЦА ТОЛКУЕТ ВЛАДЕЛЕЦ. 🪤 Примета опасного места: толкование ОБОСНОВАНО
|
||||
и звучит рассудительно.
|
||||
5. 🔴 СТОРОЖ, СТЕРЕГУЩИЙ БЕДУ, — САМ БЕДА. И родственное: сторож, чей приговор противоречит
|
||||
его же сводке, сперва проверяется на живость.
|
||||
6. 🔴 КРУПНЕЙШИЕ БЕДЫ — ВСЕ НА СТЫКАХ, и все найдены только запуском. 🆕 Смена 8 —
|
||||
лучшее подтверждение: дыра в воротах найдена **живым запуском**, чтением кода её
|
||||
не видел никто шесть смен.
|
||||
7. 🔴 ВСЯКИЙ ПЕРЕЧЕНЬ СОБИРАТЬ КОМАНДОЙ, А НЕ ПАМЯТЬЮ.
|
||||
8. 🔴 ДАТЧИК ВРЁТ ЧАЩЕ ПРОВЕРЯЕМОГО, и «ноль» — самый опасный ответ. Опаснее всего датчик,
|
||||
чей ответ СОВПАЛ с твоим ожиданием. Код выхода снимать **без конвейера**
|
||||
(`команда > файл 2>&1; echo $?`).
|
||||
9. 🔴 **КОММИТ — окончательная редакция:** `git add <свои пути поимённо>`, затем
|
||||
`git commit -m "<ОДНА строка>" <те же пути явно>`. Отдельный `add` — новый файл иначе
|
||||
не находится; явные пути в `commit` — среда выполняет команду git ДВАЖДЫ.
|
||||
**Одна строка обязательна** (без переносов, без `<<EOF`, без `$(…)`, без обратных кавычек).
|
||||
По-русски даже лучше — это читает владелец. Состав ПЕРЕЧИТЫВАТЬ через `git show --stat`.
|
||||
🟢 Смена 8: 29 коммитов, испорченных **ноль**.
|
||||
10. 🔴 ПРАВИТЬ ФАЙЛЫ ТОЛЬКО ЧЕРЕЗ Edit/Write, НЕ ЧЕРЕЗ ОБОЛОЧКУ.
|
||||
11. 🔴 ОБРЫВ СВЯЗИ СЛУЧАЕТСЯ. Помощнику велеть писать по ходу и коммитить по одной беде.
|
||||
Поднимая помощника после обрыва — **замерь сам, где он встал, и скажи ему замер**,
|
||||
а не свою догадку. 🟢 Смена 8 делала так дважды, оба продолжили без потерь.
|
||||
12. 🪤 Увидел красноту у соседа — сперва проверь, не ТЫ ли её навёл. И обратное: увидев
|
||||
поломку, не назначай виновным ближайшее движущееся — сперва замерь возраст поломки.
|
||||
13. 🔴 **ЧИСЛА В ЗАДАНИИ РАБОТАЮТ ПРОТИВ НАХОДОК.** Заказывай «столько, сколько нужно, чтобы
|
||||
выдержало живую ночь», и требуй список сверхплановых поимённо.
|
||||
14. 🔴 **МЕРКА ПОМОЩНИКУ — ДВЕ СТРОКИ, ОБЕ ОБЯЗАТЕЛЬНЫ:** «моего имени нет ни в одном выводе
|
||||
ни одного сторожа» и «чужие файлы в дереве не тронуты». Общее число проверок негодно.
|
||||
14-бис. 🔴 **ЧУЖОЙ ФАЙЛ РЕЖЕМ ТОЛЬКО КОГДА ОН ЧИСТ, И ВОЗВРАЩАЕМ СЛЕДУЮЩЕЙ ЖЕ КОМАНДОЙ.**
|
||||
14-тер. 🔴 **«ЭТО МИНИМУМ, А НЕ ПЕРЕЧЕНЬ» СТАВИТСЯ ОДИН РАЗ НА ВСЁ ЗАДАНИЕ.**
|
||||
15. 🔴 **«ЭТО НЕ ТВОЯ ВИНА» — ОПАСНАЯ ФРАЗА.** Разводить: «упал сам прибор» — поломка
|
||||
хозяйства; «прибор работает и назвал тебя» — настоящая беда исполнителя.
|
||||
16. 🔴 **РАЗДЕЛЫ ПЛАНОВ ЗВАТЬ ЗАГОЛОВКАМИ, А НЕ НОМЕРАМИ СТРОК.**
|
||||
17. 🔴🔴 **ПРИЁМ, КОТОРЫМ НАЙДЕНА БЕДА, ОБЯЗАН СТАТЬ ПРОВЕРКОЙ В ТОМ ЖЕ КРУГЕ.** Мера ценности
|
||||
метода: сколько приёмов стало приборами. 🟢 Смена 8: приём «не глушить поток ошибок»
|
||||
стал частью кода в том же круге.
|
||||
18. 🔴 **НЕ ТРЕБУЙ ВОЗРАЖЕНИЯ — ТРЕБУЙ РАЗБОРА.** Пустой ответ допустим и потому честен.
|
||||
19. 🔴 **ГОЛОВНАЯ МЕРКА КРУГА — НА ДЕЛО, А НЕ НА ПРИБОР.** У каждого круга спрашивать
|
||||
«на сколько это двинет головную цель и чем я это замерю после».
|
||||
20. 🔴 **ДАТЧИК, ПОПАДАЮЩИЙ В ПЕРЕДАЧУ, ОБЯЗАН БЫТЬ ПРОВЕРЕН НА ЗАВЕДОМО ИСПРАВНОМ.**
|
||||
21. 🔴🔴 **НАСТРОЙКА, КОТОРУЮ ПРИНЯЛИ, НЕ ЕСТЬ НАСТРОЙКА, КОТОРУЮ ПРИМЕНИЛИ.** 🆕 Смена 8
|
||||
прошла мимо этого правила на голове: программа **рапортует** заказанную голову в начале
|
||||
работы, а работает и берёт деньги за другую. Нашёл класс — пройди им по всем соседям сразу.
|
||||
22. 🔴 **ЗАЩИТА, РОЖДЁННАЯ ПОД ПРАВИЛОМ «НИЧЕГО ДРУГОГО НЕ ТРОГАЙ», ПРИХОДИТ С НУЛЁМ
|
||||
ЗОВУЩИХ.** ⇒ Круг считается конченым не коммитом, а зовущим. ⇒ «Замерь зовущих и назови
|
||||
поимённо» — обязательная часть каждого поручения. 🆕 За смену 8 окупилось четырежды.
|
||||
23. 🔴 **ПРАВИЛО, ДОБЫТОЕ ПОСРЕДИ СМЕНЫ, НЕ ДОХОДИТ ДО УЖЕ ЗАПУЩЕННЫХ ПОМОЩНИКОВ.**
|
||||
Разошли поправку ВСЕМ ЖИВЫМ.
|
||||
24. 🔴🔴 **«ЗАЩИТА ЕСТЬ» — ПРАВДА ДЛЯ СТРОИТЕЛЯ И ЛОЖЬ ДЛЯ ВЛАДЕЛЬЦА.** 🆕 Смена 8 —
|
||||
буквальное сбывшееся предсказание этого правила (см. правило 36). ⇒ У каждой защиты,
|
||||
о которой говорим владельцу, писать одной строкой: **от чего бережёт и от чего НЕ бережёт.**
|
||||
25. **ПОЧИНКА МЕСТА И УБОРКА ПОСЛЕДСТВИЙ — ДВА РАЗНЫХ ДЕЛА.** Объявляя класс закрытым,
|
||||
ищи ВТОРОЕ место того же класса. 🆕 См. правило 39: второе место может быть иным
|
||||
по устройству.
|
||||
26. **ПРАВИЛО ОБРАСТАЕТ ТЕМ, ЗА ЧТО НИКТО НЕ ПЛАТИЛ.** Каждую половину правила проверяй
|
||||
отдельным замером. 🆕 См. правило 38 — то же про свою экономию.
|
||||
27. **ХРАНИЛИЩЕ ПРИ РАБОТАЮЩИХ ПОМОЩНИКАХ — ДВИЖУЩАЯСЯ ВЕЩЬ.** Приговор о нём — вторым
|
||||
замером, после конца помощников. 🪤 Хозяйство (`node_modules`) мерить при них можно.
|
||||
28. **ПРЕДЛОЖЕНИЕ, УТВЕРЖДАЮЩЕЕ ДВИЖЕНИЕ МЕЖДУ ДВУМЯ ВЕЛИЧИНАМИ, ОБЯЗАНО ПЕЧАТАТЬ ИХ ТАК,
|
||||
ЧТОБЫ ДВИЖЕНИЕ БЫЛО ВИДНО.**
|
||||
|
||||
### Четыре правила смены 6 — тоже в силе
|
||||
|
||||
**A. ИЩИ НЕ ТАМ, ГДЕ СТРАШНО, А ТАМ, ГДЕ В КОДЕ ТИХО.**
|
||||
**B. ПОСЛЕ СНЯТОЙ СТЕНЫ ПОВТОРЯЙ ТОТ ЖЕ ЗАМЕР, А НЕ СЛЕДУЮЩИЙ.** 🆕 Смена 8 подтвердила:
|
||||
сняли ключ — и следом открылось, что вопрос не доходил вовсе. Всякий счёт стен — нижняя граница.
|
||||
**C. ЧИСЛО ПРЕПЯТСТВИЙ БЕЗ СРОКОВ ВРЁТ.** Счёт вести парой «отказ + сколько это длится».
|
||||
**D. ДВА ТРЕБОВАНИЯ БЕЗ ОБЪЯВЛЕННОГО СТАРШИНСТВА — ЭТО РЕШЕНИЕ, ТИХО ПЕРЕЛОЖЕННОЕ
|
||||
НА ИСПОЛНИТЕЛЯ.** Главнее **ЖИВОСТЬ** — но **НИКОГДА за счёт денег владельца и НИКОГДА
|
||||
на боевом**.
|
||||
**D-бис. КЛАСС ШИРЕ ПАРЫ.** Перед отправкой поручения перечитай свои требования **парами**
|
||||
и спроси, нет ли двух, которые нельзя выполнить одновременно.
|
||||
|
||||
---
|
||||
|
||||
## 🔴🔴 ВЫРЕЗАНИЕ ВТОРОГО РОДА — ГЛАВНЫЙ ПРИБОР
|
||||
|
||||
Обычное: сломай защиту — покраснело? значит сторож есть.
|
||||
Второго рода: **назови вслух ДОПУЩЕНИЕ, на котором защита стоит, и найди годный по форме
|
||||
случай, который в него не попадает.**
|
||||
|
||||
Вопросы к каждой защите:
|
||||
· «кто ЕЩЁ отвечает на этот же вопрос?»
|
||||
· «а МОЙ ответ кто-нибудь слушает?» 🆕 **на смене 8 это был главный вопрос: два датчика
|
||||
строили приговор, и его выбрасывали по дороге**
|
||||
· «что придёт, если пришлют не да и не нет, а ТРЕТЬЕ?»
|
||||
· «сколько РАЗНЫХ состояний бывает у этого входа, и не слиты ли два в одно?»
|
||||
· «а что будет, если этого же самого будет ДВА одновременно?»
|
||||
· «в каких границах моё имя единственно, и не живёт ли хранилище дольше этих границ?»
|
||||
· «а точно ли то, что я прочёл, — это исполнение, а не заказ?»
|
||||
· 🆕 **«а по ТОМУ ЛИ поводу эта защита срабатывала?»** — главный улов смены 8. Защита
|
||||
работала шесть смен, и не тем, чем думали.
|
||||
· 🆕 **«а не пишет ли эту же улику кто-то ещё, помимо меня?»**
|
||||
|
||||
---
|
||||
|
||||
## 🔴 РЕШЕНИЯ ВЛАДЕЛЬЦА — НЕ ПЕРЕСПРАШИВАТЬ
|
||||
|
||||
Полный протокол: `docs/grilling/2026-08-02-nastroyki-nochi-i-ramka-deneg.md`.
|
||||
|
||||
1. **Замеры остатка — до 30 за смену.** 🆕 Цена замера **после лечения**: 0,098 $ (было
|
||||
0,107 $ через оболочку). Смена 8 сделала **шесть** живых замеров.
|
||||
2. **Голова работника — самая умная** (`worker_model: "opus"`).
|
||||
3. **Работников разом — семеро.** 🔴 В настройке сейчас **2** — расхождение осознанное,
|
||||
сторож о нём говорит и не останавливает.
|
||||
4. **Точка ветвления углов — свежая ветка `feat/noch-proba-1`.** 🔴 В настройке сейчас рабочая
|
||||
ветка — расхождение осознанное. Возражение судьи смены 7 про это по-прежнему открыто.
|
||||
5. **Первая ночь — БЕЗ ПОЧТЫ**, сводка читается файлом.
|
||||
6. **Мигающий прибор чинить прежде, чем добавлять задач.**
|
||||
7. **Имена файлов — считать одним файлом и разный регистр, и полный путь.**
|
||||
7а. **Регистр букв — развести два дела: сравнивать без регистра, действовать с регистром.**
|
||||
8. **Счёт денег — ОДИН ОБЩИЙ на всю затею.**
|
||||
9. **Рождение работника — считать и ограничить так же, как замеры.**
|
||||
9а. **Число предела — 20 за смену** (вписано надзирателем, владелец меняет одним словом).
|
||||
10. **Сколько задач разом — ДВЕ, полная загрузка.** ЗАКРЫТО.
|
||||
11. **ЖИВАЯ ПРИЁМКА НАСТОЯЩИМИ РАБОТНИКАМИ — РАЗРЕШЕНА.** Но **проверки кода живым платным
|
||||
помощником — нельзя никогда**, заслон в замке не снимать.
|
||||
12. **У НОЧИ БУДЕТ СВОЙ СУДЬЯ** — заводится не реже раза за ночь. 🟡 Осталось надзирателю:
|
||||
когда ночь его зовёт и что делать с находками ночью. **Не сделано за смену 8.**
|
||||
13. **ГОДНАЯ НОЧЬ = ЗАКРЫТЫЕ ЗАДАЧИ ИЗ ПЛАНА.** 🪤 Разведка годной ночью не является.
|
||||
🟡 Осталось: сколько именно пунктов — из первого живого замера. **Не сделано.**
|
||||
14. **ПРАВКА БУМАГ ПОРТАЛА РАДИ СТЕНЫ 7 — РАЗРЕШЕНА**, граница узкая, правку показать
|
||||
владельцу до внесения. **Не сделано за смену 8.**
|
||||
15. **ПРИ НЕЗАКАЗАННОЙ ГОЛОВЕ В СЧЁТЕ — НЕ ОСТАНАВЛИВАТЬСЯ**, говорить вслух и работать
|
||||
дальше. 🟢 Исполняется, проверено. 🔴 **Но решение принято с неточных слов — см. ниже.**
|
||||
16. **ПОТОЛОК ЖИВЫХ ПОПЫТОК БЕЗ ВЛАДЕЛЬЦА — 5–6 ЗА СМЕНУ.** 🟢 Смена 8 сделала шесть.
|
||||
|
||||
🔴 **17 (НОВОЕ, от 03.08 в ходе смены 8): ПРО ЗАПАС НЕ ДУМАТЬ.** Владелец сказал дословно:
|
||||
«не думай про 76, у меня есть ещё одна учётка, мы эту выжрем — я включу другую». ⇒ Отказ
|
||||
ворот по запасу **не повод останавливать работу**; ждать переключения владельца.
|
||||
|
||||
---
|
||||
|
||||
## ГРАНИЦЫ (не двигать без слова владельца)
|
||||
|
||||
· боевой liderra.ru — живые клиенты и деньги; не трогать, база только чтение;
|
||||
· 🔴 **`ANTHROPIC_API_KEY` не выставлять НИКОГДА.** Режим `--bare` закрыт навсегда;
|
||||
· 🔴 `app/**` — бумаги и файлы ОСНОВНОГО портала — не править ни знаком (кроме узкой правки
|
||||
по решению 14, и её показать владельцу до внесения);
|
||||
· настоящих писем не слать, задание в планировщике не заводить;
|
||||
· не пушить, не сливать в главную, не выкатывать; историю коммитов **не трогать вообще**;
|
||||
· ветки `feat/client-sms-broadcast` и `feat/client-telegram-ads` не трогать ни одной командой;
|
||||
· `app/phpunit.xml` не править; бумагу-замысел не править ни в одном знаке (ЗАМОРОЖЕНА);
|
||||
· 🔴 в репозитории работают ПАРАЛЛЕЛЬНЫЕ СЕССИИ. Коммитить только в углу и поимённо;
|
||||
· заводить и сносить только базы и углы с явно временным именем; общую `liderra_testing`
|
||||
не трогать; за собой убирать и **проверять командой**, что снеслось;
|
||||
· 🔴 `.night/` — оплаченные живыми деньгами улики. Помощникам: **только чтение.**
|
||||
|
||||
**СТИЛЬ:** простой русский, без программистских слов — владелец не программист.
|
||||
Не называть сделанным непроверенное. Не останавливаться между кругами.
|
||||
|
||||
---
|
||||
|
||||
## ▶️ ЧТО ДЕЛАТЬ СМЕНЕ 9 — ПОРЯДОК
|
||||
|
||||
**ШАГ 0. ТРИ ПРИБОРА** (врезка вверху). Любое расхождение — разбираться ДО первой задачи.
|
||||
|
||||
**ПЕРВОЕ — 🔴 ДОБИТЬСЯ, ЧТОБЫ РАБОТНИК ВПРАВДУ ПОРАБОТАЛ.** Всё для этого готово: запуск
|
||||
вылечен, задание больше не рвётся, след потока пишется, ворота работают. Осталось запустить
|
||||
и посмотреть. 🔴 **Только в фоне** (правило 41) — заведение занимает ~15 минут.
|
||||
Упирается в запас; если ворота откажут — владелец обещал переключить учётку (решение 17).
|
||||
Проверки живой приёмки куска 4 (24, 25, 38, 40) закрываются этим же запуском.
|
||||
|
||||
**ВТОРОЕ — 🔴 ДВЕ ДЫРЫ, НАЙДЕННЫЕ СУДЬЁЙ И НЕ ЗАКРЫТЫЕ:**
|
||||
· **признак жизни зачёл работнику ЧУЖОЙ коммит** — счёт «встал» пошёл бы не от первого дела
|
||||
работника, а от его рождения. Молчащий работник считается живым лишние полчаса каждую ночь;
|
||||
· **«встал» и «умер молча» — одно слово** (`stalled`), и мертворождённый считается годным
|
||||
к платной пересдаче. Это класс, объявленный закрытым в М-216 и не закрытый у работника.
|
||||
|
||||
**ТРЕТЬЕ — 🔴 НОМЕР СЕССИИ, КОТОРЫЙ ЗАТЕЯ ПИШЕТ, НЕ ТОТ, КАКИМ СИСТЕМА НАЗЫВАЕТ СТЕНОГРАММУ.**
|
||||
Из-за этого улику смерти работника не нашли до вечера. Стенограмма — самое подробное хранилище
|
||||
из всех, и затея не умеет её найти.
|
||||
|
||||
**ЧЕТВЁРТОЕ — 🔴 ОТЧЕГО В СЧЁТЕ ЧУЖАЯ ГОЛОВА.** Замерено чисто: заказана `haiku`, работает
|
||||
`haiku` (программа сама так говорит), а счёт и ответ — `sonnet`, **в пяти уликах из шести
|
||||
заказанной нет вовсе**. Причина неизвестна. Прямые деньги владельца.
|
||||
🔴 И отдельно: **показать владельцу эти пять строк** — его решение 15 принято с неточных слов
|
||||
(«две головы разом»), а на деле похоже, что настройка головы не работает никогда. Он вправе
|
||||
пересмотреть решение, узнав правду.
|
||||
|
||||
**ПЯТОЕ — работы из решений владельца 12, 13, 14** (судья для ночи · мерка годной ночи ·
|
||||
стена 7). Ни одна не сделана за смену 8.
|
||||
|
||||
**ШЕСТОЕ — незакрытое помельче,** список ниже.
|
||||
|
||||
🔴 **И правило про порядок:** не снимай «ещё один замок», если головная цель не двигается.
|
||||
Спрашивай у каждого круга: **на сколько это двинет цель и чем я это замерю после.**
|
||||
|
||||
---
|
||||
|
||||
## ⏳ ЧИСЛА НА КОНЕЦ СМЕНЫ 8
|
||||
|
||||
🔴 Все собраны командой при написании. **Собери их заново на входе.**
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| Проверок | **1789 зелёных, 53 файла** (на входе было 1691 в 51) — замерено моей рукой |
|
||||
| Голова ветки | `baacd96f2`. 🔴 Перепроверь: `git log --oneline -1` |
|
||||
| Коммитов за смену | **29**, испорченных **ноль** |
|
||||
| Хозяйство угла | **957 пакетов, разодрано 0** — знак в знак с концом смены 7 |
|
||||
| Кругов помощников | **пять** (K, M, N, O, P, Q — M оборван и заменён) + **судья** |
|
||||
| Обрывов связи | **три**; все возобновлены с места обрыва без потерь |
|
||||
| Живых платных замеров | **шесть моей рукой**, следы всех шести на диске |
|
||||
| Цена замера | **0,098 $** после лечения (через оболочку было 0,107 $) |
|
||||
| **Живых работников рождено** | **ОДИН, впервые за всю историю затеи.** Работы не сделал |
|
||||
| Находок метода | **М-216 … М-230** (15 за смену) |
|
||||
| Разборов помощников | **четыре из четырёх**, трое поспорили с заданием по существу, двое правы |
|
||||
| Ошибок надзирателя | **семь**, из них **шесть нашёл судья**, а не я |
|
||||
|
||||
### 📋 Что сделано по планам за смену 8
|
||||
|
||||
| что | состояние |
|
||||
|---|---|
|
||||
| **След сырого потока замера** | ✅ построен, окупился через 20 минут |
|
||||
| **Смертельный ключ** | ✅ убран, причина двухсменной беды закрыта |
|
||||
| **Запуск в обход оболочки** | ✅ врезан, имя ищется по бумагам пакета, запасная дорога убрана |
|
||||
| **Сторож склейки доводов** | ✅ построен, принят вырезанием моей рукой |
|
||||
| **Ворота запаса у пробы** | ✅ врезаны, двери разведены по именам, **первый отказ по существу** |
|
||||
| **След потока работника** | ✅ построен + сторож на класс |
|
||||
| **Датчики денег до владельца** | ✅ доходят на всех трёх дорогах, проверено живым запуском |
|
||||
| **Живое рождение** | 🟢 состоялось · 🔴 работы работник не сделал, причина найдена и вылечена |
|
||||
| **Работы из решений 12, 13, 14** | 🔴 **не начаты** |
|
||||
|
||||
### 🔴 Что осталось незакрытым — по убыванию важности
|
||||
|
||||
1. **Работник ни разу не поработал.** Всё для этого готово; упирается в запас.
|
||||
2. **Признак жизни зачёл работнику чужой коммит** (найдено судьёй).
|
||||
3. **«Встал» и «умер молча» — одно слово**, мертворождённый годен к платной пересдаче.
|
||||
4. **Номер сессии не тот**, стенограмма не находится своими силами.
|
||||
5. **В счёте чужая голова** — прямые деньги; и решение владельца 15 принято с неточных слов.
|
||||
6. **Две пробы разом рамку всё ещё съедят** — ворота меряют остаток, а не «сколько занято».
|
||||
Потолка на число одновременных проб нет (назвал круг N, не чинил).
|
||||
7. **Строки датчиков идут только в окно**, в утреннюю сводку не попадают (кроме дороги
|
||||
«продолжить») — номер прогона в этот момент ещё не выдан.
|
||||
8. **Умения (156 штук) грузятся всегда** и составляют главный вес цены. Ключ, который их
|
||||
резал, убран как смертельный; замены нет.
|
||||
9. **Работы из решений владельца 12, 13, 14** — не начаты.
|
||||
10. **Хвост уборки:** каталог `.claude/worktrees/night-workspaces/zhivoe-5/w-1/.claude-flow`
|
||||
(6 файлов, 6,5 КБ) не сносится — файлы держит живой процесс стороннего инструмента.
|
||||
11. **Сторож немых приговоров ловит рождение немого, но не «прочитали и выбросили»** —
|
||||
ту дыру закрывают именные проверки, а не он (назвал круг Q сам).
|
||||
12. **Прежние долги смены 6–7** целы: порог тревоги по повторам · `kept_aside_sha` без срока
|
||||
жизни · платный замер тратится до занятия файлов · сборщик карточек · три вопроса о грязи ·
|
||||
`--strict-mcp-config` у работника как открытый шов · 34 папки от проверок в боевом каталоге.
|
||||
Reference in New Issue
Block a user