dashboard refresh after visibility

This commit is contained in:
alex 2026-09-08 13:43:31 -04:00
parent 069d7e649b
commit 6e10def1b5
3 changed files with 113 additions and 237 deletions

View file

@ -1,37 +1,37 @@
# SotS RE campaign — coverage dashboard # SotS RE campaign — coverage dashboard
Generated 2026-09-08 17:28 UTC · `sots-re` @ f6a914b,2026-09-08 · `sots-engine` @ 54b0353,2026-09-08 (147 commits) · regenerate with `tools/dashboard.py` Generated 2026-09-08 17:43 UTC · `sots-re` @ 069d7e6,2026-09-08 · `sots-engine` @ 06fe758,2026-09-08 (150 commits) · regenerate with `tools/dashboard.py`
> **North star:** A functional reimplementation of the engine — behavior-equivalent, NOT byte-for-byte > **North star:** A functional reimplementation of the engine — behavior-equivalent, NOT byte-for-byte
## 1. Map coverage (campaign/board.md) ## 1. Map coverage (campaign/board.md)
230 targets · mapped-or-better **209/230** `[█████████░] 91%` · verified **172/230** `[███████░░░] 75%` 240 targets · mapped-or-better **217/240** `[█████████░] 90%` · verified **179/240** `[███████░░░] 75%`
| Status | Count | % | | Status | Count | % |
|---|---:|---:| |---|---:|---:|
| verified | 172 | 75% | | verified | 179 | 75% |
| mapped | 37 | 16% | | mapped | 38 | 16% |
| in-progress | 1 | 0% | | in-progress | 2 | 1% |
| backlog | 18 | 8% | | backlog | 19 | 8% |
| blocked | 2 | 1% | | blocked | 2 | 1% |
| Type | verified | mapped | in-progress | backlog | blocked | total | | Type | verified | mapped | in-progress | backlog | blocked | total |
|---|---:|---:|---:|---:|---:|---:| |---|---:|---:|---:|---:|---:|---:|
| objects | 29 | 6 | 0 | 2 | 1 | 38 | | objects | 30 | 6 | 0 | 2 | 1 | 39 |
| control-flow | 15 | 2 | 0 | 0 | 0 | 17 | | control-flow | 17 | 2 | 0 | 0 | 0 | 19 |
| subsystems | 4 | 8 | 0 | 2 | 1 | 15 | | subsystems | 4 | 8 | 0 | 2 | 1 | 15 |
| engine | 21 | 0 | 0 | 0 | 0 | 21 | | engine | 22 | 0 | 0 | 0 | 0 | 22 |
| verify | 45 | 11 | 1 | 13 | 0 | 70 | | verify | 46 | 12 | 2 | 14 | 0 | 74 |
| phase2 | 13 | 3 | 0 | 0 | 0 | 16 | | phase2 | 13 | 3 | 0 | 0 | 0 | 16 |
| meta | 37 | 6 | 0 | 1 | 0 | 44 | | meta | 38 | 6 | 0 | 1 | 0 | 45 |
| other | 8 | 1 | 0 | 0 | 0 | 9 | | other | 9 | 1 | 0 | 0 | 0 | 10 |
## 2. Binary understanding ## 2. Binary understanding
- RTTI type descriptors: **1,924** (`Game::` 1,404, `Mars::` 194; serializable types 179) - 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 - 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): **986**, verified **940** `[██████████] 95%` - Functions: **41,411** (parsed from `01-fingerprint.md`); named/annotated in the **address contract** (`ghidra/addresses.json`, not Ghidra's full rename count): **1019**, verified **957** `[█████████░] 94%`
## 3. Data layer ## 3. Data layer
@ -45,7 +45,7 @@ Generated 2026-09-08 17:28 UTC · `sots-re` @ f6a914b,2026-09-08 · `sots-engine
| Module | LOC | Test files | Checks | Wired | Doc | | Module | LOC | Test files | Checks | Wired | Doc |
|---|---:|---:|---:|---|---| |---|---:|---:|---:|---|---|
| `app` | 2,078 | 6 | 82 | yes | N-output-term.md | | `app` | 2,340 | 6 | 82 | yes | N-output-term.md |
| `game/combat` | 582 | 2 | 34 | yes | mars-parse.md | | `game/combat` | 582 | 2 | 34 | yes | mars-parse.md |
| `game/config` | 558 | 4 | 131 | yes | M1.md | | `game/config` | 558 | 4 | 131 | yes | M1.md |
| `game/data` | 2,077 | 12 | 462 | yes | game-data.md | | `game/data` | 2,077 | 12 | 462 | yes | game-data.md |
@ -53,7 +53,7 @@ Generated 2026-09-08 17:28 UTC · `sots-re` @ f6a914b,2026-09-08 · `sots-engine
| `game/effects` | 973 | 3 | 231 | yes | game-effects.md | | `game/effects` | 973 | 3 | 231 | yes | game-effects.md |
| `game/events` | 558 | 3 | 152 | yes | E-events.md | | `game/events` | 558 | 3 | 152 | yes | E-events.md |
| `game/nav` | 581 | 2 | 113 | yes | — | | `game/nav` | 581 | 2 | 113 | yes | — |
| `game/sim` | 3,382 | 10 | 730 | yes | game-sim.md | | `game/sim` | 3,606 | 11 | 792 | yes | game-sim.md |
| `mars/parse` | 875 | 12 | 277 | yes | mars-parse.md | | `mars/parse` | 875 | 12 | 277 | yes | mars-parse.md |
| `mars/rng` | 244 | 0 | 0 | yes | mars-rng.md | | `mars/rng` | 244 | 0 | 0 | yes | mars-rng.md |
| `mars/stream` | 5,407 | 7 | 310 | yes | mars-stream.md | | `mars/stream` | 5,407 | 7 | 310 | yes | mars-stream.md |
@ -62,9 +62,9 @@ Generated 2026-09-08 17:28 UTC · `sots-re` @ f6a914b,2026-09-08 · `sots-engine
| `shim` | 12,102 | 0 | 0 | direct (WIN32) | M0.md | | `shim` | 12,102 | 0 | 0 | direct (WIN32) | M0.md |
| `shim/hooks` | 9,075 | 0 | 0 | direct (WIN32) | M0.md | | `shim/hooks` | 9,075 | 0 | 0 | direct (WIN32) | M0.md |
| `shim/trace` | 2,258 | 9 | 273 | direct (WIN32) | shim-trace.md | | `shim/trace` | 2,258 | 9 | 273 | direct (WIN32) | shim-trace.md |
| **total** | **43,637** | **106** | **3483** | | | | **total** | **44,123** | **107** | **3545** | | |
Board `engine:` rows: verified **21**, mapped 0, in flight 0 (of 21) — verified & merged `[██████████] 100%` Board `engine:` rows: verified **22**, mapped 0, in flight 0 (of 22) — verified & merged `[██████████] 100%`
## 5. Phase 2 milestones ## 5. Phase 2 milestones
@ -78,11 +78,11 @@ Board `engine:` rows: verified **21**, mapped 0, in flight 0 (of 21) — verifie
## 6. Standalone (`src/app`) — distance to the byte-match ## 6. Standalone (`src/app`) — distance to the byte-match
Turn-driver phases: **15/44** modelled (9 committed) `[███░░░░░░░] 34%` Turn-driver phases: **14/44** modelled (8 committed) `[███░░░░░░░] 32%`
| | verified | implemented | partial | blocked | stub | | | verified | implemented | partial | blocked | stub |
|---|---:|---:|---:|---:|---:| |---|---:|---:|---:|---:|---:|
| turn drivers (44) | 0 | 3 | 6 | 6 | 29 | | turn drivers (44) | 0 | 2 | 6 | 6 | 30 |
| post-combat tail (37) | 0 | 1 | 0 | 2 | 34 | | 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): Reference pair `turn1-state.sav` → `turn2-state.sav`, leaves localised by `state_checksum.py` (coverage proved by re-serialisation):
@ -131,11 +131,11 @@ Most recent open:
## 9. Delta since previous dashboard ## 9. Delta since previous dashboard
- verified targets: 171 → 172 (+1) · mapped-or-better: 207 → 209 (+2) - verified targets: 172 → 179 (+7) · mapped-or-better: 209 → 217 (+8)
- engine LOC: 43,313 → 43,637 (+324) · test files: 106 → 106 (+0) · checks: 3,480 → 3,483 (+3) - engine LOC: 43,637 → 44,123 (+486) · test files: 106 → 107 (+1) · checks: 3,483 → 3,545 (+62)
- addresses verified: 940 → 940 (+0) · recovered layouts: 384 → 384 (+0) · open questions: 26 → 26 (+0) - addresses verified: 940 → 957 (+17) · recovered layouts: 384 → 384 (+0) · open questions: 26 → 26 (+0)
- standalone leaves closed: 5 → 5 (+0) · leaves still diverging: 204 → 204 (+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 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": 172, "mapped_plus": 209, "targets": 230, "loc": 43637, "tests": 106, "checks": 3483, "addr_verified": 940, "addr_total": 986, "layouts": 384, "open_q": 26, "sa_closed": 5, "sa_left": 204} --> <!-- dashboard-metrics {"verified": 179, "mapped_plus": 217, "targets": 240, "loc": 44123, "tests": 107, "checks": 3545, "addr_verified": 957, "addr_total": 1019, "layouts": 384, "open_q": 26, "sa_closed": 5, "sa_left": 204} -->

View file

@ -1,99 +1,37 @@
# standalone vs the oracle # standalone vs the oracle
generated 2026-09-08T17:37:38Z binary /home/alex/sots-engine-e3/build-host/src/app/sots_turn generated 2026-09-08T17:43:31Z binary /home/alex/sots-engine/build-host/src/app/sots_turn
phases: 16/44 of the two turn drivers modelled, 10 committed (implemented 4, partial 6, blocked 6, stub 28) phases: 14/44 of the two turn drivers modelled, 8 committed (implemented 2, partial 6, blocked 6, stub 30)
5/37 of the post-combat tail modelled 3/37 of the post-combat tail modelled
## turn1-state.sav -> turn2-state.sav (real End Turn) ## turn1-state.sav -> turn2-state.sav (real End Turn)
baseline (do nothing) 209 leaves diverge baseline (do nothing) 209 leaves diverge
after one standalone turn 158 leaves diverge after one standalone turn 204 leaves diverge
closed 51, regressed 0, byte match: no closed 5, regressed 0, byte match: no
coverage proved on all three saves: {'input': True, 'oracle': True, 'ours': True} coverage proved on all three saves: {'input': True, 'oracle': True, 'ours': True}
closed: closed:
+ /Sim/Frame + /Sim/Frame
+ /Sim/systems/Sys[112 "Gamma Cephei"]/EPid
+ /Sim/systems/Sys[112 "Gamma Cephei"]/ETS
+ /Sim/systems/Sys[112 "Gamma Cephei"]/Eid
+ /Sim/systems/Sys[112 "Gamma Cephei"]/NVE
+ /Sim/systems/Sys[112 "Gamma Cephei"]/ltis
+ /Sim/systems/Sys[112 "Gamma Cephei"]/ntdev + /Sim/systems/Sys[112 "Gamma Cephei"]/ntdev
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/EPid
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/ETS
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/Eid
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/NVE
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/ltis
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/ntdev + /Sim/systems/Sys[288 "Ke'Dolarra"]/ntdev
+ /Sim/systems/Sys[304 "Koa’Vo"]/EFlags
+ /Sim/systems/Sys[304 "Koa’Vo"]/EPid
+ /Sim/systems/Sys[304 "Koa’Vo"]/ETS
+ /Sim/systems/Sys[304 "Koa’Vo"]/Eid
+ /Sim/systems/Sys[304 "Koa’Vo"]/NVE
+ /Sim/systems/Sys[304 "Koa’Vo"]/ltis
+ /Sim/systems/Sys[304 "Koa’Vo"]/ntdev + /Sim/systems/Sys[304 "Koa’Vo"]/ntdev
+ /Sim/systems/Sys[336 "Kaa’Vaalu"]/EFlags
+ /Sim/systems/Sys[336 "Kaa’Vaalu"]/EPid
+ /Sim/systems/Sys[336 "Kaa’Vaalu"]/ETS
+ /Sim/systems/Sys[336 "Kaa’Vaalu"]/Eid
+ /Sim/systems/Sys[336 "Kaa’Vaalu"]/NVE
+ /Sim/systems/Sys[336 "Kaa’Vaalu"]/ltis
+ /Sim/systems/Sys[400 "Markab"]/EFlags
+ /Sim/systems/Sys[400 "Markab"]/EPid
+ /Sim/systems/Sys[400 "Markab"]/ETS
+ /Sim/systems/Sys[400 "Markab"]/Eid
+ /Sim/systems/Sys[400 "Markab"]/NVE
+ /Sim/systems/Sys[400 "Markab"]/ltis
+ /Sim/systems/Sys[448 "Kea’Pono"]/EFlags
+ /Sim/systems/Sys[448 "Kea’Pono"]/EPid
+ /Sim/systems/Sys[448 "Kea’Pono"]/ETS
+ /Sim/systems/Sys[448 "Kea’Pono"]/Eid
+ /Sim/systems/Sys[448 "Kea’Pono"]/NVE
+ /Sim/systems/Sys[448 "Kea’Pono"]/ltis
+ /Sim/systems/Sys[480 "Ko'Rorkor"]/EFlags
+ /Sim/systems/Sys[480 "Ko'Rorkor"]/EPid
+ /Sim/systems/Sys[480 "Ko'Rorkor"]/ETS
+ /Sim/systems/Sys[480 "Ko'Rorkor"]/Eid
+ /Sim/systems/Sys[480 "Ko'Rorkor"]/NVE
+ /Sim/systems/Sys[480 "Ko'Rorkor"]/ltis
+ /Sim/systems/Sys[64 "Hyperion"]/EFlags
+ /Sim/systems/Sys[64 "Hyperion"]/EPid
+ /Sim/systems/Sys[64 "Hyperion"]/ETS
+ /Sim/systems/Sys[64 "Hyperion"]/Eid
+ /Sim/systems/Sys[64 "Hyperion"]/NVE
+ /Sim/systems/Sys[64 "Hyperion"]/ltis
+ /Summary/Turn + /Summary/Turn
## turn2-state.sav -> turn3-state.sav (real End Turn) ## turn2-state.sav -> turn3-state.sav (real End Turn)
baseline (do nothing) 108 leaves diverge baseline (do nothing) 108 leaves diverge
after one standalone turn 87 leaves diverge after one standalone turn 103 leaves diverge
closed 21, regressed 0, byte match: no closed 5, regressed 0, byte match: no
coverage proved on all three saves: {'input': True, 'oracle': True, 'ours': True} coverage proved on all three saves: {'input': True, 'oracle': True, 'ours': True}
closed: closed:
+ /Sim/Frame + /Sim/Frame
+ /Sim/systems/Sys[112 "Gamma Cephei"]/ETS
+ /Sim/systems/Sys[112 "Gamma Cephei"]/ltis
+ /Sim/systems/Sys[112 "Gamma Cephei"]/ntdev + /Sim/systems/Sys[112 "Gamma Cephei"]/ntdev
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/ETS
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/ltis
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/ntdev + /Sim/systems/Sys[288 "Ke'Dolarra"]/ntdev
+ /Sim/systems/Sys[304 "Koa’Vo"]/ETS
+ /Sim/systems/Sys[304 "Koa’Vo"]/ltis
+ /Sim/systems/Sys[304 "Koa’Vo"]/ntdev + /Sim/systems/Sys[304 "Koa’Vo"]/ntdev
+ /Sim/systems/Sys[336 "Kaa’Vaalu"]/ETS
+ /Sim/systems/Sys[336 "Kaa’Vaalu"]/ltis
+ /Sim/systems/Sys[400 "Markab"]/ETS
+ /Sim/systems/Sys[400 "Markab"]/ltis
+ /Sim/systems/Sys[448 "Kea’Pono"]/ETS
+ /Sim/systems/Sys[448 "Kea’Pono"]/ltis
+ /Sim/systems/Sys[480 "Ko'Rorkor"]/ETS
+ /Sim/systems/Sys[480 "Ko'Rorkor"]/ltis
+ /Sim/systems/Sys[64 "Hyperion"]/ETS
+ /Sim/systems/Sys[64 "Hyperion"]/ltis
+ /Summary/Turn + /Summary/Turn
## what still differs on the reference pair, by subsystem ## what still differs on the reference pair, by subsystem
82 /Sim/players 82 /Sim/players
34 /Sim/systems 80 /Sim/systems
24 /Sim/turnstats 24 /Sim/turnstats
8 /Sim/SvSctOb 8 /Sim/SvSctOb
1 /Sim/DesignIDs[] 1 /Sim/DesignIDs[]

View file

@ -1,18 +1,18 @@
{ {
"schema": "sots-standalone-status/1", "schema": "sots-standalone-status/1",
"generated": "2026-09-08T17:37:38Z", "generated": "2026-09-08T17:43:31Z",
"binary": "/home/alex/sots-engine-e3/build-host/src/app/sots_turn", "binary": "/home/alex/sots-engine/build-host/src/app/sots_turn",
"reference": { "reference": {
"input": "turn1-state.sav", "input": "turn1-state.sav",
"oracle": "turn2-state.sav", "oracle": "turn2-state.sav",
"baselineDiverging": 209, "baselineDiverging": 209,
"divergingAfterTurn": 158, "divergingAfterTurn": 204,
"closed": 51, "closed": 5,
"regressed": 0, "regressed": 0,
"byteMatch": false, "byteMatch": false,
"subsystems": { "subsystems": {
"/Sim/players": 82, "/Sim/players": 82,
"/Sim/systems": 34, "/Sim/systems": 80,
"/Sim/turnstats": 24, "/Sim/turnstats": 24,
"/Sim/SvSctOb": 8, "/Sim/SvSctOb": 8,
"/Sim/DesignIDs[]": 1, "/Sim/DesignIDs[]": 1,
@ -30,22 +30,22 @@
"phases": { "phases": {
"total": 44, "total": 44,
"verified": 0, "verified": 0,
"implemented": 4, "implemented": 2,
"partial": 6, "partial": 6,
"blocked": 6, "blocked": 6,
"stub": 28, "stub": 30,
"modelled": 16, "modelled": 14,
"committed": 10 "committed": 8
}, },
"tailPhases": { "tailPhases": {
"total": 37, "total": 37,
"verified": 0, "verified": 0,
"implemented": 1, "implemented": 1,
"partial": 2, "partial": 0,
"blocked": 2, "blocked": 2,
"stub": 32, "stub": 34,
"modelled": 5, "modelled": 3,
"committed": 3 "committed": 1
}, },
"rng": { "rng": {
"wordsModelled": 16, "wordsModelled": 16,
@ -64,14 +64,14 @@
"roundtrip (untouched): byte-identical (591376 bytes)", "roundtrip (untouched): byte-identical (591376 bytes)",
"", "",
"phases", "phases",
" turn drivers (the milestone's denominator): 16 of 44 modelled, 10 committed", " turn drivers (the milestone's denominator): 14 of 44 modelled, 8 committed",
" verified 0 implemented 4 partial 6 blocked 6 stub 28", " verified 0 implemented 2 partial 6 blocked 6 stub 30",
" post-combat tail (written to the autosave, tracked separately): 5 of 37 modelled", " post-combat tail (written to the autosave, tracked separately): 3 of 37 modelled",
" verified 0 implemented 1 partial 2 blocked 2 stub 32", " verified 0 implemented 1 partial 0 blocked 2 stub 34",
"", "",
"this run", "this run",
" leaves written 53", " leaves written 7",
" leaves NOT written by a blocked phase 72", " leaves NOT written by a blocked phase 64",
" generator words consumed 16 (state loaded, left untouched)", " generator words consumed 16 (state loaded, left untouched)",
" generator words NOT accounted (never netted off the above):", " generator words NOT accounted (never netted off the above):",
" - encounter detection draws one unit value and one bounded integer per turn on every turn measured (2 words), with no derived rule behind the count -- its bound is the product of the contact and detector counts, so it is left unmodelled", " - encounter detection draws one unit value and one bounded integer per turn on every turn measured (2 words), with no derived rule behind the count -- its bound is the product of the contact and detector counts, so it is left unmodelled",
@ -80,8 +80,8 @@
" ! the generator advanced during this run but the save keeps its original state (--commit-rng to write it)", " ! the generator advanced during this run but the save keeps its original state (--commit-rng to write it)",
" ! the modelled words are a LOWER BOUND on the turn's cost, so a committed generator is short by the unaccounted sites below and its drawn VALUES are not the game's", " ! the modelled words are a LOWER BOUND on the turn's cost, so a committed generator is short by the unaccounted sites below and its drawn VALUES are not the game's",
"", "",
"wrote /tmp/tmpex18kut6/post-turn1-state.sav (65208 bytes gzipped, 591664 inflated)", "wrote /tmp/tmpvupbr_eq/post-turn1-state.sav (65145 bytes gzipped, 591376 inflated)",
"metric -> /tmp/tmpex18kut6/metric-turn1-state.sav.json" "metric -> /tmp/tmpvupbr_eq/metric-turn1-state.sav.json"
], ],
"coverage": { "coverage": {
"input": true, "input": true,
@ -91,63 +91,17 @@
"roots": { "roots": {
"input": "64b836b966299d9b72fc02244ed31e31", "input": "64b836b966299d9b72fc02244ed31e31",
"oracle": "4bed514f853332b9fa35b388c3aa5558", "oracle": "4bed514f853332b9fa35b388c3aa5558",
"ours": "d77168aa0a5bd1b8890d8c0f994aed3f" "ours": "1acc372b1d410b966ab544dffbe43cb5"
}, },
"baselineDiverging": 209, "baselineDiverging": 209,
"divergingAfterTurn": 158, "divergingAfterTurn": 204,
"closed": 51, "closed": 5,
"regressed": 0, "regressed": 0,
"closedPaths": [ "closedPaths": [
"/Sim/Frame", "/Sim/Frame",
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/EPid",
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/ETS",
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/Eid",
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/NVE",
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/ltis",
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/ntdev", "/Sim/systems/Sys[112 \"Gamma Cephei\"]/ntdev",
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/EPid",
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/ETS",
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/Eid",
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/NVE",
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/ltis",
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/ntdev", "/Sim/systems/Sys[288 \"Ke'Dolarra\"]/ntdev",
"/Sim/systems/Sys[304 \"Koa\u2019Vo\"]/EFlags",
"/Sim/systems/Sys[304 \"Koa\u2019Vo\"]/EPid",
"/Sim/systems/Sys[304 \"Koa\u2019Vo\"]/ETS",
"/Sim/systems/Sys[304 \"Koa\u2019Vo\"]/Eid",
"/Sim/systems/Sys[304 \"Koa\u2019Vo\"]/NVE",
"/Sim/systems/Sys[304 \"Koa\u2019Vo\"]/ltis",
"/Sim/systems/Sys[304 \"Koa\u2019Vo\"]/ntdev", "/Sim/systems/Sys[304 \"Koa\u2019Vo\"]/ntdev",
"/Sim/systems/Sys[336 \"Kaa\u2019Vaalu\"]/EFlags",
"/Sim/systems/Sys[336 \"Kaa\u2019Vaalu\"]/EPid",
"/Sim/systems/Sys[336 \"Kaa\u2019Vaalu\"]/ETS",
"/Sim/systems/Sys[336 \"Kaa\u2019Vaalu\"]/Eid",
"/Sim/systems/Sys[336 \"Kaa\u2019Vaalu\"]/NVE",
"/Sim/systems/Sys[336 \"Kaa\u2019Vaalu\"]/ltis",
"/Sim/systems/Sys[400 \"Markab\"]/EFlags",
"/Sim/systems/Sys[400 \"Markab\"]/EPid",
"/Sim/systems/Sys[400 \"Markab\"]/ETS",
"/Sim/systems/Sys[400 \"Markab\"]/Eid",
"/Sim/systems/Sys[400 \"Markab\"]/NVE",
"/Sim/systems/Sys[400 \"Markab\"]/ltis",
"/Sim/systems/Sys[448 \"Kea\u2019Pono\"]/EFlags",
"/Sim/systems/Sys[448 \"Kea\u2019Pono\"]/EPid",
"/Sim/systems/Sys[448 \"Kea\u2019Pono\"]/ETS",
"/Sim/systems/Sys[448 \"Kea\u2019Pono\"]/Eid",
"/Sim/systems/Sys[448 \"Kea\u2019Pono\"]/NVE",
"/Sim/systems/Sys[448 \"Kea\u2019Pono\"]/ltis",
"/Sim/systems/Sys[480 \"Ko'Rorkor\"]/EFlags",
"/Sim/systems/Sys[480 \"Ko'Rorkor\"]/EPid",
"/Sim/systems/Sys[480 \"Ko'Rorkor\"]/ETS",
"/Sim/systems/Sys[480 \"Ko'Rorkor\"]/Eid",
"/Sim/systems/Sys[480 \"Ko'Rorkor\"]/NVE",
"/Sim/systems/Sys[480 \"Ko'Rorkor\"]/ltis",
"/Sim/systems/Sys[64 \"Hyperion\"]/EFlags",
"/Sim/systems/Sys[64 \"Hyperion\"]/EPid",
"/Sim/systems/Sys[64 \"Hyperion\"]/ETS",
"/Sim/systems/Sys[64 \"Hyperion\"]/Eid",
"/Sim/systems/Sys[64 \"Hyperion\"]/NVE",
"/Sim/systems/Sys[64 \"Hyperion\"]/ltis",
"/Summary/Turn" "/Summary/Turn"
], ],
"regressedPaths": [], "regressedPaths": [],
@ -197,30 +151,30 @@
"standalone": { "standalone": {
"schema": "sots-standalone-metric/1", "schema": "sots-standalone-metric/1",
"input": "/home/alex/sots-re/verify/results/saves/turn1-state.sav", "input": "/home/alex/sots-re/verify/results/saves/turn1-state.sav",
"output": "/tmp/tmpex18kut6/post-turn1-state.sav", "output": "/tmp/tmpvupbr_eq/post-turn1-state.sav",
"spine": { "spine": {
"total": 44, "total": 44,
"verified": 0, "verified": 0,
"implemented": 4, "implemented": 2,
"partial": 6, "partial": 6,
"blocked": 6, "blocked": 6,
"stub": 28, "stub": 30,
"modelled": 16, "modelled": 14,
"committed": 10 "committed": 8
}, },
"tail": { "tail": {
"total": 37, "total": 37,
"verified": 0, "verified": 0,
"implemented": 1, "implemented": 1,
"partial": 2, "partial": 0,
"blocked": 2, "blocked": 2,
"stub": 32, "stub": 34,
"modelled": 5, "modelled": 3,
"committed": 3 "committed": 1
}, },
"run": { "run": {
"leafWrites": 53, "leafWrites": 7,
"blockedLeafWrites": 72, "blockedLeafWrites": 64,
"rngWords": 16, "rngWords": 16,
"rngLoaded": true, "rngLoaded": true,
"rngCommitted": false, "rngCommitted": false,
@ -285,8 +239,8 @@
"driver": "StrategyServer::ProcessTurn", "driver": "StrategyServer::ProcessTurn",
"id": "S04", "id": "S04",
"name": "RebuildAllianceMasks", "name": "RebuildAllianceMasks",
"status": "implemented", "status": "stub",
"ran": 8, "ran": 0,
"writes": 0, "writes": 0,
"blockedWrites": 0, "blockedWrites": 0,
"rng": 0 "rng": 0
@ -654,10 +608,10 @@
{ {
"driver": "StrategyServer::ProcessTurn", "driver": "StrategyServer::ProcessTurn",
"id": "S29", "id": "S29",
"name": "SystemObservedStamp", "name": "SystemTailFixup",
"status": "implemented", "status": "stub",
"ran": 28, "ran": 0,
"writes": 8, "writes": 0,
"blockedWrites": 0, "blockedWrites": 0,
"rng": 0 "rng": 0
}, },
@ -855,9 +809,9 @@
"driver": "StrategyServer::OnAllCombatDone_Tail", "driver": "StrategyServer::OnAllCombatDone_Tail",
"id": "T17", "id": "T17",
"name": "RebuildPlayerViewTree", "name": "RebuildPlayerViewTree",
"status": "partial", "status": "stub",
"ran": 28, "ran": 0,
"writes": 32, "writes": 0,
"blockedWrites": 0, "blockedWrites": 0,
"rng": 0 "rng": 0
}, },
@ -895,9 +849,9 @@
"driver": "StrategyServer::OnAllCombatDone_Tail", "driver": "StrategyServer::OnAllCombatDone_Tail",
"id": "T21", "id": "T21",
"name": "UpdateSurveyAndSystemStats", "name": "UpdateSurveyAndSystemStats",
"status": "partial", "status": "stub",
"ran": 28, "ran": 0,
"writes": 6, "writes": 0,
"blockedWrites": 0, "blockedWrites": 0,
"rng": 0 "rng": 0
}, },
@ -1048,7 +1002,7 @@
"status": "blocked", "status": "blocked",
"ran": 8, "ran": 8,
"writes": 0, "writes": 0,
"blockedWrites": 56, "blockedWrites": 48,
"rng": 0 "rng": 0
}, },
{ {
@ -1076,14 +1030,14 @@
"roundtrip (untouched): byte-identical (603360 bytes)", "roundtrip (untouched): byte-identical (603360 bytes)",
"", "",
"phases", "phases",
" turn drivers (the milestone's denominator): 16 of 44 modelled, 10 committed", " turn drivers (the milestone's denominator): 14 of 44 modelled, 8 committed",
" verified 0 implemented 4 partial 6 blocked 6 stub 28", " verified 0 implemented 2 partial 6 blocked 6 stub 30",
" post-combat tail (written to the autosave, tracked separately): 5 of 37 modelled", " post-combat tail (written to the autosave, tracked separately): 3 of 37 modelled",
" verified 0 implemented 1 partial 2 blocked 2 stub 32", " verified 0 implemented 1 partial 0 blocked 2 stub 34",
"", "",
"this run", "this run",
" leaves written 23", " leaves written 7",
" leaves NOT written by a blocked phase 66", " leaves NOT written by a blocked phase 58",
" generator words consumed 16 (state loaded, left untouched)", " generator words consumed 16 (state loaded, left untouched)",
" generator words NOT accounted (never netted off the above):", " generator words NOT accounted (never netted off the above):",
" - encounter detection draws one unit value and one bounded integer per turn on every turn measured (2 words), with no derived rule behind the count -- its bound is the product of the contact and detector counts, so it is left unmodelled", " - encounter detection draws one unit value and one bounded integer per turn on every turn measured (2 words), with no derived rule behind the count -- its bound is the product of the contact and detector counts, so it is left unmodelled",
@ -1092,8 +1046,8 @@
" ! the generator advanced during this run but the save keeps its original state (--commit-rng to write it)", " ! the generator advanced during this run but the save keeps its original state (--commit-rng to write it)",
" ! the modelled words are a LOWER BOUND on the turn's cost, so a committed generator is short by the unaccounted sites below and its drawn VALUES are not the game's", " ! the modelled words are a LOWER BOUND on the turn's cost, so a committed generator is short by the unaccounted sites below and its drawn VALUES are not the game's",
"", "",
"wrote /tmp/tmpex18kut6/post-turn2-state.sav (66882 bytes gzipped, 603360 inflated)", "wrote /tmp/tmpvupbr_eq/post-turn2-state.sav (66883 bytes gzipped, 603360 inflated)",
"metric -> /tmp/tmpex18kut6/metric-turn2-state.sav.json" "metric -> /tmp/tmpvupbr_eq/metric-turn2-state.sav.json"
], ],
"coverage": { "coverage": {
"input": true, "input": true,
@ -1103,33 +1057,17 @@
"roots": { "roots": {
"input": "4bed514f853332b9fa35b388c3aa5558", "input": "4bed514f853332b9fa35b388c3aa5558",
"oracle": "e9c161e311f8ef8fad6f1aa1903dcf3f", "oracle": "e9c161e311f8ef8fad6f1aa1903dcf3f",
"ours": "987447a85f9fcded1afd868fca112ef6" "ours": "22071ae1303f308a93b805e940b626b5"
}, },
"baselineDiverging": 108, "baselineDiverging": 108,
"divergingAfterTurn": 87, "divergingAfterTurn": 103,
"closed": 21, "closed": 5,
"regressed": 0, "regressed": 0,
"closedPaths": [ "closedPaths": [
"/Sim/Frame", "/Sim/Frame",
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/ETS",
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/ltis",
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/ntdev", "/Sim/systems/Sys[112 \"Gamma Cephei\"]/ntdev",
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/ETS",
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/ltis",
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/ntdev", "/Sim/systems/Sys[288 \"Ke'Dolarra\"]/ntdev",
"/Sim/systems/Sys[304 \"Koa\u2019Vo\"]/ETS",
"/Sim/systems/Sys[304 \"Koa\u2019Vo\"]/ltis",
"/Sim/systems/Sys[304 \"Koa\u2019Vo\"]/ntdev", "/Sim/systems/Sys[304 \"Koa\u2019Vo\"]/ntdev",
"/Sim/systems/Sys[336 \"Kaa\u2019Vaalu\"]/ETS",
"/Sim/systems/Sys[336 \"Kaa\u2019Vaalu\"]/ltis",
"/Sim/systems/Sys[400 \"Markab\"]/ETS",
"/Sim/systems/Sys[400 \"Markab\"]/ltis",
"/Sim/systems/Sys[448 \"Kea\u2019Pono\"]/ETS",
"/Sim/systems/Sys[448 \"Kea\u2019Pono\"]/ltis",
"/Sim/systems/Sys[480 \"Ko'Rorkor\"]/ETS",
"/Sim/systems/Sys[480 \"Ko'Rorkor\"]/ltis",
"/Sim/systems/Sys[64 \"Hyperion\"]/ETS",
"/Sim/systems/Sys[64 \"Hyperion\"]/ltis",
"/Summary/Turn" "/Summary/Turn"
], ],
"regressedPaths": [], "regressedPaths": [],
@ -1179,30 +1117,30 @@
"standalone": { "standalone": {
"schema": "sots-standalone-metric/1", "schema": "sots-standalone-metric/1",
"input": "/home/alex/sots-re/verify/results/saves/turn2-state.sav", "input": "/home/alex/sots-re/verify/results/saves/turn2-state.sav",
"output": "/tmp/tmpex18kut6/post-turn2-state.sav", "output": "/tmp/tmpvupbr_eq/post-turn2-state.sav",
"spine": { "spine": {
"total": 44, "total": 44,
"verified": 0, "verified": 0,
"implemented": 4, "implemented": 2,
"partial": 6, "partial": 6,
"blocked": 6, "blocked": 6,
"stub": 28, "stub": 30,
"modelled": 16, "modelled": 14,
"committed": 10 "committed": 8
}, },
"tail": { "tail": {
"total": 37, "total": 37,
"verified": 0, "verified": 0,
"implemented": 1, "implemented": 1,
"partial": 2, "partial": 0,
"blocked": 2, "blocked": 2,
"stub": 32, "stub": 34,
"modelled": 5, "modelled": 3,
"committed": 3 "committed": 1
}, },
"run": { "run": {
"leafWrites": 23, "leafWrites": 7,
"blockedLeafWrites": 66, "blockedLeafWrites": 58,
"rngWords": 16, "rngWords": 16,
"rngLoaded": true, "rngLoaded": true,
"rngCommitted": false, "rngCommitted": false,
@ -1267,8 +1205,8 @@
"driver": "StrategyServer::ProcessTurn", "driver": "StrategyServer::ProcessTurn",
"id": "S04", "id": "S04",
"name": "RebuildAllianceMasks", "name": "RebuildAllianceMasks",
"status": "implemented", "status": "stub",
"ran": 8, "ran": 0,
"writes": 0, "writes": 0,
"blockedWrites": 0, "blockedWrites": 0,
"rng": 0 "rng": 0
@ -1636,10 +1574,10 @@
{ {
"driver": "StrategyServer::ProcessTurn", "driver": "StrategyServer::ProcessTurn",
"id": "S29", "id": "S29",
"name": "SystemObservedStamp", "name": "SystemTailFixup",
"status": "implemented", "status": "stub",
"ran": 28, "ran": 0,
"writes": 8, "writes": 0,
"blockedWrites": 0, "blockedWrites": 0,
"rng": 0 "rng": 0
}, },
@ -1837,9 +1775,9 @@
"driver": "StrategyServer::OnAllCombatDone_Tail", "driver": "StrategyServer::OnAllCombatDone_Tail",
"id": "T17", "id": "T17",
"name": "RebuildPlayerViewTree", "name": "RebuildPlayerViewTree",
"status": "partial", "status": "stub",
"ran": 28, "ran": 0,
"writes": 8, "writes": 0,
"blockedWrites": 0, "blockedWrites": 0,
"rng": 0 "rng": 0
}, },
@ -1877,8 +1815,8 @@
"driver": "StrategyServer::OnAllCombatDone_Tail", "driver": "StrategyServer::OnAllCombatDone_Tail",
"id": "T21", "id": "T21",
"name": "UpdateSurveyAndSystemStats", "name": "UpdateSurveyAndSystemStats",
"status": "partial", "status": "stub",
"ran": 28, "ran": 0,
"writes": 0, "writes": 0,
"blockedWrites": 0, "blockedWrites": 0,
"rng": 0 "rng": 0
@ -2030,7 +1968,7 @@
"status": "blocked", "status": "blocked",
"ran": 8, "ran": 8,
"writes": 0, "writes": 0,
"blockedWrites": 56, "blockedWrites": 48,
"rng": 0 "rng": 0
}, },
{ {