feat(runtime): support tag-26 Control resource budgets
Docs Deploy / Build and Deploy MkDocs (push) Successful in 41s

This commit is contained in:
Valentin Popov committed 2026-10-29 20:26:15 +04:00
1 parent 1d20509b05
commit ba7cb7f0f9
5 files changed
+688 -42

No files matched your search

+25 -6
View File
@@ -1082,12 +1082,31 @@ Rust переносит этот порядок, сохраняет native на
классы, которые исходный диспетчер направляет в фабрику по умолчанию. Текущая
категория читается из descriptor: её native map подтверждён только для тегов
`0..=34`. Неподдержанный специализированный callback, недоступный provider или
неподдержанное число останавливают шаг без частичных изменений. В
лицензированном `min_l_n1.dat` предварительная проверка распознаёт текущие
категории и выявляет неподдержанный factory tag `26`; она отклоняет бюджетный
вызов до расчёта ставок и обновлений, сохраняя таблицу целиком. Полный
бюджетный проход на реальной миссии и подключение к игровым часам пока не
подтверждены.
неподдержанное число останавливают шаг без частичных изменений.
У фабричного tag `26` ставка складывается из базового значения устройства и
изменяемой добавки. Затем сумма умножается на прошедшее время:
```text
rate = -((B + extra) * dt)
```
Например, при `B = 0.2`, `extra = 0.3` и `dt = 0.5` устройство запрашивает
`0.25`. Если доступный бюджет равен `0.125`, оно получает половину запроса;
устройство сохраняет долю распределения, а сама добавка переживает замену
descriptor через `INTO`. Так разные части Control могут менять базовую запись и
текущее состояние независимо.
Эту добавку записывает исходный selector `0x500`, когда текущий descriptor
тоже относится к tag `26`. Мы восстановили его точку вызова в Behavior, но
смысл передаваемого там значения пока не установлен, поэтому этот Behavior путь
ещё не исполняется. Подтверждённые callbacks tag `26`, их native адреса и
точные проверочные векторы приведены в [техническом приложении](../appendices/script-vm.md#фабричный-tag-26-изменяемая-добавка).
Полный явный CPU-проход по исходной таблице из одиннадцати устройств
`min_l_n1.dat` тоже завершился. Этот результат проверяет вычисление для одной
загруженной таблицы; обновление пока не подключено к игровым часам и не
заменяет полный Control tick.
Отдельный путь объекта класса `4` умножает интервал на контактный коэффициент и
передаёт изменение строке. В проверенном примере коэффициент `1`, интервал `2`,