e6a6471aa7
Станция. Раздел [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>