{
  "actors": [
    "Worker",
    "PostgreSQL",
    "Skill / Tool",
    "Validator",
    "Gateway"
  ],
  "steps": [
    [
      "Worker",
      "PostgreSQL",
      "TX: SKIP LOCKED claim + lease + fencing token"
    ],
    [
      "PostgreSQL",
      "Worker",
      "Pinned plan / instance + token",
      "return"
    ],
    [
      "Worker",
      "Skill / Tool",
      "Execute with stable callId + idempotencyKey"
    ],
    [
      "Skill / Tool",
      "Worker",
      "Structured result + evidence",
      "return"
    ],
    [
      "Worker",
      "Validator",
      "Result + current facts version"
    ],
    [
      "Validator",
      "Worker",
      "ACCEPT / REVIEW / REJECT",
      "return"
    ],
    [
      "Worker",
      "PostgreSQL",
      "TX: CAS lease/state; result + facts + state + outbox"
    ],
    [
      "PostgreSQL",
      "Worker",
      "COMMIT / stale token rejection",
      "return"
    ],
    [
      "Worker",
      "PostgreSQL",
      "Claim committed outbox command"
    ],
    [
      "Worker",
      "Gateway",
      "OutboundCommand with stable commandId"
    ],
    [
      "Gateway",
      "Worker",
      "DeliveryReceipt SENT / UNKNOWN / FAILED",
      "return"
    ],
    [
      "Worker",
      "PostgreSQL",
      "Persist receipt + audit"
    ],
    [
      "note",
      "Crash sau send: query receipt trước retry. UNKNOWN không tự resend."
    ]
  ]
}
