From 23b8eda5854b769dc830c49e4a242432586fb727 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 7 Sep 2026 22:34:17 -0400 Subject: [PATCH] board+dashboard: sim formulas pinned, game/effects merged, B1 in progress --- campaign/DASHBOARD.md | 37 +++++++++++++++++++------------------ campaign/board.md | 5 +++-- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/campaign/DASHBOARD.md b/campaign/DASHBOARD.md index 1ff416c..b2912a4 100644 --- a/campaign/DASHBOARD.md +++ b/campaign/DASHBOARD.md @@ -1,19 +1,19 @@ # SotS RE campaign — coverage dashboard -Generated 2026-09-08 02:24 UTC · `sots-re` @ 8116f9e,2026-09-07 · `sots-engine` @ 8b231c0,2026-09-07 (39 commits) · regenerate with `tools/dashboard.py` +Generated 2026-09-08 02:34 UTC · `sots-re` @ fa47bcd,2026-09-07 · `sots-engine` @ de779ad,2026-09-07 (43 commits) · regenerate with `tools/dashboard.py` > **North star:** A functional reimplementation of the engine — behavior-equivalent, NOT byte-for-byte ## 1. Map coverage (campaign/board.md) -52 targets · mapped-or-better **40/52** `[████████░░] 77%` · verified **23/52** `[████░░░░░░] 44%` +53 targets · mapped-or-better **42/53** `[████████░░] 79%` · verified **25/53** `[█████░░░░░] 47%` | Status | Count | % | |---|---:|---:| -| verified | 23 | 44% | -| mapped | 17 | 33% | -| in-progress | 2 | 4% | -| backlog | 9 | 17% | +| verified | 25 | 47% | +| mapped | 17 | 32% | +| in-progress | 3 | 6% | +| backlog | 7 | 13% | | blocked | 1 | 2% | | Type | verified | mapped | in-progress | backlog | blocked | total | @@ -21,16 +21,16 @@ Generated 2026-09-08 02:24 UTC · `sots-re` @ 8116f9e,2026-09-07 · `sots-engine | objects | 5 | 2 | 0 | 0 | 0 | 7 | | control-flow | 0 | 2 | 0 | 0 | 0 | 2 | | subsystems | 2 | 6 | 1 | 3 | 1 | 13 | -| engine | 8 | 1 | 0 | 0 | 0 | 9 | +| engine | 10 | 0 | 0 | 0 | 0 | 10 | | verify | 4 | 2 | 0 | 0 | 0 | 6 | -| phase2 | 2 | 0 | 1 | 5 | 0 | 8 | -| meta | 2 | 4 | 0 | 1 | 0 | 7 | +| phase2 | 2 | 0 | 2 | 4 | 0 | 8 | +| meta | 2 | 5 | 0 | 0 | 0 | 7 | ## 2. Binary understanding - RTTI type descriptors: **1,924** (`Game::` 1,404, `Mars::` 194; serializable types 179) - Classes with recovered member layouts: **21** / 179 serializable types `[█░░░░░░░░░] 12%` — heuristic: distinct `Game::X`/`Mars::X` in `##`–`####` headings of `struct-recovery.md` + `schema-gaps-resolved.md` -- Functions: **41,411** (parsed from `01-fingerprint.md`); named/annotated in the **address contract** (`ghidra/addresses.json`, not Ghidra's full rename count): **137**, verified **123** `[█████████░] 90%` +- Functions: **41,411** (parsed from `01-fingerprint.md`); named/annotated in the **address contract** (`ghidra/addresses.json`, not Ghidra's full rename count): **137**, verified **126** `[█████████░] 92%` ## 3. Data layer @@ -47,7 +47,8 @@ Generated 2026-09-08 02:24 UTC · `sots-re` @ 8116f9e,2026-09-07 · `sots-engine | `game/config` | 315 | 3 | 89 | yes | M1.md | | `game/data` | 2,053 | 12 | 462 | yes | game-data.md | | `game/design` | 1,024 | 17 | 250 | yes | game-design.md | -| `game/sim` | 1,342 | 9 | 356 | yes | game-sim.md | +| `game/effects` | 811 | 3 | 160 | yes | game-effects.md | +| `game/sim` | 1,618 | 9 | 466 | yes | game-sim.md | | `mars/parse` | 875 | 12 | 277 | yes | mars-parse.md | | `mars/rng` | 166 | 0 | 0 | yes | mars-rng.md | | `mars/stream` | 3,703 | 6 | 195 | yes | mars-stream.md | @@ -56,9 +57,9 @@ Generated 2026-09-08 02:24 UTC · `sots-re` @ 8116f9e,2026-09-07 · `sots-engine | `shim` | 2,452 | 0 | 0 | direct (WIN32) | M0.md | | `shim/hooks` | 368 | 0 | 0 | direct (WIN32) | M0.md | | `shim/trace` | 1,824 | 8 | 248 | direct (WIN32) | shim-trace.md | -| **total** | **15,809** | **84** | **2262** | | | +| **total** | **16,896** | **87** | **2532** | | | -Board `engine:` rows: verified **8**, mapped 1, in flight 0 (of 9) — verified & merged `[█████████░] 89%` +Board `engine:` rows: verified **10**, mapped 0, in flight 0 (of 10) — verified & merged `[██████████] 100%` ## 5. Phase 2 milestones @@ -81,7 +82,7 @@ Board `engine:` rows: verified **8**, mapped 1, in flight 0 (of 9) — verified ## 7. Open questions -Open **24** · resolved/parked 9 · backlog items: Now 4, Next 3, Later 2, Breadth queue 7, Parked 1, From the RE how-to 4, Behavioral slice 4 +Open **24** · resolved/parked 10 · backlog items: Now 4, Next 3, Later 2, Breadth queue 7, Parked 1, From the RE how-to 4, Behavioral slice 4 Most recent open: @@ -93,10 +94,10 @@ Most recent open: ## 8. Delta since previous dashboard -- verified targets: 23 → 23 (+0) · mapped-or-better: 40 → 40 (+0) -- engine LOC: 15,809 → 15,809 (+0) · test files: 84 → 84 (+0) · checks: 2,262 → 2,262 (+0) -- addresses verified: 123 → 123 (+0) · recovered layouts: 21 → 21 (+0) · open questions: 24 → 24 (+0) +- verified targets: 23 → 25 (+2) · mapped-or-better: 40 → 42 (+2) +- engine LOC: 15,809 → 16,896 (+1,087) · test files: 84 → 87 (+3) · checks: 2,262 → 2,532 (+270) +- addresses verified: 123 → 126 (+3) · recovered layouts: 21 → 21 (+0) · open questions: 24 → 24 (+0) --- warnings: mars-rng.md: no oracle total row parsed; mars-stream.md: no oracle total row parsed; mars-vfs.md: no oracle total row parsed - + diff --git a/campaign/board.md b/campaign/board.md index 6fdded2..3e3f4ca 100644 --- a/campaign/board.md +++ b/campaign/board.md @@ -42,7 +42,7 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`). | compare harness | verify | mapped | high | 100% | 2026-09-07 | verify/harness/compare/: TRACE_FORMAT.md, tracecmp.py, replay, oracle bridge | | engine: mars/parse | engine | verified | high | 100% | 2026-09-07 | sots-engine: brace-block + .effect readers; oracle 1531/1531; cross-compiles i686; wired into host+shim builds | | engine: mars/text | engine | verified | high | 100% | 2026-09-07 | flat-kv, id-manifest, csv; oracle 64/64 (Strings.csv 5722 rows); ctest green | -| engine: game/sim formulas | engine | mapped | med | 80% | 2026-09-07 | economy/research/colony/movement pure fns, 356 checks; 5 low-confidence formulas fed back to open-questions | +| engine: game/sim formulas | engine | verified | high | 100% | 2026-09-08 | sim-pin merged: all 5 low-confidence formulas pinned (3.3 on protection limit, old-state bankruptcy decisions, hazard curve, money tail, pop bonus); tests 356->466; + game/effects (196 TechIds, 44 typed effects, 254 checks) | | engine: mars/stream + rng | engine | verified | high | 100% | 2026-09-07 | merging: 100% exact dump agreement on 3 saves; typed shapes round-trip byte-identical whole file; RNG = seed(RSeed)+2 twists confirmed; 4 tag-name fixes for SAVE_FORMAT | | engine: game/data catalogs | engine | verified | high | 100% | 2026-09-07 | merged: WeaponDef/ShipSectionDef/TurretTable/IdRegistry/TechTree/StringTable + cross_check; oracle 229,042 values 0 diffs; crosslink set reproduced exactly; 34 malformed shipped tokens pinned | | engine: mars/vfs (gob) | engine | verified | high | 100% | 2026-09-07 | merged: ZIP reader + native override; 8352+2035 entries = unzip -l; all 10268 files CRC-clean; byte-equal spot checks; ctest 11/11 | @@ -53,7 +53,8 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`). | tech effects (code-defined) | subsystem | mapped | high | 90% | 2026-09-07 | findings/subsystems/tech-effects.md: g_TechIdNames 196 @0x009ff9e4 (TechId=10000+i), effects in ServerPlayer::OnTechResearched 0x00891790; SpeciesDef table 0x00b10a00; 36 strategic / ~45 gates / ~115 none. Feeds game/sim + game/data | | strategic formula gaps | subsystem | verified | high | 100% | 2026-09-07 | findings/subsystems/formula-gaps.md: all 8 answered with code (bankruptcy 3.3 on BnkPr, linear hazard, money tail, pbon, slider, [6] net, no speed clamp, decay hits current) | | engine: game/design | engine | verified | high | 100% | 2026-09-07 | merged; see ShipDesignDef row | -| P2-B1 ComputeBudget (behavioral) | phase2 | backlog | — | 0% | 2026-09-08 | FIRST BEHAVIORAL BRICK: hook ServerPlayer::ComputeBudget 0x00863030 (verified thiscall, pure, 8 calls/turn) vs game/sim/economy.cpp; workload = ref-turn2.sav + End Turn | +| P2-B1 ComputeBudget (behavioral) | phase2 | in-progress | — | 0% | 2026-09-08 | FIRST BEHAVIORAL BRICK: hook ServerPlayer::ComputeBudget 0x00863030 (verified thiscall, pure, 8 calls/turn) vs game/sim/economy.cpp; workload = ref-turn2.sav + End Turn | | P2-B2 OnTechResearched (behavioral) | phase2 | backlog | — | 0% | 2026-09-08 | hook ServerPlayer::OnTechResearched 0x00891790 (verified) vs the tech-effects layer from sim-pin | | P2-B3 ProcessResearch (behavioral, RNG) | phase2 | backlog | — | 0% | 2026-09-08 | hook TechTree::ProcessResearch 0x005876c0 (verified); snapshot MT19937 state pre-call and drive ours from a copy -> validates RNG + odds + Zuul double roll together | | RNG signatures (Ghidra) | meta | mapped | high | 75% | 2026-09-08 | Seed/Twist/NextFloat verified (own pass): lazy twist, left@+0x9c4, NextFloat via x87 = float-parity risk. NextInt still unverified | +| engine: game/effects | engine | verified | high | 100% | 2026-09-08 | merged: TechId enum (196 slots @10000+i), 44 ids with typed strategic effects, species flag bits, ApplyTechEffect; 254 checks |