{
  "synthetic": true,
  "scope": "Invented editorial learning data. Python reference checks only; not a bank export, vendor template, executed M query, authenticated software import or compatibility proof.",
  "topic": "TP-024",
  "currency": "USD",
  "bank_events": [
    {
      "bank_row": "B1",
      "join_key": "R-A",
      "bank_amount": "100.00"
    },
    {
      "bank_row": "B2",
      "join_key": "R-B",
      "bank_amount": "50.00"
    }
  ],
  "invoice_allocations": [
    {
      "invoice": "I1",
      "join_key": "R-A",
      "allocation": "60.00"
    },
    {
      "invoice": "I2",
      "join_key": "R-A",
      "allocation": "40.00"
    },
    {
      "invoice": "I3",
      "join_key": "R-B",
      "allocation": "50.00"
    }
  ],
  "expanded_teaching_rows": [
    {
      "bank_row": "B1",
      "join_key": "R-A",
      "bank_amount": "100.00",
      "invoice": "I1",
      "allocation": "60.00"
    },
    {
      "bank_row": "B1",
      "join_key": "R-A",
      "bank_amount": "100.00",
      "invoice": "I2",
      "allocation": "40.00"
    },
    {
      "bank_row": "B2",
      "join_key": "R-B",
      "bank_amount": "50.00",
      "invoice": "I3",
      "allocation": "50.00"
    }
  ],
  "expected": {
    "original_bank_events": 2,
    "expanded_rows": 3,
    "original_bank_total": "150.00",
    "wrong_sum_of_repeated_bank_amount": "250.00",
    "allocation_total": "150.00",
    "blind_dedup_allocation_total": "110.00"
  },
  "unmatched_control": {
    "bank_event": {
      "bank_row": "B3",
      "join_key": "R-C",
      "bank_amount": "25.00"
    },
    "matching_invoice_rows": [],
    "expected_match_count": 0,
    "expected_handling": "Retain B3 as an unmatched bank event; do not drop it through an inner join or force an invoice allocation."
  },
  "rule": "Only use verified reference relationships; matching equal amounts is not an allocation rule."
}
