sots-re/campaign/DASHBOARD.md
2026-09-07 22:01:26 -04:00

99 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SotS RE campaign — coverage dashboard
Generated 2026-09-08 02:01 UTC · `sots-re` @ 31153cd,2026-09-07 · `sots-engine` @ 4f0a9db,2026-09-07 (29 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)
45 targets · mapped-or-better **36/45** `[████████░░] 80%` · verified **20/45** `[████░░░░░░] 44%`
| Status | Count | % |
|---|---:|---:|
| verified | 20 | 44% |
| mapped | 16 | 36% |
| in-progress | 2 | 4% |
| backlog | 6 | 13% |
| blocked | 1 | 2% |
| Type | verified | mapped | in-progress | backlog | blocked | total |
|---|---:|---:|---:|---:|---:|---:|
| objects | 5 | 2 | 0 | 0 | 0 | 7 |
| control-flow | 0 | 2 | 0 | 0 | 0 | 2 |
| subsystems | 1 | 5 | 1 | 3 | 1 | 11 |
| engine | 7 | 1 | 0 | 0 | 0 | 8 |
| verify | 4 | 2 | 0 | 0 | 0 | 6 |
| phase2 | 1 | 0 | 1 | 3 | 0 | 5 |
| meta | 2 | 4 | 0 | 0 | 0 | 6 |
## 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): **103**, verified **91** `[█████████░] 88%`
## 3. Data layer
- Catalogs: **1,595/1,595** files parsed (91 block kinds in `schema_stats.json`), dangling cross-refs **0** (`crosslink.json`)
- Oracle `mars-parse`: **1,531/1,531** files agree `[██████████] 100%`
- Oracle `mars-text`: **64/64** files agree `[██████████] 100%`
- Saves: **3/3** real saves strict-clean — strict exit 0, 0 errors, 0 warnings
- Design rules: **127/127** stock designs pass `[██████████] 100%`
## 4. Engine accrual (sots-engine)
| Module | LOC | Test files | Checks | Wired | Doc |
|---|---:|---:|---:|---|---|
| `game/data` | 2,053 | 12 | 462 | yes | game-data.md |
| `game/sim` | 1,342 | 9 | 356 | 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 |
| `mars/text` | 899 | 8 | 245 | yes | mars-text.md |
| `mars/vfs` | 788 | 9 | 140 | yes | mars-vfs.md |
| `shim` | 2,052 | 0 | 0 | direct (WIN32) | M0.md |
| `shim/trace` | 1,824 | 8 | 248 | direct (WIN32) | shim-trace.md |
| **total** | **13,702** | **64** | **1923** | | |
Board `engine:` rows: verified **7**, mapped 1, in flight 0 (of 8) — verified & merged `[█████████░] 88%`
## 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 | 🔄 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 |
## 6. Verification ledger
- ✅ Saves strict: 3/3 (strict exit 0, 0 errors, 0 warnings)
- ✅ Design rules: 127/127
- ✅ oracle mars-parse 1531/1531 · ✅ oracle mars-text 64/64
- ✅ Compare harness present (`verify/harness/compare/`)
- ✅ M0 evidence present (`verify/results/shim/m0.log`)
- ✅ Determinism oracle: verified
## 7. Open questions
Open **24** · resolved/parked 8 · backlog items: Now 4, Next 3, Later 2, Breadth queue 7, Parked 1, From the RE how-to 3
Most recent open:
- Notes disagree on MSVC-2010 `std::string` layout — `struct-recovery.md` §0 vs `turn-spine.md` §1.1…
- SAVE_FORMAT tag corrections (fix Python reader + spec) — real on-disk tags: `otnF` (not `ontF`) in…
- Not traced end-to-end — `Species/_NPC/weapons/*.weapon` loading and the `.effect` dictionary entry…
- PARITY BUG (fix in mars/text + Python flat_kv): duplicate config keys are FIRST-occurrence-wins in t…
- Formula gaps surfaced by the game/sim port (feed back to Ghidra) — which bankruptcy limit carries …
## 8. Delta since previous dashboard
- verified targets: 19 → 20 (+1) · mapped-or-better: 35 → 36 (+1)
- engine LOC: 13,535 → 13,702 (+167) · test files: 64 → 64 (+0) · checks: 1,794 → 1,923 (+129)
- addresses verified: 91 → 91 (+0) · 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": 20, "mapped_plus": 36, "targets": 45, "loc": 13702, "tests": 64, "checks": 1923, "addr_verified": 91, "addr_total": 103, "layouts": 21, "open_q": 24} -->