Conflict Resolution

Алгоритм разрешения разногласий между агентами. Конфликт = сигнал, не помеха.

Главное правило: результат конфликта никогда не усредняется, не выбирается по confidence, не решается голосованием. См. INV-5.


Когда возникает конфликт

СитуацияПример
Scout и Researcher расходятся в числахScout: “TAM = 1.2B”
Два Researcher на одной задаче дали разные выводыR1: “рынок растёт”, R2: “рынок стагнирует”
Director и CEO не согласны по scopeDirector: “нужно расширить”, CEO: “scope fix”
Новые данные противоречат ранее записаннымWeek 2 report: “15 конкурентов”, Week 3 run: “26 конкурентов”

Алгоритм (4 шага)

Шаг 1: Зафиксировать разногласие

Агент, обнаруживший конфликт:

{
  "conflict_detected": true,
  "claim_a": {"source": "competitor_scout", "value": "TAM = $5B", "evidence": ["url1", "url2"]},
  "claim_b": {"source": "market_researcher", "value": "TAM = $1.2B", "evidence": ["url3"]},
  "conflict_type": "numeric_divergence",
  "divergence": "4.2x"
}

Обязательно: оба варианта сохранены полностью. Ничего не удаляется.

Лог: audit.conflict_detected {type, agents, divergence}

Шаг 2: Определить Primary Authority

По матрице DecisionRights и роли агентов:

Тип конфликтаPrimary AuthorityПочему
Market data (TAM/SAM/pricing)MarketResearcherЕго специализация — market analysis
Competitor list / featuresCompetitorScoutЕго специализация — competitor search
Strategic interpretationIntelDirectorОн агрегирует и интерпретирует
Budget / resource allocationCEOЕго зона ответственности
Factual data (dates, names, URLs)Тот у кого primary source (URL)Проверяемые факты

Primary Authority делает финальный вызов: выбирает одну из версий с обоснованием. Вторая версия сохраняется как "alternative_view" в result.

Шаг 3: Если authority неоднозначна → Judge

Когда конфликт не попадает в таблицу выше, или оба агента имеют equal authority:

  1. Judge agent (когда 3.2 готов) оценивает оба варианта по:

    • Quality of evidence (количество и надёжность источников)
    • Internal consistency (нет ли противоречий внутри каждой версии)
    • Recency (более свежие данные предпочтительнее)
  2. Judge выбирает версию с обоснованием или возвращает "unresolvable".

Judge agent conflict resolution: реализация в Week 3.2, код в synth-brain/src/synth_brain/agents/judge/. См. Agent-Judge для спецификации роли.

Note: Until Judge enforcement layer ships, enforcement steps executed manually by Founder + Strategy Claude. Judge-the-agent is operational (running in Navigator/Chamber), Judge-as-governance-enforcer is planned.

Шаг 4: Если Judge не разводит → Human

Escalate Human Owner с полным контекстом:

🔀 Conflict: [тип]

Agent A (Scout): [версия A, 2-3 предложения]
Agent B (Researcher): [версия B, 2-3 предложения]

Judge assessment: unresolvable / [причина]

Sources A: [urls]
Sources B: [urls]

Please choose version or provide resolution.

Timeout: 24 часа. Нет ответа → task killed, конфликт записан в Decision-Log для будущего reference.


Запрещённые способы разрешения

СпособПочему запрещён
Усреднение”TAM = 5B и $1.2B) — бессмысленно, нет в реальности
Голосование2 vs 1 не означает правоту большинства
Выбор по confidenceConfidence субъективен, высокий confidence ≠ правильность
ИгнорированиеКонфликт замалчивается — данные для решений будут противоречивы

Метрики

МетрикаTarget
Conflicts per 100 tasksTrack (нет target — конфликты нормальны)
% resolved by Primary Authority> 70% (иначе authority плохо определена)
% escalated to Human< 10% (иначе Judge/Authority не работают)
Mean time to resolution< 2ч (agent) / < 24ч (human)

Связанные документы