From d33aea6305f2e3324d4a711f6bb2eb1cc334d44b Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 4 Nov 2026 01:12:22 +0100 Subject: [PATCH] Record completed MEMBERS version verification and isolation coverage --- doc/group_isolation_plan.txt | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/doc/group_isolation_plan.txt b/doc/group_isolation_plan.txt index d71c1a6a8..0bcd35e00 100644 --- a/doc/group_isolation_plan.txt +++ b/doc/group_isolation_plan.txt @@ -4,6 +4,7 @@ ADMIN_KEY, RADIO_CALL, routed JOIN, CHAT NAT_DETECTION, MULTICAST_REPORT и ATTACHMENT_KEYS из этапа 2, RADIO/BROADCAST/MULTICAST из этапа 3. Из этапа 3 также закрыты текущий допуск DB_SYNC PUSH/ACK, MESSAGES и SOUND_SETTING. +MEMBERS переведён на отложенную проверку версий; JOIN/recovery проверены через настоящий Merkle. Из этапа 4 доработаны FILE_TRANSFER, прямой DM, mailbox/custody и попарная доставка личных файлов. Полная матрица ещё не закрыта. Граница отмены дисковых операций согласована с пользователем и реализована (раздел 5). @@ -648,8 +649,37 @@ FILE_TRANSFER и прямого DM. Для реализации mailbox/custody проходов треугольника: /tmp/member-staged-merkle-stress.log. Полный ./check.sh:241/241, proxy9/9, burst/load PASS, 210с; лог /tmp/member-staged-full-check.log. Сборка ядра и выбранных тестов без предупреждений. - - Модель MEMBERS пока НЕ подключена к новому режиму. Следующий этап — служебные поля + - На момент транспортного этапа модель MEMBERS ещё НЕ подключена к новому режиму. Следующий этап — служебные поля версий в одной таблице, приём в staging, проверка состава и атомарная публикация вместе с допуском; затем контекст JOIN/recovery и отрицательные сетевые сценарии. - Отдельно уточняется удаление прежнего состава при доказанном исключении самого узла; - подтверждённый отзыв нельзя терять или заменять старым разрешающим бэкапом. + Подтверждённый отзыв нельзя терять или заменять старым разрешающим бэкапом. + +04.11.2026: завершён приём и проверка версий MEMBERS. + - CURRENT/PENDING/BACKUP хранятся в одной peers_. Сетевые страницы до конца + обмена не меняют рабочие записи, права, общие ключи узлов и Merkle-хеши. Сервисы, + desktop GUI и Android читают только CURRENT. Старый формат таблицы несовместим; + миграция не добавлялась согласно принятому контракту devel. + - После окончания сверки одна транзакция объединяет подписанные блоки, проверяет + записи и цепочки приглашений, пересчитывает права, ключи и производные индексы. + Неверную новую версию заменяет действительный бэкап. Если обе версии неверны, + удаляются обе версии только этого участника. Отзыв self не удаляет остальной состав. + Независимо подписанный отзыв владельца сохраняется даже при восстановлении профиля. + Отсутствующая зависимость или ошибка SQL/crypto откладывают решение; транзакция + откатывается. Ошибка не публикует callbacks и не считается успешной синхронизацией. + - Каждый одновременный обмен имеет свой sync_id. Его commit сравнивает версии с + актуальным CURRENT, включая уже завершившиеся обмены других пиров; отмена убирает + только собственные временные строки. После рестарта незавершённые версии убираются. + - Источник проверяет текущий допуск self/peer и точный ключ живого ETCP перед выдачей. + Локальный запрос восстановления не выдаёт состав в обратную сторону. После + восстановления допуска явно запускается обычный обмен и завершается ожидающая + сверка соседа; только после свежей проверки допуска возобновляются история/feedback. + BGP-транзит не получил предметных проверок; UTUN не изменён. + - test_member_versions проверяет перестановку завершения двух пиров, независимую + отмену, fallback, удаление двух неверных версий, сохранение отзыва, пропавшего + инвайтера, SQL rollback, рестарт и границы транзакций. test_merkle_protocol проверяет + публикацию только после успешного commit, в том числе отмену сессии из callback. + test_chat_group_isolation:90/90, включая отказ выдачи MEMBERS и recovery на общем ETCP. + Целевые JOIN, group_policy, DM invite/history, RADIO, MEMBER_FILES и STREAM member + прошли. Пять desktop GUI-тестов прошли; Android assembleDebug завершён успешно. + - Это завершение этапа MEMBERS, а не полная матрица всех протокольных ID из этапа 4. + CALL/DEVGROUP и оставшиеся транспортные/bootstrap входы требуют отдельного аудита.