diff options
Diffstat (limited to 'docs/appendices')
| -rw-r--r-- | docs/appendices/knowledge-boundaries.md | 9 | ||||
| -rw-r--r-- | docs/appendices/script-vm.md | 18 |
2 files changed, 19 insertions, 8 deletions
diff --git a/docs/appendices/knowledge-boundaries.md b/docs/appendices/knowledge-boundaries.md index 58deb31..00b261c 100644 --- a/docs/appendices/knowledge-boundaries.md +++ b/docs/appendices/knowledge-boundaries.md @@ -380,11 +380,14 @@ RVA `0xbcf0` для остальных. Это подтверждает стат Отдельный API `advance_loaded_mission_resources` принимает явное время очереди и обновляет представленные поля `CurrentOre`, строк распределителя и Control -selector `1`. API не подключён к игровому циклу и не обновляет Control amount, -профили, special object-state gate или жизненный цикл объектов. Если обязательный +selector `1`. Тот же расчёт вызывают `step_headless` и `frame` с явным +clock очереди; подготовка ресурсов и мировой шаг завершаются атомарно. +Оконное приложение пока использует static preview. Этот путь не обновляет +Control amount, профили или special object-state gate. Если обязательный запрос позднего объекта не поддержан, транзакция возвращает ошибку без применения подготовленных изменений. AutoDemo-тест подтверждает связь настоящих профилей с -этим шагом, но не полный паритет миссии; отдельный aggregate getter Behavior RVA +этим шагом и проверяет откат при ошибке ресурсов или мировой очереди, +но не полный паритет миссии; отдельный aggregate getter Behavior RVA `0xa490` в oracle не исполнен. Behavior selectors `0x1002` и `0x1005` используют значения выбранного diff --git a/docs/appendices/script-vm.md b/docs/appendices/script-vm.md index 69ea54f..dc42959 100644 --- a/docs/appendices/script-vm.md +++ b/docs/appendices/script-vm.md @@ -408,9 +408,11 @@ bundle, но остальные потребители исходного гло В Rust также нет значения аргумента в `AI+0x3fc`, recursion guard `AI+0x78` или одноразового latch `AI+0x8a8`. Поэтому это связанный начальный поднабор, а не полная активация SuperAI. После полной загрузки узкая Rust-реализация -вызывается явно через `advance_loaded_mission_resources(engine, queue_time_ms)`; -runtime не читает системную очередь, а приложение пока не вызывает API из -игрового цикла. Шаг использует разрешённые handles и представленные snapshots +вызывается из `step_headless(engine, input, queue_time_ms)` и +`frame(engine, queue_time_ms)`. Отдельный +`advance_loaded_mission_resources(engine, queue_time_ms)` остаётся доступен +для прямого ресурсного шага. Runtime не читает системную очередь, а оконное +приложение пока использует static preview. Шаг использует разрешённые handles и представленные snapshots профилей и Control, поэтому не воспроизводит отсутствующие в них callbacks. При ошибке ограниченного `Init` Rust отклоняет полную загрузку и сохраняет прежний мир и состояние генератора; такая политика отката принадлежит Rust loader-у. @@ -479,8 +481,14 @@ selector `1` на интерфейсе получателя становится только для полного режима; preview остаётся статическим. Явный API `advance_loaded_mission_resources` использует очередь времени, расписание, профили и представленные Control-таблицы, чтобы исполнить этот ограниченный -шаг над загруженным состоянием. `step_headless` по-прежнему шагает только -`World`. +шаг над загруженным состоянием. `step_headless` и `frame` требуют явный +`u32` clock и используют ту же подготовку: ресурсные изменения, расписания и +RNG остаются временными до успешного `World::step`. Ошибка ресурсов не +продвигает мир; ошибка мировой очереди не публикует ресурсные изменения. +Игнорируемый тест `headless_step_runs_resource_schedule_and_rolls_back_both_error_paths` +на AutoDemo проверяет равенство срока, исполнение следующего шага и обе ветви +отказа, включая отсутствие Control-таблицы у позднего клана и устаревший handle +в очереди. Это не запускает отдельный clock Control или полную миссионную VM. ### Добавление и нормализация долей |
