ADR 003: Predictive Consistency Router (PCR)¶
Дата: 2026-04-22
Статус: Принято
Автор: Black Swan Core Architecture Team
1. Контекст¶
Существующий ConsistencyRouter (см. Global_State_and_Decision_Pipeline.md) статически классифицирует все обновления состояния на HardState (требует BFT-консенсуса) и SoftState (обрабатывается через CRDT). Однако даже в SoftState значительная доля обновлений, особенно в распределённом рое, приводит к возникновению Conflict Nodes — ситуаций, когда автоматическое слияние невозможно и требуется дорогостоящее разрешение через Semantic BFT или LLM-арбитраж.
С внедрением Strict AST-First Merge (см. Memory_Hierarchy_Mem0g.md) количество Conflict Nodes снизилось на 70–85%. Однако оставшиеся 15–30% всё ещё создают нагрузку на BFT-сеть и требуют вычислительных ресурсов. Анализ логов Meta-Mem0g показал, что многие Conflict Nodes можно предсказать заранее по признакам входящего обновления (тип узла, семантическое расстояние до существующего графа, репутация отправителя).
Ручное добавление правил в ConsistencyRouter для предотвращения таких конфликтов непрактично из-за быстро меняющейся структуры графа знаний.
2. Решение¶
Внедрить Predictive Consistency Router (PCR) — ML-расширение над статическим ConsistencyRouter.
PCR состоит из трёх компонентов:
- Conflict Predictor: Легковесная модель машинного обучения (LightGBM / ONNX), обученная на исторических
ConflictNodeиз Mem0g. Она принимает на вход вектор признаков входящегоSoftState-обновления (тип узла, эмбеддинг содержимого, семантическое расстояние, дивергенция векторных часов, репутация создателя, историческая частота конфликтов) и выдаёт вероятность того, что данное обновление приведёт к конфликту. - Adaptive Threshold Controller: Динамически регулирует порог срабатывания PCR на основе текущей загрузки BFT-сети, точности предиктора и общей доли Conflict Nodes в системе.
- Fallback: Если confidence предиктора ниже 0.75 или PCR недоступен,
ConsistencyRouterиспользует стандартную статическую логику.
Алгоритм:
- Если предсказанная вероятность конфликта ≥ порога → обновление превентивно направляется на Semantic BFT, минуя стадию создания Conflict Node.
- Если вероятность < порога → стандартная CRDT-обработка.
Ожидаемый эффект: снижение количества Conflict Nodes на 30–40% дополнительно к Strict AST-First Merge, что в сумме даёт до 90% сокращения по сравнению с оригинальной CRDT-стратегией.
3. Последствия¶
Положительные¶
- Снижение нагрузки на BFT. Превентивное разрешение уменьшает количество конфликтов, требующих полного BFT-квитирования.
- Ускорение синхронизации. Меньше Conflict Nodes → меньше задержек в репликации графа знаний.
- Самообучение. Каждое решение PCR записывается в L0
Meta-Mem0g(категорияPREDICTIVE_ROUTING), иMeta-Analyzerеженедельно анализирует эффективность, при необходимости инициируя переобучение модели.
Отрицательные¶
- Риск ложных срабатываний. Превентивное направление на BFT для неконфликтных обновлений создаёт излишнюю нагрузку. Защита: Adaptive Threshold + A/B-тестирование в shadow-режиме перед полной активацией.
- Задержка инференса. PCR добавляет до 10 мс (p95) к обработке
SoftState-обновления. Для некритичных обновлений это приемлемо; для Fast PathSoftStatePCR не применяется. - Устаревание модели. Еженедельное переобучение на свежих данных обязательно.
Нейтральные¶
- Требуется накопление минимум 90 дней исторических данных о конфликтах перед обучением первой модели PCR. До этого PCR работает в режиме
disabled.
4. Связь с другими документами¶
- ConsistencyRouter и GlobalState: Global_State_and_Decision_Pipeline.md
- Strict AST-First Merge: Memory_Hierarchy_Mem0g.md (раздел 2.2)
- L0 Meta-Mem0g интеграция: Memory_Hierarchy_Mem0g.md (раздел 8)
- Конфигурация в global_policy.json: секция
predictive_routing