{
  "process_id": "CM-11",
  "policy_version": "synthetic-v1",
  "event_id": "cm-11-example-v1",
  "input": {
    "commitments": [
      {
        "id": "C1",
        "minimum_cents": 48000000,
        "maximum_cents": 52000000
      },
      {
        "id": "C2",
        "minimum_cents": 30000000,
        "maximum_cents": 30000000
      }
    ],
    "allocations": [
      {
        "id": "A1",
        "commitment_id": "C1",
        "loan_id": "L1",
        "upb_cents": 25000000
      },
      {
        "id": "A2",
        "commitment_id": "C1",
        "loan_id": "L2",
        "upb_cents": 24000000
      },
      {
        "id": "A3",
        "commitment_id": "C2",
        "loan_id": "L3",
        "upb_cents": 30000000
      },
      {
        "id": "A1",
        "commitment_id": "C1",
        "loan_id": "L1",
        "upb_cents": 25000000
      }
    ]
  },
  "expected": {
    "commitments": [
      {
        "commitment_id": "C1",
        "allocated_cents": 49000000,
        "status": "within_range"
      },
      {
        "commitment_id": "C2",
        "allocated_cents": 30000000,
        "status": "within_range"
      }
    ],
    "replay_hits": 1,
    "conflicts": [],
    "binding_actions": 0
  },
  "changes": [
    {
      "name": "Different allocation ID repeats the same loan",
      "append_path": [
        "allocations"
      ],
      "append_value": {
        "id": "A4",
        "commitment_id": "C1",
        "loan_id": "L1",
        "upb_cents": 25000000
      },
      "expected": {
        "commitments": [
          {
            "commitment_id": "C1",
            "allocated_cents": 74000000,
            "status": "hold"
          },
          {
            "commitment_id": "C2",
            "allocated_cents": 30000000,
            "status": "hold"
          }
        ],
        "replay_hits": 1,
        "conflicts": [
          "loan:L1"
        ],
        "binding_actions": 0
      }
    },
    {
      "name": "Blank identifiers cannot produce an accepted result",
      "path": [
        "commitments",
        0,
        "id"
      ],
      "value": "   ",
      "expected": {
        "status": "hold",
        "reason": "invalid_input",
        "external_actions": 0
      }
    },
    {
      "name": "A boolean is not a financial amount or revision",
      "path": [
        "commitments",
        0,
        "minimum_cents"
      ],
      "value": true,
      "expected": {
        "status": "hold",
        "reason": "invalid_input",
        "external_actions": 0
      }
    }
  ]
}
