Commit Graph

2045 Commits

Author SHA1 Message Date
Дмитрий fa487dfd29 docs телеграм: замысел и план кнопки «Остановить рекламу»
Кнопка остановки идущей рекламы + закрытие кампании по слову кабинета «Завершена».
Прежний запрет на нажатие «Завершить» снят владельцем, разведка проведена живьём:
кабинет отвечает «Останавливается, до 30 минут», закончив пишет «Завершена» и сам
возвращает неоткрученный остаток целиком (+171,84 ₽ из 182,40 на кампании 2237821).

Решения владельца: деньги клиенту возвращаем по слову «Завершена», а не в момент
нажатия — до получаса реклама ещё крутится и тратит; кнопка только у запущенной
рекламы, для остальных состояний кнопка кабинета не замерена.

Разведка кода вскрыла три мины, все зафиксированы в замысле:
1. читалка собирает весь текст ряда вместе с подписями кнопок, а у идущей рекламы
   в ряду стоит кнопка «Завершить» — совпадение по корню закрывало бы работающую
   рекламу и возвращало деньги за то, что крутится прямо сейчас;
2. очередь заданий роботу считает одинаковыми любые два задания по одной кампании —
   просьба остановить при висящем чтении цифр молча терялась бы;
3. та же подстрока губительна и для опознавателя ряда, не только для разбора.

План: 11 задач, каждая сперва красным сторожем. Кода не трогает — только документы.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 20:03:28 +03:00
Дмитрий 896220d2e0 обзвон: настройка станции выкачена на машину, выключатель записи проверен вырезанием
Решение владельца Р142. Выкат делал своей рукой, он необратим и трогает файл,
через который идут живые входящие звонки компании.

Зачем. Судья нашёл, а я подтвердил своей рукой: обещанного выключателя записи
разговоров на машине не было. Бумаги говорят - одна строка на обе Лены, поставил
не "да", перечитал, и запись прекращается у обеих сразу. На машине запись была
включена голой строкой, и у обзвонщицы, и у живых входящих звонков компании, где
пишется голос постороннего человека, согласия не дававшего. Выключить запись
документированным способом было нельзя. Это защита, которую считали
существующей, а её не было.

Там же не было и перевода разговора на менеджера - всей работы прошлой смены.
Оба живут в одном файле и едут одной перечиткой.

Что замерено. Живых разговоров перед правкой ноль. Слепок для отката снят.
Станция не перезапускалась - номер процесса до и после один и тот же, живые
разговоры не прерывались. У обзвонщицы стало 17 шагов вместо 8, перевод на
месте. У живых входящих запись обёрнута выключателем. Сторож станции 12 из 12.
Сверка эталона с машиной даёт ноль расхождений - датчик молчаливых откатов
сервера, забитый шумом с пятого августа, снова чист.

Главное доказательство - вырезание, а не осмотр. Поставил выключатель в
положение "не пишем", сделал бесплатный звонок - записей осталось 92, ни одной
новой. Вернул в "пишем", сделал звонок - записей стало 93. Выключатель вправду
выключает и вправду возвращает.

Своя ошибка в самом выкате. Эталон хранит номер компании замаскированным, и
снятие маски заменой по всему файлу попало ещё и в пояснение, где как раз
объясняется, что номер маскируется. Поймал своим же датчиком, записанным в лист
заранее: мест с номером стало 5 вместо 4. Маску в пояснении вернул, перемерил.
Отсюда правило 57: замена по всему файлу не различает работу и пояснение.

Чего выкат не доказал, говорю сам. Перевод на менеджера приехал, но не работал
ни разу - живого звонка с переводом не было и быть не могло. И ни один сторож
по-прежнему не сверяет настройку станции с хранилищем сам. Именно поэтому
расхождение прожило три дня незамеченным. Долг назван, сторож не построен.
2026-08-08 19:50:16 +03:00
Дмитрий acc5790ba1 докс: замер по мёртвой связи — место беды названо в задании неверно
Поднял ту же библиотеку связи у себя на машине, дал собеседнице вежливо
закрыть связь и посмотрел, что дальше.

Вышло так: на ЧТЕНИИ вежливо закрытая связь не ругается вовсе — чтение
просто тихо кончается. Ругается ОТПРАВКА. Значит строку «мост упал»
породить может только отправка.

А первая отправка после взятия запаса стоит БЕЗ защиты, и защита
написана ниже неё. То есть до защиты управление никогда не доходит.

Заодно нашёл второе такое же место: смерть связи посреди разговора
сегодня не оставляет в журнале ни строки.

Кода пока не касался, это только запись замера.
2026-08-08 19:47:43 +03:00
Дмитрий 3a8651b783 докс: завёл отчёт про залежавшийся запас связи у Лены
Пустой скелет с разделами. Дальше буду дописывать по ходу работы,
чтобы ничего не потерялось при обрыве связи.
2026-08-08 19:38:33 +03:00
Дмитрий 2371472e5f docs обзвон: решения Р140 и Р141, метка звонка замерена и доезжает
Владелец закрыл две развилки, и обе вышли из одной моей ошибки.

Р140. Метку звонка меряем бесплатной пробой, а не живым платным звонком.
Накануне я написал в передаче, что нужен живой звонок живому человеку. Разведка
у самого предмета показала, что дороги дешевле уже построены и лежат в той же
настройке станции: подставной человек, который снимает трубку и играет тишину,
заведён там ровно для проб без денег. Дорога до метки у пробы и у настоящего
звонка устроена одинаково, а теряется метка именно на ней.

Р141. Роботу заводим свой служебный вход на телефонной станции. Открылось при
исполнении Р140: станция не пустила. Причина замерена и подтверждена вторым
прибором - сама станция отвечает, что служебных входов у неё нет ни одного.
То есть робот не мог попросить позвонить никуда, ни живому человеку, ни
подставному. Стена стояла выше метки, и в передаче я своей рукой написал, что с
машиной всё готово, ничего не замерив. Вход заведён отдельным файлом, права
самые узкие, только заказать звонок, снаружи машины до него не дотянуться,
тайное слово рождено на самой машине и в хранилище не попадает.

Главный замер. Метка ДОЕЗЖАЕТ: набор положил свою, робот записал ровно ту же.
Значит лечение с двумя подчёркиваниями, названное в коде как вероятно нужное, не
нужно, а перевод разговора на менеджера не будет запрещён у всех. Именно этого и
боялись. Заодно замерено, что запасной вид работает: без переменной станция
подставляет прежнюю константу, а робот громко пишет, что метка не своя.

Прибор показан красным тем же вторым заходом. Денег потрачено ноль, живых людей
не потревожено ни одного.

Побочная находка, которая рушит план замера в бумагах. README, комментарий в
настройке станции и мой промт смене 12 в один голос называют единственным
способом увидеть метку строку в журнале станции. Замерено: станция пишет в
журнал только предупреждения и ошибки, а эта строка уровнем ниже и не пишется
никуда. Метку видно у робота, а не у станции.
2026-08-08 19:06:08 +03:00
Дмитрий a9ca62fd73 docs обзвон: в отчёт смены 12 записан разбор задания до работы 2026-08-08 18:53:27 +03:00
Дмитрий 4755dc6af8 docs обзвон: заведён файл отчёта смены 12 по тумблеру видимости 2026-08-08 18:44:34 +03:00
Дмитрий ac16861b87 телеграм: у рекламы появился конец — закрытие отработавших кампаний и возврат переплаты
Статус launched был терминальным: конца у рекламы не существовало вовсе. Отсюда две беды
разом — робот ходил за цифрами вечно, а неоткрученные деньги возвращать было некуда.
Живая улика, кампания №15: списано 255,36 ₽ за 380 показов, показан 21, площадка
израсходовала 10,08 ₽. Переплата 241,25 ₽ не вернулась бы никогда. Портал честно читал
stats_spend_rub и не использовал его нигде.

Ш1 робот перестаёт долбиться в потерянные кампании: 5 неудач подряд уводят в разбор,
   считаются только заходы после последней правки строки кампании
Ш2 статус кабинета доезжает до портала; незнакомое слово идёт в журнал
Ш3 новый статус completed «Показы закончились», переход launched → completed
Ш4 суточная задача в 04:40 закрывает отработавшую рекламу и возвращает переплату;
   возврат идемпотентен ключом tg:campaign:ID:vozvrat, неизвестный расход не закрываем
Ш5 тревога в журнал, если заморозка денег висит дольше суток

Попутно вскрыто и починено: разбор кампании писал клиенту «деньги вернулись на рекламный
кошелёк», не вернув ни рубля. Новый вход в старый узел сделал его сообщение ложью.

Новая колонка client_tg_campaigns.spend_changed_at — двигается только при реальном
изменении суммы; stats_read_at для этого не годится, он растёт на каждом заходе робота.
Журнал схемы v9.74.

Кнопка «Остановить» не сделана, закрытие по слову кабинета тоже: разведка 08.08 показала,
что кабинет говорит «Останавливается, до 30 минут», но итогового слова мы так и не узнали,
а вернулись ли деньги — не замерено. Подробности и что делать дальше — в плане.

На боевой не выкачено: нужна миграция и разрешение владельца.

Сторожа: ClientTg 438 зелёных, экраны телеграма 47 зелёных.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 18:36:51 +03:00
Дмитрий 480b49c812 docs обзвон: промт смене 12 и указатель в промте смены 11
Передача написана по методу: числа собраны командой при написании, свои коммиты
перечислены поимённо, порядок работ переставлен, замер отделён от догадки.

Главная поправка к прежнему промту. Он ставил первым пунктом «поднять службу
приёмника заданий» и объяснял так: портал не может заказать роботу звонок.
Причина названа не та. Служба тут ни при чём: на портале некому её попросить.
Замерено двумя приборами — клиент робота в боевом коде ни разу не создаётся,
задание «запусти обзвон базы» никем не отправляется, во фронтенде нет ни кнопки,
ни адреса. Подними службу — недостающих шагов останется столько же.

Вторая поправка: число «проба 131, красных 0» подавалось как свойство кода.
Проба мигает, замерено 2 красных из 20 заходов.

Что передаётся дальше по важности. Первое — живой платный звонок ради одного
замера: доезжает ли до станции метка звонка. Это не замерено ни разу, а на этом
держится всё построенное: если метка у всех запасная, перевода не будет ни у
кого, и фича будет выглядеть построенной и не работать. Только по слову
владельца, это платный звонок живому человеку.

Второе — отдать роботу собственное удостоверение станции вместо метки: оно
уникально даже при запасной метке, и целый класс беды исчезнет.

Третье — тумблер видимости и клиентский экран: вот где настоящий обрыв, коридора
к построенному нет вовсе.

Новых правил пять. Три мои: решение владельца не считается внесённым, пока не
найдено в бумаге командой; у списка спрашивай, разрешающий он или запрещающий;
проверяй не что защита скажет, а что она сделает. Два добыты помощником: у
всякой новой двери спрашивай, что уже случилось к тому мигу, когда она сказала
нет; и совпадение взглядов двоих не равно проверке двумя приборами.

Числа собраны командой: план 54 задачи, 22 построено; решений владельца 139;
полный прогон 5454 проверки, 5450 зелёных, 4 пропущено, красных 0; пробы робота
324, 121, 58, 38; сторожа машины 12, 26, 27, 23 зелёные; текстовый след 46 при
одной красной — это датчик невыката; суточный обход 42 при двух красных, он
врёт краснотой и его гоняют дважды.
2026-08-08 17:36:09 +03:00
Дмитрий a892e77c24 docs обзвон: второй полный прогон после лечения — числа те же, 5454 и красных 0
Лечение целиком в питоне робота, Pest его не касается, но говорить «наверное, не
изменилось» я не вправе, поэтому прогнал заново. Совпало знак в знак.
2026-08-08 17:23:11 +03:00
Дмитрий d08925f06c docs обзвон: приговор по дороге номера и двери свободного мешка
Круг 2 закрыт. Дверь у мешка полей построена и проверена, дорога номера
менеджера доведена до последней доски. Счётчик не двигаю: вторая половина
З-0.6 — отчёт робота о результате — по-прежнему не построена.

Свои ошибки называю первыми, их две.

Восемьдесят седьмая. Я четырежды записал число «проба 131, красных 0» как
свойство кода, в том числе в сообщение прошлого коммита. Помощник сказал, что
проба мигает. Перемерил своей рукой: два красных из двадцати заходов. Значит
это была удача броска, а не замер. Причина внутри самой пробы: она меряет
надёжность порогом, а порог на живой машине лотерея.

Восемьдесят восьмая. Мой нож объявил новую дверь дырявой, двенадцать красных.
Пошёл проверять прибор прежде, чем обвинять код, и оказалось: дверь не роняет
ошибку, а возвращает причину словами, а нож ловил только падение. Красноту
навёл я сам.

И вторую половину той же ошибки вскрыл судья: мой нож звал часть, которая
возвращает слова, а в дело идёт часть, которая обязана отказать в работе.
Замерил, подменив падение обрубком: нож на слова остался зелёным семнадцать из
семнадцати, слеп полностью; нож на отказ поймал шесть красных из двенадцати.
Отсюда правило 51: проверяй не что защита скажет, а что она сделает.

Что построено. У свободного мешка полей, которым портал говорит роботу что ещё
сказать, теперь есть одна дверь на любое поле, и стоит она внутри самой сборки
просьбы к телефонной станции. Судит свойством, а не списком: границу строки
называет сам Python, разряд знака — таблица Unicode. Своего перечня плохих
знаков в ней нет нигде.

Мои ножи, три на этот круг, все зовут настоящий код побайтовой копии:

Нож на дверь — 17 проверок, красных 0, показан красным 10 из 17. Отбиты десять
знаков, которых не называл ни помощник, ни я, и отравленное имя поля тоже.

Нож на отказ — 12 проверок, красных 0, показан красным 6 из 12. Заведён после
указания судьи, закрывает мою же дыру.

Нож на уборку — 4 проверки, красных 0, показан красным 1 из 4. Гонял настоящий
набор в никуда: станция отказала, журнал сам сказал «снято ячеек 2», папка
пуста, общий запасной файл цел.

Вторая находка судьи, и она про живых людей. Дверь для входа на станцию встала
позже, чем запись на диск: имя человека и номер менеджера ложились в общую
папку до того, как выяснится, что звонка не будет, и ни один из девяти выходов
«звонка не было» их не убирал. При сломанной настройке машины каждая попытка
клала их снова. Закрыто: у записи и у отказа теперь один хозяин, и проглядеть
новый десятый выход нельзя — другого пути наружу у набора нет.

Помощник назвал свою ошибку первым: правил файл пробы через оболочку, что
задание запрещает прямым текстом. И нашёл второе место того же класса, о
котором я не сказал: отравить просьбу можно вообще без портала, часть настроек
робот берёт из окружения своей машины и они не проверялись ничем.

Замеры моей рукой: полный прогон 5454 проверки, 5450 зелёных, 4 пропущено,
красных 0. Вход был 5444 — ровно плюс десять, его десять сторожей. Пробы робота
324, 58, 38, 121, красных 0.

Чего писать в бумагах нельзя: что дверь отбивает всё опасное. Незанятые места
таблицы знаков она пропускает намеренно, и что с ними сделает ствол оператора,
не знает никто.
2026-08-08 17:08:58 +03:00
Дмитрий 963c4741b8 docs обзвон: в отчёт вписана беда, найденная посторонним глазом, и её лечение
Ошибка 85 названа первой: я проверил, ЧТО внутри значения, и не спросил, в каком порядке
стоят дверь и запись на диск. Беду накликала моя же находка про окружение машины —
находка и беда были в одной строке, я увидел половину.

Вписаны правила 52 и 53, разбор лечения, ножи 4 и 5 с их красным, слепки возврата,
и отдельный раздел «чего эта постройка НЕ даёт» — включая то, что дверь не отбивает
всё опасное, а ровно четыре названные вещи.
2026-08-08 17:01:47 +03:00
Дмитрий 94ce6e3ee8 docs обзвон: найдено — проба имени за звонок краснеет сама по себе, раз в четыре прогона
Под конец смены она дала красную на том же коде, где двадцатью минутами раньше была
зелёной. Краснеет одна проверка: порог на гоночном замере, 23 из 36 против границы 24.

Замерено числом: сегодняшняя версия 4 красных прогона из 20, версия до всех сегодняшних
правок 5 из 20. Проба не ввозит мой файл вовсе, так что это ни моё, ни соседа —
давняя слабость самого прибора. Не чинил: файл в запретном списке.
2026-08-08 16:37:26 +03:00
Дмитрий 316f23c45a docs обзвон: числа полного прогона — 5454 проверки, красных 0
Было на входе 5444 / 5440 зелёных / 4 пропущено / 0 красных. Стало 5454 / 5450 / 4 / 0.
Разница ровно десять — ровно столько сторожей в моём новом файле. Чужого не убыло.
2026-08-08 16:21:34 +03:00
Дмитрий 966b35175a docs обзвон: в отчёт вписаны пробы, зовущие поимённо, соседи и непроверенное
Числа полного прогона Pest пока держатся меткой — допишу, когда прогон кончится.
2026-08-08 16:18:20 +03:00
Дмитрий e5f604da94 docs обзвон: отчёт помощника — разбор задания, устройство двери и три ножа
Числа полного прогона допишу отдельно, когда он кончится.
2026-08-08 16:02:19 +03:00
Дмитрий 305b3b1f0f docs обзвон: З-0.4 закрыта, решения Р138 и Р139, приёмочные листы смены 11
Сердце фичи построено: робот доводит разговор до перевода, соединяет человека с
живым менеджером клиента, а если менеджер не взял — возвращается к тому же
человеку в том же разговоре и записывает, когда перезвонить. Счётчик 21 → 22
из 54.

Своя ошибка первой, и их шесть, с 81-й по 86-ю. Три нашёл не я.

81. Смена 10 приняла решение владельца Р137 и в план его не внесла: слова Р137
в плане не было ни разу, а снятое условие стояло на месте. Отсюда правило 49 —
решение не считается внесённым, пока не найдено в бумаге командой.

82. Прочёл запретный список ключей как состав груза и объявил находкой, что
номер менеджера до робота не доезжает вовсе. Дорога есть и прямо под это
подписана. Разбил судья, перемерил своей рукой, поправку разослал живым
помощникам. Отсюда правило 50 — у списка спрашивай, он разрешающий или
запрещающий.

83. Сказал вслух «соседи закоммитили», не проверив. Это был мой же помощник.

84. Вынося владельцу развилку про записи разговоров, назвал цену неполно: у
записей два уборщика, а я знал про одного. Системный чистит временную папку при
загрузке машины целиком. Машина не перезагружалась 34 дня, только поэтому
записи и лежат.

85. Сказал, что сторожа текста гоняются из хранилища. Неправда: они ходят на
боевую машину, а один кладёт туда пробную папку и сносит её. Пять таких я
запустил на входе, не замерив заранее, что они делают.

86. Записал на входе число 46 при одной красной, не записав, какая проверка
красная, и подставил под неё чужое объяснение. Объяснение оказалось верным, но
узнал я это задним числом.

Решения владельца, записаны обе копии:

Р138 — записи живых разговоров на машине робота остаются открытыми на чтение.
Замер: 89 звуковых файлов, у 86 права читать всем, папка открыта на вход. Цена
названа вслух и принята. В тот же день внесена поправка к цене таблицей на двух
уборщиков.

Р139 — приёмщицу живых входящих звонков перезапускаем сразу, а не копим долг.
Обе Лены запускаются из одного файла: обзвонщица работала новым текстом,
приёмщица держала в памяти код от 6 августа. Исполнено надзирателем: перед
перезапуском замерено, что живых разговоров через неё нет; после — новый номер
процесса, служба работает, порт слушает. Обзвонщица не тронута, её номер
процесса и время запуска не изменились.

Что нашли ножи надзирателя, а не пробы помощника:

Решение переводить опиралось на точную фразу, а произносит её генеративная
Лена. Из шестнадцати случаев мост не узнавал семь, и все семь — обычные обороты.
Наставление велит сказать фразу и замолчать, значит человек слушал бы тишину.
Переделано на разбор смысла, стало шестнадцать из шестнадцати при нуле ложных.

Оба заслона стоят на одном списке слов: скажи Лена «соединяю вас с
руководителем» — молчат оба. Намерено 14 тихих пропусков. Настоящее лечение —
отдельный сигнал от модели вместо прозы, вынести владельцу.

Умолчание роли разрешительное: без довода мост считает себя обзвонщицей и
включает перевод. Сегодня довод на месте, замерено.

Что нашёл судья в уже принятом круге, и это крупнее всего за смену:

Просьба о переводе живёт файлом на диске и называется по метке звонка, а при
незадавшейся метке метка у всех одна. Убиралась просьба ровно на одной дороге,
значит звонок номер два мог прочесть просьбу звонка номер один и соединить
постороннего человека с менеджером чужого клиента. Это разглашение, а не сбой.
Поправка надзирателя вторым прибором: окно не навсегда, а до часа.

Построены два запрета: просьба не переживает свой звонок и по общему
удостоверению перевода нет вовсе. Нож надзирателя 11 проверок при нуле красных,
показан красным пять из одиннадцати.

Цена, которую надо вынести владельцу: доезжает ли переменная метки живым
звонком, не замерено ни разу. Если метка у всех запасная, перевода не будет ни
у кого, и фича будет выглядеть построенной и не работать.

Замеры моей рукой: полный прогон 5444 проверки, 5440 зелёных, 4 пропущено,
красных 0. Пробы робота 131, 58, 38, 121, все красных 0.
2026-08-08 16:01:13 +03:00
Дмитрий 06f336f70a обзвон З-0.4: «убрать не вышло» больше не молчит, и отчёт про чужую просьбу
Третья моя ошибка, найденная пока писал отчёт: в самой уборке стояло
except OSError: return False, то есть «не смог убрать» было неотличимо от
«убирать было нечего». Я закрывал молчаливую беду и внутри лечения оставил
её же. Теперь «файла не было» отделено от «убрать не вышло»; второе кричит и
пробует запасной способ — опустошить файл, потому что станция берёт оттуда
одни цифры, а право на запись и право на удаление разные.

Проба 121, красных 0. Новая проверка подаёт настоящий отказ на удаление и
смотрит, что случай ДОХОДИТ до этой ветки.

В отчёт вписаны: разбор беды, два запрета, родня по ячейкам поимённо, слом
шестым ножом (убран ЗОВ, а не работа) и раздел про остающееся — главное там,
что доезжает ли переменная метки живым звонком не замерено никем ни разу, и
что при незаехавшей метке перевода не будет НИ У КОГО.
2026-08-08 15:54:31 +03:00
Дмитрий 26b15bcd93 docs: скелет отчёта помощника — круг 2, дорога номера менеджера
Заведён до всякой работы: среда рвёт связь, всё вне коммита сгорает.
2026-08-08 15:15:57 +03:00
Дмитрий 2cfc7c502e обзвон З-0.4: отчёт про узнавание перевода и снятая мина в пояснении
В отчёт вписаны: вторая моя ошибка целиком, переделка узнавания по смыслу,
второй заслон, два новых слома с тем, что проба сказала красной, и раздел
про НЕПОКРЫТОЕ — обороты, которые пройдут мимо и сегодняшнего разбора, и
настоящее лечение класса, которое строит следующий круг: решение отдельным
сигналом модели вместо прозы плюс сторож тишины.

Отдельно снята мина: пояснение над FRAZA_PEREVODA утверждало, что решение
ищется этой строкой. После переделки это неправда, и следующий читатель
принял бы её за опору узнавания.
2026-08-08 15:00:26 +03:00
Дмитрий f724463dc0 docs обзвон: отчёт помощника по З-0.4 заполнен целиком
Восемь разделов. Главное для следующего круга — раздел 3: номер менеджера
возится ЯЧЕЙКОЙ НА ДИСКЕ menedzher-<метка>.txt, а не переменной звонка, и там
же названо, на что моя половина опирается.

Названы вслух: моя ошибка со сторожем, который кричал на целом дереве;
вторая живая служба, читающая тот же most.py; неисполненная целиком
проверка 8; вынужденное расхождение копии настройки с машиной по Р128.
2026-08-08 14:42:57 +03:00
Дмитрий 74cd253a16 docs обзвон: заведён отчёт помощника по З-0.4 — скелет до работы
Первым действием, чтобы обрыв среды не сжёг несохранённое.
Заполняется по ходу круга.
2026-08-08 13:19:32 +03:00
Дмитрий 238d91b67f docs обзвон: конец смены 10, промт смене 11 — починка впервые доехала до живой машины
Смена 10 закрыта. Два круга: имя человека больше не может стать приказом роботу, и выкат
моста, ячеек и приёмника на живую машину робота. Владелец закрыл шесть развилок Р132-Р137.
Счётчик сдвинулся впервые за две смены: 21 из 54.

В промте смене 11 названы поимённо ТРИ неверных места промта смены 10, все мои.

Первое и главное. Выкат стоял первым пунктом, а починка имени вторым. Порядок вредный:
выкат и есть то действие, которое ВКЛЮЧАЕТ дорогу отравы. Владелец переставил, Р133.

Второе. Сказано, что уборщика ячеек зовёт одно место. Мест два, и главное — набор, а не
мост. И улика про 25 несостоявшихся звонков доказывает не то, подо что подставлена.

Третье. Таблица сторожей машины устарела целиком.

Мои ошибки смены 10 — семь, с 74 по 80, и пять из семи нашёл не я. Худшая восьмидесятая:
скопировал на машину тайный ключ вторым экземпляром, пролежал двадцать минут.

Заведены восемь правил сверх сорока. Главные: спрашивай у пункта плана не что он чинит, а
что он ВКЛЮЧАЕТ; мы туда не пишем — это не защита; прибор обязан звать настоящий код, а не
повторять его у себя; проверка, до которой не доходит очередь, стережёт ноль; оговорка —
не проверка; оснастку для проверки бери, не копируя тайного.

Судья снова дал улов крупнее обоих помощников вместе: у имени было ДВЕ двери, чистка
стояла на одной, и живой была как раз та, где чистки не было вовсе.

Прибавилось шесть вопросов владельцу, и первым — поднять заново вопрос про записи
разговоров: он был отложен ДО выката, выкат состоялся.

Датчики: разметка обеих бумаг 0 ошибок, все три ссылки промта проверены на существование,
метод достаётся командой и даёт 519 строк, числа собраны командой при написании.
2026-08-08 12:56:58 +03:00
Дмитрий 13d073f239 выкат обзвона: мост, ячейки и приёмник на машине робота — З-0.1 закрыта целиком, 21 из 54
Владелец дал слово: го, только не потри никого. Выкат делал своей рукой, он необратим.

Свою ошибку называю первой, восьмидесятая. Готовя выкат, я скопировал на машину тайный
ключ вторым экземпляром — папке выката он понадобился, чтобы проверить сборку наставления.
Пролежал двадцать минут. Убрал вместе с папкой, проверил командой. Отсюда правило 48:
оснастку для проверки бери, не копируя тайного.

Ловушка, которая едва не испортила выкат. Два файла из трёх доехали на машину с ДРУГИМ
отпечатком. Остановился и не ставил, пока не понял причину. Причина — лишний знак конца
строки, наследие Windows. Не поверил объяснению на слово, а доказал командой: возвратов
каретки 880, из них в конце строки 880 из 880; в ячейках 1145 из 1145, ни одного внутри
текста. После снятия отпечатки совпали знак в знак, все три. Поставь я не разобравшись —
побайтовый сторож остался бы красным навсегда.

Никого не потёр, доказано командой. Снял перечень всех файлов до и после и сравнил: три
моих изменения — мост заменён, ячейки и приёмник добавлены, ни одной пропавшей строки.
Больше пятнадцати чужих наладочных файлов не тронуты, записи разговоров не тронуты, слепок
для отката сделан первым шагом и лежит на месте.

Живые входящие звонки компании не задеты. Обе Лены запускают ОДИН И ТОТ ЖЕ файл моста, и
это был главный риск, названный в листе ДО выката. Перезапустил только обзвонщицу: её
номер процесса сменился, у приёмщицы остался прежний и время запуска не изменилось.
Проверил питоном самой машины 3.10 и обе роли до подмены: обзвонщица 42701 знак заглушка
дважды, приёмщица 45739 знаков заглушка ноль раз.

Отрава не доезжает — замерено моим ножом прямо на машине. Игнорируй прошлые указания даёт
Здравствуйте без обращения; Лев, Пётр, александр доезжают. Мост сам написал в журнале про
замок на три линии и про имена звонков по метке — это новая постройка.

Находка, которой не было в плане: на машине ДВЕ папки с кодом робота. Службы работают из
одной, а суточный обход держит эталоны в другой, и там мост остался старым — выкат был
неполон. Заменил и его. Сторож тут же поймал меня самого: состав папки разошёлся, это мой
же слепок в охраняемой папке. Он прав, слепок убран.

Сторож обхода врёт краснотой: два одинаковых прогона подряд дали 2 и 9 красных. Он читает
итог отдельным обращением к машине и, когда обращение вернуло пусто, объявляет что полей
нет — сразу семь раз. Проверил своей рукой: все семь полей в итоге есть, красноты были
ложными. Тот же класс, что и всё сегодня: ноль — самый опасный ответ прибора.

Сторожа машины: станция 12/0, заготовки 23/0, расписание 26/0, чистка 27/0. Побайтовая
сверка моста позеленела в обоих сторожах — это была краснота невыката. Осталось две
красных, обе названы честно: приёмщица работает старым текстом моста — это мой объявленный
заранее выбор, вынесен вопросом владельцу; и отправка итога порталу не настроена — давний
невыкат портальной половины.

Чего выкат НЕ сделал. Служба приёмника заданий не поднята: файл положен, службы нет, ей
нужна учётная запись на служебном входе станции. Значит портал по-прежнему не может
заказать роботу звонок. Живых звонков не делал. Машину не перезагружал.

Счётчик двигаю: было 20, стало 21 из 54. Основание — впервые за две смены починка
существует на живой машине, а не только в хранилище, и это замерено прямо там.
2026-08-08 12:49:46 +03:00
Дмитрий 2548eb25fc docs обзвон: приёмочный лист ВЫКАТА написан до выката — главный риск назван заранее
Владелец дал слово на выкат моста, ячеек и приёмника: го, только не потри никого. Условие
никого не потри взято главным.

Решающий замер до выката: машина НЕ опережает ветку. Отпечаток машинного моста — известный
нашему хранилищу объект, это в точности версия до коммита смены 8. Уникальной работы, какой
нет в хранилище, там нет, замена ничего не сотрёт.

Главный риск назван ДО выката: обе Лены запускают ОДИН И ТОТ ЖЕ файл моста, и вторая из них
живые входящие звонки компании. Работающий процесс держит старый код в памяти, поэтому
подмена файла её не тронет, пока не перезапустят — а перезапускать её я не буду. Но если
она перезапустится сама, возьмёт новый код, значит код обязан быть проверен для ОБЕИХ ролей
до подмены.

Второй риск: питон машины 3.10, у меня 3.14. То, что разбирается у меня, может не
разобраться там. Проверяю их питоном до подмены.

На машине нет ни ячеек, ни приёмника вовсе. Рядом лежат больше пятнадцати чужих наладочных
файлов — чьи они, я не знаю, и ни один не трону. Записей разговоров 89, в замере номер 26
было 98 — числа стареют, пересчитал.

В листе объявлено заранее: девять обязательных замеров с годным ответом на каждый, шесть
случаев вырезания второго рода, порядок из восьми шагов со слепком для отката первым шагом
и условие отката.
2026-08-08 11:55:26 +03:00
Дмитрий 2e764f55e4 docs обзвон: приговор круга 1 смены 10 — имя человека больше не может стать приказом роботу
Круг закрыт. Приговор вынесен моей рукой по своим замерам, а не по отчётам помощников и
не по отчёту судьи.

Мои ошибки круга — шесть, с 74 по 79. Из них четыре нашёл не я: две судья, одну помощник
независимо от судьи, одну помощник. Своими руками поймал только две.

74. Поставил выкат раньше починки. Выкат и есть то действие, которое ВКЛЮЧАЕТ дорогу
отравы: сегодня имя до машины не доезжает вовсе. Поймано до вреда, владелец переставил
порядок решением Р133.

75. Дал помощнику файл под app во время своего же полного прогона — нарушил своё правило
37, выведенное сменой назад. Вреда не вышло по удаче, а не по осторожности.

76. Мерил на самодельном наставлении из трёх строк, а настоящее — 42701 знак и 357 строк.
И нож списал подстановку своей копией вместо того, чтобы звать настоящий мост: значит
мерил копию. Это нарушение своего же правила 40.

77. Сказал, что уборщика ячеек зовёт ровно одно место. Мест два, и главное — не мост, а
набор. Неправда разошлась по трём файлам через мои задания.

78. Датчик считал признаком отравы прибавку строк в наставлении, а прибавкой была
защитная врезка самого помощника. Объявил ложно 16 из 17 прошедших.

79. Велел построить проверку, до которой не доходит очередь: длинную отраву отбивают по
числу слов раньше, чем дело дойдёт до перевода строки. Она зеленела бы, даже если бы
защиты не было вовсе. Помощник это увидел и применил приём, лежавший в том же файле.

Что построено. Имя человека больше не может стать приказом роботу. Требование передать
имя отдельно от наставления помощник разбил как невыполнимое: голосовая служба принимает
один текст, и переложить имя в другой угол того же текста — видимость лечения. Сделано
сильнее: имя не фильтруется, а собирается заново из разрешённых кусков, и гарантия стоит
в точке использования, а не укладки. Запретительных списков нет ни одного.

Судья дал улов крупнее обоих помощников вместе: у имени было ДВЕ двери, а чистка стояла
только на одной, и живой сегодня была как раз та, где чистки не было вовсе — общий
запасной файл. Эту дверь я своей же поправкой объявил неопасной, потому что мы по ней не
ходим. Отсюда правило 43: мы туда не пишем — это не защита.

Замеры моей рукой. Восемь способов отравить, помощнику не показанных: доехало ноль, все
дают Здравствуйте без обращения. Двенадцать живых имён доехали все. Вырезание первого
рода: сломал сердце лечения в побайтовой копии — краснеют оба сторожа, 12 и 29. Вырезание
второго рода: допущение выдержало, из приказа выживает ровно одно слово.

Числа. Полный прогон 5418 проверок, 5414 зелёных, 4 пропущено, красных ноль, арифметика
сходится. Дерево app за прогон не двинулось ни одним коммитом, движения от меня ноль —
прогон годен по правилу 42. Пробы робота 131, 58, 38, 233 — красных ноль. Проба имени
выросла с 71 до 131, проба приёмника с 232 до 233.

Семь новых правил, оплаченных этим кругом: 41 спрашивай, что пункт ВКЛЮЧАЕТ, 42 годная
мерка неподвижности в ветке четырёх смен, 43 мы туда не пишем — не защита, 44 прибор
обязан звать настоящий код, 45 оговорка — не проверка, 46 ложь переезжает в имя защиты,
47 проверка, до которой не доходит очередь, стережёт ноль.

Четыре новых вопроса на владельце: свободный мешок как вторая дверь крупнее первой,
общий файл имени в папке общей со станцией, робот произнесёт клиенту любое одно слово из
карточки, ни одна проба не запускается сама.

Счётчик задач не двигаю: остаётся 20 из 54. Починка существует только в хранилище. На
машине робота живёт старый мост, и до выката имя там по-прежнему может стать приказом.
2026-08-08 11:49:03 +03:00
Дмитрий 58c2a7e12a docs обзвон: второй нож объявлен ДО работы помощника — 18 способов отравить, отбито ноль
Второй набор случаев записан в приёмочный лист в тот час, когда помощники ещё работают.
Помощнику эти случаи не показывались и до приговора показаны не будут: защита, проверенная
только на списке, который её строитель видел, не проверена вовсе.

Бьёт туда, где тихо: подделка под разметку разделов самого наставления, подделка под кавычки
приветствия, имя равное заглушке, приказ без повелительного наклонения, чужая письменность,
ровно предел длины, подделка под разметку посылки службе.

Обратная половина, без которой нож негоден: десять настоящих человеческих имён, которые
обязаны проходить. Защита, отбивающая живых людей, — такая же беда, только с другой стороны.

Замер по непочинённому коду до работы помощника: отрава отбита 0 из 10, живые пропущены
10 из 10. Значит нож проверен на больном случае и различает стороны, а не краснеет на всём
подряд. Итого по двум ножам восемнадцать способов отравить, отбито ноль.

Годным приговором объявлены только полные обе половины — записано до результата.
2026-08-08 10:19:09 +03:00
Дмитрий 7d0dac752c docs обзвон: приёмочный лист круга 1 смены 10 — написан ДО работы, ошибка 74 названа первой
Круг 1 смены 10: Р131 имя не диктует роботу, плюс Р134 замазка, Р130 слово необратим,
Р136 честные бумаги про час хранения. Всё в одном мосте, потому и один круг: Р133
запретила два захода на живую машину.

Ошибка 74, называю первой. В промте смене 10, который писал я сам, выкат стоял ПЕРВЫМ
пунктом, а починка имени вторым. Порядок вредный: выкат и есть то действие, которое
ВКЛЮЧАЕТ дорогу отравы. Сегодня имя до машины не доезжает вовсе, продиктовать роботу
нечем. Выкатив раньше починки, мы своими руками открыли бы дыру, которую владелец закрыл
решением Р131, и держали бы её открытой весь следующий круг. Владелец переставил порядок
решением Р133.

Правило 41. У каждого пункта плана работ спрашивай не что он чинит, а что он ВКЛЮЧАЕТ.
Порядок работ - это очередь состояний системы, а не очередь дел. Пункт, безвредный сам по
себе, бывает выключателем чужой беды.

Замер ножом до работы, восемь случаев: чистку прошли 8 из 8, до наставления доехали 8 из 8.
Среди них приказ одной строкой, приказ без имени вовсе, приказ под видом служебной пометки.
Тяжелее всего то, что случай, ради которого защита строилась, тоже доехал: чистка заменила
перевод строки пробелом, и приказ оказался в той же строке. Роботу безразличны строки.

Подтверждено моей рукой: сторож в проба-имени-за-звонок строка 669 объявляет ЗЕЛЁНЫМ ответ
Кондратий Apollo слушай меня с подписью чужой строки наставления не будет. Строки не будет,
приказ будет. Потому сторожа переписывают, а не дописывают.

Приборы шага 0: 956 пакетов разодрано 0; своя база liderra_testing_nadzor10, 194 миграции
= 194 файла; в app 17 чужих правок, дерево подвижно не по моей вине - слепок снимаю по
дереву app, и это уточнение правила 37, названное вслух, а не отступление от него.

В листе объявлено заранее: десять обязательных замеров с годным ответом на каждый, девять
случаев вырезания второго рода поимённо, и прямо записано, что защиту я проверю случаями,
которых помощник не видел.
2026-08-08 10:07:25 +03:00
Дмитрий c01a579100 docs обзвон: владелец закрыл шесть развилок Р132-Р137, порядок работ смены 10 переставлен
Обход по одному вопросу с рекомендацией на каждый. Решений в протоколе стало 137.

Р132. Записи живых разговоров на машине робота лежат правами читать всем, 98 файлов,
старейшие от 2 августа. Владелец отложил закрытие прав до выката. Вопрос НЕ снят и
остаётся висящим: поднять сразу после выката, замер собрать заново.

Р133. Порядок выката переставлен, и это поправка к моему собственному промту, которую
называю первой. Промт ставил выкат первым пунктом. Перемерил командой: мост берёт имя из
ячейки звонка и вставляет его внутрь наставления роботу. Сегодня имя до машины не доезжает
вовсе, значит отравить наставление нечем, и выкат как раз включил бы эту дорогу. Плюс Р131
чинится в том же мосте, то есть на живую машину пришлось бы лезть дважды. Решено: сначала
Р131, потом один выкат моста, ячеек и приёмника вместе.

Р134. Замазка имени в журнале дырявая: ножом семь случаев, протекли четыре. Чиним в одном
круге с Р131, файл тот же. Старые журналы с именами на машине остаются - названная цена.

Р135. Имя уезжает сторонней голосовой службе за пределы страны дважды за звонок. Принято
как цена вслух. Р131 этого не лечит: робот обязан имя произнести. Условия службы не читаны,
разведка остаётся открытой.

Р136. Час хранения имени оказался пределом, а не фактом: уборщика зовёт одно место, и нет
следующего звонка - имя лежит бессрочно, замерено на 25 несостоявшихся звонках. Поведение
не меняем, переписываем бумаги честно.

Р137. З-0.4 берём. Условие плана закрыта и слита переписываем честно: слияние в главную -
отдельное необратимое действие, слова владельца на него не было, и вопрос остаётся открытым.

Датчики моей рукой: разметка 0 ошибок, орфография 0 после правки пяти слов - сторожа
показали себя живыми, найдя их. Счётчик решений 137 собран командой.
2026-08-08 09:47:51 +03:00
Дмитрий ca9fda445f docs обзвон: конец смены 9, промт смене 10 — стены больше нет
Смена 9 закрыта. Два круга, оба по задаче З-0.1: имя доезжает от портала до
ячейки звонка само, станция различает звонки, замок поднят до трёх линий, и
настройка станции выкачена на живую машину.

Владелец закрыл четыре развилки Р128-Р131, и вся стена, на которую упиралась
стройка, снята: править станцию можно, менять базу можно.

В промте смене 10 названы поимённо ДВА неверных места промта смены 9, оба мои.

Первое. Сказано, что набор имя никуда не кладёт. Имени не было ВОВСЕ: портал не
посылал, приёмник не читал, набор не знал.

Второе. Сказано, что три линии - это трое услышавших чужое имя. Неверно: в общий
файл имени не пишет ни одна рабочая половина, он только читается, и человек
остаётся без имени, а не с чужим.

Мои ошибки смены 9 - шесть, с 68 по 73. Худшая семьдесят первая: вывел с судьёй
правило, что прогон годен только по неподвижному дереву, и через час его нарушил.

Заведены четыре правила сверх тридцати шести. Прогон годен только по неподвижному
дереву, со снимком до и после; ложная краснота опаснее ложной зелени, по ней идут
чинить чужой исправный код. Порог числом не задавай - он краснеет от чужих
коммитов. Судье задавай вопрос о цене, а не о составе. Датчик, сверяющий значение
с той же настройкой, которую ты ломаешь, - пустой.

Судья дал улов крупнее обоих рабочих кругов вместе: разбил мою точку отсчёта,
нашёл дыру в свежей постройке, утяжелил мою находку втрое и назвал вопрос,
которого за смену не задал никто.

Прибавилось четыре вопроса владельцу: записи разговоров лежат на машине правами
читать всем пятые сутки; замазка имени в журнале дырявая на четырёх случаях из
семи; имя уезжает сторонней службе за пределами страны дважды за звонок; час
хранения ячейки - это предел, а не факт.

Порядок работ переставлен: первым идёт выкат моста, ячеек и приёмника вместе -
без него работа двух смен на машине не существует.

Датчики: разметка обеих бумаг 0 ошибок, все четыре ссылки промта проверены на
существование, полный прогон по неподвижному дереву 5400 проверок и красных 0,
команда чтения метода запускалась моей рукой в начале смены.
2026-08-08 08:50:29 +03:00
Дмитрий f1b5b975c5 docs обзвон: приговор по остатку З-0.1 и выкат настройки станции на машину
Круг 2 смены 9 принят, выкат состоялся. Станция теперь даёт каждому звонку свою
метку, замок поднят с одной линии до трёх, и непочиненная станция сама режет
предел обратно до одной.

Свою ошибку называю первой, семьдесят третья.

В листе и в задании помощнику я написал, что три линии при общем файле - это
трое услышавших чужое имя. Это неверно. Помощник разбил, я проверил вторым
прибором и подтвердил: в общий файл имени не пишет ни одна рабочая половина, он
только читается. На непочиненной станции общий файл пуст, и человек остаётся БЕЗ
имени, а не с чужим. Чужое имя было настоящей бедой ДО постройки смены 8; я
перенёс старую картину в новый круг, не перемерив. И сказал это владельцу вслух -
поправку отдал первой строкой следующего же сообщения.

Помощник поправил меня трижды, все три по существу. Картина беды. Второе место
того же класса: мост у обеих Лен один и тот же, а предел линий общее умолчание -
одна правка подняла бы до трёх линий живые входящие звонки компании. И запасной
вид он не стал строить по моей догадке, а сделал так, что пустое до станции не
доходит вовсе.

Его собственная ошибка поучительнее моей: датчик предела был пустой, сверял
предел с той самой настройкой, которую ломал. Сломал лечение - проба осталась
зелёной тридцать шесть из тридцати шести. Вскрыл только показом красным.

Мой нож резал по новому надзору, случаи по одному. Непочиненная станция режет
предел до одной линии, вторая не пущена. Починенная даёт три и не даёт четыре. До
первого звонка предел полный, и это объявлено. И замер, которого нет в его
отчёте: один хороший звонок возвращает предел с единицы обратно на три - урезание
не навсегда. Это названная цена, не беда.

Выкат делал своей рукой и отступил от порядка дважды, оба раза в сторону меньшего
риска. Не переносил кусок целиком: в нашей копии номер компании замаскирован, а
настоящего я не знаю, и перенос целиком сломал бы живые входящие. Поменял одну
строку на четыре, счётной программой с тремя предохранителями сразу и со слепком
для отката. Приёмщица живых входящих после правки та же, замерено исполняемым
диалпланом. Живых разговоров на миг правки было ноль. Станцию перечитал, а не
перезапустил.

Шаги девять и десять не делал. Перезапуск моста бессмыслен: на машине живёт
старый мост, ячеек он не знает вовсе, а нового файла там нет - предел три живёт в
коде, которого на машине нет. Живая проба стоит денег и грузит машину, делящую
железо с боевым сервисом; запасной вид виден прямо в исполняемом диалплане.

Числа моей рукой. Полный прогон по неподвижному дереву, снимки до и после
сошлись: 5400 проверок, 5396 зелёных, 4 пропущено, красных 0. Пробы робота 232,
71 и 38. Новый сторож настройки до выката 13 проверок и 2 красных, после выката
12 и ноль. Сторожа машины прежние.

Главное сказать трезво: выкат станции сегодня ничего не чинит и ничего не ломает,
он подготовительный. Починка доедет до жизни только вместе с выкатом моста, ячеек
и приёмника. Счётчик построенных задач не двигаю: остаётся 20 из 54.
2026-08-08 07:33:07 +03:00
Дмитрий 92242a466e docs З-0.1: числа прогонов и разбор задания в отчёт помощника
Полный прогон портала на своей базе liderra_testing_stanciya9:
5400 проверок, зелёных 5396, красных 0, ошибок 0, пропущено 4.
Арифметика сходится. Утверждений 22 085, 23,6 минуты.
Дерево при прогоне неподвижно: грязь в app/ до и после одна и та же,
HEAD сдвинут только моим коммитом, не трогавшим ни одного файла под app/.
База за собой снесена, проверено запросом к pg_database.

Замер про мигание пробы имени: оно унаследованное и зависит от нагрузки —
на версии БЕЗ моих правок под полным прогоном мигнуло 1 из 12, на свободной
машине 0 из 24 с обеих сторон. Не моё, не чинил.

proba-mosta-bez-zvonka.py на машине разработчика не запускается вовсе:
most.py читает при ввозе .kluch, которого в хранилище нет. Проверено, что
падает так же на версии до моих правок.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 06:55:02 +03:00
Дмитрий e6a6471aa7 З-0.1: станция даёт каждому звонку свою метку, предел линий поднят до трёх
Станция. Раздел [lena-inworld] берёт метку переменной канала
LENA_METKA_ZVONKA вместо прежней константы. Ключевое — запасной вид: если
переменной нет вовсе (ручная проба, звонок не от нашего набора), подставляется
та самая прежняя константа, и всё идёт ровно как до починки — общий файл и
крик в журнал. Пустое значение до AudioSocket не доходит, поэтому вопрос
«чем AudioSocket отвечает на пустой довод», который никто не замерял, стал
ненужным, а не угаданным. Строка NoOp кладёт метку в журнал станции — это
единственный способ увидеть глазами, доехала ли переменная.

Раздел [lena-vhodyashchie] с живыми входящими звонками не тронут ничем.

Предел линий. Умолчание 1 -> 3 (Т34, решение владельца Р58). Четвёртая линия
получает громкий отказ с числами в журнале.

Надзор — новое. До сегодня предел и починка станции не были связаны ничем:
предел снимался переменной среды, и ничто не спрашивало станцию, а настройка
на этой машине уже дважды молча откатывалась. Теперь Imena.zanyat_metku
рассказывает надзору, какая метка вправду пришла с живого звонка, а Vorota
спрашивает у надзора действующий предел. Общая константа урезает предел до
одной линии, столкновение двух живых звонков на одной метке — навсегда до
перезапуска. most.py при этом не тронут ни строкой: мост создаёт Imena и
Vorota умолчаниями, а умолчание у обоих — общий на модуль надзор.

Этим же закрыто второе место того же класса, о котором задание не знало:
most.py один и тот же у обеих Лен, и одна правка умолчания подняла бы до трёх
линий живые входящие звонки компании. Надзор возвращает приёмщице одну линию
после её первого же звонка — её метка не своя.

Ячейка имени теперь исчезает в конце звонка (Imena.osvobodit_metku), а не
ждёт следующего звонка: сборщик просроченных просыпался только внутри vzyat,
и без следующего звонка имя живого человека лежало бессрочно. Набор вдобавок
метёт просроченные перед каждой кладкой.

Исправлена НЕВЕРНАЯ надпись на прежнем замке. Она гласила «три линии при
общем файле — это трое услышавших чужое имя». Замер: в общий imya.txt не
пишет ни одна рабочая половина, набор кладёт только в ячейку по метке.
Значит на непочиненной станции общий файл пуст и человек остаётся без имени,
а не с чужим; а положенное руками имя унесёт ровно один звонок при любом
пределе — взятие неделимо. От предела линий число услышавших чужое имя не
зависело.

Новый сторож proverka-nastroyki-stancii.sh: копия в хранилище,
неприкосновенность приёмщицы, исполняемый диалплан живой станции. Суточный
обход подхватит его сам — он собирает сторожей по шаблону proverka-*.sh.

Пробы: proba-mosta-metka-i-zamok 38 проверок, proba-imeni-za-zvonok 71,
proba-priyomnika 232, сторож настройки 10 — все зелёные.

Каждый сторож показан красным нарочной поломкой; первая же поломка вскрыла,
что мой датчик предела был пустой — он сверялся с той самой постоянной,
которую я и ломал. Числа в пробе теперь литеральные.

На сервер ничего не возилось: выкат делает владелец, порядок по шагам —
в README.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 06:40:58 +03:00
Дмитрий aa0b37b7ae docs: скелет отчёта помощника — станция и замок 2026-08-08 05:48:14 +03:00
Дмитрий 189e0c8d70 docs обзвон: владелец закрыл четыре развилки — Р128-Р131
Решений стало 131. Все четыре приняты вслух 08.08.2026, у каждого записаны
отрезанные ветки и строка о том, чего решение НЕ закрывает.

Р128. Настройку телефонной станции править и выкатывать разрешено. Отрезано
подготовить-без-выката и не-трогать-вовсе. Не закрывает: копия и сервер обязаны
сойтись в один заход, иначе шумом забивается единственный датчик молчаливых
откатов сервера, а их уже было два; и сверка эта ручная.

Р129. Менять базу разрешено целиком. Отрезано только-тестовая и запрещаю. Не
закрывает: разрешение дано на изменение схемы, а не на выкат модуля; боевую базу
сегодня трогать нечего, первая боевая миграция поедет вместе с выкатом.

Р130. Обратимость знака задания чиним при выкате, а не сейчас. Отрезано
починить-сейчас и оставить-как-есть. Не закрывает главного: пока не починено,
пояснение в коде продолжает утверждать неправду, а обещание больше защиты
закрывает вопрос в голове читающего. До выката в коде обязано стоять честное
слово вместо слова необратим, и это правка пояснения, не поведения.

Р131. Имя человека не должно влиять на наставление роботу — передаётся отдельно,
а не внутри. Отрезано отсеивать-по-списку-слов, потому что такой список всегда
неполон, и оставить-с-риском. Не закрывает: работа лежит в мосте, который узкое
место трёх будущих задач, и сторожа, закрепляющего отраву как годную, придётся
переписать, а не дописать.

Все четыре подняты приёмкой круга 1 смены 9: три из них нашёл судья, замеры под
ними мои.
2026-08-08 05:43:52 +03:00
Дмитрий 42e06a4e17 робот телеграма: рабочая копия принята в репозиторий + запись о выкате
Хвост, который висел с начала дня: рабочая копия робота на машине
C:\liderra\mts-telegram-robot была НОВЕЕ репозитория. Одиннадцать файлов жили
только там — вся служба bin/sluzhba.js со сторожами, отправщик тревог trevoga.js
и девять тестов. Любой, кто выложил бы репозиторий поверх, снёс бы это молча.

Теперь репозиторий = рабочая копия, файл в файл, сверено побайтово по 50 файлам.
Ничего не потеряно ни с одной стороны: рабочая копия уже содержала и мои
сегодняшние правки, так что перенос вышел без слияния вручную.

Что приехало от соседней смены
- служба bin/sluzhba.js + src/sluzhba-plan.js и три её сторожа
- src/trevoga.js — отправщик тревог, починенный 06.08
- чтение даты старта, пропуск подсказок модерации, слово «Запланирована»
- сторожа: оплата-гейт, шов даты старта, статус «Запущена»

Что уехало туда от меня, ещё утром
- чтение показов: parseStatsRow, setStatsPeriodAllTime, readCampaignStats
- режим read-stats в runner.js, poll-plan.js, bin/poll.js
- сторож сессии ходит С ОКНОМ вместо безоконного браузера

Тесты робота: 239 зелёных.

Документы
- ПИЛОТ.md — запись о выкате телеграм-показов на боевой 07.08 вечером: что
  изменилось для клиента, чем доказано, где бэкапы, чего снять не удалось и
  почему, плюс разбор чужой поломки obzvon_calls того же дня
- список к выкату помечен как исполненный

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 05:42:53 +03:00
Дмитрий f28222bc44 docs обзвон: приговор по кладущей половине имени, круг 1 смены 9
Работа круга принята. Имя человека доезжает от портала до ячейки своего звонка
само, без рук: названный довод, один ключ на весь шов, отказ мешку, чистка с
обеих сторон, укладка до первого байта в сторону станции. Стерегут 76 сторожей
шва и 232 пробы робота.

Задача построенной НЕ считается, счётчик не растёт: остаётся 20 из 54. Не хватает
правки настройки станции и снятия замка, и оба куска суть слово владельца, а не
работа.

Свои ошибки называю первыми, их пять.

Шестьдесят восьмая. В своём же промте написал, что набор имя не кладёт. Замерил
двумя приборами: имени не было ВОВСЕ - портал не посылал, приёмник не читал,
набор не знал. Сказал мягче правды.

Шестьдесят девятая. Объяснил прирост прогона соседями и назвал это замером, а моё
же число опровергало мой вывод: девять плюс шесть не равно шести. Судья указал
первой строкой. Дальше вышло хуже: проверить нечем вовсе, число снято с дерева,
которое сосед менял двадцать одну минуту подряд.

Семидесятая. Свою же находку про уборщика имён записал слабее правды трижды:
после оборванного звонка вместо после каждого, не увидел сторожа, который требует
тридцатидневного хранения файла с именем человека, не померил, что подпорки от
самой машины нет.

Семьдесят первая. Вывел с судьёй правило, что прогон годен только по неподвижному
дереву, и через час его нарушил: запустил прогон и разбудил помощника править те
же файлы. Плюс команда снимка дерева сохранила свой собственный текст вместо
чисел, то есть снимка не было вовсе, а выглядел он сделанным.

Семьдесят вторая. Судье подсказал не тот вопрос. Спросил, куда ещё попадает имя,
а правильный вопрос он задал сам: сколько стоит развернуть то, что в журнале всё
таки есть.

Помощник поправил меня четырежды и все четыре по существу. Мост физически не
может увидеть метку иначе как каноническим видом - это он замерил, а я мерил не с
той стороны. Имя обязано входить в отпечаток тела, иначе тот же знак с другим
именем пройдёт молча. Отказ мешку лучше молчаливого выброса, потому что
молчаливый выброс сам есть тихая потеря. И сверх задания он нашёл, что знак и
телефон защищены сегодня только случайностью порядка кусков.

Судья, заведённый сразу после первых находок, дал улов крупнее всех рабочих
кругов. Разбил мою точку отсчёта. Нашёл дыру в свежей постройке: свободный мешок
вёз имя мимо чистки, а над этим местом стояло наше же обещание, что это
невозможно. И назвал вопрос, которого за смену не задал никто.

Мой нож резал четырежды. Уборщик просроченных имён: следующего звонка нет - имя
живого человека остаётся, двадцать пять несостоявшихся звонков - лежат все
двадцать пять. Сторож сторонних библиотек показан красным двумя проверками, и
названная им цена проверена отдельно. Замазка имени в журнале дырявая на именах с
беглой гласной и на другом регистре, четыре протечки из семи. Доделка мешка -
шесть красных из семидесяти шести, среди них чужой сторож, которого не нашли ни
я, ни судья.

Числа моей рукой. Полный прогон по неподвижному дереву, снимки до и после
сошлись: 5400 проверок, 5396 зелёных, 4 пропущено, красных 0, арифметика сходится.
Это четвёртый прогон смены и первый годный: первый снят на движущемся дереве,
второй словил пять ложных красных от приехавшего слияния с главной, третий я
остановил сам. Сторожа шва 76 при 221 утверждении. Пробы робота 232, 64 и 27.
Сторожа машины 26, 27, 23 зелёные, текстовый след одна красная, обход две - те
же, что до работы, и обе датчики невыката.

Три вещи вынесены владельцу и здесь не лечатся: знак задания обратим вопреки
записанному в коде слову необратим, имя из карточки лида подставляется внутрь
наставления Лене и наш же сторож закрепляет отраву как годную, замок и починка
станции не связаны ничем.

Ничего не пушено и не выкачено. На машину робота не ходили с правками.
2026-08-07 19:40:03 +03:00
Дмитрий 802cc9a1d8 fix обзвон: нож с обеих сторон по мешку — и чужой сторож переписан, не снесён
Замерено чтением, а не рассуждением: тело робот читает СТРОГО — шесть
поисков по словарю без приведения регистра; приведение есть только у
заголовков и у слов станции. Значит ключ другим регистром робот не прочтёт
никогда, и отказ портала обращает тихую потерю в громкую, а не отвергает
годное.

На это заведён сторож с роботной стороны: имя, названное в задании другим
регистром, именем не считается. Научат робота читать нестрого — сторож
покраснеет, и портал поправим вслед.

Чужой сторож «мешок не может перебить знак или номер» проверял своё
свойство через ушедшее тело и после починки падал ошибкой. Не снесён:
свойство верное, моё правило его усиливает — переписана только охрана,
вторая половина по-прежнему проверяет, что чужие поля мешка доезжают.

В отчёт дописан новый раздел, старое не переписано.

Числа: проба приёмника 232, имя за звонок 64, мост 27, сторожа шва 76 —
красных и ошибок нет нигде. Новых сторожей ронял тремя порчами: 6, 1 и 4
красных. Полный прогон не запускал — его делает координатор.
2026-08-07 19:03:21 +03:00
Дмитрий 4a68609837 Merge branch 'main' into feat/prospects-manual-testing-kp
# Conflicts:
#	docs/observer/STATUS.md
2026-08-07 18:04:49 +03:00
Дмитрий 75eed53408 docs обзвон: своя ошибка первой — два полных прогона по одной базе разом
После обрыва смены счёл первый прогон погибшим и пустил второй. Первый был
жив: замер по процессам показал два прогона, оба били в одну базу. Оба
числа были бы ложью.

Заодно поймана вторая ложь того же места: обёртка отрапортовала по обоим
убитым прогонам «выход 0» при коде 127 и без единой итоговой строки.

Вылечено: процессы сняты по номерам, чужие серверы не тронуты, база снесена
явным словом и проверена, заведена заново, промигрирована.

Вписан и второй повод, по которому имя сегодня НЕ доедет до человека:
на машине робота набор стоит «net», значит кладущая рука не зовётся вовсе —
ещё до всякой правки станции.
2026-08-07 17:46:29 +03:00
Дмитрий 6897e2aa43 docs обзвон: отчёт смены — постройка, восемь порч, зовущие поимённо
Вписано: что построено файлами, чем ронял каждого сторожа и что он сказал,
слепки возврата, числа проб, соседи, свои ошибки первыми и что осталось
несделанным.

Числа полного прогона допишутся отдельно — он ещё идёт.
2026-08-07 17:39:07 +03:00
Дмитрий dc4d835b73 телеграм-реклама: клиент видит отчёт, управление и показы
Клиент после создания рекламы был слеп: ни отчёта, ни причины отказа проверки,
ни способа что-то изменить. Закрыто.

Что теперь видит клиент
- слова «МТС» на клиентских экранах больше нет — он покупает рекламу в Телеграме
- на карточке: увидят рекламу, зарезервировано, списано, показов, кликов, подписались
- кнопки «Отчёт», «Отменить», «Повторить эту рекламу»
- отчёт даёт ПОЛНЫЙ текст причин отказа проверки, дословно
- пересдача принимает новый заголовок и новую картинку
- вердикт проверки уходит клиенту письмом, а не только в колокольчик

Показы читает робот
- новый режим read-stats: список кабинета, срок «За всё время», строка кампании
- разбор строки С КОНЦА: начало ряда плавает, хвост из 12 колонок постоянен
- прочерк площадки значит «не знаем», а не ноль, и различие доезжает до экрана
- пять колонок stats_* в client_tg_campaigns, запись v9.73 в журнале схемы
- опросчик PollTelegramStatsJob раз в час

Закрыто по дороге, сверх заказа
- утечка: закупочная цена mts_cost_rub уезжала клиенту в браузер, из пары с
  actual_cost_rub наценка считалась вычитанием
- расход площадки stats_spend_rub скрыт по той же причине
- кабинет пишет «Запущена», робот такого слова не знал: кампания висела на
  проверке навсегда, хотя реклама уже шла и деньги площадки тратились
- в runner.js висел неразрешённый конфликт слияния — робот не запускался вовсе
- сторож сессии ходил БЕЗ окна, а работа робота ходит С окном: сторож ловил отказ
  там, где работа проходила, и слал письмо каждый час о беде, которой не было
- текст отказа больше не советует менять адрес выхода — совет был ошибочный и
  увёл целую смену на поиск блокировки, которой не существовало

Замеры
- Pest tests/Feature/ClientTg 396 зелёных, смежные области 97 зелёных
- тесты робота 182 зелёных, Larastan 0 ошибок
- Vitest tests/Frontend 2231 зелёный; 5 падений кошелька — чужие, были до этого
- сторожа проверены КРАСНЫМ: подсунутые ошибки красят их, возврат кода зеленит
- живая проверка чтения цифр на настоящей кампании кабинета

П-8 «Остановить» не входит: владелец запретил нажимать «Завершить» в кабинете,
а без этого неизвестно, что она делает с деньгами.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 17:24:58 +03:00
Дмитрий 2ecfc2a562 docs обзвон: разбор задания перед постройкой — чем называть ячейку
Замерено: мост берёт метку только каноническим UUID, а нынешний номер
звонка UUID не является. Значит ячейку называем каноническим видом того же
самого uuid, из которого сложен номер звонка, — одно рождение, два вида.

Записан отказ писать в общий запасной файл и цена отпечатка тела.
2026-08-07 16:46:23 +03:00
Дмитрий d2c5675cf7 docs обзвон: скелет отчёта помощника — кладущая половина имени
Заведён каркас отчёта смены 9. Пишется по ходу работы, чтобы
несохранённое не сгорело при обрыве.
2026-08-07 16:39:48 +03:00
Дмитрий 7b54146292 docs обзвон: конец смены 8, промт смене 9 с поправками к своему же прежнему промту
Смена 8 закрыта. Два круга: набор номера построен целиком, имя за звонок построено
наполовину. Задач стало 20 из 54.

В промте смене 9 поимённо названы ТРИ неверных места промта смены 8, и все три мои.

Первое и самое дорогое. Промт смены 8 говорил, что задачу про имя за звонок брать
нельзя, только пробы в отдельное окно. Прочитал решения владельца дословно: они отложили
ПРОБЫ, а не постройку. Из-за этой строки цепочка из трёх задач простояла запертой:
перевод на менеджера начинается только после этой задачи, а на переводе стоят предел
разговора, два плеча, тариф и половина исходов.

Второе. Порядок работ ставил вторым делом предел разговора. Брать его нельзя вовсе:
отсчёт идёт от соединения с менеджером, которого в роботе нет ни одним словом.

Третье. Число требований в промте не выходило ни из одной команды: живых 111, а не 112.

Заведены три правила сверх тридцати трёх. Отложенная проба не есть отложенная постройка,
и решение владельца читается дословно в протоколе, а не в пересказе промта. Замерил что
дорога есть - замерь, можно ли по ней проехать. Зелёная проба сама по себе не доказывает
ничего: одну и ту же поломку одна проба поймала шестью проверками, а вторая осталась
зелёной.

Прибавилось пять вопросов владельцу: короткие служебные номера проходят набор, имя
человека после оборванного звонка лежит на диске час, кто хозяин выбора номера при
стройке техники связи соседней сменой, открывать ли дорогу на машине, и задвоенные
номера решений Р116-Р127 между двумя протоколами.

Мест, ждущих выката, стало восемь.

Датчики: разметка обеих бумаг 0 ошибок, все ссылки промта проверены на существование,
команда чтения метода запускалась моей рукой в начале смены.
2026-08-07 15:50:48 +03:00
Дмитрий 093ae0e04f docs обзвон: приговор по имени за звонок, первая половина З-0.1
Круг 2 смены 8 принят. Имя того, кому звонят, больше не лежит одним файлом на всю
машину: у каждого звонка своё, взятие неделимое, метка проверяется на годность, есть
замок на число линий и уборщик просроченных имён. Беда, из-за которой живого человека
уже назвали чужим именем, закрыта в коде и показана красной на старом порядке.

Задача НЕ считается построенной целиком, и счётчик не растёт: остаётся 20 из 54.
Не хватает трёх вещей, все названы помощником самим. Кладущей половины нет - набор имя
никуда не кладёт. Настройка станции не поправлена, она отдаёт всем звонкам одну метку.
Замок остаётся на одной линии, значит требование о трёх линиях сегодня не в силе.

Мои ошибки называю первыми, их две.

Шестьдесят шестая, и она стоила стройке нескольких смен. В промте смены 8, который писал
я, сказано что З-0.1 брать нельзя, только пробы в отдельное окно. Прочитал решения
владельца дословно: Р96 отложил ПРОБЫ задачи, Р101 назвал условие для проб. Ни одно не
запрещает строить. Я прочитал отложены пробы как задачу не брать и записал это запретом.
Цена видна по цепочке: предел разговора стоит на переводе на менеджера, а тот начинается
только после З-0.1 и З-0.2, и З-0.2 построена ещё пятого августа. Вся цепочка упиралась в
одну задачу, которую я сам объявил незаходимой. И вторая половина той же ошибки: порядок
работ ставил вторым делом предел разговора, а его брать нельзя вовсе - отсчёт идёт от
соединения с менеджером, которого в роботе нет ни одним словом, замерено двумя приборами.

Вторая, повторная. Имя нужной части кода в своём ноже выдумал вместо того чтобы взять из
файла, и прибор упал на первом запуске. Это ровно ошибка пятьдесят шестая прошлой смены.

Помощник разобрал задание и поправил меня четырежды, все четыре по существу. Главное:
буквальное исполнение плана было бы ПЛАЦЕБО. Метка у станции константа, значит файл
названный по номеру звонка дал бы один файл на все звонки, и беда переехала бы в файл с
другим именем, выглядя вылеченной. Второе: метка приходила позже, чем нужна - мост брал
имя раньше, чем узнавал чей это звонок. Третье: замок на линии не заодно, он
единственное что защищает человека сегодня. Четвёртое: номер звонка из круга 1 по форме
меткой не годится, но нутро то же и превращение однозначно.

Мой нож. Сломал проверку годности метки - ту, без которой лечение плацебо. Его первая
проба покраснела шестью проверками, возврат доказан слепком со снятием невидимых знаков,
сошлось знак в знак. Побочно: вторая его проба на той же поломке осталась ЗЕЛЁНОЙ.
Записал, чтобы следующая смена не считала любую зелёную пробу доказательством.

Вырезание второго рода, случай объявленный мной ДО работы. После ОБОРВАННОГО звонка файл
с именем живого человека остаётся на диске, срок хранения час. Проверка два задачи
требует чтобы файл после конца звонка исчезал и имена людей не копились: для нормального
конца исчезает, для обрыва лежит до часа. Не дыра, а названная цена, но имена это
персональные данные и час их жизни должен быть решением владельца. Выношу, сам не
закрываю.

Датчики: полный прогон моей рукой 5361 проверка, 5357 зелёных, 4 пропущено, красных 0,
арифметика сходится. Девять проверок сверх точки отсчёта НЕ наши - замерил вторым
прибором, в дереве несохранёнными лежат семь изменённых и три новых проверочных файла
соседней смены телеграма. Пробы робота 43, 27 и 179, красных нигде. Сторожа машины 26,
27, 23 зелёные. Сторож текстового следа краснеет одной проверкой, и это правильно: мост в
хранилище починен, а на машине лежит старый, выката не было.
2026-08-07 15:46:54 +03:00
Дмитрий 21c59d6188 docs обзвон: числа полного прогона и проб робота в отчёт по имени за звонок
Портал 5361 проверка, 5357 зелёных, 4 пропущено, красных 0; девять лишних
против точки отсчёта — несведённая работа соседней смены, не моя. Пробы
робота: мои 43 и 27, прежние 23, 179, 26 и 27 — красных нигде нет.
2026-08-07 15:16:54 +03:00
Дмитрий 461d6fa84d docs обзвон: отчёт по имени за звонок — построенное, сторожа, вырезание
Десять вырезаний защит, девять покраснели сразу, десятое вскрыло дыру в охране
и потребовало дописать сторож. Старый порядок краснеет с первой же тройки:
11 чужих имён из 36 звонков. Названо вслух, чего круг не доказывает и что
осталось незакрытым, включая связку выката imya_zvonka.py вместе с most.py.
2026-08-07 15:02:19 +03:00
Дмитрий cc802fadbc docs обзвон: разбор задания и замеры до работы
Четыре возражения по существу: буквальное исполнение плана даёт плацебо,
метка приходит позже, чем нужна, запасной общий файл возвращает беду,
номер звонка по форме меткой не годится.
2026-08-07 14:16:35 +03:00
Дмитрий da9d977aa1 docs обзвон: заведён отчёт помощника по имени за звонок
Скелет разделов, дальше пишется по ходу работы.
2026-08-07 14:01:05 +03:00