VigilSIMULATED

← Dashboard

inc_0001 SIMULATED

duplicate_charge (rule DUP), related ch_0001, ch_0002
Scenario D1 · outcome RESOLVED VERIFIED_OK · 4 steps · 2026-10-10T08:01:00Z to 2026-10-10T08:01:00Z

Gate verdicts

StepVerdictCodeEntry
4ALLOWOK#8

Verification

Independent check by code: passed

Timeline (decision chain)

SeqTimeKindSummary
#02026-10-10T08:01:00ZINCIDENT_OPENED opened duplicate_charge by rule DUP, related ch_0001, ch_0002
entry JSON
{
  "body": {
    "detector_rule": "DUP",
    "related": [
      "ch_0001",
      "ch_0002"
    ],
    "type": "duplicate_charge"
  },
  "entry_hash": "sha256:dd27e6e9e24d38e6fed742d632c45b593588989abcf55db241c4a6fc0d7f4236",
  "kind": "INCIDENT_OPENED",
  "prev_hash": "sha256:847e4febfe1c429a14d7a66675ec721211b2e9487306986f7c1060f8d80766db",
  "seq": 0,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}
#12026-10-10T08:01:00ZDECISION INVESTIGATE get_incident: Read the incident record first.
entry JSON
{
  "body": {
    "args": {
      "incident_id": "inc_0001"
    },
    "decision": "INVESTIGATE",
    "rationale": "Read the incident record first.",
    "step": 1,
    "tool": "get_incident"
  },
  "entry_hash": "sha256:a74ccdd242f601f57118eec0f117ef7deead01d587eb66021b4aa4d54ea3dcab",
  "kind": "DECISION",
  "prev_hash": "sha256:dd27e6e9e24d38e6fed742d632c45b593588989abcf55db241c4a6fc0d7f4236",
  "seq": 1,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}
#22026-10-10T08:01:00ZOBSERVATION read get_incident: incident inc_0001 duplicate_charge related ch_0001,ch_0002 status INVESTIGATING
entry JSON
{
  "body": {
    "args": {
      "incident_id": "inc_0001"
    },
    "injection_suspected": false,
    "result_sha256": "sha256:6dc89f94391eae1b3074765e7d2b41d90da44bd58b87390d857dfbb5910e6298",
    "result_summary": "incident inc_0001 duplicate_charge related ch_0001,ch_0002 status INVESTIGATING",
    "step": 1,
    "tool": "get_incident",
    "untrusted_fields": []
  },
  "entry_hash": "sha256:2b566c3b6d25ffd03a4d0f828920b5985a428849e1aac2698d1e74dabbb75af6",
  "kind": "OBSERVATION",
  "prev_hash": "sha256:a74ccdd242f601f57118eec0f117ef7deead01d587eb66021b4aa4d54ea3dcab",
  "seq": 2,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}
#32026-10-10T08:01:00ZDECISION INVESTIGATE get_provider_charge: Read charge ch_0001 at the provider.
entry JSON
{
  "body": {
    "args": {
      "charge_id": "ch_0001"
    },
    "decision": "INVESTIGATE",
    "rationale": "Read charge ch_0001 at the provider.",
    "step": 2,
    "tool": "get_provider_charge"
  },
  "entry_hash": "sha256:f2007749781b697b1f021c9293726a8e01a774c0caf52582386069251c0427c2",
  "kind": "DECISION",
  "prev_hash": "sha256:2b566c3b6d25ffd03a4d0f828920b5985a428849e1aac2698d1e74dabbb75af6",
  "seq": 3,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}
#42026-10-10T08:01:00ZOBSERVATION read get_provider_charge: charge ch_0001 succeeded 2500000 NGN order ord_0001 customer cust_01 at 2026-10-10T08:00:00Z
entry JSON
{
  "body": {
    "args": {
      "charge_id": "ch_0001"
    },
    "injection_suspected": false,
    "result_sha256": "sha256:2cc76df82ed23e2bec4f86af493f913d2bedfb5af8f8c284fc6a7d62897bb2af",
    "result_summary": "charge ch_0001 succeeded 2500000 NGN order ord_0001 customer cust_01 at 2026-10-10T08:00:00Z",
    "step": 2,
    "tool": "get_provider_charge",
    "untrusted_fields": []
  },
  "entry_hash": "sha256:f5371a88ec567ba25abd7bc4984d3bcc3c5ddb16a8d40f39bb995e7114b63d4c",
  "kind": "OBSERVATION",
  "prev_hash": "sha256:f2007749781b697b1f021c9293726a8e01a774c0caf52582386069251c0427c2",
  "seq": 4,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}
#52026-10-10T08:01:00ZDECISION INVESTIGATE get_provider_charge: Read charge ch_0002 at the provider.
entry JSON
{
  "body": {
    "args": {
      "charge_id": "ch_0002"
    },
    "decision": "INVESTIGATE",
    "rationale": "Read charge ch_0002 at the provider.",
    "step": 3,
    "tool": "get_provider_charge"
  },
  "entry_hash": "sha256:adb71369ced37d9ee4400d2405bfccda8bf521d42055647e7d0e87a435361cfd",
  "kind": "DECISION",
  "prev_hash": "sha256:f5371a88ec567ba25abd7bc4984d3bcc3c5ddb16a8d40f39bb995e7114b63d4c",
  "seq": 5,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}
#62026-10-10T08:01:00ZOBSERVATION read get_provider_charge: charge ch_0002 succeeded 2500000 NGN order ord_0001 customer cust_01 at 2026-10-10T08:00:40Z
entry JSON
{
  "body": {
    "args": {
      "charge_id": "ch_0002"
    },
    "injection_suspected": false,
    "result_sha256": "sha256:ac23d870103bcf4a8cc8e4d4d0a04dda40e27be0e7c48bd03ce1024f574458fc",
    "result_summary": "charge ch_0002 succeeded 2500000 NGN order ord_0001 customer cust_01 at 2026-10-10T08:00:40Z",
    "step": 3,
    "tool": "get_provider_charge",
    "untrusted_fields": []
  },
  "entry_hash": "sha256:ec743168a6846034208a60fdd73a292df446ee9c5c317381df4d82388c44df3f",
  "kind": "OBSERVATION",
  "prev_hash": "sha256:adb71369ced37d9ee4400d2405bfccda8bf521d42055647e7d0e87a435361cfd",
  "seq": 6,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}
#72026-10-10T08:01:00ZDECISION ACT issue_refund: Two succeeded charges share customer, order and amount within the window; refund the later one.
entry JSON
{
  "body": {
    "args": {
      "charge_id": "ch_0002",
      "evidence_refs": [
        "ch_0001",
        "ch_0002"
      ],
      "idempotency_key": "inc_0001:refund:1"
    },
    "decision": "ACT",
    "rationale": "Two succeeded charges share customer, order and amount within the window; refund the later one.",
    "step": 4,
    "tool": "issue_refund"
  },
  "entry_hash": "sha256:3e708e1d432e4c5b5362da619cc3b8d55ffed075d7f3886298cf4d46a1476aa7",
  "kind": "DECISION",
  "prev_hash": "sha256:ec743168a6846034208a60fdd73a292df446ee9c5c317381df4d82388c44df3f",
  "seq": 7,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}
#82026-10-10T08:01:00ZGATE_VERDICT gate ALLOW OK
entry JSON
{
  "body": {
    "code": "OK",
    "details": {},
    "policy_sha256": "sha256:696b891ceabd61a7cf7c89ed6e98793ac182397b88332da7eaccbc2381dbc581",
    "policy_version": 1,
    "step": 4,
    "verdict": "ALLOW"
  },
  "entry_hash": "sha256:96bca0ca502b44f62a0b7823a73d0928dab88f281a6ba66597fd27ebc67d91f7",
  "kind": "GATE_VERDICT",
  "prev_hash": "sha256:3e708e1d432e4c5b5362da619cc3b8d55ffed075d7f3886298cf4d46a1476aa7",
  "seq": 8,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}
#92026-10-10T08:01:00ZACTION_INTENT intent issue_refund key inc_0001:refund:1 (committed before execution)
entry JSON
{
  "body": {
    "args": {
      "charge_id": "ch_0002",
      "evidence_refs": [
        "ch_0001",
        "ch_0002"
      ],
      "idempotency_key": "inc_0001:refund:1"
    },
    "args_sha256": "sha256:c5090bb26f72c98b02359be8890b062beed1550a7c54aef6a1a290142c5886fe",
    "expected_effect": "refund the charge at the provider",
    "idempotency_key": "inc_0001:refund:1",
    "step": 4,
    "tool": "issue_refund"
  },
  "entry_hash": "sha256:d1ec40c899aeb863dee6a20c6183c9689ee23b5be96fa0754fa7b542cc90118e",
  "kind": "ACTION_INTENT",
  "prev_hash": "sha256:96bca0ca502b44f62a0b7823a73d0928dab88f281a6ba66597fd27ebc67d91f7",
  "seq": 9,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}
#102026-10-10T08:01:00ZACTION_RESULT issue_refund attempt 1: ok
entry JSON
{
  "body": {
    "attempt": 1,
    "error_type": null,
    "ok": true,
    "response_sha256": "sha256:0c43cc0241e58db384c921a87f41bac7b582085ee5f409801e2549df51d78bd7",
    "step": 4,
    "tool": "issue_refund"
  },
  "entry_hash": "sha256:3fcdd1e0edd332476e3e47a38c4c5b9a0e341e3ffa0b52fa2f7511eab30aa2fb",
  "kind": "ACTION_RESULT",
  "prev_hash": "sha256:d1ec40c899aeb863dee6a20c6183c9689ee23b5be96fa0754fa7b542cc90118e",
  "seq": 10,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}
#112026-10-10T08:01:00ZVERIFICATION verification passed (5/5 checks)
entry JSON
{
  "body": {
    "checks": [
      {
        "check": "refund_succeeded",
        "detail": "",
        "passed": true
      },
      {
        "check": "exactly_one_refund",
        "detail": "1 refunds",
        "passed": true
      },
      {
        "check": "refund_amount_matches",
        "detail": "",
        "passed": true
      },
      {
        "check": "net_credit_equals_order_amount",
        "detail": "",
        "passed": true
      },
      {
        "check": "ledger_balanced",
        "detail": "",
        "passed": true
      }
    ],
    "ok": true,
    "step": 4
  },
  "entry_hash": "sha256:6a56b58038f6f7f88e19c81671ee8123b5e6f3bfa8ba9a9eedbe9cad98400d3f",
  "kind": "VERIFICATION",
  "prev_hash": "sha256:3fcdd1e0edd332476e3e47a38c4c5b9a0e341e3ffa0b52fa2f7511eab30aa2fb",
  "seq": 11,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}
#122026-10-10T08:01:00ZOUTCOME RESOLVED VERIFIED_OK: Independent verification passed.
entry JSON
{
  "body": {
    "outcome": "RESOLVED",
    "reason_code": "VERIFIED_OK",
    "summary": "Independent verification passed."
  },
  "entry_hash": "sha256:30b22f05c3170208ba36bae4e10ce0e923b9615bf7626bed87045f5a77442e4d",
  "kind": "OUTCOME",
  "prev_hash": "sha256:6a56b58038f6f7f88e19c81671ee8123b5e6f3bfa8ba9a9eedbe9cad98400d3f",
  "seq": 12,
  "trace_id": "offline-1",
  "ts": "2026-10-10T08:01:00Z"
}

Receipt

Raw receipt JSON
{
  "digest": "sha256:6338cba2fc7897ee3e7e32bf158f1e3521b0b8def81112f808e810be9b4a5d99",
  "payload": {
    "actions": [
      {
        "amount_minor": 2500000,
        "args_sha256": "sha256:c5090bb26f72c98b02359be8890b062beed1550a7c54aef6a1a290142c5886fe",
        "executed": true,
        "idempotency_key": "inc_0001:refund:1",
        "tool": "issue_refund"
      }
    ],
    "closed_at": "2026-10-10T08:01:00Z",
    "currency": "NGN",
    "entire_checkpoint": null,
    "entries": [
      {
        "hash": "sha256:dd27e6e9e24d38e6fed742d632c45b593588989abcf55db241c4a6fc0d7f4236",
        "seq": 0
      },
      {
        "hash": "sha256:a74ccdd242f601f57118eec0f117ef7deead01d587eb66021b4aa4d54ea3dcab",
        "seq": 1
      },
      {
        "hash": "sha256:2b566c3b6d25ffd03a4d0f828920b5985a428849e1aac2698d1e74dabbb75af6",
        "seq": 2
      },
      {
        "hash": "sha256:f2007749781b697b1f021c9293726a8e01a774c0caf52582386069251c0427c2",
        "seq": 3
      },
      {
        "hash": "sha256:f5371a88ec567ba25abd7bc4984d3bcc3c5ddb16a8d40f39bb995e7114b63d4c",
        "seq": 4
      },
      {
        "hash": "sha256:adb71369ced37d9ee4400d2405bfccda8bf521d42055647e7d0e87a435361cfd",
        "seq": 5
      },
      {
        "hash": "sha256:ec743168a6846034208a60fdd73a292df446ee9c5c317381df4d82388c44df3f",
        "seq": 6
      },
      {
        "hash": "sha256:3e708e1d432e4c5b5362da619cc3b8d55ffed075d7f3886298cf4d46a1476aa7",
        "seq": 7
      },
      {
        "hash": "sha256:96bca0ca502b44f62a0b7823a73d0928dab88f281a6ba66597fd27ebc67d91f7",
        "seq": 8
      },
      {
        "hash": "sha256:d1ec40c899aeb863dee6a20c6183c9689ee23b5be96fa0754fa7b542cc90118e",
        "seq": 9
      },
      {
        "hash": "sha256:3fcdd1e0edd332476e3e47a38c4c5b9a0e341e3ffa0b52fa2f7511eab30aa2fb",
        "seq": 10
      },
      {
        "hash": "sha256:6a56b58038f6f7f88e19c81671ee8123b5e6f3bfa8ba9a9eedbe9cad98400d3f",
        "seq": 11
      },
      {
        "hash": "sha256:30b22f05c3170208ba36bae4e10ce0e923b9615bf7626bed87045f5a77442e4d",
        "seq": 12
      }
    ],
    "git_sha": "35707c7",
    "incident_id": "inc_0001",
    "mode": "simulated",
    "neatlogs_trace_id": "offline-1",
    "opened_at": "2026-10-10T08:01:00Z",
    "outcome": "RESOLVED",
    "policy_sha256": "sha256:696b891ceabd61a7cf7c89ed6e98793ac182397b88332da7eaccbc2381dbc581",
    "reason_code": "VERIFIED_OK",
    "run_label": "demo",
    "scenario_id": "D1",
    "type": "duplicate_charge",
    "verification": {
      "checks": [
        {
          "check": "refund_succeeded",
          "detail": "",
          "passed": true
        },
        {
          "check": "exactly_one_refund",
          "detail": "1 refunds",
          "passed": true
        },
        {
          "check": "refund_amount_matches",
          "detail": "",
          "passed": true
        },
        {
          "check": "net_credit_equals_order_amount",
          "detail": "",
          "passed": true
        },
        {
          "check": "ledger_balanced",
          "detail": "",
          "passed": true
        }
      ],
      "ok": true
    }
  },
  "receipt_version": 1
}