Record attachment isolation checks and resolved deletion conflict
This commit is contained in:
1 parent
614ed165e1
commit
ce840f56b3
2 files changed
+38
-23
No files matched your search
@@ -1,7 +1,7 @@
|
||||
Межгрупповой доступ: план изоляции CHAT-групп
|
||||
Дата: 03.11.2026
|
||||
Статус: этап 1 реализован; доработаны CONN_MGR, MEMBER_FILES, GROUP_AVATAR,
|
||||
ADMIN_KEY, RADIO_CALL, routed JOIN, CHAT NAT_DETECTION и MULTICAST_REPORT из этапа 2,
|
||||
ADMIN_KEY, RADIO_CALL, routed JOIN, CHAT NAT_DETECTION, MULTICAST_REPORT и ATTACHMENT_KEYS из этапа 2,
|
||||
RADIO/BROADCAST/MULTICAST из этапа 3.
|
||||
Полная матрица ещё не закрыта.
|
||||
Граница отмены дисковых операций согласована с пользователем и реализована (раздел 5).
|
||||
@@ -330,19 +330,28 @@ test_multicast: PASS, /tmp/chat-group-multicast-unrestricted.log. Сетевой
|
||||
со старой эпохой, raw-инъекция и сохранение A на общем ETCP. Полный прогон после NAT/MULTICAST:
|
||||
240/240, proxy9/9, burst/load PASS, /tmp/chat-group-nat-multicast-check.log (197с).
|
||||
|
||||
ATTACHMENT_KEYS — в работе, не считать завершённым. Добавлены обязательная crypto/admission
|
||||
router, проверки local send/request/publication и атомарная отмена durable запросов/outbox.
|
||||
State5 обозначает отмену; новый запрос после readmission требует нового решения автора.
|
||||
Полученные ключи и локальная расшифровка сохраняются. Qt показывает отменённое состояние.
|
||||
Ядро собирается, test_attachment_decisions PASS. test_chat_attachment обнаружил конфликт:
|
||||
chat_core_delete_channel уничтожает группу до SQL-транзакции удаления канала. Новый teardown
|
||||
отзывает attachment requests отдельным commit; последующий отказ удаления SQLite уже не может
|
||||
сохранить прежний outbox. Лог: /tmp/chat-group-attachment-core.log, channel_state column3.
|
||||
Нужна согласованная граница: сначала commit удаления метаданных, затем teardown и файлы,
|
||||
с проверкой всех cleanup callbacks на работу после удаления таблиц. При SQL-отказе должны
|
||||
сохраниться канал, его запросы и работающая группа. По правилу AGENTS о логических несоответствиях
|
||||
работа остановлена на этой границе; новая часть не проверена полностью и не отправлена.
|
||||
Оставшиеся тесты ATTACHMENT_KEYS ещё не запускались; fixtures с искусственными peer/state
|
||||
потребуют актуализации (test_attachment_results peer123 без допуска, test_attachment_requests
|
||||
считает state5 недопустимым). Новые тесты отмены/повторного допуска также ещё нужны.
|
||||
ATTACHMENT_KEYS: обязательная crypto/admission router, проверки local send/request/publication
|
||||
и атомарная отмена durable запросов/outbox. State5 обозначает отмену; повторный допуск сам
|
||||
не запускает работу, новый явный запрос требует нового решения автора. Backfill и новая
|
||||
загрузка контейнера не возобновляют отменённый запрос. Поздние ACK/GRANT/DENY не меняют state5.
|
||||
Полученные ключи и локальная расшифровка сохраняются. Qt показывает причину отмены.
|
||||
Проверены rollback всей отмены при ABORT/IGNORE/commit veto, внешняя транзакция, отзыв peer/self,
|
||||
повтор без события, новый запрос/согласие. test_attachment_requests и test_attachment_results PASS;
|
||||
логи /tmp/attachment-final-requests.log и /tmp/attachment-revoke-results.log.
|
||||
Сетевой test_chat_group_isolation: 54/54, /tmp/attachment-group-isolation.log. Настоящие
|
||||
SIGNED/ENCRYPTED запросы A/B создают авторские записи; отзыв B только на получателе
|
||||
отменяет ожидающий GRANT, подписанный пакет со старой эпохой не возобновляет B;
|
||||
ключ A и его RESULT_ACK доходят по тому же живому ETCP.
|
||||
|
||||
Обнаруженный конфликт удаления канала исправлен: chat_core_delete_channel сначала
|
||||
фиксирует удаление метаданных, затем помечает группу stopping и отменяет runtime/файлы.
|
||||
При SQL-отказе сохраняются канал, ключи, запросы/outbox и работающие группа/DB_SYNC.
|
||||
Поздний callback загрузки не трогает удалённое сообщение. test_chat_attachment PASS:
|
||||
14 SQL-отказов удаления и дополнительные каскад/Merkle/commit/rollback сценарии,
|
||||
сохранённый ключ расшифровывает локальный файл после отзыва self, подготовленное
|
||||
исходящее вложение после отзыва не публикуется. Лог /tmp/attachment-worker-revoke.log.
|
||||
Тестовые peer/state приведены к новому контракту. Исправлен отдельный дефект restart-fixture:
|
||||
перезапуск теперь сохраняет прежнюю личность, а не создаёт узел без допуска в канал.
|
||||
Реальный test_encrypted_attachment A–S–B/C PASS, /tmp/attachment-delete-network.log.
|
||||
Полный повтор check.sh и сборка Qt выполняются; итог будет зафиксирован после завершения.
|
||||
STREAM, синхронизация, личные сервисы и полная матрица остаются открытыми.
|
||||
+13
-7
@@ -30,9 +30,13 @@
|
||||
NAT unit/faults PASS; сетевой стенд 40/40. MULTICAST: отмена подписок/доставок и фильтрация общей FIFO,
|
||||
scoped-политика MULTICAST_REPORT; unit PASS, сетевой стенд 50/50. UTUN wire/допуск сохранены.
|
||||
Полный прогон после NAT/MULTICAST: 240/240, proxy9/9, burst/load PASS, /tmp/chat-group-nat-multicast-check.log.
|
||||
ATTACHMENT_KEYS в работе: crypto/admission, durable отмена state5, новый запрос после readmission, Qt-статус.
|
||||
Ядро собрано; test_attachment_decisions PASS. test_chat_attachment FAIL на атомарности удаления канала (задача ниже).
|
||||
По правилу AGENTS работа остановлена до согласованного исправления границы SQL/teardown; эта часть не завершена.
|
||||
ATTACHMENT_KEYS: crypto/admission, атомарная отмена state5, новый явный запрос после readmission, Qt-статус.
|
||||
Отмена не возобновляется от backfill; поздние ответы отвергаются, полученные ключи/локальная расшифровка сохраняются.
|
||||
requests/results/decisions/chat_attachment/encrypted_attachment PASS; rollback отмены, peer/self, новые запросы
|
||||
и completion worker после отзыва проверены. Сетевой стенд54/54: ключ B не выдаётся, A работает по тому же ETCP.
|
||||
Атомарность удаления канала исправлена (задача ниже); restart-fixture сохраняет прежнюю личность узла.
|
||||
Логи: /tmp/attachment-final-requests.log, /tmp/attachment-revoke-results.log, /tmp/attachment-worker-revoke.log,
|
||||
/tmp/attachment-group-isolation.log, /tmp/attachment-delete-network.log. Общий прогон и сборка Qt выполняются.
|
||||
Подмена источника, raw JOIN/invite, личные DM и
|
||||
оставшиеся сервисы ещё не закрыты общей гарантией; точная граница проверок — раздел 5 плана.
|
||||
План исправления и критерии по четырём этапам: [group_isolation_plan.txt](group_isolation_plan.txt).
|
||||
@@ -40,13 +44,15 @@
|
||||
MEMBERS recovery и первичный JOIN требуют отдельных правил. Общие service ID должны сохранить поведение
|
||||
и crypto-требования UTUN. Этапы 2–4 остаются открытыми; выполненная часть и результаты — раздел 5 плана.
|
||||
|
||||
[ ] **Удаление CHAT-канала: commit должен предшествовать отзыву durable работы** — 03.11.2026.
|
||||
[+] **Удаление CHAT-канала: commit предшествует отзыву durable работы** — 03.11.2026.
|
||||
test_chat_attachment воспроизвёл: chat_core_delete_channel сначала уничтожает TOPO_GROUP,
|
||||
teardown отменяет attachment outbox отдельной транзакцией, затем DELETE channels получает ABORT/IGNORE.
|
||||
Канал сохраняется, но outbox уже потерян; /tmp/chat-group-attachment-core.log, channel_state column3.
|
||||
Предлагаемая граница: сначала успешный commit удаления метаданных, затем cleanup runtime/файлов;
|
||||
проверить cleanup callbacks после удаления таблиц. При SQL-отказе сохранить также живую группу.
|
||||
Не ослаблять тест атомарности и не обходить проверку допуска. ATTACHMENT_KEYS пока не считать готовым.
|
||||
Исправлено: сначала успешный commit удаления метаданных, затем stopping и cleanup runtime/файлов.
|
||||
Cleanup callbacks проверены; поздний callback медиа-загрузки не пишет в удалённую историю и не даёт событие.
|
||||
При SQL-отказе сохранены точные записи/outbox/файлы и работающие группа/DB_SYNC. Проверки допуска сохранены.
|
||||
test_chat_attachment PASS, /tmp/attachment-worker-revoke.log; SQL faults/ABORT/IGNORE/commit veto/внешняя
|
||||
транзакция и неудачный rollback. Дополнены проверки runtime и callback после удаления.
|
||||
|
||||
[ ] **Отложено: отдельный допуск UTUN и его API** — 03.11.2026. Не выполнять в текущей задаче по указанию пользователя.
|
||||
По чтению кода: TCP/UDP/ICMP proxy и routing DATA не проверяют входящий router group;
|
||||
|
||||
Reference in new issue
Block a user