aboutsummaryrefslogtreecommitdiff
path: root/docs/appendices/knowledge-boundaries.md
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-10-31 05:06:59 +0300
committerValentin Popov <valentin@popov.link>2026-10-31 05:06:59 +0300
commitcbf20b49657ee98cbab0548acb01eedfc685b2e4 (patch)
treed8b2f336600fa3d9d73535e1d5e5f2d496ede8ee /docs/appendices/knowledge-boundaries.md
parent8f4b8d1d146752b271c13f210fad61b50324c12a (diff)
downloadfparkan-cbf20b49657ee98cbab0548acb01eedfc685b2e4.tar.xz
fparkan-cbf20b49657ee98cbab0548acb01eedfc685b2e4.zip
docs(behavior): trace research context owner transfer
Diffstat (limited to 'docs/appendices/knowledge-boundaries.md')
-rw-r--r--docs/appendices/knowledge-boundaries.md46
1 files changed, 32 insertions, 14 deletions
diff --git a/docs/appendices/knowledge-boundaries.md b/docs/appendices/knowledge-boundaries.md
index 1979a0e..76ddaaa 100644
--- a/docs/appendices/knowledge-boundaries.md
+++ b/docs/appendices/knowledge-boundaries.md
@@ -801,20 +801,38 @@ immutable TRF-таблицей. Общий helper может остановитÑ
компонентов, поэтому подтверждается только эквивалентность state/selection
для такого входа, не идентичность callback trace или вычисления этих sums.
-Открыты host binding полного Handler(43), factory/ownership/lifetime реального
-исследовательского context при запуске миссии, построение AI candidate list и
-его штатный порядок, live x87 policy, inventory/economy transitions и точная типизация
-всех 16-byte TMA property values. Strict ore comparison и выбор первого
-кандидата при равенстве известны только для supplied-order chooser.
-Ignored acceptance проверяет реальные Part 1 AI DAT prefix и `scream.trf`, но
-byte-sorted порядок не заявляется как native catalog order и не сравнивает
-цену с вызовом chooser-а в mission context.
-
-Закрывающий эксперимент для оставшихся границ: связать startup owner, research
-context и AI candidate selection в реальном `Init`; затем сравнить контекст,
-порядок кандидатов и cost outputs оригинала с Rust на одной миссии. Покупки,
-inventory transitions и typed property schema требуют отдельных контролируемых
-исследований.
+Статический перенос владельца исследовательского контекста подтверждён по трём
+GOG-модулям. В `iron3d.dll` (SHA-256
+`d1dc4ea8535e2069b0a05c9e8be2724dd438ba44cca7a83007d8b2e50f9e35fa`)
+`FUN_1005ff40` (RVA `0x5ff40`) передаёт индекс клана в `FUN_100392e0` (RVA
+`0x392e0`), где он сохраняется в `row+0x1c` и копируется в `descriptor[0]`.
+Thunk RVA `0xcd0a0` ведёт к `World3D!GetNetPlayerNum` (RVA `0x9110`), а RVA
+`0xcd08e` — к `World3D!AddNewObjectToGame` (RVA `0x8310`); SHA-256
+`World3D.dll`: `17e4a3089b2583a8cf2356c9db0390b1aba138356a09130d79b4e7e4791da61e`.
+Вызов getter-а без аргументов завершается обычным `RET`; его результат становится
+arg1 следующего вызова. `AddNewObjectToGame` принимает девять DWORD, включая
+указатель на descriptor в arg9, и очищает стек через `RET 0x24`. RVA `0x83e9`
+читает arg9; ветвь class `0xb`/QI `0x502` на RVA `0x853e` загружает
+`descriptor[0]` и передаёт его в слот `+0x5c` на RVA `0x8544`;
+`MisLoad.dll` (SHA-256
+`c607762bb67db14ca530927c8e1347339b62b0a163ac90c708ee83142292e2bf`)
+`FUN_10002a30` (RVA `0x2a30`, `RET 8`) записывает его в `inner+8`. TMA tag
+`row+0x20` ограничивает число вызовов AI slot `+0x38`, но не задаёт владельца.
+
+Открыты runtime-выполнение Handler(43), создание и lifetime research context,
+включение factory-цепочки в полный штатный startup миссии, построение AI
+candidate list и штатный порядок кандидатов, live x87 policy,
+inventory/economy transitions и точная типизация всех 16-byte TMA property
+values. Strict ore comparison и выбор первого кандидата при равенстве известны
+только для supplied-order chooser. Ignored acceptance проверяет реальные Part 1
+AI DAT prefix и `scream.trf`, но byte-sorted порядок не заявляется как native
+catalog order и не сравнивает цену с вызовом chooser-а в mission context.
+
+Для проверки оставшихся границ нужно на живой миссии установить, проходит ли
+штатный `Init` по статически восстановленной передаче owner, зафиксировать
+создание и lifetime исследовательского контекста и сравнить порядок кандидатов
+и cost outputs оригинала с Rust. Покупки, inventory transitions и typed
+property schema требуют отдельных контролируемых исследований.
## Rare branches