sots-re/campaign/DASHBOARD.md

103 lines
5.6 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 05:30 UTC · `sots-re` @ cdada28,2026-09-08 · `sots-engine` @ e1cbb81,2026-09-08 (65 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)
63 targets · mapped-or-better **48/63** `[████████░░] 76%` · verified **31/63** `[█████░░░░░] 49%`
| Status | Count | % |
|---|---:|---:|
| verified | 31 | 49% |
| mapped | 17 | 27% |
| in-progress | 1 | 2% |
| backlog | 12 | 19% |
| 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 | 2 | 6 | 1 | 3 | 1 | 13 |
| engine | 10 | 0 | 0 | 0 | 0 | 10 |
| verify | 5 | 2 | 0 | 6 | 0 | 13 |
| phase2 | 5 | 1 | 0 | 2 | 0 | 9 |
| meta | 4 | 4 | 0 | 1 | 0 | 9 |
## 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): **324**, verified **317** `[██████████] 98%`
## 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/config` | 558 | 4 | 131 | yes | M1.md |
| `game/data` | 2,053 | 12 | 462 | yes | game-data.md |
| `game/design` | 1,024 | 17 | 250 | yes | game-design.md |
| `game/effects` | 973 | 3 | 231 | yes | game-effects.md |
| `game/sim` | 2,637 | 9 | 599 | yes | game-sim.md |
| `mars/parse` | 875 | 12 | 277 | yes | mars-parse.md |
| `mars/rng` | 206 | 0 | 0 | yes | mars-rng.md |
| `mars/stream` | 3,703 | 6 | 222 | yes | mars-stream.md |
| `mars/text` | 899 | 8 | 245 | yes | mars-text.md |
| `mars/vfs` | 788 | 9 | 140 | yes | mars-vfs.md |
| `shim` | 7,551 | 0 | 0 | direct (WIN32) | M0.md |
| `shim/hooks` | 4,981 | 0 | 0 | direct (WIN32) | M0.md |
| `shim/trace` | 2,258 | 9 | 273 | direct (WIN32) | shim-trace.md |
| **total** | **28,506** | **89** | **2830** | | |
Board `engine:` rows: verified **10**, mapped 0, in flight 0 (of 10) — verified & merged `[██████████] 100%`
## 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 | ✅ verified | 100% | LIVE: GlobalConsts::LoadFile hooked; trace 19 calls/1088 regions (tracecmp 0); compare 19/ |
| P2-M2 manifest/id registry | ✅ verified | 80% | LIVE: trace 22 calls (tracecmp 0); weapons compare 1/1 0 divergences; REPLACE+oracle byte- |
| 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 **27** · 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:
- Some truths are unreachable by compare — B3's draw-divisor bug differed on 0.78% of draws yet flip…
- x87 precision-control mode at runtime — 53-bit MSVC default vs 24-bit if D3D9 grabbed the FPU; mov…
- Struct-modelling hazard (found by M2) — an MSVC-2010 `std::vector` member is three words, so a…
- 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…
## 8. Delta since previous dashboard
- verified targets: 30 → 31 (+1) · mapped-or-better: 47 → 48 (+1)
- engine LOC: 26,883 → 28,506 (+1,623) · test files: 88 → 89 (+1) · checks: 2,805 → 2,830 (+25)
- addresses verified: 317 → 317 (+0) · recovered layouts: 21 → 21 (+0) · open questions: 27 → 27 (+0)
---
warnings: board.md line 66: unknown status 'code-complete' for 'P2-B4 colony + movement (behavioral)'; 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": 31, "mapped_plus": 48, "targets": 63, "loc": 28506, "tests": 89, "checks": 2830, "addr_verified": 317, "addr_total": 324, "layouts": 21, "open_q": 27} -->