diff --git a/AGENTS.md b/AGENTS.md index 02ea4284..b38e3567 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -313,28 +313,7 @@ SOCKET=14, CONTROL=15, DUMP=16, TRAFFIC=17, DEBUG=18, GENERAL=19, NAT=20 - В клиентском конфиге есть собственные ключи и pubkey каждого сервера в секции `[client]` ## Bugs Debugging Protocol - -### Действия при поиске бага: -1. Создать комит или бэкап всего что меняешь -2. Когда причина бага найдена и устранена - верни всё остальное что менял в исходное состояние -3. Проверь что тесты проходят и всё работает. `make clean` перед сборкой обязательно. -4. Если баг не устранён - продолжай поиск или если время заканчивается - верни всё в исходное состояние -5. Если баг сложный и непонятно где искать - не гадай, а продумай как добавить диагностику которая покажет где именно баг. - - -### Эффективная диагностика: -0. Сосредоточься на поиске конкретной ошибки и доведи его до конца. Лучший путь - добавить диагностические сообщения/хуки/дополнительные проверки которые упростят поск бага и покажут где именно имкать проблему. - важно: нельзя вносить исправления только неа основе рассуждений - без точной диагностики бага в рантайме. сперва собираем отладочную информацию которая выявит проблемы путём добавления отладочного вывода, запуска, корректровки отладочного вывода по результатам. - и только когда будет достаточно данных для очевидного доказательства проблемы - исправляем и проверяем. исправление без очевидного доказательства запрещено! -1. Прочитай полностью код функций с ошибкой и код всех функции которые участвуют в ошибочном алгоритме -2. Мысленно выполни предполагаемый сценарий ошибки (нельзя додумывать - нужна точность): - - Убедись что точно понимаешь как алгоритм приходит к ошибке - - Все функции которые участвуют в сценарии ошибки проанализированы - - Последовательно отсекай логически законченные блоки которые проверены и точно правильно работают - - Если функция работает логически корректно - поправь описание. Если неверно - добавь в todo.txt -3. Если исправление меняет поведение функции: - - Просмотри где используется эта функция - - Убедись что изменение поведения не повлияет на остальные места +Всегда когда начинаешь диагностику ознакомься со скиллом (используй skills) ### Прочие правила: - sed для редактирования исходников - запрещено @@ -345,6 +324,13 @@ SOCKET=14, CONTROL=15, DUMP=16, TRAFFIC=17, DEBUG=18, GENERAL=19, NAT=20 - Перед сборкой всегда make clean - Все лишнее что менял при отладке - строго вернуть назад в состояние до вмешательства +## Написание кода +- Строго обязательно наличие ERROR сообщений во всех ошибочных ветвях алгоритма +- Обязательно наличие диагностических сообщений в ветках инициализации-очистки, с информацией которая позволяет оценить наиболее полно внетренние состояния на момент печати сообщения. Например выявить неправильные состояния, неинициализированные поля итд +- Обязательно наличие подробной диагностики в функциях кода которые не сильно спамят (не часто вызываются). +- Для каждого отладочного вывода подумай какая из доступной информация будет полезна чтобы можно было наиболее завершенно оценить состояние алгоритма и состояний влияющих на алгоритм. + + ## Key Documentation Files - `/doc/etcp_protocol.txt` - ETCP протокол (формат кодограмм, ACK, handshake, keepalive) - `/doc/etcp_arch.md` - ETCP архитектура