From 8e2036b43560c59e335a54bf1f79bfa95d73bc6e Mon Sep 17 00:00:00 2001 From: evgeny Date: Mon, 26 Oct 2026 13:12:40 +0100 Subject: [PATCH] Document feedback startup failure for excluded historical authors --- src/chat/chat_feedback.h | 4 +++- src/chat/merkle_sync_doc.md | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/chat/chat_feedback.h b/src/chat/chat_feedback.h index a9f83831..f5d2b86b 100644 --- a/src/chat/chat_feedback.h +++ b/src/chat/chat_feedback.h @@ -29,7 +29,9 @@ struct chat_feedback_record { /* Производный ID неизменяемого сообщения; 0/-1. Числа хешируются как BE64. */ int chat_message_id(uint64_t channel_id, uint64_t timestamp, const uint8_t signature[64], uint8_t id[32]); -/* Регистрирует FEEDBACK и восстанавливает производный индекс из подписанных записей; 0/-1. */ +/* Регистрирует FEEDBACK и восстанавливает производный индекс из подписанных записей; 0/-1. + * Известный дефект: сохранённая запись автора с deleted=1 приводит к -1 и отказу chat_sync_init. + * История и текущий допуск пока используют одну проверку; см. doc/member_merkle_audit_findings.txt, раздел7. */ int chat_feedback_init(struct UTUN_INSTANCE* inst); /* Подготовить таблицу канала; 0/-1. Не создаёт членство или сетевую группу. */ int chat_feedback_ensure_channel(struct UTUN_INSTANCE* inst, const char* channel); diff --git a/src/chat/merkle_sync_doc.md b/src/chat/merkle_sync_doc.md index 5538c1a3..f303c39a 100644 --- a/src/chat/merkle_sync_doc.md +++ b/src/chat/merkle_sync_doc.md @@ -3,6 +3,8 @@ Аудит 26.10.2026 частичный: движок и адаптер участников прочитаны полностью, контракты ниже уточнены; найденный дефект очистки member_sync исправлен отдельно. Разделы feedback/опросов целиком не пересверены в этом аудите. +Продолжение остановлено на подтверждённом отказе запуска feedback после исключения +автора сохранённого состояния. Исправление очистки завершено; новый дефект описан в разделе7 отчёта. Результаты: [отчёт](../../doc/member_merkle_audit_findings.txt). ## Разделение ответственности @@ -140,6 +142,10 @@ Wire-запись: message_id:32, node_id:8, kind:1, ver:8, data_len:2, data, si Хеш листа включает канонические тела без signature: разные корректные подписи одного тела не создают расхождения корней. Входящие и сохранённые подписи всё равно проверяются. Членство проверяется через подписи дерева приглашений и join, привязывающий Ed25519 к узлу. +Текущий member_sync_verified_ed25519 также требует deleted=0. Его повторное применение +ко всем сохранённым feedback при init вызывает отказ запуска после исключения автора; +собственное членство узла и другие каналы могут оставаться корректными. +Контракт исторических состояний после исключения ещё требует согласования. Слой feedback хранит подписанные байты независимо от наличия исходного сообщения; семантику выбранных пунктов и эмодзи проверяет вызывающий модуль до учёта результата.