inc_0002 SIMULATED
duplicate_charge (rule DUP), related ch_0001, ch_0002
Scenario D2 · outcome ESCALATED AMOUNT_OVER_INCIDENT_CAP · 4 steps · 2026-10-10T09:02:00Z to 2026-10-10T09:02:00Z
Scenario D2 · outcome ESCALATED AMOUNT_OVER_INCIDENT_CAP · 4 steps · 2026-10-10T09:02:00Z to 2026-10-10T09:02:00Z
Gate verdicts
| Step | Verdict | Code | Entry |
|---|---|---|---|
| 4 | ESCALATE | AMOUNT_OVER_INCIDENT_CAP | #21 |
| 4 | ALLOW | OK | #23 |
Verification
Independent check by code: passed
- pass escalation_recorded
- pass evidence_packet_complete
Timeline (decision chain)
| Seq | Time | Kind | Summary |
|---|---|---|---|
| #13 | 2026-10-10T09:02:00Z | INCIDENT_OPENED | opened duplicate_charge by rule DUP, related ch_0001, ch_0002entry JSON{
"body": {
"detector_rule": "DUP",
"related": [
"ch_0001",
"ch_0002"
],
"type": "duplicate_charge"
},
"entry_hash": "sha256:a83c0cc168233fc441fff73a488f3c84a4195253df702fde1355e10770999736",
"kind": "INCIDENT_OPENED",
"prev_hash": "sha256:30b22f05c3170208ba36bae4e10ce0e923b9615bf7626bed87045f5a77442e4d",
"seq": 13,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #14 | 2026-10-10T09:02:00Z | DECISION | INVESTIGATE get_incident: Read the incident record first.entry JSON{
"body": {
"args": {
"incident_id": "inc_0002"
},
"decision": "INVESTIGATE",
"rationale": "Read the incident record first.",
"step": 1,
"tool": "get_incident"
},
"entry_hash": "sha256:27b2c21f18804e04e61d32c46c4340fc4373046a2795da2870137e63def13cb9",
"kind": "DECISION",
"prev_hash": "sha256:a83c0cc168233fc441fff73a488f3c84a4195253df702fde1355e10770999736",
"seq": 14,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #15 | 2026-10-10T09:02:00Z | OBSERVATION | read get_incident: incident inc_0002 duplicate_charge related ch_0001,ch_0002 status INVESTIGATINGentry JSON{
"body": {
"args": {
"incident_id": "inc_0002"
},
"injection_suspected": false,
"result_sha256": "sha256:33202df7260227b0ca3148d9241b407a9565aae7077c8da7ac964b94612fbf0b",
"result_summary": "incident inc_0002 duplicate_charge related ch_0001,ch_0002 status INVESTIGATING",
"step": 1,
"tool": "get_incident",
"untrusted_fields": []
},
"entry_hash": "sha256:8a31d6f86fb8316d979ce5f49bae25b7b9a5e620a6132b3e7e2c77cb26299df5",
"kind": "OBSERVATION",
"prev_hash": "sha256:27b2c21f18804e04e61d32c46c4340fc4373046a2795da2870137e63def13cb9",
"seq": 15,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #16 | 2026-10-10T09:02:00Z | DECISION | 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:f8fea548c550a3f786e20d088082a1b7a6759a6e44d5f0aaa6ec2d77bd83b4de",
"kind": "DECISION",
"prev_hash": "sha256:8a31d6f86fb8316d979ce5f49bae25b7b9a5e620a6132b3e7e2c77cb26299df5",
"seq": 16,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #17 | 2026-10-10T09:02:00Z | OBSERVATION | read get_provider_charge: charge ch_0001 succeeded 6000000 NGN order ord_0001 customer cust_01 at 2026-10-10T09:01:00Zentry JSON{
"body": {
"args": {
"charge_id": "ch_0001"
},
"injection_suspected": false,
"result_sha256": "sha256:1eeb075693707be689009a2cfc56c959f1643575f907c09e379fcea666490b81",
"result_summary": "charge ch_0001 succeeded 6000000 NGN order ord_0001 customer cust_01 at 2026-10-10T09:01:00Z",
"step": 2,
"tool": "get_provider_charge",
"untrusted_fields": []
},
"entry_hash": "sha256:8279e4e8d085484603cdbe06e7cad7700830adbcf4591f3c12c74564adb3e27a",
"kind": "OBSERVATION",
"prev_hash": "sha256:f8fea548c550a3f786e20d088082a1b7a6759a6e44d5f0aaa6ec2d77bd83b4de",
"seq": 17,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #18 | 2026-10-10T09:02:00Z | DECISION | 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:47b46c05c2b465ffe17d0039841ef699fd6ed6b5edd8d4b1d26cd2a0de01e1b8",
"kind": "DECISION",
"prev_hash": "sha256:8279e4e8d085484603cdbe06e7cad7700830adbcf4591f3c12c74564adb3e27a",
"seq": 18,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #19 | 2026-10-10T09:02:00Z | OBSERVATION | read get_provider_charge: charge ch_0002 succeeded 6000000 NGN order ord_0001 customer cust_01 at 2026-10-10T09:01:40Zentry JSON{
"body": {
"args": {
"charge_id": "ch_0002"
},
"injection_suspected": false,
"result_sha256": "sha256:411dc57304a6a355e645b9e03668b32618d7da9c96c328966b8f2f6683ea7c65",
"result_summary": "charge ch_0002 succeeded 6000000 NGN order ord_0001 customer cust_01 at 2026-10-10T09:01:40Z",
"step": 3,
"tool": "get_provider_charge",
"untrusted_fields": []
},
"entry_hash": "sha256:fa5bf493264d659a8a2200f815ddb9ff62146f893dfe4614d869d2e563867783",
"kind": "OBSERVATION",
"prev_hash": "sha256:47b46c05c2b465ffe17d0039841ef699fd6ed6b5edd8d4b1d26cd2a0de01e1b8",
"seq": 19,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #20 | 2026-10-10T09:02:00Z | DECISION | 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_0002: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:b76a49ea69f5891518c44dabfe76de7a68e4753cbb9771d5c70f52bf03b585af",
"kind": "DECISION",
"prev_hash": "sha256:fa5bf493264d659a8a2200f815ddb9ff62146f893dfe4614d869d2e563867783",
"seq": 20,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #21 | 2026-10-10T09:02:00Z | GATE_VERDICT | gate ESCALATE AMOUNT_OVER_INCIDENT_CAPentry JSON{
"body": {
"code": "AMOUNT_OVER_INCIDENT_CAP",
"details": {
"already_refunded_minor": 0,
"amount_minor": 6000000,
"cap_minor": 5000000
},
"policy_sha256": "sha256:696b891ceabd61a7cf7c89ed6e98793ac182397b88332da7eaccbc2381dbc581",
"policy_version": 1,
"step": 4,
"verdict": "ESCALATE"
},
"entry_hash": "sha256:329797bf011e64f1521f272382be54fc7d302f6ca76e6c1fd1282eddb13bd240",
"kind": "GATE_VERDICT",
"prev_hash": "sha256:b76a49ea69f5891518c44dabfe76de7a68e4753cbb9771d5c70f52bf03b585af",
"seq": 21,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #22 | 2026-10-10T09:02:00Z | DECISION | ESCALATE escalate: The policy gate requires a human decision.entry JSON{
"body": {
"args": {
"evidence_refs": [
"ch_0001",
"ch_0002"
],
"reason_code": "AMOUNT_OVER_INCIDENT_CAP",
"summary": "Policy gate returned ESCALATE (AMOUNT_OVER_INCIDENT_CAP) for issue_refund."
},
"decision": "ESCALATE",
"rationale": "The policy gate requires a human decision.",
"step": 4,
"tool": "escalate"
},
"entry_hash": "sha256:fa933b4ab85394ea8cdd2869fa68eb59de1a3f4e86e9aba0a447a46a2cea6164",
"kind": "DECISION",
"prev_hash": "sha256:329797bf011e64f1521f272382be54fc7d302f6ca76e6c1fd1282eddb13bd240",
"seq": 22,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #23 | 2026-10-10T09:02:00Z | GATE_VERDICT | gate ALLOW OKentry JSON{
"body": {
"code": "OK",
"details": {},
"policy_sha256": "sha256:696b891ceabd61a7cf7c89ed6e98793ac182397b88332da7eaccbc2381dbc581",
"policy_version": 1,
"step": 4,
"verdict": "ALLOW"
},
"entry_hash": "sha256:096afdd5afc11dbc42835a594039825db8eba6246c96df663e7c9918c0750085",
"kind": "GATE_VERDICT",
"prev_hash": "sha256:fa933b4ab85394ea8cdd2869fa68eb59de1a3f4e86e9aba0a447a46a2cea6164",
"seq": 23,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #24 | 2026-10-10T09:02:00Z | ACTION_INTENT | intent escalate (committed before execution)entry JSON{
"body": {
"args": {
"evidence_refs": [
"ch_0001",
"ch_0002"
],
"reason_code": "AMOUNT_OVER_INCIDENT_CAP",
"summary": "Policy gate returned ESCALATE (AMOUNT_OVER_INCIDENT_CAP) for issue_refund."
},
"args_sha256": "sha256:479e0f8584870cc373003ac32b94783ef37de246ee658b6ac42db96234954e9b",
"expected_effect": "close the incident as ESCALATED with an evidence packet",
"idempotency_key": null,
"step": 4,
"tool": "escalate"
},
"entry_hash": "sha256:0ae4b1c34166c4dd88ecc80b26714cf82eaa42a7a78a6a8ee9d364502619694d",
"kind": "ACTION_INTENT",
"prev_hash": "sha256:096afdd5afc11dbc42835a594039825db8eba6246c96df663e7c9918c0750085",
"seq": 24,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #25 | 2026-10-10T09:02:00Z | ACTION_RESULT | escalate attempt 1: okentry JSON{
"body": {
"attempt": 1,
"error_type": null,
"ok": true,
"response_sha256": "sha256:feef69fc990a852dd5ed6db45fc9046b0c82c975479e7f81da45438a05a09f7b",
"step": 4,
"tool": "escalate"
},
"entry_hash": "sha256:c7ef43f9e49e9e87f288c852c41e6ac7c62bb722c7361ec45a7a6612748cb91e",
"kind": "ACTION_RESULT",
"prev_hash": "sha256:0ae4b1c34166c4dd88ecc80b26714cf82eaa42a7a78a6a8ee9d364502619694d",
"seq": 25,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #26 | 2026-10-10T09:02:00Z | VERIFICATION | verification passed (2/2 checks)entry JSON{
"body": {
"checks": [
{
"check": "escalation_recorded",
"detail": "",
"passed": true
},
{
"check": "evidence_packet_complete",
"detail": "",
"passed": true
}
],
"ok": true,
"step": 4
},
"entry_hash": "sha256:5eacbe88931242592b4fe929945aa87040950b133a713f31ffc16798cd01321c",
"kind": "VERIFICATION",
"prev_hash": "sha256:c7ef43f9e49e9e87f288c852c41e6ac7c62bb722c7361ec45a7a6612748cb91e",
"seq": 26,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
| #27 | 2026-10-10T09:02:00Z | OUTCOME | ESCALATED AMOUNT_OVER_INCIDENT_CAP: Policy gate returned ESCALATE (AMOUNT_OVER_INCIDENT_CAP) for issue_refund.entry JSON{
"body": {
"outcome": "ESCALATED",
"reason_code": "AMOUNT_OVER_INCIDENT_CAP",
"summary": "Policy gate returned ESCALATE (AMOUNT_OVER_INCIDENT_CAP) for issue_refund."
},
"entry_hash": "sha256:5aac519d8800c5d33db2e50e97a1d6ac8fb4afeb87709ede5ca095a76a6b4ea7",
"kind": "OUTCOME",
"prev_hash": "sha256:5eacbe88931242592b4fe929945aa87040950b133a713f31ffc16798cd01321c",
"seq": 27,
"trace_id": "offline-2",
"ts": "2026-10-10T09:02:00Z"
} |
Receipt
Raw receipt JSON
{
"digest": "sha256:7d734740115cba224e159adcb6ba0b48cbd88464521c813e95471338f6c9a899",
"payload": {
"actions": [
{
"amount_minor": null,
"args_sha256": "sha256:479e0f8584870cc373003ac32b94783ef37de246ee658b6ac42db96234954e9b",
"executed": true,
"idempotency_key": null,
"tool": "escalate"
}
],
"closed_at": "2026-10-10T09:02:00Z",
"currency": "NGN",
"entire_checkpoint": null,
"entries": [
{
"hash": "sha256:a83c0cc168233fc441fff73a488f3c84a4195253df702fde1355e10770999736",
"seq": 13
},
{
"hash": "sha256:27b2c21f18804e04e61d32c46c4340fc4373046a2795da2870137e63def13cb9",
"seq": 14
},
{
"hash": "sha256:8a31d6f86fb8316d979ce5f49bae25b7b9a5e620a6132b3e7e2c77cb26299df5",
"seq": 15
},
{
"hash": "sha256:f8fea548c550a3f786e20d088082a1b7a6759a6e44d5f0aaa6ec2d77bd83b4de",
"seq": 16
},
{
"hash": "sha256:8279e4e8d085484603cdbe06e7cad7700830adbcf4591f3c12c74564adb3e27a",
"seq": 17
},
{
"hash": "sha256:47b46c05c2b465ffe17d0039841ef699fd6ed6b5edd8d4b1d26cd2a0de01e1b8",
"seq": 18
},
{
"hash": "sha256:fa5bf493264d659a8a2200f815ddb9ff62146f893dfe4614d869d2e563867783",
"seq": 19
},
{
"hash": "sha256:b76a49ea69f5891518c44dabfe76de7a68e4753cbb9771d5c70f52bf03b585af",
"seq": 20
},
{
"hash": "sha256:329797bf011e64f1521f272382be54fc7d302f6ca76e6c1fd1282eddb13bd240",
"seq": 21
},
{
"hash": "sha256:fa933b4ab85394ea8cdd2869fa68eb59de1a3f4e86e9aba0a447a46a2cea6164",
"seq": 22
},
{
"hash": "sha256:096afdd5afc11dbc42835a594039825db8eba6246c96df663e7c9918c0750085",
"seq": 23
},
{
"hash": "sha256:0ae4b1c34166c4dd88ecc80b26714cf82eaa42a7a78a6a8ee9d364502619694d",
"seq": 24
},
{
"hash": "sha256:c7ef43f9e49e9e87f288c852c41e6ac7c62bb722c7361ec45a7a6612748cb91e",
"seq": 25
},
{
"hash": "sha256:5eacbe88931242592b4fe929945aa87040950b133a713f31ffc16798cd01321c",
"seq": 26
},
{
"hash": "sha256:5aac519d8800c5d33db2e50e97a1d6ac8fb4afeb87709ede5ca095a76a6b4ea7",
"seq": 27
}
],
"git_sha": "35707c7",
"incident_id": "inc_0002",
"mode": "simulated",
"neatlogs_trace_id": "offline-2",
"opened_at": "2026-10-10T09:02:00Z",
"outcome": "ESCALATED",
"policy_sha256": "sha256:696b891ceabd61a7cf7c89ed6e98793ac182397b88332da7eaccbc2381dbc581",
"reason_code": "AMOUNT_OVER_INCIDENT_CAP",
"run_label": "demo",
"scenario_id": "D2",
"type": "duplicate_charge",
"verification": {
"checks": [
{
"check": "escalation_recorded",
"detail": "",
"passed": true
},
{
"check": "evidence_packet_complete",
"detail": "",
"passed": true
}
],
"ok": true
}
},
"receipt_version": 1
}