Skip to content

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 состоит из трёх компонентов:

  1. Conflict Predictor: Легковесная модель машинного обучения (LightGBM / ONNX), обученная на исторических ConflictNode из Mem0g. Она принимает на вход вектор признаков входящего SoftState-обновления (тип узла, эмбеддинг содержимого, семантическое расстояние, дивергенция векторных часов, репутация создателя, историческая частота конфликтов) и выдаёт вероятность того, что данное обновление приведёт к конфликту.
  2. Adaptive Threshold Controller: Динамически регулирует порог срабатывания PCR на основе текущей загрузки BFT-сети, точности предиктора и общей доли Conflict Nodes в системе.
  3. 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 Path SoftState PCR не применяется.
  • Устаревание модели. Еженедельное переобучение на свежих данных обязательно.

Нейтральные

  • Требуется накопление минимум 90 дней исторических данных о конфликтах перед обучением первой модели PCR. До этого PCR работает в режиме disabled.

4. Связь с другими документами