Canonical enums
Decision (receipt-safe): PERMIT | DENY | SILENCE
Enforcement (runtime-safe): EXECUTED | BLOCKED
Evaluation state: COMPLETE | INDETERMINATE — SILENCE implies INDETERMINATE.
Receipt status: SIGNED | UNSIGNED | INVALID
SILENCE
SILENCE means no authorization was issued. Without authorization, execution cannot proceed. Enforcement in a conformant integration is BLOCKED (fail-closed).
Contract invariants
- A. A receipt
decisionMUST bePERMIT,DENY, orSILENCE. - B.
BLOCKEDMUST NOT appear as a receipt decision. - C. Any decision other than
PERMITMUST yieldenforcement = BLOCKEDin a conformant integration (non-conformant callers are control failures). - D.
SILENCEis decision-layer indeterminacy, not an enforcement label. - E. Every
DENYandSILENCEMUST carry a mandatoryreason_code(deterministic taxonomy).
Correct pairing
{
"decision": "DENY",
"enforcement": "BLOCKED"
}
Mapping: PERMIT → EXECUTED or BLOCKED (only if downstream fails or operator aborts). DENY → BLOCKED. SILENCE → BLOCKED.
Public wording
Use PERMIT / DENY / SILENCE in protocol, receipts, and auditor-facing specs. Use EXECUTED / BLOCKED in dashboards, traces, and operator records. Do not collapse decision and enforcement into one axis (e.g. PERMIT / DENY / SILENCE for decisions; EXECUTED / BLOCKED for enforcement).
Minimal examples
// Decision response
{
"request_id": "req_01JXYZ",
"decision": "DENY",
"evaluation_state": "COMPLETE",
"reason_code": "TG_DENY_SURFACE_FORBIDDEN",
"reason_summary": "Requested surface is not permitted under active policy.",
"receipt_id": "rcpt_01JXYZ",
"receipt_status": "SIGNED",
"decided_at": "2026-03-20T13:58:00Z"
}
// Enforcement event
{
"event_id": "evt_01JXYZ",
"request_id": "req_01JXYZ",
"receipt_id": "rcpt_01JXYZ",
"decision": "DENY",
"enforcement": "BLOCKED",
"enforced_by": "trigguard-gateway",
"execution_surface": "payments.execute",
"occurred_at": "2026-03-20T13:58:01Z"
}
← Back to Protocol Documentation hub
Authoritative source for implementers is also maintained in the repository as docs/protocol/DECISION_AND_ENFORCEMENT_MODEL.md.