{
  "format": "minctrl.process/v1",
  "graph": {
    "edges": [
      {
        "id": "e0___start____intake",
        "source": "__start__",
        "target": "intake"
      },
      {
        "id": "e1_intake__analyze",
        "source": "intake",
        "target": "analyze"
      },
      {
        "id": "e2_analyze__repair",
        "source": "analyze",
        "target": "repair"
      },
      {
        "id": "e3_repair__split",
        "source": "repair",
        "target": "split"
      },
      {
        "id": "e4_split__sanctions",
        "source": "split",
        "target": "sanctions"
      },
      {
        "id": "e5_split__benediff",
        "source": "split",
        "target": "benediff"
      },
      {
        "id": "e6_sanctions__join",
        "source": "sanctions",
        "target": "join"
      },
      {
        "id": "e7_benediff__join",
        "source": "benediff",
        "target": "join"
      },
      {
        "id": "e8_join__route",
        "source": "join",
        "target": "route"
      },
      {
        "id": "e9_route__stp-stage",
        "label": "sanctions clean, in-policy & high confidence",
        "source": "route",
        "target": "stp-stage"
      },
      {
        "id": "e10_route__exception-signoff",
        "label": "over threshold / beneficiary change / low confidence",
        "source": "route",
        "target": "exception-signoff"
      },
      {
        "id": "e11_route__repair",
        "label": "sanctions hit or un-repairable — rework",
        "source": "route",
        "target": "repair"
      },
      {
        "id": "e12_stp-stage__stp-signoff",
        "source": "stp-stage",
        "target": "stp-signoff"
      },
      {
        "id": "e13_stp-signoff__submit",
        "source": "stp-signoff",
        "target": "submit"
      },
      {
        "id": "e14_exception-signoff__submit",
        "source": "exception-signoff",
        "target": "submit"
      },
      {
        "id": "e15_submit__monitor",
        "source": "submit",
        "target": "monitor"
      },
      {
        "id": "e16_monitor__repair",
        "label": "re-rejected / NACK — rework",
        "source": "monitor",
        "target": "repair"
      }
    ],
    "nodes": [
      {
        "agent": null,
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "__start__",
        "interrupt_before": false,
        "kind": "terminal",
        "label": "Start",
        "position": {
          "x": 0,
          "y": 0
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "terminal",
        "tools": []
      },
      {
        "agent": "intake",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "intake",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Pull the rejected / non-STP payment, reject reason code and original NACK from the payment hub and exception queue",
        "position": {
          "x": 0,
          "y": 120
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "low",
        "tools": [
          "payment-hub",
          "exception-queue",
          "iso20022-parser"
        ]
      },
      {
        "agent": "analyzer",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "analyze",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Classify the exception type and diagnose root cause against reject codes, formatting rules and the original instruction",
        "position": {
          "x": 0,
          "y": 240
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "low",
        "tools": [
          "nack-classifier",
          "iso20022-parser",
          "core-ledger"
        ]
      },
      {
        "agent": "repair",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "repair",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Validate and correct IBAN/BIC, resolve the purpose code and fix formatting against reference and routing data, scoring repair confidence",
        "position": {
          "x": 0,
          "y": 360
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "medium",
        "tools": [
          "iban-validator",
          "bic-directory",
          "purpose-code-ref",
          "routing-ref"
        ]
      },
      {
        "agent": null,
        "confidential": false,
        "gate": null,
        "gateway": "parallel",
        "human": null,
        "id": "split",
        "interrupt_before": false,
        "kind": "gateway",
        "label": "Run sanctions re-screening and beneficiary-identity diff concurrently",
        "position": {
          "x": 0,
          "y": 480
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "gateway",
        "tools": []
      },
      {
        "agent": "screen",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "sanctions",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Re-screen the repaired payment for sanctions hits",
        "position": {
          "x": 0,
          "y": 600
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "medium",
        "tools": [
          "sanctions-screen",
          "case-mgmt"
        ]
      },
      {
        "agent": "screen",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "benediff",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Diff repaired payment vs. original instruction to flag any change to beneficiary identity or account",
        "position": {
          "x": 0,
          "y": 720
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "low",
        "tools": [
          "beneficiary-diff",
          "core-ledger"
        ]
      },
      {
        "agent": null,
        "confidential": false,
        "gate": null,
        "gateway": "parallel",
        "human": null,
        "id": "join",
        "interrupt_before": false,
        "kind": "gateway",
        "label": "Join screening + diff results once both complete",
        "position": {
          "x": 0,
          "y": 840
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "gateway",
        "tools": []
      },
      {
        "agent": null,
        "confidential": false,
        "gate": null,
        "gateway": "exclusive",
        "human": null,
        "id": "route",
        "interrupt_before": false,
        "kind": "gateway",
        "label": "Sanctions clean, and repair in-policy (below value threshold, no beneficiary change, high confidence)?",
        "position": {
          "x": 0,
          "y": 960
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "gateway",
        "tools": []
      },
      {
        "agent": "submit",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "stp-stage",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Stage the clean in-policy repair into the pre-authorized straight-through release batch",
        "position": {
          "x": 0,
          "y": 1080
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "medium",
        "tools": [
          "payment-hub",
          "exception-queue"
        ]
      },
      {
        "agent": null,
        "confidential": false,
        "gate": "gate:stp-batch-release",
        "gateway": null,
        "human": "Payment operations lead (release authority)",
        "id": "stp-signoff",
        "interrupt_before": true,
        "kind": "gate",
        "label": "Standing batch sign-off of the pre-authorized STP release tranche against policy limits",
        "position": {
          "x": 0,
          "y": 1200
        },
        "reversible": false,
        "sla": null,
        "sla_spec": null,
        "tier": "high",
        "tools": []
      },
      {
        "agent": null,
        "confidential": false,
        "gate": "gate:repair-release-signoff",
        "gateway": null,
        "human": "Payment operations lead (release authority)",
        "id": "exception-signoff",
        "interrupt_before": true,
        "kind": "gate",
        "label": "Individually sign each repaired release above the value threshold, any beneficiary-identity/account change, and low-confidence ambiguous-reference repair",
        "position": {
          "x": 0,
          "y": 1320
        },
        "reversible": false,
        "sla": null,
        "sla_spec": null,
        "tier": "high",
        "tools": []
      },
      {
        "agent": "submit",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "submit",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Release the repaired payment to the rails: re-submit the corrected instruction for settlement",
        "position": {
          "x": 0,
          "y": 1440
        },
        "reversible": false,
        "sla": null,
        "sla_spec": null,
        "tier": "high",
        "tools": [
          "payment-rails",
          "swift-gateway",
          "core-ledger"
        ]
      },
      {
        "agent": "monitor",
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "monitor",
        "interrupt_before": false,
        "kind": "agent",
        "label": "Track ACK/confirmation and settlement status, auto-clear repaired items, and route un-repairable or re-rejected payments back to ops with the audit trail",
        "position": {
          "x": 0,
          "y": 1560
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "low",
        "tools": [
          "payment-hub:status",
          "exception-queue",
          "case-mgmt"
        ]
      },
      {
        "agent": null,
        "confidential": false,
        "gate": null,
        "gateway": null,
        "human": null,
        "id": "__end__",
        "interrupt_before": false,
        "kind": "terminal",
        "label": "Done",
        "position": {
          "x": 0,
          "y": 1680
        },
        "reversible": true,
        "sla": null,
        "sla_spec": null,
        "tier": "terminal",
        "tools": []
      }
    ]
  },
  "hash": "bcbe3ee01583412f1f71226e83abab2a5075e683897fece0a4a468497fde2cd1",
  "name": "Payment exception repair & STP auto-repair autopilot",
  "slug": "payment-exception-repair",
  "source": "example",
  "version": null,
  "violations": []
}
