From 6f261cd5df14af2bc68f5cd72d3d52e03e482d47 Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 4 Nov 2026 01:51:51 +0100 Subject: [PATCH] Document supported invitation entry and call revocation policy --- AGENTS.md | 1 - doc/group_isolation_plan.txt | 13 +++++++------ src/routing_layer/conn_mgr_doc.md | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 97e4468bb..cbff45c8e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -394,7 +394,6 @@ UASYNC/LL_QUEUE/MEMORY/TIMING объединены в SYS, NORMALIZER/BBR — в - `route_connectivity.c/h` - Прямые UDP/TCP-пробы адресов узла для оценки достижимости и RTT при выборе пиров - `topo_group.c/h` - Сессии UTUN/CHAT (JOIN/ACCEPT, эпохи, READY), групповые запросы, NODEINFO/WITHDRAW и владение NCD - `topo_group_connect.c/h` - Подбор пиров CHAT-группы по роли: суперузлы → desktop → mobile; история/RTT внутри класса, backoff и standby burst -- `topo_group_invite.c/h` - Получение описания канала через INVITE_INFO_REQ/RESP; добавление мембера реализовано в chat_join/chat_sync - `topo_node.c/h` - Модель TOPO_NODE/TOPO_GROUP_NODE, подписанные снимки узлов, сериализация и общий node_registry - `topo_node_sqlite.c/h` - Хранение подписанных снимков узлов, адресов, каналов и блоков мемберов в общей SQLite - `topo_recovery.c/h` - Восстановление потерянных маршрутов группы через READY-сессии, отмена попыток при stop diff --git a/doc/group_isolation_plan.txt b/doc/group_isolation_plan.txt index 9c808820b..224568bd6 100644 --- a/doc/group_isolation_plan.txt +++ b/doc/group_isolation_plan.txt @@ -6,6 +6,8 @@ RADIO/BROADCAST/MULTICAST из этапа 3. Из этапа 3 также закрыты текущий допуск DB_SYNC PUSH/ACK, MESSAGES и SOUND_SETTING. MEMBERS переведён на отложенную проверку версий; JOIN/recovery проверены через настоящий Merkle. Из этапа 4 доработаны FILE_TRANSFER, прямой DM, mailbox/custody и попарная доставка личных файлов. +CALL/аудио/видео и DEVGROUP подключены к общему допуску; отзыв отменяет звонок/приглашение без переноса группы. +Устаревший GROUP_INVITE удалён; STREAM проверяет допуск при приёме и выходе из общей FIFO управления. Полная матрица ещё не закрыта. Граница отмены дисковых операций согласована с пользователем и реализована (раздел 5). Уточнение объёма: по указанию пользователя UTUN пока не дорабатывать. @@ -126,7 +128,7 @@ STREAM имеет собственные сессии и проверки уча 2.4. Bootstrap, синхронизация и личные данные Routed JOIN обслуживает A-C, уже состоящих в канале; ему применим групповой допуск -и защита controls. Новый J входит через raw CHAT_SYNC/GROUP_INVITE. Исключения +и защита controls. Новый J входит через raw CHAT_SYNC JOIN. Исключения разрешают только конкретную команду добавления с проверенным invite/add_key, целевой идентичностью, каналом, attempt и сроком действия. Временного членства нет. @@ -137,7 +139,7 @@ MEMBERS/Merkle может требоваться до admitted=1 для полу наличие строки, placeholder или tombstone нельзя молча объявить достаточным правом: каждый разрешённый bootstrap/recovery случай должен иметь отдельный тест. -Последовательность следующей доработки MEMBERS: +Исходный план доработки MEMBERS (выполнение описано в записях от 04.11 ниже): - Отделить обычный допуск от первого получения состава после JOIN_READY и восстановления состава при неполной цепочке подписантов. Проверить каждую причину admitted=0 отдельно. - Сейчас JOIN_INFO_RESP сохраняет запись connection-узла, JOIN_READY завершает локальный @@ -149,10 +151,9 @@ MEMBERS/Merkle может требоваться до admitted=1 для полу placeholder, tombstone и старый READY сами по себе не являются основанием восстановления. Для повторного восстановления после restart отдельно определить проверяемое основание, не превращая историческую подпись в бессрочный доступ удалённого участника. - - Проверить raw GROUP_INVITE отдельно: действующий INFO_REQ передаёт только group_id, - без invite-ключа, и выдаёт описание канала любому ETCP-пиру. Не считать его уже - ограниченным правилами CHAT_SYNC JOIN_INFO_REQ; унифицировать с актуальным входом JOIN - либо явно ограничить назначение этого старого API и добавить отрицательные тесты. + - Raw GROUP_INVITE не имел проверок invite-ключа и не использовался клиентами. + В доработке от 04.11 endpoint, клиентский API и модуль удалены; ID0x13 зарезервирован. + Описание канала при вступлении выдаёт только актуальный CHAT_SYNC JOIN_INFO_REQ. Для DM/CALL/DEVGROUP/FILE_TRANSFER разделять право пользоваться маршрутом группы и право на личную беседу, вызов или объект. Сохранить проверки адресата и E2E, diff --git a/src/routing_layer/conn_mgr_doc.md b/src/routing_layer/conn_mgr_doc.md index c61ba63b8..9f2c2559b 100644 --- a/src/routing_layer/conn_mgr_doc.md +++ b/src/routing_layer/conn_mgr_doc.md @@ -120,7 +120,7 @@ EXCHANGE_REQ 37, EXCHANGE_RESP 68, SELECTED/ACK 37. Массивы на пров request_id ненулевой; ноль пропускается при переполнении счётчика. DIRECT_RESP и DISCONNECT удалены; неизвестные команды отклоняются с WARN. Удалённый узел не может командой закрыть локальную потребность сервиса. -Добавление участников и получение описания канала — chat_join/member_sync и topo_group_invite. +Добавление участников и получение описания канала по ключу приглашения — chat_join/chat_sync и member_sync. ## Фоновые проверки и освобождение