Детерминизм требует полного контекста
Воспроизводится не ответ на кадр, а жизнь машины на ленте.
Для stateful-системы формула «одинаковый вход — одинаковый выход» слишком коротка.
Полный инвариант
Одинаковый след получается при совпадении:
- байтов
.d8p; - версии и арифметики runtime;
- начального состояния;
- полной упорядоченной VSB-ленты;
- границ кадров;
- внешних и автоматических reset.
trace = run(personality, initial_state, tape, reset_schedule)
Один и тот же последний кадр после разных историй законно даёт разные состояния. Это память, а не недетерминизм.
Что можно проверять
- FIRE по времени и pattern id;
- победителей и коллизии доменов;
- BUS16 и flags;
- состояние аккумуляторов и lock;
- hash входной ленты и личности.
Wall-clock не входит в семантический trace. Он зависит от реализации и нагрузки.
Этический смысл
Детерминизм не делает решение автоматически правильным. Он делает ответственность точной:
- пекарь отвечает за устройство личности;
- владелец пресса — за смысл и качество ленты;
- runtime — за исполнение контракта;
- директор — за действие и риск.
В Whaler live можно сравнивать с offline replay только после совпадения источника, нарезки, прогрева и reset. Такая строгость полезнее общего обещания «бот повторяем».