Commit graph

65 commits

Author SHA1 Message Date
alex
0dff4941bd events: recover the player event-posting API (lane E)
Closes B3's oracle gap and B2's known gap. Both milestones write into the
owner's event list; nothing modelled it, so their clean compares bounded the
economy fields only.

Container: EventStorage embedded at ServerPlayer+0x29c (0x1c bytes), verified by
ServerPlayer::GetEventStorage 0x0080db00 whose whole body is 'lea eax,[ecx+0x29c];
ret'. EvNxID at +0x14 == player+0x2b0, exactly the byte run the harness guard
reports. The list is a vector<TurnEvents{int EvTurn; vector<PlayerEvent>}> --
bucketed by turn, not flat, which the save-editor struct note had wrong.

Entry point: int __thiscall EventStorage::PostEvent(this, std::string BY VALUE,
std::string BY VALUE, void* obj, Vector3* pos, int turn, const char* img,
int act), 0x008862b0, RET 0x4c. 161 call sites in 110 functions: this is the
whole simulation's event API, not a research helper. Dedup is per turn bucket on
message/image/location/position/action but NOT summary; act 0 with no subject and
no position is stored as 2; EvNxID starts at 0 and is promoted to 1 on first post;
PruneOldTurns drops buckets older than turn-50 with an off-by-one that always
leaves one stale bucket behind.

Record: 0x74 bytes, EvEID(+4) EvDsc(+8) EvMsg(+0x24) EvLoc(+0x40) EvPos(+0x44)
EvImg(+0x50) EvAct(+0x6c) EvCID(+0x70) -- confirmed field by field against
turn3-state.sav, which contains the EVENT_RESEARCH_OVERBUDGET record itself.

B3's defect is fully explained: 0x00587b97, reached only from the
completion-roll-FAILED branch, under !wasDone && nowDone && owner.

Three note corrections: EvPos defaults to FLT_MAX, not infinity (writing +inf
changes the save bytes); the save array is turn-bucketed, not flat;
EVENT_TECHS_UNLOCKED has no 'parent researched' clause.

56 entries added to ghidra/addresses.json (header regenerated); 11 prototypes,
13 labels, 12 comments and 2 structs written back to the Ghidra project.
2026-09-08 02:47:11 -04:00
alex
84d5609af8 dashboard: 50/65 mapped, 33 verified after B4 integration 2026-09-08 02:13:24 -04:00
alex
3b5eca29a2 reva_call.py: HTTP fallback for Ghidra when the MCP link drops; claim VM140 for recapture lane 2026-09-08 02:12:16 -04:00
alex
ff67ec0d9a b4 live artifacts; two-base StrategyServer hazard in the contract 2026-09-08 02:07:28 -04:00
alex
b878c4c48f harness audit merged; qualify B1/B4 claims with the blind spots it found 2026-09-08 01:30:33 -04:00
alex
84a0b7ceae B2 verified live; record the RollResearchEvent draw as behaviourally unproven 2026-09-08 01:19:47 -04:00
alex
2d1a097b07 board: B4 code-complete with 22 corrections; harness audit lane opened 2026-09-08 00:58:59 -04:00
alex
4d535028ed b4 static findings: 22 formula corrections, 3 verified signatures, contract -> 324 entries 2026-09-08 00:57:55 -04:00
alex
535d1c3b58 B3 live partial pass; record the undeclared-side-effect-list harness gap 2026-09-08 00:30:32 -04:00
alex
83107f91f0 board: B2 code-complete with 10 corrections; B4 colony/movement lane opened 2026-09-08 00:02:10 -04:00
alex
ead46e2608 M2 verified live (weapons); section compare crash recorded as a gap 2026-09-07 23:52:51 -04:00
alex
906858f60b B1 verified on the live game; record budget-tail coverage gap and the difficulty-mods shortcut 2026-09-07 23:26:54 -04:00
alex
1e7428d5aa board: B2 offline lane; VM queue M2/B3/B2 2026-09-07 23:15:46 -04:00
alex
6600382e12 b3 static findings: rng draw mapping, NextInt inclusive, float32 odds; address contract +17 2026-09-07 23:14:51 -04:00
alex
73f5f1e2ad board: B3 offline lane, VM queue M2 then B3 2026-09-07 22:44:02 -04:00
alex
f146a7616a m2 code merged (VM window pending); record the 3-word vector struct hazard 2026-09-07 22:43:05 -04:00
alex
01c3217b5c lab rule: VM140 shim deploys are exclusive; record the holder 2026-09-07 22:36:11 -04:00
alex
23b8eda585 board+dashboard: sim formulas pinned, game/effects merged, B1 in progress 2026-09-07 22:34:17 -04:00
alex
fa47bcdd6f correct the rng float-parity note: float10 is the x86 return ABI, not evidence of extended-precision math 2026-09-07 22:29:34 -04:00
alex
cea76e2771 rng: verify Seed/Twist/NextFloat signatures; lazy twist confirmed; flag x87 float-parity risk 2026-09-07 22:28:56 -04:00
alex
87a39b6731 plan the behavioral slice: B1 ComputeBudget, B2 OnTechResearched, B3 ProcessResearch (RNG); gate on RNG signatures 2026-09-07 22:24:44 -04:00
alex
8116f9e0c8 P2-M1 verified on the live game: golden trace, 0-divergence compare, replace passes the End-Turn oracle 2026-09-07 22:18:22 -04:00
alex
9e74691609 dashboard refresh (game/design merged, main green) 2026-09-07 22:15:45 -04:00
alex
e76e39ac03 board+dashboard: game/design merged 2026-09-07 22:11:29 -04:00
alex
602f108418 backlog: pin sim formulas + tech effects 2026-09-07 22:06:04 -04:00
alex
de7a2bef04 tech effects (196-entry TechId table, OnTechResearched), 8 formula gaps answered, std::string settled 2026-09-07 22:05:49 -04:00
alex
8cdf3cd81d board+dashboard: engine parity merged 2026-09-07 22:01:26 -04:00
alex
50f608f997 dashboard refresh 2026-09-07 18:06:21 -04:00
alex
5d877d373b guides: RE how-to for 2000s MSVC/DX9 games (98 sources); queue replay-checksum, class recovery, apitrace/TTD 2026-09-07 18:05:58 -04:00
alex
254a077d6c docs: annotate R1 tag spellings; dashboard refresh 2026-09-07 17:57:21 -04:00
alex
436a51fa04 save-reader: real tag names (byte-confirmed), 36 tests, strict 3/3 2026-09-07 17:56:59 -04:00
alex
c68ac17106 dashboard: game/data merged 2026-09-07 17:56:19 -04:00
alex
c61a35f1e8 board: game/data verified; allows default resolved 2026-09-07 17:56:07 -04:00
alex
66511bf03b board+dashboard: shim/trace merged; M1 in progress 2026-09-07 17:53:18 -04:00
alex
e4adf2fb31 board: parity + tag-fix lanes 2026-09-07 17:49:31 -04:00
alex
7a68cdcccb dashboard: stream/rng + vfs merged, oracle verified 2026-09-07 17:47:57 -04:00
alex
1eb967756b verified: End-Turn oracle byte-identical cross-process; stream tag corrections 2026-09-07 17:46:20 -04:00
alex
078dbbbcc7 loader prototypes M1-M4 + app spine signatures; address contract 80 entries; first-wins parity bug logged 2026-09-07 17:45:24 -04:00
alex
1ee49da917 board+dashboard: mars/vfs merged 2026-09-07 17:41:29 -04:00
alex
ea866da452 dashboard: 2026-09-07 refresh 2026-09-07 17:37:37 -04:00
alex
6095c0388d dashboard: coverage generator + first render 2026-09-07 17:36:27 -04:00
alex
d0cfcadce8 board: shim trace lane 2026-09-07 17:29:49 -04:00
alex
4547f6c8fe verify: compare harness (trace format, tracecmp, replay, oracle bridge); board catch-up; sim formula gaps 2026-09-07 17:28:37 -04:00
alex
5614940650 p2-m0 evidence: shim log + menu screenshot; Initialize signature caution 2026-09-07 17:22:21 -04:00
alex
2d298b1e98 phase 2: address contract + generator, turn-internals filed, M0-M4 rows; sibling repo sots-engine 2026-09-07 17:08:40 -04:00
alex
daea98feba verify: ship-design rules + validator, 127/127 stock designs pass; species index order decoded 2026-09-07 16:45:25 -04:00
alex
f644b83581 battle-load: profile filed, bug parked; sampler + resume recipe kept 2026-09-07 16:43:14 -04:00
alex
426df0232a verified: save_reader strict-clean on 3 real saves; all core layouts confirmed; SAVE_FORMAT confirmed 2026-09-07 16:39:41 -04:00
alex
5cea675b45 board: ship-design rules in progress 2026-09-07 16:27:15 -04:00
alex
570bb38659 board: round five breadth; battle-load to be filed and dropped 2026-09-07 16:26:24 -04:00