board: lane C state-checksum harness; dashboard refresh
This commit is contained in:
parent
bd9b8f2e10
commit
d738b6b4bb
2 changed files with 14 additions and 12 deletions
|
|
@ -1,17 +1,17 @@
|
|||
# SotS RE campaign — coverage dashboard
|
||||
|
||||
Generated 2026-09-08 06:13 UTC · `sots-re` @ 3b5eca2,2026-09-08 · `sots-engine` @ 7584bad,2026-09-08 (68 commits) · regenerate with `tools/dashboard.py`
|
||||
Generated 2026-09-08 06:52 UTC · `sots-re` @ bd9b8f2,2026-09-08 · `sots-engine` @ 82ef52f,2026-09-08 (71 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)
|
||||
|
||||
65 targets · mapped-or-better **50/65** `[████████░░] 77%` · verified **33/65** `[█████░░░░░] 51%`
|
||||
66 targets · mapped-or-better **51/66** `[████████░░] 77%` · verified **33/66** `[█████░░░░░] 50%`
|
||||
|
||||
| Status | Count | % |
|
||||
|---|---:|---:|
|
||||
| verified | 33 | 51% |
|
||||
| mapped | 17 | 26% |
|
||||
| verified | 33 | 50% |
|
||||
| mapped | 18 | 27% |
|
||||
| in-progress | 3 | 5% |
|
||||
| backlog | 11 | 17% |
|
||||
| blocked | 1 | 2% |
|
||||
|
|
@ -20,9 +20,9 @@ Generated 2026-09-08 06:13 UTC · `sots-re` @ 3b5eca2,2026-09-08 · `sots-engine
|
|||
|---|---:|---:|---:|---:|---:|---:|
|
||||
| objects | 5 | 2 | 0 | 0 | 0 | 7 |
|
||||
| control-flow | 0 | 2 | 0 | 0 | 0 | 2 |
|
||||
| subsystems | 2 | 6 | 2 | 3 | 1 | 14 |
|
||||
| subsystems | 2 | 7 | 1 | 3 | 1 | 14 |
|
||||
| engine | 10 | 0 | 0 | 0 | 0 | 10 |
|
||||
| verify | 5 | 2 | 1 | 5 | 0 | 13 |
|
||||
| verify | 5 | 2 | 2 | 5 | 0 | 14 |
|
||||
| phase2 | 6 | 1 | 0 | 2 | 0 | 9 |
|
||||
| meta | 5 | 4 | 0 | 1 | 0 | 10 |
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ Generated 2026-09-08 06:13 UTC · `sots-re` @ 3b5eca2,2026-09-08 · `sots-engine
|
|||
|
||||
- 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%`
|
||||
- Functions: **41,411** (parsed from `01-fingerprint.md`); named/annotated in the **address contract** (`ghidra/addresses.json`, not Ghidra's full rename count): **380**, verified **373** `[██████████] 98%`
|
||||
|
||||
## 3. Data layer
|
||||
|
||||
|
|
@ -48,6 +48,7 @@ Generated 2026-09-08 06:13 UTC · `sots-re` @ 3b5eca2,2026-09-08 · `sots-engine
|
|||
| `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/events` | 451 | 3 | 112 | yes | E-events.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 |
|
||||
|
|
@ -57,7 +58,7 @@ Generated 2026-09-08 06:13 UTC · `sots-re` @ 3b5eca2,2026-09-08 · `sots-engine
|
|||
| `shim` | 7,620 | 0 | 0 | direct (WIN32) | M0.md |
|
||||
| `shim/hooks` | 5,050 | 0 | 0 | direct (WIN32) | M0.md |
|
||||
| `shim/trace` | 2,258 | 9 | 273 | direct (WIN32) | shim-trace.md |
|
||||
| **total** | **28,644** | **89** | **2830** | | |
|
||||
| **total** | **29,095** | **92** | **2942** | | |
|
||||
|
||||
Board `engine:` rows: verified **10**, mapped 0, in flight 0 (of 10) — verified & merged `[██████████] 100%`
|
||||
|
||||
|
|
@ -94,10 +95,10 @@ Most recent open:
|
|||
|
||||
## 8. Delta since previous dashboard
|
||||
|
||||
- verified targets: 33 → 33 (+0) · mapped-or-better: 50 → 50 (+0)
|
||||
- engine LOC: 28,644 → 28,644 (+0) · test files: 89 → 89 (+0) · checks: 2,830 → 2,830 (+0)
|
||||
- addresses verified: 317 → 317 (+0) · recovered layouts: 21 → 21 (+0) · open questions: 27 → 27 (+0)
|
||||
- verified targets: 33 → 33 (+0) · mapped-or-better: 50 → 51 (+1)
|
||||
- engine LOC: 28,644 → 29,095 (+451) · test files: 89 → 92 (+3) · checks: 2,830 → 2,942 (+112)
|
||||
- addresses verified: 317 → 373 (+56) · recovered layouts: 21 → 21 (+0) · open questions: 27 → 27 (+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": 33, "mapped_plus": 50, "targets": 65, "loc": 28644, "tests": 89, "checks": 2830, "addr_verified": 317, "addr_total": 324, "layouts": 21, "open_q": 27} -->
|
||||
<!-- dashboard-metrics {"verified": 33, "mapped_plus": 51, "targets": 66, "loc": 29095, "tests": 92, "checks": 2942, "addr_verified": 373, "addr_total": 380, "layouts": 21, "open_q": 27} -->
|
||||
|
|
|
|||
|
|
@ -70,3 +70,4 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
|
|||
| B1 replace double-run | verify | backlog | — | 0% | 2026-09-08 | ComputeBudget replace mode runs the original a second time to harvest budget slots; ComputeOutput repairs ships in orbit as a side effect, so this is a real per-turn double effect on objects no region covers. Needs a design fix (harvest without re-running, or declare+revert) |
|
||||
| ReVa MCP link drop (workaround) | meta | verified | high | 100% | 2026-09-08 | The ReVa MCP client link dropped mid-session while the CT111 server stayed healthy (systemd active, :8080 listening, valid key -> 200). `tools/reva_call.py <tool> '<json>'` calls the same server over plain HTTP (initialize -> notifications/initialized -> tools/call; replies are SSE with a leading `id:` line, initialize is plain JSON). Key is NEVER stored in the repo: $REVA_KEY, else ~/.claude.json, else ssh to the CT properties file. Use this whenever mcp__plugin_ReVa_ReVa__* is unavailable |
|
||||
| event posting API | subsystem | mapped | high | 90% | 2026-09-08 | RECOVERED (lane E, `findings/subsystems/events.md`). Container: `EventStorage` embedded at `ServerPlayer+0x29c` (0x1c), `EvNxID` at +0x14 = player+0x2b0 — exactly the guard's byte run. Nested `vector<TurnEvents{int EvTurn; vector<PlayerEvent>}>`, record 0x74 B, tags `EvEID EvDsc EvMsg EvImg EvLoc EvPos EvAct EvCID`; layout confirmed field-by-field against turn3-state.sav, which CONTAINS the overbudget record. Entry point `int __thiscall EventStorage::PostEvent(this, string BYVAL, string BYVAL, obj*, Vector3*, turn, const char* img, int act)` 0x008862b0 RET 0x4c — **161 call sites in 113 functions, the whole sim's event API**. B3 defect fully explained: 0x00587b97, in the completion-roll-FAILED branch under `!wasDone && nowDone && owner`. 3 note corrections (EvPos is FLT_MAX not inf; the save array is turn-bucketed not flat; TECHS_UNLOCKED has no parent clause). 56 entries in addresses.json; 11 prototypes + 13 labels + 12 comments + 2 structs written back to Ghidra. Engine: `sots-engine` branch `wip/events` a7348be, `src/game/events` + 112 checks, ctest 32/32. NOT YET WIRED INTO A HOOK — see `docs/E-events.md` for the proposed region/Coverage change |
|
||||
| state-checksum replay harness | verify | in-progress | — | 0% | 2026-09-08 | Lane C: whole-state per-turn checksum as the COMPLEMENT to per-function compares (no region-declaration mistake can hide from it). Diagnostic tree that localises WHICH object moved, explicit float-parity policy (float32 + fpu_cw 0x127f + fistp ties-to-even; matters for the future x64/SSE port). Replay loop designed but unrun - lane R holds VM140 |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue