board+dashboard: sim formulas pinned, game/effects merged, B1 in progress

This commit is contained in:
alex 2026-09-07 22:34:17 -04:00
parent fa47bcdd6f
commit 23b8eda585
2 changed files with 22 additions and 20 deletions

View file

@ -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
<!-- dashboard-metrics {"verified": 23, "mapped_plus": 40, "targets": 52, "loc": 15809, "tests": 84, "checks": 2262, "addr_verified": 123, "addr_total": 137, "layouts": 21, "open_q": 24} -->
<!-- dashboard-metrics {"verified": 25, "mapped_plus": 42, "targets": 53, "loc": 16896, "tests": 87, "checks": 2532, "addr_verified": 126, "addr_total": 137, "layouts": 21, "open_q": 24} -->

View file

@ -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 |