You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
🛡️ Gate стоит на каждом выходе в Telegram - служебные уведомления с живым текстом (ошибка провайдера, вывод iva doctor, лог сборки) уходили в чат мимо фильтра, и ключ из такого сообщения доезжал до вас целиком. Теперь гейт живёт на самом вызове Bot API, поэтому Outbox, мост, апдейтер, доктор и любой экран, который напишут завтра, закрыты одной точкой. Заодно переписаны шаблоны ключей: из 13 реальных форм 8 не матчились вовсе (среди них sk-ant-…, sk-or-v1-… и sk-proj-…), теперь у каждого провайдера свой шаблон и своё имя в логе. Логин с паролем внутри адреса (https://user:pass@host) вырезается по позиции, а не по форме ключа. Секрет на стыке чанков больше не проскочит - гейт срабатывает до нарезки сообщения.
🧠 Атомарная запись и локи собраны в один модуль - идиома «пиши во временный файл, потом переименуй» была скопирована семь раз, локов набралось четыре разных вида: три схемы имён для временного файла (одна общая, так что два писателя могли затереть друг друга), четыре паузы перед повтором, два способа доказать, что лок твой. Теперь это agent/lib/fs-atomic.ts, механизм в модуле, а таймауты и режимы файлов остались у вызывающего кода. Тесты бьют по больному: процесс убит между записью и переименованием, две записи в один файл, протухший лок; каждый прогнан против мутантов и печатает свой seed. Обещание ADR-0002 «данные не теряются» опирается наконец на один проверенный кусок кода.
📦 Обновление не падает из-за занятого порта - health-проба находила свободный порт, отпускала его, и через сотни миллисекунд версия занимала его по-настоящему. Второй апдейтер на той же машине умирал с EADDRINUSE, хотя с обновлением всё было в порядке, а на macOS такая проверка слепа в принципе. Теперь проба отличает занятый порт от невзлетевшей версии и перебирает до четырёх кандидатов.
🧹 Граница ядра закрыта - telegram.ts ужался с 1470 строк до 427, наружу ведёт только Outbox. Тест-сторож держит ноль побегов из agent/ в scripts/ и ловит импорты ради побочного эффекта и запуск чужих точек входа. Frontmatter разбирает один парсер, расписания живут в одной таблице.