Escalation Policy
Конкретные триггеры остановки агента. Каждый триггер — machine-checkable условие.
Отличие от Process-Escalation: Process описывает как эскалация работает (шаги, уровни, формат). Этот документ описывает когда агент обязан остановиться.
Триггер 1: Cost Overrun
Условие: task.cost_spent > task.budget_usd * 1.2 (потрачено > 120% бюджета)
| Порог | Действие | Лог |
|---|---|---|
| 80% бюджета | Warning в контекст агента: “Be concise, 80% budget used” | audit.budget_warning |
| 100% бюджета | Soft stop: завершить текущий LLM call, не начинать новый | audit.budget_reached |
| 120% бюджета | Hard stop: status = 'failed', escalate | audit.budget_overrun |
Кому: Director (если Executor) → CEO (если Director) → Human (если CEO или > $10)
Связь: Rules-Budget, INV-3
Триггер 2: Confidence Drop
Условие: агент вернул result.confidence < threshold (thresholds: INV-4)
| Тип задачи | Threshold | Действие |
|---|---|---|
| Критическая (деплой, коммуникация) | < 0.8 | Stop + escalate Human |
| Стандартная (research, analysis) | < 0.6 | Stop + escalate Director/CEO |
| Некритическая (formatting) | < 0.4 | Retry 1x с другим подходом, затем escalate |
Лог: audit.low_confidence {confidence, threshold, task_type}
Запрещено: выполнять задачу при confidence ниже threshold. Ни “попробую”, ни “скорее всего”.
Триггер 3: Conflicting Evidence
Условие: агент обнаружил, что источники противоречат друг другу по ключевому выводу.
Признаки конфликта:
- Два источника дают разные числа для одной метрики (TAM, pricing, user count) с расхождением > 2x
- Источник A утверждает X, источник B утверждает NOT X
- Scout и Researcher пришли к взаимоисключающим выводам
Действие:
- Зафиксировать оба варианта в result с пометкой
"conflicting_evidence": true - Не выбирать “более надёжный” — оба сохраняются
- Escalate → Director (или CEO, если Director = источник конфликта)
Лог: audit.conflicting_evidence {claim_a, claim_b, sources}
Связь: ConflictResolution, INV-5
Триггер 4: Tool Failure (3+ retries)
Условие: один и тот же tool call (web_search, LLM call, DB query) failed 3 раза подряд.
Действие:
- Stop: не пытаться 4-й раз
- Сохранить partial result (что удалось до failure)
status = 'failed', error содержит все 3 error messages- Escalate → Director
Лог: audit.tool_failure_exhausted {tool, attempts: 3, errors: [...]}
Не путать с: Judge rejection (это отдельный триггер — Условие 6)
Триггер 5: Out-of-Scope Drift
Условие: задача расползается за рамки original brief.
Machine-checkable признаки:
- Агент создал > 2x child tasks от запланированного
- Суммарный token count children > 3x parent budget_tokens
- Агент вызывает tools не из своего
allowed_toolsсписка - Payload содержит тему, не пересекающуюся с original question (semantic drift — проверяется Judge в 3.2)
Действие:
- Pause: завершить текущий шаг
- Escalate → Director с отчётом: “Original scope: X. Current scope: Y. Drift detected.”
- Director решает: продолжить с расширенным scope / вернуть к original / kill
Лог: audit.scope_drift {original_scope, current_scope, drift_signal}
Триггер 6: Policy Violation Risk
Условие: следующее действие агента может нарушить инвариант (Invariants) или правило Codex.
Примеры:
- Агент собирается отправить данные на внешний API (INV-1)
- Task result не содержит _meta (INV-2)
- Агент собирается потратить > budget без approval (INV-3)
Действие:
- Немедленная остановка (до выполнения действия, не после)
- Escalate → CEO + Human (Codex violation = highest priority)
- Task:
status = 'escalated',escalation_reason = 'policy_violation_risk'
Лог: audit.policy_violation_risk {invariant, action_blocked, context}
Триггер 7: Chamber Escalation
Условие: во время исполнения pipeline сработал любой критерий Level 2 или Level 3 по CriticalityPolicy.
Machine-checkable признаки:
- Level 1 условия не выполнены целиком (хотя бы одно из пяти: confidence < 0.8, conflicting evidence, Judge < 6/10, impact > $5, non-factual question)
- ИЛИ сработал явный Level 3 триггер (Go/No-Go на нишу, impact > $10, Judge FAIL, конфликтующие evidence на стратегическом вопросе, founder explicit request, confidence < 0.5, reputation/legal/financial экспозиция)
- ИЛИ предыдущая Level 2 сессия вернула arbiter confidence < 8/10
Действие:
- Определить уровень по CriticalityPolicy §Criticality Assessment Procedure
- Level 2 → запустить auto-quorum Chamber session без участия founder’а. Если arbiter confidence ≥ 8/10 → результат auto-accepted, pipeline продолжается. Если < 8/10 → auto-escalate в Level 3.
- Level 3 → запустить full Chamber session с участием founder’а (blocking). Founder выбирает роль: Approver / Challenger / Contributor / Verifier.
- В обоих случаях: mandatory trace в session artifact по MultiLLMDeliberationPolicy §Audit Trail.
Лог: audit.chamber_escalation {level, trigger_criteria, question}
Связь: CriticalityPolicy, MultiLLMDeliberationPolicy, Deliberation-Chamber-Module, ADR-0016-chamber-v2-vision
Сводная таблица
| Триггер | Действие | Escalate to | Priority |
|---|---|---|---|
| Cost > 120% | Hard stop | Director → CEO → Human | high |
| Confidence < threshold | Stop | Director/CEO/Human (по типу) | high |
| Conflicting evidence | Stop + save both | Director | medium |
| Tool failure 3x | Stop + save partial | Director | medium |
| Scope drift | Pause | Director | medium |
| Policy violation risk | Immediate stop | CEO + Human | critical |
| Chamber Level 2 criteria met | Auto-quorum Chamber (no founder) | CEO | medium |
| Chamber Level 3 criteria met | Full Chamber + founder participation | Human | high |
Связанные документы
- Process-Escalation — механика эскалации (шаги, формат, уровни)
- Codex — Red Lines
- Invariants — 5 инвариантов
- DecisionRights — кто что решает
- Rules-Budget — бюджетные пороги
- CriticalityPolicy — три уровня критичности решений (Trigger 7)
- MultiLLMDeliberationPolicy — операционные правила Chamber
- Deliberation-Chamber-Module — архитектура Chamber