Keep per-record fallback distinct from membership revocation

This commit is contained in:
evgeny committed 2026-11-04 00:29:59 +01:00
1 parent b0c762aea7
commit bd175ac87f
2 files changed
+4 -4

No files matched your search

+1 -1
View File
@@ -571,7 +571,7 @@ int topo_node_sqlite_channel_put(sqlite3* db, const char* channel_id,
"CREATE TABLE IF NOT EXISTS \"%s\" ("
" id INTEGER PRIMARY KEY AUTOINCREMENT," /* суррогатный ключ */
" node_id INTEGER NOT NULL," /* ID участника; версии разделяются служебными полями */
" record_state INTEGER NOT NULL DEFAULT 0 CHECK(record_state BETWEEN 0 AND 3),"
" record_state INTEGER NOT NULL DEFAULT 0 CHECK(record_state BETWEEN 0 AND 2),"
" sync_id INTEGER NOT NULL DEFAULT 0," /* 0 у опубликованных записей, id маркера приёма у временных */
" previous_id INTEGER," /* прежняя версия на момент получения; не основание для отката новой */
" sync_policy BLOB," /* подписанная политика только у маркера приёма (node_id=0) */
+3 -3
View File
@@ -19,9 +19,9 @@
/* Версии в одной peers_<channel>. Все обычные операции читают/меняют только CURRENT.
* PENDING принадлежит одному приёму sync_id; previous_id связывает её с прежней строкой.
* BACKUP существует только внутри транзакции проверки. REVOKED хранит доказательство
* отзыва после удаления состава и никогда не даёт прав, профилей или сетевых адресов. */
enum peer_record_state { PEER_CURRENT = 0, PEER_PENDING = 1, PEER_BACKUP = 2, PEER_REVOKED = 3 };
* BACKUP существует только внутри транзакции проверки. Подписанный отзыв — обычная
* проверенная запись CURRENT с запретом допуска, а не причина удалить весь состав. */
enum peer_record_state { PEER_CURRENT = 0, PEER_PENDING = 1, PEER_BACKUP = 2 };
/* Результаты channel_get/get_ed25519_pubkey: отсутствие зависимости и отказ чтения различаются. */
#define TOPO_SQLITE_LOOKUP_MISSING (-1)