1 · Principal / identity
Хто реально ініціює дію: user, service, delegated agent або operator. Identity береться з authoritative auth/session layer, а не зі слів моделі.
Exit criterionЄ stable principal ID, tenant, roles, authentication strength і delegation chain.
2 · Task eligibility
До model/tool selection deterministic policy перевіряє, чи цей тип задачі взагалі дозволений для principal, tenant, jurisdiction, data class і current system state.
Exit criterionНедопустима задача блокується до LLM planning; denial має reason code і audit event.
3 · Capability scope
Agent отримує не “CRM access”, а мінімальну capability: read account, draft refund, create ticket, request approval. Read, draft, write і consequential actions — різні scopes.
Exit criterionTool catalog фільтрується за effective scopes; unavailable capability неможливо викликати навіть через prompt injection.
4 · Action contract
Перед side effect формується exact canonical action: target, operation, normalized arguments, amount/resource/version, expected preconditions, idempotency key і expiry.
Exit criterionApproval та audit прив’язані до action hash, а не до розмитого “дозволяю агенту продовжити”.
5 · Policy + approval gate
Deterministic business rules вирішують, чи дія дозволена автоматично, потребує step-up authentication, human approval або заборонена. Model confidence не замінює authority.
Exit criterionHigh-impact дія не може виконатися без required policy decision та exact-action approval.
6 · Execution boundary
Application/tool executor повторно перевіряє identity, scope, freshness, approval і preconditions безпосередньо перед write. Tool schema validation — необхідна, але не є authorization.
Exit criterionMalformed, stale або over-scoped request fail-closed; executor не покладається на прихований context моделі.
7 · Authoritative postcondition
Після execution система читає system of record і перевіряє фактичний результат: refund існує, ticket створений, permission змінено, commit з’явився. “Tool returned success” недостатньо.
Exit criterionDONE ставиться тільки після verified postcondition; partial/pending/unknown залишаються окремими станами.
8 · Reconciliation / retry
Після timeout або crash спочатку перевіряється, чи side effect уже відбувся. Blind retry для payment, booking, permission або deployment — це дуже дорогий спосіб дізнатися значення слова duplicate.
Exit criterionIdempotency key + authoritative lookup вирішують ambiguity; правило: reconcile first → retry second.
9 · Revocation / containment
Revocation principal/session/tool/provider/tenant має поширюватися на pending work. Scoped kill switch зупиняє лише небезпечну capability, не обов’язково весь продукт.
Exit criterionPending approvals мають expiry/version binding; revoked scope не може бути відновлений старим serialized state.
10 · Evidence / evals
Release і runtime перевіряють не тільки answer quality, а unauthorized action rate, false deny, approval bypass, stale replay, cross-tenant leakage, duplicate side effects і recovery.
Exit criterionЄ risk-sliced regression suite, trace decision → approval → execution → postcondition і permanent incident-derived cases.