{
  "checked_at": "2026-09-30T18:51:05.399586+00:00",
  "engine_sha256": "d7fa2617722f8c8f5e8b1fc30760e74e26b0038cba318a765dbb8d6948e12376",
  "cases": 12,
  "scenario_checks": 36,
  "matched": 36,
  "end_only_misses_gap": 10,
  "limitations": "12 deliberately selected fictional inputs, three scenarios each. Not a random sample, not a failure-rate estimate, not client results. End-of-day only; no tax/profit/intraday model. Node vs independent Python Decimal, not desktop Excel execution.",
  "results": [
    {
      "case": 1,
      "name": "Рабочий пример и запас",
      "scenario": "В срок",
      "ending": 60000.0,
      "minimum": 20000.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 10000.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 1,
      "name": "Рабочий пример и запас",
      "scenario": "Задержка поступлений",
      "ending": 60000.0,
      "minimum": -240000.0,
      "reserve_zero": 240000.0,
      "reserve_cushion": 270000.0,
      "first_shortfall": "2026-10-12",
      "end_only_misses_gap": true,
      "independent_match": true
    },
    {
      "case": 1,
      "name": "Рабочий пример и запас",
      "scenario": "Рост расходов",
      "ending": -21000.0,
      "minimum": -21000.0,
      "reserve_zero": 21000.0,
      "reserve_cushion": 51000.0,
      "first_shortfall": "2026-10-05",
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 2,
      "name": "Оплата после обязательства",
      "scenario": "В срок",
      "ending": 50000.0,
      "minimum": -50000.0,
      "reserve_zero": 50000.0,
      "reserve_cushion": 50000.0,
      "first_shortfall": "2026-10-02",
      "end_only_misses_gap": true,
      "independent_match": true
    },
    {
      "case": 2,
      "name": "Оплата после обязательства",
      "scenario": "Задержка поступлений",
      "ending": 50000.0,
      "minimum": -50000.0,
      "reserve_zero": 50000.0,
      "reserve_cushion": 50000.0,
      "first_shortfall": "2026-10-02",
      "end_only_misses_gap": true,
      "independent_match": true
    },
    {
      "case": 2,
      "name": "Оплата после обязательства",
      "scenario": "Рост расходов",
      "ending": 27500.0,
      "minimum": -72500.0,
      "reserve_zero": 72500.0,
      "reserve_cushion": 72500.0,
      "first_shortfall": "2026-10-02",
      "end_only_misses_gap": true,
      "independent_match": true
    },
    {
      "case": 3,
      "name": "Та же сумма, другой порядок",
      "scenario": "В срок",
      "ending": 50000.0,
      "minimum": 50000.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 3,
      "name": "Та же сумма, другой порядок",
      "scenario": "Задержка поступлений",
      "ending": 50000.0,
      "minimum": 50000.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 3,
      "name": "Та же сумма, другой порядок",
      "scenario": "Рост расходов",
      "ending": 27500.0,
      "minimum": 27500.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 4,
      "name": "Операции одного дня",
      "scenario": "В срок",
      "ending": 0.0,
      "minimum": 0.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 4,
      "name": "Операции одного дня",
      "scenario": "Задержка поступлений",
      "ending": 0.0,
      "minimum": -100000.0,
      "reserve_zero": 100000.0,
      "reserve_cushion": 100000.0,
      "first_shortfall": "2026-10-02",
      "end_only_misses_gap": true,
      "independent_match": true
    },
    {
      "case": 4,
      "name": "Операции одного дня",
      "scenario": "Рост расходов",
      "ending": -15000.0,
      "minimum": -15000.0,
      "reserve_zero": 15000.0,
      "reserve_cushion": 15000.0,
      "first_shortfall": "2026-10-02",
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 5,
      "name": "Отрицательный начальный остаток",
      "scenario": "В срок",
      "ending": 1000.0,
      "minimum": -1000.0,
      "reserve_zero": 1000.0,
      "reserve_cushion": 1000.0,
      "first_shortfall": "2026-10-01",
      "end_only_misses_gap": true,
      "independent_match": true
    },
    {
      "case": 5,
      "name": "Отрицательный начальный остаток",
      "scenario": "Задержка поступлений",
      "ending": 1000.0,
      "minimum": -1000.0,
      "reserve_zero": 1000.0,
      "reserve_cushion": 1000.0,
      "first_shortfall": "2026-10-01",
      "end_only_misses_gap": true,
      "independent_match": true
    },
    {
      "case": 5,
      "name": "Отрицательный начальный остаток",
      "scenario": "Рост расходов",
      "ending": 1000.0,
      "minimum": -1000.0,
      "reserve_zero": 1000.0,
      "reserve_cushion": 1000.0,
      "first_shortfall": "2026-10-01",
      "end_only_misses_gap": true,
      "independent_match": true
    },
    {
      "case": 6,
      "name": "Выше нуля, ниже подушки",
      "scenario": "В срок",
      "ending": 8000.0,
      "minimum": 8000.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 2000.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 6,
      "name": "Выше нуля, ниже подушки",
      "scenario": "Задержка поступлений",
      "ending": 8000.0,
      "minimum": 8000.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 2000.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 6,
      "name": "Выше нуля, ниже подушки",
      "scenario": "Рост расходов",
      "ending": 7700.0,
      "minimum": 7700.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 2300.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 7,
      "name": "Пустой календарь",
      "scenario": "В срок",
      "ending": 0.0,
      "minimum": 0.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 7,
      "name": "Пустой календарь",
      "scenario": "Задержка поступлений",
      "ending": 0.0,
      "minimum": 0.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 7,
      "name": "Пустой календарь",
      "scenario": "Рост расходов",
      "ending": 0.0,
      "minimum": 0.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 8,
      "name": "Переход через Новый год",
      "scenario": "В срок",
      "ending": 150.0,
      "minimum": 100.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 8,
      "name": "Переход через Новый год",
      "scenario": "Задержка поступлений",
      "ending": 150.0,
      "minimum": -50.0,
      "reserve_zero": 50.0,
      "reserve_cushion": 50.0,
      "first_shortfall": "2027-01-02",
      "end_only_misses_gap": true,
      "independent_match": true
    },
    {
      "case": 8,
      "name": "Переход через Новый год",
      "scenario": "Рост расходов",
      "ending": 127.5,
      "minimum": 100.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 9,
      "name": "Високосный февраль",
      "scenario": "В срок",
      "ending": 0.0,
      "minimum": 0.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 9,
      "name": "Високосный февраль",
      "scenario": "Задержка поступлений",
      "ending": 0.0,
      "minimum": -100.0,
      "reserve_zero": 100.0,
      "reserve_cushion": 100.0,
      "first_shortfall": "2028-02-29",
      "end_only_misses_gap": true,
      "independent_match": true
    },
    {
      "case": 9,
      "name": "Високосный февраль",
      "scenario": "Рост расходов",
      "ending": -15.0,
      "minimum": -15.0,
      "reserve_zero": 15.0,
      "reserve_cushion": 15.0,
      "first_shortfall": "2028-02-29",
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 10,
      "name": "Копейки",
      "scenario": "В срок",
      "ending": 0.0,
      "minimum": 0.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 10,
      "name": "Копейки",
      "scenario": "Задержка поступлений",
      "ending": 0.0,
      "minimum": 0.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 10,
      "name": "Копейки",
      "scenario": "Рост расходов",
      "ending": 0.0,
      "minimum": 0.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 11,
      "name": "Рост обязательных расходов",
      "scenario": "В срок",
      "ending": 0.0,
      "minimum": 0.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 11,
      "name": "Рост обязательных расходов",
      "scenario": "Задержка поступлений",
      "ending": 0.0,
      "minimum": 0.0,
      "reserve_zero": 0.0,
      "reserve_cushion": 0.0,
      "first_shortfall": null,
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 11,
      "name": "Рост обязательных расходов",
      "scenario": "Рост расходов",
      "ending": -15.0,
      "minimum": -15.0,
      "reserve_zero": 15.0,
      "reserve_cushion": 15.0,
      "first_shortfall": "2026-10-02",
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 12,
      "name": "Отрицательный итог",
      "scenario": "В срок",
      "ending": -10.0,
      "minimum": -30.0,
      "reserve_zero": 30.0,
      "reserve_cushion": 30.0,
      "first_shortfall": "2026-10-02",
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 12,
      "name": "Отрицательный итог",
      "scenario": "Задержка поступлений",
      "ending": -10.0,
      "minimum": -30.0,
      "reserve_zero": 30.0,
      "reserve_cushion": 30.0,
      "first_shortfall": "2026-10-02",
      "end_only_misses_gap": false,
      "independent_match": true
    },
    {
      "case": 12,
      "name": "Отрицательный итог",
      "scenario": "Рост расходов",
      "ending": -17.5,
      "minimum": -37.5,
      "reserve_zero": 37.5,
      "reserve_cushion": 37.5,
      "first_shortfall": "2026-10-02",
      "end_only_misses_gap": false,
      "independent_match": true
    }
  ],
  "projects": [
    {
      "name": "Рабочий пример и запас",
      "project": {
        "version": 1,
        "start": 200000,
        "startDate": "2026-10-01",
        "cushion": 30000,
        "delay": 7,
        "extraPercent": 15,
        "operations": [
          {
            "name": "Учебная выплата",
            "date": "2026-10-05",
            "kind": "payment",
            "amount": 180000
          },
          {
            "name": "Учебное поступление",
            "date": "2026-10-10",
            "kind": "receipt",
            "amount": 400000
          },
          {
            "name": "Учебная выплата",
            "date": "2026-10-12",
            "kind": "payment",
            "amount": 260000
          },
          {
            "name": "Учебная выплата",
            "date": "2026-10-20",
            "kind": "payment",
            "amount": 100000
          }
        ]
      }
    },
    {
      "name": "Оплата после обязательства",
      "project": {
        "version": 1,
        "start": 100000,
        "startDate": "2026-10-01",
        "cushion": 0,
        "delay": 7,
        "extraPercent": 15,
        "operations": [
          {
            "name": "Учебная выплата",
            "date": "2026-10-02",
            "kind": "payment",
            "amount": 150000
          },
          {
            "name": "Учебное поступление",
            "date": "2026-10-15",
            "kind": "receipt",
            "amount": 100000
          }
        ]
      }
    },
    {
      "name": "Та же сумма, другой порядок",
      "project": {
        "version": 1,
        "start": 100000,
        "startDate": "2026-10-01",
        "cushion": 0,
        "delay": 7,
        "extraPercent": 15,
        "operations": [
          {
            "name": "Учебное поступление",
            "date": "2026-10-02",
            "kind": "receipt",
            "amount": 100000
          },
          {
            "name": "Учебная выплата",
            "date": "2026-10-15",
            "kind": "payment",
            "amount": 150000
          }
        ]
      }
    },
    {
      "name": "Операции одного дня",
      "project": {
        "version": 1,
        "start": 0,
        "startDate": "2026-10-01",
        "cushion": 0,
        "delay": 7,
        "extraPercent": 15,
        "operations": [
          {
            "name": "Учебная выплата",
            "date": "2026-10-02",
            "kind": "payment",
            "amount": 100000
          },
          {
            "name": "Учебное поступление",
            "date": "2026-10-02",
            "kind": "receipt",
            "amount": 100000
          }
        ]
      }
    },
    {
      "name": "Отрицательный начальный остаток",
      "project": {
        "version": 1,
        "start": -1000,
        "startDate": "2026-10-01",
        "cushion": 0,
        "delay": 7,
        "extraPercent": 15,
        "operations": [
          {
            "name": "Учебное поступление",
            "date": "2026-10-03",
            "kind": "receipt",
            "amount": 2000
          }
        ]
      }
    },
    {
      "name": "Выше нуля, ниже подушки",
      "project": {
        "version": 1,
        "start": 10000,
        "startDate": "2026-10-01",
        "cushion": 10000,
        "delay": 7,
        "extraPercent": 15,
        "operations": [
          {
            "name": "Учебная выплата",
            "date": "2026-10-02",
            "kind": "payment",
            "amount": 2000
          }
        ]
      }
    },
    {
      "name": "Пустой календарь",
      "project": {
        "version": 1,
        "start": 0,
        "startDate": "2026-10-01",
        "cushion": 0,
        "delay": 0,
        "extraPercent": 0,
        "operations": []
      }
    },
    {
      "name": "Переход через Новый год",
      "project": {
        "version": 1,
        "start": 100,
        "startDate": "2026-12-30",
        "cushion": 0,
        "delay": 5,
        "extraPercent": 15,
        "operations": [
          {
            "name": "Учебное поступление",
            "date": "2026-12-31",
            "kind": "receipt",
            "amount": 200
          },
          {
            "name": "Учебная выплата",
            "date": "2027-01-02",
            "kind": "payment",
            "amount": 150
          }
        ]
      }
    },
    {
      "name": "Високосный февраль",
      "project": {
        "version": 1,
        "start": 0,
        "startDate": "2028-02-28",
        "cushion": 0,
        "delay": 1,
        "extraPercent": 15,
        "operations": [
          {
            "name": "Учебное поступление",
            "date": "2028-02-29",
            "kind": "receipt",
            "amount": 100
          },
          {
            "name": "Учебная выплата",
            "date": "2028-02-29",
            "kind": "payment",
            "amount": 100
          }
        ]
      }
    },
    {
      "name": "Копейки",
      "project": {
        "version": 1,
        "start": 0.3,
        "startDate": "2026-10-01",
        "cushion": 0,
        "delay": 0,
        "extraPercent": 0,
        "operations": [
          {
            "name": "Учебная выплата",
            "date": "2026-10-02",
            "kind": "payment",
            "amount": 0.1
          },
          {
            "name": "Учебная выплата",
            "date": "2026-10-03",
            "kind": "payment",
            "amount": 0.2
          }
        ]
      }
    },
    {
      "name": "Рост обязательных расходов",
      "project": {
        "version": 1,
        "start": 0,
        "startDate": "2026-10-01",
        "cushion": 0,
        "delay": 0,
        "extraPercent": 15,
        "operations": [
          {
            "name": "Учебное поступление",
            "date": "2026-10-01",
            "kind": "receipt",
            "amount": 100
          },
          {
            "name": "Учебная выплата",
            "date": "2026-10-02",
            "kind": "payment",
            "amount": 100
          }
        ]
      }
    },
    {
      "name": "Отрицательный итог",
      "project": {
        "version": 1,
        "start": 20,
        "startDate": "2026-10-01",
        "cushion": 0,
        "delay": 7,
        "extraPercent": 15,
        "operations": [
          {
            "name": "Учебная выплата",
            "date": "2026-10-02",
            "kind": "payment",
            "amount": 50
          },
          {
            "name": "Учебное поступление",
            "date": "2026-10-10",
            "kind": "receipt",
            "amount": 20
          }
        ]
      }
    }
  ]
}
