diff --git a/campaign/DASHBOARD.md b/campaign/DASHBOARD.md index e289c35..df9b39c 100644 --- a/campaign/DASHBOARD.md +++ b/campaign/DASHBOARD.md @@ -1,6 +1,6 @@ # SotS RE campaign — coverage dashboard -Generated 2026-09-08 03:14 UTC · `sots-re` @ 73f5f1e,2026-09-07 · `sots-engine` @ 3ebc8bf,2026-09-07 (47 commits) · regenerate with `tools/dashboard.py` +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` > **North star:** A functional reimplementation of the engine — behavior-equivalent, NOT byte-for-byte @@ -12,8 +12,8 @@ Generated 2026-09-08 03:14 UTC · `sots-re` @ 73f5f1e,2026-09-07 · `sots-engine |---|---:|---:| | verified | 27 | 49% | | mapped | 16 | 29% | -| in-progress | 4 | 7% | -| backlog | 7 | 13% | +| in-progress | 5 | 9% | +| backlog | 6 | 11% | | blocked | 1 | 2% | | Type | verified | mapped | in-progress | backlog | blocked | total | @@ -23,7 +23,7 @@ Generated 2026-09-08 03:14 UTC · `sots-re` @ 73f5f1e,2026-09-07 · `sots-engine | subsystems | 2 | 6 | 1 | 3 | 1 | 13 | | engine | 10 | 0 | 0 | 0 | 0 | 10 | | verify | 4 | 2 | 0 | 1 | 0 | 7 | -| phase2 | 2 | 0 | 3 | 3 | 0 | 8 | +| phase2 | 2 | 0 | 4 | 2 | 0 | 8 | | meta | 4 | 4 | 0 | 0 | 0 | 8 | ## 2. Binary understanding @@ -94,9 +94,9 @@ Most recent open: ## 8. Delta since previous dashboard -- verified targets: 26 → 27 (+1) · mapped-or-better: 43 → 43 (+0) -- engine LOC: 18,187 → 19,328 (+1,141) · test files: 88 → 88 (+0) · checks: 2,574 → 2,641 (+67) -- addresses verified: 126 → 166 (+40) · recovered layouts: 21 → 21 (+0) · open questions: 25 → 27 (+2) +- 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) +- 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 diff --git a/campaign/board.md b/campaign/board.md index 6060938..1c1b9d3 100644 --- a/campaign/board.md +++ b/campaign/board.md @@ -54,9 +54,9 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`). | 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-B2 OnTechResearched (behavioral) | phase2 | backlog | — | 0% | 2026-09-08 | hook ServerPlayer::OnTechResearched 0x00891790 (verified) vs the tech-effects layer from sim-pin | +| 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), then B3. Non-holders build in /srv/re-lab/build/sots-engine- and stage to /srv/re-lab/shim/dist- | +| 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-, stage to /srv/re-lab/shim/dist-, deploy to C:\SOTS\shimdist- | | 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 |