Подтвердить первую партию и отменить только следующую

Фактические данные получены через расширение interbase от отдельной локальной базы Firebird. Собственная учебная таблица удалена после наблюдений.

Наблюдаемый результат программы
НаблюдениеРезультат
Первая партия, единиц3
После первой партии7 / 5
commit_ret выполненда
После второй, ещё не подтверждённой партии5 / 7
После окончательного rollback7 / 5
Первая партия сохраниласьда
Строки и дополнительные наблюдения
{
    "initial": [
        10,
        2
    ],
    "first_batch": [
        {
            "warehouse_id": 1,
            "qty": 7
        },
        {
            "warehouse_id": 2,
            "qty": 5
        }
    ],
    "second_pending_batch": [
        {
            "warehouse_id": 1,
            "qty": 5
        },
        {
            "warehouse_id": 2,
            "qty": 7
        }
    ],
    "after_final_rollback": [
        {
            "warehouse_id": 1,
            "qty": 7
        },
        {
            "warehouse_id": 2,
            "qty": 5
        }
    ],
    "first_affected": {
        "debited": 1,
        "credited": 1
    },
    "second_affected": {
        "debited": 1,
        "credited": 1
    }
}

Самостоятельный запуск создаёт result.json с данными и metrics.json с проверками рядом с example.php.