diff --git a/docs/superpowers/2026-08-13-PROMT-obzvon-stroyka-7.md b/docs/superpowers/2026-08-13-PROMT-obzvon-stroyka-7.md index fd860553..0faa7bfd 100644 --- a/docs/superpowers/2026-08-13-PROMT-obzvon-stroyka-7.md +++ b/docs/superpowers/2026-08-13-PROMT-obzvon-stroyka-7.md @@ -1,5 +1,10 @@ # ПРОМТ смене 10 — «Обзвон»: стены больше нет, но починка не доехала до жизни +> 🔴🔴 **ОТРАБОТАН 08.08.2026. Читать его надо, — но СНАЧАЛА возьми +> [2026-08-14-PROMT-obzvon-stroyka-8.md](2026-08-14-PROMT-obzvon-stroyka-8.md): +> в этом файле ТРИ неверных места, и они там названы поимённо. Главное из них — +> порядок работ: выкат стоял первым пунктом, и это было вредно.** + **Написан 08.08.2026, в конце смены 9.** Смена 9 — **два круга**, оба по одной задаче З-0.1. Владелец закрыл **четыре развилки** (Р128–Р131), и **вся стена, на которую упиралась стройка, снята**. Задач построено по-прежнему 20 из 54 — и diff --git a/docs/superpowers/2026-08-14-PROMT-obzvon-stroyka-8.md b/docs/superpowers/2026-08-14-PROMT-obzvon-stroyka-8.md new file mode 100644 index 00000000..2038542e --- /dev/null +++ b/docs/superpowers/2026-08-14-PROMT-obzvon-stroyka-8.md @@ -0,0 +1,291 @@ +# ПРОМТ смене 11 — «Обзвон»: починка впервые доехала до живой машины + +**Написан 08.08.2026, в конце смены 10.** Смена 10 — **два круга**: починка +(имя человека больше не может стать приказом роботу) и **выкат на живую машину +робота**. Владелец закрыл **шесть развилок** Р132–Р137. Счётчик сдвинулся +впервые за две смены: **21 из 54**. + +🔴🔴🔴 **ПЕРВОЕ ДЕЙСТВИЕ — ПРОЧЕСТЬ МЕТОД ЦЕЛИКОМ. Не пересказ, не «я помню».** +519 строк, в нашей ветке его нет: + +```bash +git show 5cb09ae7e:docs/superpowers/METOD-vedeniya-fichi-v1.md +``` + +**Владелец требует этого прямым словом каждую смену.** + +🔴🔴 **ВТОРОЕ ДЕЙСТВИЕ — ПРОЧЕСТЬ ПРОМТ СМЕНЫ 10 ЦЕЛИКОМ:** +[2026-08-13-PROMT-obzvon-stroyka-7.md](2026-08-13-PROMT-obzvon-stroyka-7.md), а +через него — промт смены 7, где лежат правила стройки, лист обязанностей, +список запрещённых файлов и как гонять прогоны. **Этот файл их не заменяет, а +поправляет.** + +--- + +## 0. 🔴 ЧТО В ПРОМТЕ СМЕНЫ 10 НЕВЕРНО — ТРИ ПОПРАВКИ, ВСЕ МОИ ОШИБКИ + +1. 🔴🔴 **§3 ставит ВЫКАТ первым пунктом, а починку имени вторым. Порядок + вредный.** Выкат — это и есть действие, которое **включает** дорогу отравы: + пока имя до машины не доезжало, продиктовать роботу было нечем. Выкатив + раньше починки, мы своими руками открыли бы дыру, которую владелец закрыл + решением Р131. Владелец переставил порядок — **Р133**. +2. 🔴 **§4 №29 говорит: «уборщика зовёт ОДНО место — сам мост». Мест ДВА**, и + главное — не мост, а **набор**: он метёт просроченные ячейки перед каждым + набором. И **улика «25 несостоявшихся звонков — лежат все 25» доказывает не + то**, подо что подставлена: уборщик отработал все 25 раз, просто имена были + моложе часа. Вывод устоял, но держится на **устройстве**, а не на замере. +3. **§2 таблица сторожей машины устарела целиком** — смотри §2 здесь. + +--- + +## 1. ЧТО СДЕЛАЛА СМЕНА 10 + +### 1.1. Круг 1. ✅ Имя человека больше не может стать приказом роботу + +**Беда была страшнее, чем её описывали.** Имя приходит из карточки лида, то есть +**снаружи**, а мост совал его **внутрь наставления** роботу. Значит любой, чьё +имя попало в список, мог продиктовать Лене, что сказать живому клиенту. + +Замер надзирателя до работы: **восемнадцать способов отравить — отбито ноль**. И +случай, **ради которого защита строилась**, тоже доезжал: чистка меняла перевод +строки на пробел, и приказ просто оказывался в той же строке. + +**Что построено.** Помощник **разбил моё требование** «передать имя отдельно от +наставления» как невыполнимое: служба принимает один текст, переложить имя в +другой угол — видимость лечения. Он сделал сильнее: **имя не фильтруется, а +собирается заново из разрешённых кусков**. Запретительных списков нет ни одного. + +Плюс: дырявая замазка имени в журнале (падежи, строчные, **заглавные**); +убрано неверное слово «необратим» в **восьми** местах; «хранится час» +переписано честно. + +Коммиты: `92054dc7c`, `28b4fb579`, `fefba2e1f`, `d7aafdb78`, `c5a32b640`, +`31737efb6`, `dfe675b5c`, `e890635f0`. +Лист: [priyomka/stroyka-10/z-r131-imya-ne-diktuet-2026-08-08.md](priyomka/stroyka-10/z-r131-imya-ne-diktuet-2026-08-08.md) + +### 1.2. Круг 2. 🚀 ВЫКАТ на живую машину — мост, ячейки и приёмник + +Владелец дал слово: **«го, только не потри никого»**. Выкат делал сам, он +необратим. + +- **Никого не потёр — доказано командой**: перечень всех файлов до и после, три + моих изменения, **ни одной пропавшей строки**. Пятнадцать чужих наладочных + файлов целы, записи разговоров целы. +- **Живые входящие звонки компании не задеты**: обе Лены запускают **один и тот + же** файл моста, перезапущена **только обзвонщица**, у приёмщицы номер + процесса не изменился. +- **Отрава не доезжает — замерено моим ножом прямо на машине.** + +Коммиты: `2548eb25f` (лист до выката), `13d073f23` (приговор). +Лист: [priyomka/stroyka-10/z-vykat-most-yacheyki-priyomnik-2026-08-08.md](priyomka/stroyka-10/z-vykat-most-yacheyki-priyomnik-2026-08-08.md) + +✅ **З-0.1 закрыта целиком** — в хранилище, на станции и на живой машине. +Счётчик **20 → 21**. + +### 1.3. 🆕 ВЛАДЕЛЕЦ ЗАКРЫЛ ШЕСТЬ РАЗВИЛОК — Р132–Р137 + +| # | решение | что это меняет | +|---|---|---| +| **Р132** | записи разговоров — права закрываем **после** выката | 🔴 выкат состоялся ⇒ **вопрос №26 обязан подняться снова** | +| **Р133** | сначала Р131, потом **один** выкат | 🚀 исполнено | +| **Р134** | дырявую замазку чиним в том же круге | ✅ исполнено | +| **Р135** | имя за границей — **принятая цена**, сказано вслух | 🔴 условия службы **не читаны** | +| **Р136** | «час хранения» — бумаги честные, поведение прежнее | ✅ исполнено | +| **Р137** | З-0.4 берём, условие «слита» переписываем | 🔓 отпирает сердце фичи | + +### 1.4. 🔴 МОИ ОШИБКИ СМЕНЫ 10 — СЕМЬ, С 74 ПО 80 + +| # | что сделал | чем кончилось | +|---|---|---| +| 74 | поставил выкат раньше починки | выкат **включает** дорогу отравы | +| 75 | дал помощнику файл под `app/` во время своего прогона | нарушил своё же правило 37; вреда не вышло **по удаче** | +| 76 | мерил на самодельном наставлении, нож списал код копией | мерил **свою копию**, а не мост | +| 77 | «уборщика зовёт одно место» | мест **два**; неправда разошлась по трём файлам | +| 78 | датчик счёл отравой прибавку строк | прибавкой была **защитная врезка помощника**; объявил 16 из 17 ложно | +| 79 | велел построить проверку, **до которой не доходит очередь** | зеленела бы, даже если бы защиты не было вовсе | +| 80 | скопировал на машину **тайный ключ** вторым экземпляром | пролежал двадцать минут | + +🔴 **Из семи пять нашёл не я.** Своими руками поймал только 74 и 78. + +🆕 **Восемь правил сверх сорока:** + +- **41. У каждого пункта плана спрашивай не «что он чинит», а «что он + ВКЛЮЧАЕТ».** Порядок работ — очередь состояний системы, а не очередь дел. +- **42. В ветке четырёх смен «неподвижное дерево» недостижимо.** Годная мерка: + движения ОТ МЕНЯ — ноль, чужое движение объявлено слепком, всякая краснота + разбирается вторым прибором на «чья». +- **43. 🔴 «Мы туда не пишем» — не защита.** Дыру закрывает невозможность + записи, а не наше намерение не писать. +- **44. 🔴 Прибор обязан звать НАСТОЯЩИЙ код, а не повторять его у себя.** + Списанная копия меряет копию. +- **45. 🔴 Оговорка — не проверка.** «Взял с твоих слов» не спасает: спрашивай, + **что именно замер доказывает**, а не откуда он взят. +- **46. 🔴 Имя защиты — часть защиты, и ложь переезжает в него.** +- **47. 🔴🔴 Проверка, до которой не доходит очередь, стережёт НОЛЬ.** Защита из + нескольких заслонов подряд делает проверки на дальние заслоны недостижимыми. +- **48. 🔴 Оснастку для проверки бери, не копируя тайного.** Копия ключа живёт + ровно столько, сколько ты о ней помнишь, а помнишь ты плохо. + +### 1.5. 🔑 ЧТО ДАЛ СУДЬЯ — БОЛЬШЕ, ЧЕМ ОБА ПОМОЩНИКА ВМЕСТЕ + +Заведён **сразу после первых находок**, как велит метод. + +- 🔴🔴 **У имени было ДВЕ двери, чистка стояла на одной — и живой была та, где + чистки не было вовсе.** Мост, беря имя из общего запасного файла, не проверял + его ничем; судья положил туда отраву — наставление выросло с 357 до 361 + строки. **Эту дверь я своей же поправкой объявил неопасной.** +- **Мой нож был негоден** (ошибка 76) и **настоящее наставление я не мерил ни + разу**: 42 701 знак, 357 строк, заглушка **дважды**, и первое попадание — + **в конец определения роли Лены**, раньше всех правил. +- **У приёмщицы входящих заглушки нет вовсе** — ноль раз; вся постройка с + именами для неё не делает ничего. +- **Замазка дырявее**: течёт и **имя заглавными**. +- 🔴 **Шесть остановок на пути чужого приказа до уха клиента — на смысл не + смотрит НИ ОДНА.** + +--- + +## 2. ЧИСЛА — СОБРАНЫ КОМАНДОЙ 08.08.2026 + +🔴 **Собери заново на входе. Числа устаревают.** В ветке работают четыре смены. + +| что | сколько | +|---|---| +| ветка | `feat/prospects-manual-testing-kp`, голова `13d073f23` | +| план | **54 задачи, 21 ПОСТРОЕНО** | +| решения владельца | **137** | +| полный прогон, дерево `app/` не двигалось | **5418 проверок, 5414 зелёных, 4 пропущено, красных 0** | +| пробы робота | **131** имя за звонок · **58** имя не команда · **38** метка и замок · **233** приёмник | +| сторожа машины | станция **12/0** · заготовки **23/0** · расписание **26/0** · чистка **27/0** | +| текстовый след | **46/1** — приёмщица работает старым текстом моста | +| суточный обход | **42/1** — отправка итога порталу не настроена | +| записи разговоров на машине | **89**, права **644** — читать всем | +| служба приёмника заданий | **НЕ ПОДНЯТА** | + +🔴 **Число меток спеки** прошлая смена мерила прибором §0.9 и получила 98. +Я этим прибором **не мерил** — не переноси число как свежее, **померь сам**. + +🪤 **Сторож суточного обхода ВРЁТ КРАСНОТОЙ.** Два одинаковых прогона подряд: +**2 и 9 красных**. Он читает итог отдельным обращением к машине и, когда +обращение вернуло пусто, объявляет «в итоге НЕТ поля» — семь раз сразу. Все семь +полей на месте, проверено. Гоняй его **дважды** и не верь одиночному ответу. + +**Коммиты смены 10 — поимённо, их пятнадцать:** + +```text +c01a57910 1700b7575 7d0dac752 c5a32b640 58c2a7e12 31737efb6 92054dc7c +dfe675b5c 28b4fb579 fefba2e1f d7aafdb78 e890635f0 2e764f55e 2548eb25f +13d073f23 +``` + +Между ними легли **два чужих** коммита соседних смен. + +--- + +## 3. 🔴 ЧТО ДЕЛАТЬ + +| # | что берёшь | почему здесь | +|---|---|---| +| **1** | 🔴 **Поднять службу приёмника заданий** | файл на машине лежит, службы нет ⇒ **портал не может заказать роботу звонок**. Нужна учётная запись на служебном входе станции. Без неё вся постройка мертва | +| **2** | 🔴🔴 **З-0.4 — перевод на менеджера, СЕРДЦЕ фичи** | **Р137 отперла**. Робот поговорил, человек согласен — звонок уходит живому менеджеру. Без неё обзвон никому не нужен | +| **3** | **З-0.5 — предел разговора** | только после З-0.4 | +| **4** | **вторая половина З-0.6 — отчёт робота** | `most.py`, узкое горло | +| **5** | 🔓 **З-4.9 тумблер видимости, потом З-4.1 экран** | 🔴 тумблер **первым**: без него мы покажем всем клиентам ссылку на недостроенный обзвон | +| **6** | 🔓 **З-3.2 — свой список «не звонить»** | **Р129 отперла**; и связь «исход отказ → запись в списке» | + +🔴 **З-1.7 не брать** — Р86. + +### 3.1. 🔴 ЧТО ЖДЁТ ВЫКАТА — СЕМЬ МЕСТ + +✅ Пункт «мост + ячейки + приёмник» **закрыт 08.08.2026**. + +1. 🔴🔴 **Служба приёмника заданий** — см. §3 п.1. +2. Портальная половина сторожей машины робота (**отсюда красная у обхода**). +3. Приёмник заданий слушает **без шифрования**. +4. Правка живого модуля СМС (З-3.1). +5. Дверь боевого «Поиска клиентов» (Р126). +6. Третья дверь — плитка прокси (Р126). +7. 🔴 **Запрет ходить по переадресации.** Пока не выкачен — на боевом ключ + «Поиска клиентов» **уезжает по переадресации**, замерено. + +--- + +## 4. ВОПРОСЫ, ВИСЯЩИЕ НА ВЛАДЕЛЬЦЕ + +Двадцать девять из промта смены 10 — **проверь каждый**. 🆕 **Прибавились шесть:** + +- 🔴🔴 **№26 ПОДНЯТЬ ЗАНОВО.** Записи живых разговоров лежат правами «читать + всем» — **89 файлов, права 644**. Р132 отложил вопрос **«до выката»**. **Выкат + состоялся 08.08.2026.** Обязан спросить снова, первым делом. +- 🆕 🔴🔴 **№30. Свободный мешок — вторая дверь в наставление, крупнее первой.** + Портал шлёт роботу мешок полей, и он уезжает **целиком, без проверки + содержимого**. В бумагах **уже записано**, что туда поедет «имя собеседника + **и текст скрипта**». Чистки нет и не запланировано. Молчит только потому, что + робот из мешка ничего не читает. +- 🆕 🔴 **№31. Общий запасной файл имени лежит в папке, ОБЩЕЙ со станцией.** + Гарантия стоит в точке использования и держит, но записать в файл может кто + угодно с доступом к машине. Закрывать ли саму дверь. +- 🆕 **№32. Робот произнесёт клиенту любое одно слово из карточки** — + «Здравствуйте, Дурак!». Защита от приказа держит, от оскорбления беречь не + может: словарь имён всегда неполон. Место починке — **на портале**. +- 🆕 **№33. Ни одна проба робота не запускается сама.** Суточный обход проб не + зовёт вовсе. +- 🆕 🔴 **№34. Перезапускать ли приёмщицу живых входящих звонков.** Она работает + **старым текстом моста** — это мой объявленный до выката выбор ради «никого не + потри». Перезапуск — секунды простоя живой службы. +- 🆕 **№35. Чинить ли сторожа обхода, который врёт краснотой** (§2), или принять + как есть и гонять дважды. + +### 4.1. 🔴 ОСТАТОЧНЫЕ ЦЕНЫ, НАЗВАННЫЕ И НЕ ЗАКРЫТЫЕ + +- **«Иванов Иван Иванович» → обращение по фамилии.** Порядок слов в карточке + лида нам неизвестен. +- **«де ла Круз Мария» → «Де»** — приставки европейских фамилий не разбираются. +- **Поле из пяти и более слов теряет обращение целиком.** +- **Короткий приказ в 2–4 слова даёт одно слово вслух** — «Здравствуйте, Скажи!». +- **Предел в 100 знаков стал бесполезен** — форма строже длины. +- **Новая проверка приёмника признаёт «пусто» безопасным** и держится **в паре** + с соседней. Сносить нельзя. +- **Условия сторонней голосовой службы не читаны** (Р135): срок хранения, + учится ли на наших словах, есть ли тумблер «не хранить». +- **Когда сливаем ветку в главную** (Р137) — не решено. +- **Старые журналы моста с именами уже лежат на машине.** Р134 чинит будущие + записи; удалять на машине нельзя (Р94). + +--- + +## 5. ГРАНИЦЫ + +Без изменений. Коротко: боевой прод не трогать; машину робота **не +перезагружать** и ничего чужого на ней не удалять (Р94); не пушить и не +выкатывать без слова владельца; чужие файлы и чужие столкновения не трогать; +открытые вопросы не закрывать. + +🔴 **Живых платных звонков не делать** — в диалплане прямо написано: раздел +набора «только по команде владельца, это платный звонок живому человеку». + +🔴 **Раздел `[lena-vhodyashchie]` в настройке станции и одноимённая служба — +живые входящие звонки компании.** Не трогать ничем. + +🔴 **На машине ДВЕ папки с кодом робота**, и это легко проглядеть: + +```text +/home/ubuntu/lena-inworld/ — отсюда РАБОТАЮТ обе службы +/home/ubuntu/lena-golos/ — папка ЭТАЛОНОВ суточного обхода +``` + +Выкат обязан обновлять **обе**, иначе сторож обхода краснеет. 🪤 И **состав** +папки эталонов охраняется: лишний файл там — краснота. Слепки для отката туда +не клади. + +🪤 **Файлы из Windows доезжают на машину с лишним знаком конца строки** и дают +другой отпечаток. Снимай его (`tr -d "\r"`) и **сверяй отпечатки после**, иначе +побайтовый сторож останется красным навсегда. + +🪤 **В дереве чужое столкновение** — `bots/mts-telegram-ads/src/runner.js`. Чужой +мусор, в коммит не брать: `app/proba-korenj.md`, `app/echo`, `app/getFillable())`, +`app/toArray()))`, `bots/lena-golos/__pycache__/`. + +**СТИЛЬ:** простой русский, без программистских слов — владелец не программист. +**Не называть сделанным непроверенное. Свою ошибку называть первой.** +**И работать строго по методу — это прямое требование владельца.**