# Подписанная запись узла `TOPO_NODE.timestamp` — версия всей подписанной записи, а не отдельного адреса. Узел-владелец назначает Unix microseconds, строго больше предыдущей сохранённой версии. Имя, тип, активность, адреса, метаданные сокетов, REALITY и подпись заменяются вместе. Timestamp входит в подпись. Групповые пути и подсети остаются в `TOPO_GROUP_NODE` и не являются частью общей записи узла. Получатель проверяет подпись до изменения реестра или маршрутов. Более свежая запись заменяет старую целиком, включая пустые списки адресов. Старые записи игнорируются; разные подписанные записи с одинаковым timestamp — конфликт. Повторное BGP-объявление может обновить путь, но не содержимое общей записи. 8-битный `ver` сохраняется как диагностический счётчик; свежесть определяется только timestamp. Таблица `node_snapshots` хранит полную сериализованную запись без группового окружения. `node_addresses` остаётся проекцией для поиска и отображения, а не источником для восстановления подписанной записи. При наличии сохранённого snapshot загрузка использует его. Локальная публикация сохраняется до рассылки; ошибка сохранения не разрешает публикацию новой версии. Timestamp 0 обозначает bootstrap-сведения без подписи (конфиг, приглашение, начальные адреса). Они могут помочь установить первое соединение, но не заменяют принятую подписанную запись. По BGP принимаются подписанные записи с ненулевым timestamp. Формат NODEINFO изменён без обратной совместимости. После принятия BGP-записи `node_conn_direct_update_node` применяет адреса к существующему NCD-соединению. Отсутствующее соединение этот вызов не создаёт. Линки дополняются как при UP, так и до установления соединения; повторная доставка не создаёт дубликаты UDP/TCP. Работающие линки не закрываются только из-за смены списка адресов. NCD удерживает ссылку на общую запись, пока обслуживает соединение, и использует её при восстановлении. `node_conn_direct_open_node` сверяет переданную запись с реестром/БД. Более свежая подписанная запись принимается целиком, старая уступает уже известной. Bootstrap-адреса не перекрывают подписанную запись даже при DOWN. Конфигурационные подключения UTUN используют один адаптер `init_client_connections` для старта и reload. Все адреса, TCP и REALITY передаются NCD; адаптер не создаёт ETCP-линки. Новый набор handles открывается до освобождения старого; при ошибке старые handles сохраняются. Конфигурация удерживает один handle на клиента, независимо от количества его адресов. Включение конфигурационного пира в UTUN-группу выполняет callback NCD UP. Транспортный UP и наличие callback старого `etcp_connect` больше не включают соединение в UTUN-группу автоматически. Входящий JOIN остаётся явным запросом участия. При пересоздании UTUN-группы учитываются её конфигурационные handles. Удаление клиента отправляет `LEAVE_GROUP` и освобождает удержание UTUN-группы с обеих сторон. Другие владельцы NCD сохраняют транспорт. Поздние NODEINFO и WITHDRAW от отсоединённого UTUN-пира игнорируются, чтобы не вернуть его маршруты. LEAVE ждёт backpressure через queue waiter и временно удерживает собственный NCD handle. Закрытие транспорта отменяет ожидание; новое участие в группе делает ожидающий LEAVE устаревшим, и он не отправляется. Причина удаления пира передаётся явно: только потеря транспорта запускает recovery каскадных маршрутов. Локальный/удалённый LEAVE и удаление битой member-записи не должны восстанавливать намеренно закрытое участие. REALITY использует полное SNI до 255 символов; размер поля в записи узла согласован с транспортом. Если локального TCP listen-сокета нет, NCD может создать исходящий TCP-линк с выбором локального адреса операционной системой.