board+dashboard: shim/trace merged; M1 in progress
This commit is contained in:
parent
e4adf2fb31
commit
66511bf03b
2 changed files with 22 additions and 21 deletions
|
|
@ -1,19 +1,19 @@
|
|||
# SotS RE campaign — coverage dashboard
|
||||
|
||||
Generated 2026-09-07 21:47 UTC · `sots-re` @ 1eb9677,2026-09-07 · `sots-engine` @ 12a3666,2026-09-07 (20 commits) · regenerate with `tools/dashboard.py`
|
||||
Generated 2026-09-07 21:53 UTC · `sots-re` @ e4adf2f,2026-09-07 · `sots-engine` @ 9e110b4,2026-09-07 (23 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)
|
||||
|
||||
43 targets · mapped-or-better **32/43** `[███████░░░] 74%` · verified **16/43** `[████░░░░░░] 37%`
|
||||
45 targets · mapped-or-better **33/45** `[███████░░░] 73%` · verified **17/45** `[████░░░░░░] 38%`
|
||||
|
||||
| Status | Count | % |
|
||||
|---|---:|---:|
|
||||
| verified | 16 | 37% |
|
||||
| mapped | 16 | 37% |
|
||||
| in-progress | 3 | 7% |
|
||||
| backlog | 7 | 16% |
|
||||
| verified | 17 | 38% |
|
||||
| mapped | 16 | 36% |
|
||||
| in-progress | 5 | 11% |
|
||||
| backlog | 6 | 13% |
|
||||
| blocked | 1 | 2% |
|
||||
|
||||
| Type | verified | mapped | in-progress | backlog | blocked | total |
|
||||
|
|
@ -21,9 +21,9 @@ Generated 2026-09-07 21:47 UTC · `sots-re` @ 1eb9677,2026-09-07 · `sots-engine
|
|||
| objects | 5 | 2 | 0 | 0 | 0 | 7 |
|
||||
| control-flow | 0 | 2 | 0 | 0 | 0 | 2 |
|
||||
| subsystems | 1 | 5 | 1 | 3 | 1 | 11 |
|
||||
| engine | 4 | 1 | 2 | 0 | 0 | 7 |
|
||||
| verify | 3 | 2 | 0 | 0 | 0 | 5 |
|
||||
| phase2 | 1 | 0 | 0 | 4 | 0 | 5 |
|
||||
| engine | 5 | 1 | 2 | 0 | 0 | 8 |
|
||||
| verify | 3 | 2 | 1 | 0 | 0 | 6 |
|
||||
| phase2 | 1 | 0 | 1 | 3 | 0 | 5 |
|
||||
| meta | 2 | 4 | 0 | 0 | 0 | 6 |
|
||||
|
||||
## 2. Binary understanding
|
||||
|
|
@ -47,20 +47,21 @@ Generated 2026-09-07 21:47 UTC · `sots-re` @ 1eb9677,2026-09-07 · `sots-engine
|
|||
| `game/sim` | 1,342 | 9 | 356 | yes | game-sim.md |
|
||||
| `mars/parse` | 750 | 12 | 188 | yes | mars-parse.md |
|
||||
| `mars/rng` | 166 | 0 | 0 | yes | mars-rng.md |
|
||||
| `mars/stream` | 3,703 | 5 | 195 | yes | mars-stream.md |
|
||||
| `mars/stream` | 3,703 | 6 | 195 | yes | mars-stream.md |
|
||||
| `mars/text` | 855 | 8 | 205 | yes | mars-text.md |
|
||||
| `mars/vfs` | 788 | 9 | 140 | yes | mars-vfs.md |
|
||||
| `shim` | 184 | 0 | 0 | direct (WIN32) | M0.md |
|
||||
| **total** | **7,788** | **43** | **1084** | | |
|
||||
| `shim` | 2,052 | 0 | 0 | direct (WIN32) | M0.md |
|
||||
| `shim/trace` | 1,824 | 8 | 248 | direct (WIN32) | shim-trace.md |
|
||||
| **total** | **11,480** | **52** | **1332** | | |
|
||||
|
||||
Board `engine:` rows: verified **4**, mapped 1, in flight 2 (of 7) — verified & merged `[██████░░░░] 57%`
|
||||
Board `engine:` rows: verified **5**, mapped 1, in flight 2 (of 8) — verified & merged `[██████░░░░] 62%`
|
||||
|
||||
## 5. Phase 2 milestones
|
||||
|
||||
| Milestone | Status | Coverage | Notes |
|
||||
|---|---|---:|---|
|
||||
| P2-M0 shim bootstrap | ✅ verified | 100% | sots-engine 5f5bc41: proxy binkw32.dll (66 exports identical), MinHook, asm-stub trace hoo |
|
||||
| P2-M1 flat-KV config loader | ⬜ backlog | 0% | HOOK: GlobalConsts::LoadFile(const char* file, map*) 0x008b73c0 cdecl (driven by LoadAll 0 |
|
||||
| P2-M1 flat-KV config loader | 🔄 in-progress | 0% | lane running: hook GlobalConsts::LoadFile (cdecl, verified) trace -> golden -> compare (0 |
|
||||
| P2-M2 manifest/id registry | ⬜ backlog | 0% | no registry object: WeaponDictionary::Init 0x0059a4c0 / SectionDictionary ctor 0x00576f40 |
|
||||
| P2-M3 Mars brace-block parser | ⬜ backlog | 0% | Mars::Script pull tokenizer (Open 0x008cd7d0, ReadToken 0x008cd2f0, Next 0x008cd3e0, SkipB |
|
||||
| P2-M4 gobio VFS read | ⬜ backlog | 0% | choke point: bool __cdecl gobio::ReadFile(const char*, IBuffer**) 0x008d5140; FileSystemSe |
|
||||
|
|
@ -88,10 +89,10 @@ Most recent open:
|
|||
|
||||
## 8. Delta since previous dashboard
|
||||
|
||||
- verified targets: 14 → 16 (+2) · mapped-or-better: 30 → 32 (+2)
|
||||
- engine LOC: 3,919 → 7,788 (+3,869) · test files: 38 → 43 (+5) · checks: 889 → 1,084 (+195)
|
||||
- addresses verified: 90 → 90 (+0) · recovered layouts: 21 → 21 (+0) · open questions: 22 → 23 (+1)
|
||||
- verified targets: 16 → 17 (+1) · mapped-or-better: 32 → 33 (+1)
|
||||
- engine LOC: 7,788 → 11,480 (+3,692) · test files: 43 → 52 (+9) · checks: 1,084 → 1,332 (+248)
|
||||
- addresses verified: 90 → 90 (+0) · recovered layouts: 21 → 21 (+0) · open questions: 23 → 23 (+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": 16, "mapped_plus": 32, "targets": 43, "loc": 7788, "tests": 43, "checks": 1084, "addr_verified": 90, "addr_total": 102, "layouts": 21, "open_q": 23} -->
|
||||
<!-- dashboard-metrics {"verified": 17, "mapped_plus": 33, "targets": 45, "loc": 11480, "tests": 52, "checks": 1332, "addr_verified": 90, "addr_total": 102, "layouts": 21, "open_q": 23} -->
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
|
|||
`verified` requires re-verifier evidence. Maintained by **re-quartermaster**.
|
||||
|
||||
| Target | Type | Status | Conf | Coverage | Updated | Notes |
|
||||
|---|---|---|---|---|---|---|
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| RTTI class inventory | meta | mapped | high | 100% | 2026-09-07 | `findings/objects/00-inventory.md` — 1924 types, engine=Mars |
|
||||
| `.gob` format | subsystem | mapped | high | 100% | 2026-09-07 | renamed uncompressed ZIP (community-known) |
|
||||
| `Mars::AppStartup` (entry) | control-flow | mapped | high | 100% | 2026-09-07 | entry 0x00925794 -> WinMain 0x0089dd30 -> DemoApp ctor 0x0089c950 -> Mars::Application::Initialize 0x008a0e50 (config/affinity, D3D9, window, sound thread, OnStartup -> net thread). findings/control-flow/turn-spine.md |
|
||||
|
|
@ -34,7 +34,7 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
|
|||
| Ghidra type write-back | meta | verified | high | 100% | 2026-09-07 | structs saved in project (ServerSystem 87f, ServerPlayer 110f, StarFleet, StarShip, StrategyServer partial, 22 nested); 52 serializers + primitives + ~60 spine fns renamed; decompile shows field names |
|
||||
| strategic turn internals (economy/research/colony/movement/diplomacy) | subsystem | mapped | high | 90% | 2026-09-07 | findings/subsystems/strategic-turn-internals.md: budget/RP/trade/bankruptcy formulas, research rolls (unlisted race=1.0, Zuul x2), colony growth, movement, RNG=MT19937; ~600 g_KEY labels in Ghidra |
|
||||
| P2-M0 shim bootstrap | phase2 | verified | high | 100% | 2026-09-07 | sots-engine 5f5bc41: proxy binkw32.dll (66 exports identical), MinHook, asm-stub trace hook on Application::Initialize; menu reached; evidence verify/results/shim/. Initialize signature unverified -> asm stubs only |
|
||||
| P2-M1 flat-KV config loader | phase2 | backlog | — | 0% | 2026-09-07 | HOOK: GlobalConsts::LoadFile(const char* file, map*) 0x008b73c0 cdecl (driven by LoadAll 0x008b76d0 from Initialize). Semantics: _stricmp keys, FIRST occurrence wins (dupes log 'multiply defined'), unknown keys ignored, type = parser pushed by stub (int/float/float*k/colour->float[4]). Needs shim-trace emitter |
|
||||
| P2-M1 flat-KV config loader | phase2 | in-progress | — | 0% | 2026-09-07 | lane running: hook GlobalConsts::LoadFile (cdecl, verified) trace -> golden -> compare (0 div) -> replace + End-Turn oracle hashes |
|
||||
| P2-M2 manifest/id registry | phase2 | backlog | — | 0% | 2026-09-07 | no registry object: WeaponDictionary::Init 0x0059a4c0 / SectionDictionary ctor 0x00576f40 read 'id file' pairs via Script::ReadToken; id stored on def (+4), sorted vector at dict+8; DELETED lines are comments; call site DemoApp::LoadGameData 0x00899280 (deferred to first OnTick) |
|
||||
| P2-M3 Mars brace-block parser | phase2 | backlog | — | 0% | 2026-09-07 | Mars::Script pull tokenizer (Open 0x008cd7d0, ReadToken 0x008cd2f0, Next 0x008cd3e0, SkipBlock 0x008cd4b0); whitespace-only delimiting, quotes " ' ` no escapes, EOF ends, stray } ignored, LAST PAIR W/O TRAILING NEWLINE DROPPED; consumers = _stricmp if/else chains (WeaponDef::ParseScript 0x00599070, SectionDef::ParseScript 0x005744e0, MasterTechTree::ParseTech 0x0058b050). .effect = Mars::TextFileStream (Open 0x008cfb90) |
|
||||
| P2-M4 gobio VFS read | phase2 | backlog | — | 0% | 2026-09-07 | choke point: bool __cdecl gobio::ReadFile(const char*, IBuffer**) 0x008d5140; FileSystemSet ctor 0x008d6d60 pushes NativeFileSystem(".") FIRST then sots.ini [Modules] Mount<N> (fallback sots.gob, sots_local_en.gob); zip lookup case+slash-insensitive 0x008d4a50 -> matches mars/vfs NativeFirst |
|
||||
|
|
@ -47,6 +47,6 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
|
|||
| engine: game/data catalogs | engine | in-progress | — | 0% | 2026-09-07 | typed WeaponDef/ShipSectionDef/TechTree/IdRegistry on mars/parse+text; oracle = data-catalogs JSON |
|
||||
| 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 |
|
||||
| determinism oracle | verify | verified | high | 100% | 2026-09-07 | BYTE-IDENTICAL across 5 runs incl. cross-process: (Autosave).sav 978041ac…, (Autosave EndTurn).sav bb4fd9ac…; gzip MTIME=0; only loaded-post-turn re-save differs (Player.Status 4->0, Summary.Checksum). findings/subsystems/determinism-oracle.md |
|
||||
| engine: shim trace/compare emitter | engine | in-progress | — | 0% | 2026-09-07 | C++ port of harness emit_record/esc/fmt_num + hook modes + snapshot/diff; validated by tracecmp.py exit codes |
|
||||
| engine: shim trace/compare emitter | engine | verified | high | 100% | 2026-09-07 | merged (sots-engine 9e110b4): emitter byte-exact vs mkfixture, tracer, snapshot/diff, Hook<Descriptor>; ctest 18/18; tracecmp exits 0/1/2 as specified; shim links |
|
||||
| engine parity: first-wins keys + tokenizer rules | engine | in-progress | — | 0% | 2026-09-07 | fix mars/text + mars/parse + Python oracle to confirmed Mars::Script/GlobalConsts semantics; re-verify 100% |
|
||||
| save-format tag corrections | verify | in-progress | — | 0% | 2026-09-07 | otnF/nextid/FAIDes/DHide/DWep/DName/ords/wpts into SAVE_FORMAT + save_reader; strict must stay 3/3 |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue