B1 verified on the live game; record budget-tail coverage gap and the difficulty-mods shortcut
This commit is contained in:
parent
3a3e167242
commit
906858f60b
2 changed files with 20 additions and 18 deletions
|
|
@ -1,19 +1,19 @@
|
|||
# SotS RE campaign — coverage dashboard
|
||||
|
||||
Generated 2026-09-08 03:15 UTC · `sots-re` @ 6600382,2026-09-07 · `sots-engine` @ 3ebc8bf,2026-09-07 (47 commits) · regenerate with `tools/dashboard.py`
|
||||
Generated 2026-09-08 03:26 UTC · `sots-re` @ 3a3e167,2026-09-07 · `sots-engine` @ 9cd997d,2026-09-07 (49 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)
|
||||
|
||||
55 targets · mapped-or-better **43/55** `[████████░░] 78%` · verified **27/55** `[█████░░░░░] 49%`
|
||||
57 targets · mapped-or-better **44/57** `[████████░░] 77%` · verified **28/57** `[█████░░░░░] 49%`
|
||||
|
||||
| Status | Count | % |
|
||||
|---|---:|---:|
|
||||
| verified | 27 | 49% |
|
||||
| mapped | 16 | 29% |
|
||||
| in-progress | 5 | 9% |
|
||||
| backlog | 6 | 11% |
|
||||
| verified | 28 | 49% |
|
||||
| mapped | 16 | 28% |
|
||||
| in-progress | 4 | 7% |
|
||||
| backlog | 8 | 14% |
|
||||
| blocked | 1 | 2% |
|
||||
|
||||
| Type | verified | mapped | in-progress | backlog | blocked | total |
|
||||
|
|
@ -22,9 +22,9 @@ Generated 2026-09-08 03:15 UTC · `sots-re` @ 6600382,2026-09-07 · `sots-engine
|
|||
| control-flow | 0 | 2 | 0 | 0 | 0 | 2 |
|
||||
| subsystems | 2 | 6 | 1 | 3 | 1 | 13 |
|
||||
| engine | 10 | 0 | 0 | 0 | 0 | 10 |
|
||||
| verify | 4 | 2 | 0 | 1 | 0 | 7 |
|
||||
| phase2 | 2 | 0 | 4 | 2 | 0 | 8 |
|
||||
| meta | 4 | 4 | 0 | 0 | 0 | 8 |
|
||||
| verify | 4 | 2 | 0 | 2 | 0 | 8 |
|
||||
| phase2 | 3 | 0 | 3 | 2 | 0 | 8 |
|
||||
| meta | 4 | 4 | 0 | 1 | 0 | 9 |
|
||||
|
||||
## 2. Binary understanding
|
||||
|
||||
|
|
@ -48,16 +48,16 @@ Generated 2026-09-08 03:15 UTC · `sots-re` @ 6600382,2026-09-07 · `sots-engine
|
|||
| `game/data` | 2,053 | 12 | 462 | yes | game-data.md |
|
||||
| `game/design` | 1,024 | 17 | 250 | yes | game-design.md |
|
||||
| `game/effects` | 811 | 3 | 160 | yes | game-effects.md |
|
||||
| `game/sim` | 1,714 | 9 | 506 | yes | game-sim.md |
|
||||
| `game/sim` | 1,720 | 9 | 512 | 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` | 3,487 | 0 | 0 | direct (WIN32) | M0.md |
|
||||
| `shim/hooks` | 1,374 | 0 | 0 | direct (WIN32) | M0.md |
|
||||
| `shim` | 4,229 | 0 | 0 | direct (WIN32) | M0.md |
|
||||
| `shim/hooks` | 2,110 | 0 | 0 | direct (WIN32) | M0.md |
|
||||
| `shim/trace` | 1,836 | 8 | 248 | direct (WIN32) | shim-trace.md |
|
||||
| **total** | **19,328** | **88** | **2641** | | |
|
||||
| **total** | **20,812** | **88** | **2647** | | |
|
||||
|
||||
Board `engine:` rows: verified **10**, mapped 0, in flight 0 (of 10) — verified & merged `[██████████] 100%`
|
||||
|
||||
|
|
@ -94,10 +94,10 @@ Most recent open:
|
|||
|
||||
## 8. Delta since previous dashboard
|
||||
|
||||
- verified targets: 27 → 27 (+0) · mapped-or-better: 43 → 43 (+0)
|
||||
- engine LOC: 19,328 → 19,328 (+0) · test files: 88 → 88 (+0) · checks: 2,641 → 2,641 (+0)
|
||||
- verified targets: 27 → 28 (+1) · mapped-or-better: 43 → 44 (+1)
|
||||
- engine LOC: 19,328 → 20,812 (+1,484) · test files: 88 → 88 (+0) · checks: 2,641 → 2,647 (+6)
|
||||
- addresses verified: 166 → 166 (+0) · 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": 27, "mapped_plus": 43, "targets": 55, "loc": 19328, "tests": 88, "checks": 2641, "addr_verified": 166, "addr_total": 176, "layouts": 21, "open_q": 27} -->
|
||||
<!-- dashboard-metrics {"verified": 28, "mapped_plus": 44, "targets": 57, "loc": 20812, "tests": 88, "checks": 2647, "addr_verified": 166, "addr_total": 176, "layouts": 21, "open_q": 27} -->
|
||||
|
|
|
|||
|
|
@ -53,10 +53,12 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
|
|||
| tech effects (code-defined) | subsystem | mapped | high | 90% | 2026-09-07 | findings/subsystems/tech-effects.md: g_TechIdNames 196 @0x009ff9e4 (TechId=10000+i), effects in ServerPlayer::OnTechResearched 0x00891790; SpeciesDef table 0x00b10a00; 36 strategic / ~45 gates / ~115 none. Feeds game/sim + game/data |
|
||||
| strategic formula gaps | subsystem | verified | high | 100% | 2026-09-07 | findings/subsystems/formula-gaps.md: all 8 answered with code (bankruptcy 3.3 on BnkPr, linear hazard, money tail, pbon, slider, [6] net, no speed clamp, decay hits current) |
|
||||
| engine: game/design | engine | verified | high | 100% | 2026-09-07 | merged; see ShipDesignDef row |
|
||||
| P2-B1 ComputeBudget (behavioral) | phase2 | in-progress | — | 0% | 2026-09-08 | FIRST BEHAVIORAL BRICK: hook ServerPlayer::ComputeBudget 0x00863030 (verified thiscall, pure, 8 calls/turn) vs game/sim/economy.cpp; workload = ref-turn2.sav + End Turn |
|
||||
| P2-B1 ComputeBudget (behavioral) | phase2 | verified | high | 90% | 2026-09-08 | LIVE + GREEN: 4,623 calls traced, 4,437 compared 0 divergences (all 8 End-Turn calls identical on 22 slots), REPLACE fed the game its budget for a full turn and the End-Turn oracle reproduced byte-for-byte. Corrections: out-param is int[22] not int[25] (next 3 words are a std::vector); researchMoneyKept only charged with a research target (real bug). Coverage: 8 slots verified on varied values, 8 slots always 0 in this save (expenses/aid/debt tail UNTESTED), 6 are inputs by construction |
|
||||
| P2-B2 OnTechResearched (behavioral) | phase2 | in-progress | — | 0% | 2026-09-08 | offline lane (no VM): hook ServerPlayer::OnTechResearched vs src/game/effects; per-field regions; static-first per B3's lesson. Builds /srv/re-lab/build/sots-engine-b2, stages dist-b2. Coverage risk: few/no tech completions in the reference End Turn -> host tests over the whole effects table |
|
||||
| P2-B3 ProcessResearch (behavioral, RNG) | phase2 | in-progress | med | 70% | 2026-09-08 | CODE-COMPLETE (engine 3ebc8bf), dist-b3 staged. Static analysis found 5 REAL BUGS in our code: draw = y/(2^32-1) not y*2^-32 (constant 1/4294967295; compare could NOT have caught this - 0 decision flips in 1e6); NextInt is [0,n] INCLUSIVE by pointer; spend has no floor at 0; odds/roll/ratio are float32 not double; decay constants are widened float literals. ProcessResearch arg2 = the RNG object. ctest 26/26. NEEDS VM window (queued behind M2) |
|
||||
| RNG signatures (Ghidra) | meta | verified | high | 100% | 2026-09-08 | Seed/Twist/NextFloat verified (own pass) + NextInt pinned by B3: [0,n] inclusive, bound by pointer. Draw mapping = y/(2^32-1). Lazy twist, left@+0x9c4. Open: x87 precision-control mode at runtime (instrumented - hook logs fpu_cw) |
|
||||
| engine: game/effects | engine | verified | high | 100% | 2026-09-08 | merged: TechId enum (196 slots @10000+i), 44 ids with typed strategic effects, species flag bits, ApplyTechEffect; 254 checks |
|
||||
| VM140 exclusivity (lab rule) | meta | verified | high | 100% | 2026-09-08 | only ONE agent may deploy a shim DLL / stop-start the game at a time; interleaved deploys silently corrupt compare results. Holder: B1. QUEUE: M2 (ready ~20min), B3 (ready), B2. Non-holders build in /srv/re-lab/build/sots-engine-<lane>, stage to /srv/re-lab/shim/dist-<lane>, deploy to C:\SOTS\shimdist-<lane> |
|
||||
| VM140 exclusivity (lab rule) | meta | verified | high | 100% | 2026-09-08 | one agent at a time deploys/relaunches; interleaved deploys silently corrupt compares. Holder: M2 (running its window). QUEUE: B3, then B2. Non-holders build in /srv/re-lab/build/sots-engine-<lane>, stage dist-<lane>, deploy to C:\SOTS\shimdist-<lane> |
|
||||
| Zuul double-roll (behavioural) | verify | backlog | — | 0% | 2026-09-08 | the reference save may have no species-5 player; if so the Zuul double roll is verified only by disassembly. Needs one extra compare from a Zuul save |
|
||||
| budget tail coverage (expenses/aid/debt) | verify | backlog | — | 0% | 2026-09-08 | 8 ComputeBudget slots were always 0 in ref-turn2 (no sliders, no aid, no debt, no handicap). Need a save with expense sliders, a debtor and a research-aid treaty to exercise ExpenseTotal + the aid/bonus tail |
|
||||
| hook GetDifficultyMods | meta | backlog | — | 0% | 2026-09-08 | B1 derived the two difficulty rows from trace values (AI maintenance divisor 3, research x1.5) instead of snapshotting them; hook it properly so they stop being constants |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue