dashboard refresh

This commit is contained in:
alex 2026-09-08 12:04:41 -04:00
parent ef458bb3c8
commit 7645399f97

View file

@ -1,37 +1,37 @@
# SotS RE campaign — coverage dashboard
Generated 2026-09-08 15:00 UTC · `sots-re` @ a77b1c3,2026-09-08 · `sots-engine` @ b48d860,2026-09-08 (126 commits) · regenerate with `tools/dashboard.py`
Generated 2026-09-08 16:04 UTC · `sots-re` @ ef458bb,2026-09-08 · `sots-engine` @ 6f777c2,2026-09-08 (134 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)
183 targets · mapped-or-better **155/183** `[████████░░] 85%` · verified **127/183** `[███████░░░] 69%`
195 targets · mapped-or-better **166/195** `[█████████░] 85%` · verified **136/195** `[███████░░░] 70%`
| Status | Count | % |
|---|---:|---:|
| verified | 127 | 69% |
| mapped | 28 | 15% |
| verified | 136 | 70% |
| mapped | 30 | 15% |
| in-progress | 2 | 1% |
| backlog | 24 | 13% |
| backlog | 25 | 13% |
| blocked | 2 | 1% |
| Type | verified | mapped | in-progress | backlog | blocked | total |
|---|---:|---:|---:|---:|---:|---:|
| objects | 25 | 6 | 0 | 2 | 1 | 34 |
| control-flow | 7 | 2 | 0 | 1 | 0 | 10 |
| objects | 26 | 6 | 0 | 2 | 1 | 35 |
| control-flow | 10 | 2 | 0 | 1 | 0 | 13 |
| subsystems | 3 | 7 | 1 | 3 | 1 | 15 |
| engine | 19 | 0 | 0 | 0 | 0 | 19 |
| verify | 32 | 5 | 0 | 14 | 0 | 51 |
| verify | 35 | 6 | 0 | 15 | 0 | 56 |
| phase2 | 10 | 3 | 1 | 2 | 0 | 16 |
| meta | 28 | 5 | 0 | 1 | 0 | 34 |
| meta | 30 | 6 | 0 | 1 | 0 | 37 |
| other | 3 | 0 | 0 | 1 | 0 | 4 |
## 2. Binary understanding
- RTTI type descriptors: **1,924** (`Game::` 1,404, `Mars::` 194; serializable types 179)
- Classes with recovered member layouts: **384** / 1,598 named classes `[██░░░░░░░░] 24%` — `objects/layouts.json` (serializer recovery) plus classes recovered by hand in `struct-recovery.md` + `schema-gaps-resolved.md`. Note 179 types are *serializable*; the recovery also reaches non-serializable ones, so this is not a subset of that
- Functions: **41,411** (parsed from `01-fingerprint.md`); named/annotated in the **address contract** (`ghidra/addresses.json`, not Ghidra's full rename count): **805**, verified **781** `[██████████] 97%`
- Functions: **41,411** (parsed from `01-fingerprint.md`); named/annotated in the **address contract** (`ghidra/addresses.json`, not Ghidra's full rename count): **875**, verified **838** `[██████████] 96%`
## 3. Data layer
@ -45,7 +45,8 @@ Generated 2026-09-08 15:00 UTC · `sots-re` @ a77b1c3,2026-09-08 · `sots-engine
| Module | LOC | Test files | Checks | Wired | Doc |
|---|---:|---:|---:|---|---|
| `app` | 1,192 | 3 | 34 | yes | S-standalone.md |
| `app` | 1,614 | 5 | 69 | yes | S-standalone.md |
| `game/combat` | 582 | 2 | 34 | yes | mars-parse.md |
| `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 |
@ -60,7 +61,7 @@ Generated 2026-09-08 15:00 UTC · `sots-re` @ a77b1c3,2026-09-08 · `sots-engine
| `shim` | 11,564 | 0 | 0 | direct (WIN32) | M0.md |
| `shim/hooks` | 8,548 | 0 | 0 | direct (WIN32) | M0.md |
| `shim/trace` | 2,258 | 9 | 273 | direct (WIN32) | shim-trace.md |
| **total** | **40,026** | **97** | **3204** | | |
| **total** | **41,030** | **101** | **3273** | | |
Board `engine:` rows: verified **19**, mapped 0, in flight 0 (of 19) — verified & merged `[██████████] 100%`
@ -76,12 +77,12 @@ Board `engine:` rows: verified **19**, mapped 0, in flight 0 (of 19) — verifie
## 6. Standalone (`src/app`) — distance to the byte-match
Turn-driver phases: **14/44** modelled (7 committed) `[███░░░░░░░] 32%`
Turn-driver phases: **14/44** modelled (8 committed) `[███░░░░░░░] 32%`
| | verified | implemented | partial | blocked | stub |
|---|---:|---:|---:|---:|---:|
| turn drivers (44) | 0 | 2 | 5 | 7 | 30 |
| post-combat tail (37) | 0 | 1 | 0 | 1 | 35 |
| turn drivers (44) | 0 | 2 | 6 | 6 | 30 |
| post-combat tail (37) | 0 | 1 | 0 | 2 | 34 |
Reference pair `turn1-state.sav` → `turn2-state.sav`, leaves localised by `state_checksum.py` (coverage proved by re-serialisation):
@ -102,7 +103,7 @@ Where the remaining divergence lives:
| `/Sim/ModCount` | 1 |
| `/Sim/NMnx` | 1 |
Generator: 0 word(s) modelled per turn; unattributed per turn: 18-20 (lane Z, in flight). A byte-match is impossible until that closes — the generator state is saved state.
Generator: 16 word(s) modelled per turn; unattributed per turn: 18-20 (lane Z, in flight). A byte-match is impossible until that closes — the generator state is saved state.
Detail: `verify/results/standalone/report.txt`.
@ -129,11 +130,11 @@ Most recent open:
## 9. Delta since previous dashboard
- verified targets: 122 → 127 (+5) · mapped-or-better: 150 → 155 (+5)
- engine LOC: 36,774 → 40,026 (+3,252) · test files: 97 → 97 (+0) · checks: 3,204 → 3,204 (+0)
- addresses verified: 777 → 781 (+4) · recovered layouts: 384 → 384 (+0) · open questions: 26 → 26 (+0)
- verified targets: 127 → 136 (+9) · mapped-or-better: 155 → 166 (+11)
- engine LOC: 40,026 → 41,030 (+1,004) · test files: 97 → 101 (+4) · checks: 3,204 → 3,273 (+69)
- addresses verified: 781 → 838 (+57) · recovered layouts: 384 → 384 (+0) · open questions: 26 → 26 (+0)
- standalone leaves closed: 5 → 5 (+0) · leaves still diverging: 204 → 204 (+0)
---
warnings: board.md: unknown types subsystems; 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": 127, "mapped_plus": 155, "targets": 183, "loc": 40026, "tests": 97, "checks": 3204, "addr_verified": 781, "addr_total": 805, "layouts": 384, "open_q": 26, "sa_closed": 5, "sa_left": 204} -->
<!-- dashboard-metrics {"verified": 136, "mapped_plus": 166, "targets": 195, "loc": 41030, "tests": 101, "checks": 3273, "addr_verified": 838, "addr_total": 875, "layouts": 384, "open_q": 26, "sa_closed": 5, "sa_left": 204} -->