sots-re/verify/results/shim/unlock-shim.log
Alex 5a3f986f38 lane U: the unlock cascade, implemented and live-verified
Reads: TechTree::PrereqsMet 0x0057d8e0 (AND of ORs; zero groups TRUE, an empty
group FALSE), the prerequisite layout at TechDef+0x88/+0x98, the tail collector
0x00587cc3, and the head of OnTechResearched (RecordObservedTech unconditional;
the research-event roll gated on ResT == def && ResearchRollPending).

Live: 35 compared calls over three workloads, 0 divergences, tracecmp exit 0,
End-Turn oracle hashes unchanged. The EVENT_TECHS_UNLOCKED residual lane P
predicted and lane V measured is closed by running the cascade, not by posting
on completion.

12 new addresses in ghidra/addresses.d/lane-u.json (header 615 -> 627).
2026-09-08 06:57:37 -04:00

94 lines
10 KiB
Text

06:30:02.121 [tid 6384] ==== sots-engine shim (binkw32 proxy) build unlock-405ba41-20260908T1026Z ====
06:30:02.121 [tid 6384] exe: C:\SOTS\Sword of the Stars.exe
06:30:02.121 [tid 6384] exe base=0x00e80000 (link-time image base 0x00400000, ASLR delta +11010048) pid=7268 shim=69530000
06:30:02.121 [tid 6384] addresses: Source: sots-re ghidra/addresses.json @ 545c715, generated 2026-09-08 by tools/gen_addresses.py
06:30:02.121 [tid 6384] config: hooks=trace
06:30:02.121 [tid 6384] config: hook.Shim::SelfTest::Fill=off
06:30:02.121 [tid 6384] config: hook.Mars::GlobalConsts::LoadFile=off
06:30:02.121 [tid 6384] config: hook.Game::WeaponDictionary::Init=off
06:30:02.121 [tid 6384] config: hook.Game::SectionDictionary::SectionDictionary=off
06:30:02.121 [tid 6384] config: hook.Game::ServerPlayer::ComputeBudget=off
06:30:02.121 [tid 6384] config: hook.Game::ServerPlayer::OnTechResearched=off
06:30:02.121 [tid 6384] config: hook.Game::ServerSystem::ProcessTurn=off
06:30:02.121 [tid 6384] config: hook.Game::StrategyServer::MoveFleet=off
06:30:02.121 [tid 6384] config: hook.Game::StrategyServer::ProcessFleetMovement=off
06:30:02.121 [tid 6384] config: hook.Game::TechTree::ProcessResearch=compare
06:30:02.121 [tid 6384] config: trace.path=C:\SOTS\shim.trace.jsonl
06:30:02.121 [tid 6384] config: trace.inline_max=256
06:30:02.121 [tid 6384] config: trace.flush=always
06:30:02.183 [tid 6384] trace: C:\SOTS\shim.trace.jsonl (default mode trace, inline_max 256, flush always)
06:30:02.183 [tid 6384] hook: Mars_Application_Initialize rva=0x004a0e50 -> va=01320e50
06:30:02.183 [tid 6384] hook: MH_Initialize -> MH_OK
06:30:02.183 [tid 6384] hook: MH_CreateHook -> MH_OK (trampoline=017e0fe0)
06:30:02.199 [tid 6384] hook: MH_EnableHook -> MH_OK
06:30:02.199 [tid 6384] cfg: GlobalConsts hook ready (scale constant 0.017453292519943295)
06:30:02.199 [tid 6384] hook: Mars::GlobalConsts::LoadFile rva=0x004b73c0 mode=off (not installed)
06:30:02.199 [tid 6384] dict: dictionaries hook ready (crt new=6adc232b delete=6adc0174)
06:30:02.199 [tid 6384] hook: Game::WeaponDictionary::Init rva=0x0019a4c0 mode=off (not installed)
06:30:02.199 [tid 6384] hook: Game::SectionDictionary::SectionDictionary rva=0x00176f40 mode=off (not installed)
06:30:02.199 [tid 6384] research: ProcessResearch hook ready (Cost=00ffda00, node=0x34, rng=0x9cc, fpu_cw=0x027f)
06:30:02.199 [tid 6384] hook: Game::TechTree::ProcessResearch rva=0x001876c0 -> va=010076c0 MH_CreateHook -> MH_OK (trampoline=017e0fc0)
06:30:02.215 [tid 6384] hook: Game::TechTree::ProcessResearch MH_EnableHook -> MH_OK mode=compare
06:30:02.215 [tid 6384] techfx: OnTechResearched hook ready (regions=15, gate=0/0, fpu_cw=0x027f)
06:30:02.215 [tid 6384] hook: Game::ServerPlayer::OnTechResearched rva=0x00491790 mode=off (not installed)
06:30:02.215 [tid 6384] hook: Game::ServerPlayer::ComputeBudget rva=0x00463030 mode=off (not installed)
06:30:02.215 [tid 6384] hook: Game::ServerSystem::ProcessTurn rva=0x003598e0 mode=off (not installed)
06:30:02.215 [tid 6384] hook: Game::StrategyServer::MoveFleet rva=0x003d9ee0 mode=off (not installed)
06:30:02.215 [tid 6384] hook: Game::StrategyServer::ProcessFleetMovement rva=0x003da9a0 mode=off (not installed)
06:30:02.215 [tid 6384] fpu: module init, entry cw=0x027f 53bit-double/nearest; force=off value=0x0000 sample_ticks=on
06:30:02.215 [tid 6384] fpu: StrategyClient::EndTurn rva=0x00383be0 -> va=01203be0 MH_CreateHook -> MH_OK (trampoline=017e0fa0)
06:30:02.230 [tid 6384] fpu: StrategyClient::EndTurn MH_EnableHook -> MH_OK
06:30:02.230 [tid 6384] fpu: StrategyServer::BeginProcessTurn rva=0x003d98e0 -> va=012598e0 MH_CreateHook -> MH_OK (trampoline=017e0f80)
06:30:02.246 [tid 6384] fpu: StrategyServer::BeginProcessTurn MH_EnableHook -> MH_OK
06:30:02.246 [tid 6384] fpu: StrategyServer::ProcessTurn rva=0x003dc6c0 -> va=0125c6c0 MH_CreateHook -> MH_OK (trampoline=017e0f60)
06:30:02.262 [tid 6384] fpu: StrategyServer::ProcessTurn MH_EnableHook -> MH_OK
06:30:02.262 [tid 6384] fpu: DemoApp::OnTick rva=0x0049a640 -> va=0131a640 MH_CreateHook -> MH_OK (trampoline=017e0f40)
06:30:02.262 [tid 6384] fpu: DemoApp::OnTick MH_EnableHook -> MH_OK
06:30:02.262 [tid 6384] selftest: Shim::SelfTest::Fill mode=off checksum=075ef0c3 records=0
06:30:02.277 [tid 6384] Application::Initialize called (this=03b38128)
06:30:03.027 [tid 6384] fpu: TICK BASELINE at OnTick (this=03b38128): cw=0x127f 53bit-double/nearest
06:35:03.077 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=0e92ee08): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:35:06.155 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351dd610): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:35:06.186 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351dc038): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:35:06.218 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351e0908): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:35:07.171 [tid 6384] fpu: sample at StrategyServer::BeginProcessTurn (this=0e966350): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:35:07.171 [tid 6384] fpu: sample at StrategyServer::ProcessTurn (this=0e966350): cw=0x127f 53bit-double/nearest
06:35:07.186 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:35:07.202 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:35:07.233 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:36:33.764 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=0e92ee08): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:36:36.811 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351dd610): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:36:36.843 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351dc038): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:36:36.858 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351e0908): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:36:37.827 [tid 6384] fpu: sample at StrategyServer::BeginProcessTurn (this=0e966350): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:36:37.827 [tid 6384] fpu: sample at StrategyServer::ProcessTurn (this=0e966350): cw=0x127f 53bit-double/nearest
06:36:37.843 [tid 6384] research: cascade ok=1 completions=1 unlocked=3 otch_appends=1 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:36:37.874 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:36:37.889 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:37:03.343 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=0e92ee08): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:37:06.421 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351dd610): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:37:06.436 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351dc038): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:37:06.468 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351e0908): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:37:07.421 [tid 6384] fpu: sample at StrategyServer::BeginProcessTurn (this=0e966350): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:37:07.421 [tid 6384] fpu: sample at StrategyServer::ProcessTurn (this=0e966350): cw=0x127f 53bit-double/nearest
06:37:07.436 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:37:07.468 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:37:07.483 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:37:32.858 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=0e92ee08): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:37:35.921 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351dd610): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:37:35.936 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351dc038): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:37:35.968 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351e0908): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:37:36.936 [tid 6384] fpu: sample at StrategyServer::BeginProcessTurn (this=0e966350): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:37:36.936 [tid 6384] fpu: sample at StrategyServer::ProcessTurn (this=0e966350): cw=0x127f 53bit-double/nearest
06:37:36.952 [tid 6384] research: cascade ok=1 completions=1 unlocked=3 otch_appends=1 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:37:36.983 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:37:36.999 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:38:02.624 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=0e92ee08): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:38:05.686 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351dd610): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:38:05.702 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351dc038): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:38:05.733 [tid 6384] fpu: sample at StrategyClient::EndTurn (this=351e0908): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:38:06.686 [tid 6384] fpu: sample at StrategyServer::BeginProcessTurn (this=0e966350): cw=0x127f 53bit-double/nearest [no fpu.force configured]
06:38:06.686 [tid 6384] fpu: sample at StrategyServer::ProcessTurn (this=0e966350): cw=0x127f 53bit-double/nearest
06:38:06.702 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:38:06.733 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0
06:38:06.749 [tid 6384] research: cascade ok=1 completions=0 unlocked=0 otch_appends=0 roll_draws=0 failures=0 depth=0 name_unreadable=0