The complement to the per-function compare harness. Instead of "did this function's declared outputs match", it asks "is the entire simulation state still identical" -- so no region-declaration mistake can hide from it. Coverage is PROVED, not declared: the digest tree is re-serialised and compared byte-for-byte against the inflated save on every run. When that reconstruction reproduces the stream, the whole file is a function of the digest's inputs. A run that cannot account for the file says so and exits non-zero. This is the direct answer to B4's three hooks that printed "0 diverged" over an empty region set. It localises. The root is the fold of a per-subsystem / per-object tree with named objects, so the known load->re-save delta reports as exactly five leaves -- /Summary/Checksum and four /Sim/players/Player[...]/Status 4->0 -- naming the two Singularity players by id where the raw byte diff could only say "1st of two". One real End Turn reports as 108 fully attributed differences. Float-parity policy is explicit and strict by default (STATE_CHECKSUM.md 3): raw IEEE-754 bits; a `canonical` policy for signed zero and NaN payloads only; and deliberately NO tolerant hashing mode, because quantisation moves the cliff rather than removing it and destroys the roll-up. Tolerance lives in the differ as --ulps, applied after localisation. Corpus census: 0 NaN, 0 -0.0, 0 subnormals across 4,474 float leaves, so the strict default costs nothing today and a test fails the day that changes. Validated on the real saves (verify/results/state-checksum/): 10 files, 4 distinct contents, all STABLE + COVERED; chain record/verify works on the real turn1-3 saves. The VM-driven replay loop is designed (section 5) but UNRUN. Section 3.5 names the one question the host side cannot settle -- whether the turn pipeline depends on x87 intermediate precision -- and the experiment that would: force fpu_cw to 0x027f / 0x127f / 0x137f across End Turn and checksum the three autosaves. Also recorded: Summary.Checksum is NOT a byte sum over the inflated stream nor a sum over the int leaves (both ruled out), so nobody repeats those two. 38 tests; sots-engine untouched, clean_room_check.sh OK.
86 lines
4.9 KiB
Text
86 lines
4.9 KiB
Text
# state_checksum roots -- 2026-09-08T07:42:52Z
|
|
|
|
--- sha256:a3f9dc4b49fc669c turn1-state.sav
|
|
file: /home/alex/sots-re/verify/results/saves/turn1-state.sav
|
|
root: 9bbcbd4945cd8319b65d7d7958772ee0
|
|
policy: floats=bits mask=none digest=blake2b-128 reader=fe5a6f7cd4ae7910
|
|
coverage: PROVED (591376 bytes rebuilt == inflated); 34355 leaves, 187545 value bytes
|
|
reader: 0 error, 0 warn
|
|
subsystems:
|
|
c601faf8435ca9dd /Summary 60 leaves 216 B
|
|
68913c619976ba5f /CreateParams 228 leaves 907 B
|
|
0a82080734aaa2d4 /Sim/RNG 1 leaves 2503 B
|
|
cea50f5077af4e42 /Sim/Attrib 1 leaves 4 B
|
|
b3e7593a4742ebc4 /Sim/turnstats 281 leaves 1156 B
|
|
5c843fefbf911315 /Sim/players 28902 leaves 160989 B
|
|
8391940f1bb84af6 /Sim/systems 2754 leaves 10482 B
|
|
db0c730bfa7e21b0 /Sim/fleets 513 leaves 1880 B
|
|
7771763e19ec2652 /Sim/NdGr2 475 leaves 1900 B
|
|
a1139ab953664ab1 /Sim/trdmgr 166 leaves 664 B
|
|
99c457b5334248e7 /Sim/spymgr 2 leaves 8 B
|
|
f9e074a56abb0d1c /Sim/SvSctOb 123 leaves 530 B
|
|
a3f7780ee3690511 /CDT 5 leaves 104 B
|
|
|
|
--- sha256:ab4ac2d7e2977260 turn2-state.sav
|
|
file: /home/alex/sots-re/verify/results/saves/turn2-state.sav
|
|
root: aa85fe76d412cdb3a0e7e52c8f0ca9e2
|
|
policy: floats=bits mask=none digest=blake2b-128 reader=fe5a6f7cd4ae7910
|
|
coverage: PROVED (603360 bytes rebuilt == inflated); 35031 leaves, 190807 value bytes
|
|
reader: 0 error, 0 warn
|
|
subsystems:
|
|
42b2094efe6e285a /Summary 60 leaves 216 B
|
|
68913c619976ba5f /CreateParams 228 leaves 907 B
|
|
e9625f2b86f93f8c /Sim/RNG 1 leaves 2503 B
|
|
cea50f5077af4e42 /Sim/Attrib 1 leaves 4 B
|
|
c32bab57e99cdf79 /Sim/turnstats 545 leaves 2244 B
|
|
fa7f5ad40afed208 /Sim/players 29230 leaves 162841 B
|
|
1a36f0d18f0d8bab /Sim/systems 2779 leaves 10582 B
|
|
666872a3ce067218 /Sim/fleets 561 leaves 2058 B
|
|
7771763e19ec2652 /Sim/NdGr2 475 leaves 1900 B
|
|
a1139ab953664ab1 /Sim/trdmgr 166 leaves 664 B
|
|
99c457b5334248e7 /Sim/spymgr 2 leaves 8 B
|
|
6cd7196a38f53574 /Sim/SvSctOb 130 leaves 558 B
|
|
a3f7780ee3690511 /CDT 5 leaves 104 B
|
|
|
|
--- sha256:978041acd168b56e turn3-state.sav
|
|
file: /home/alex/sots-re/verify/results/saves/turn3-state.sav
|
|
root: 5ac4a24197e82de49f3077cd8dd25fad
|
|
policy: floats=bits mask=none digest=blake2b-128 reader=fe5a6f7cd4ae7910
|
|
coverage: PROVED (609080 bytes rebuilt == inflated); 35394 leaves, 192486 value bytes
|
|
reader: 0 error, 0 warn
|
|
subsystems:
|
|
b375baaf6aab9da5 /Summary 60 leaves 216 B
|
|
68913c619976ba5f /CreateParams 228 leaves 907 B
|
|
0978fdf34ff7962f /Sim/RNG 1 leaves 2503 B
|
|
cea50f5077af4e42 /Sim/Attrib 1 leaves 4 B
|
|
f067f6b95f21ed0e /Sim/turnstats 809 leaves 3332 B
|
|
8a0bf16b7166f7e3 /Sim/players 29264 leaves 163187 B
|
|
ef4caa2237b49b23 /Sim/systems 2779 leaves 10582 B
|
|
0f65b7f9ccb245f6 /Sim/fleets 624 leaves 2295 B
|
|
7771763e19ec2652 /Sim/NdGr2 475 leaves 1900 B
|
|
a1139ab953664ab1 /Sim/trdmgr 166 leaves 664 B
|
|
99c457b5334248e7 /Sim/spymgr 2 leaves 8 B
|
|
d30210dd84421501 /Sim/SvSctOb 130 leaves 558 B
|
|
a3f7780ee3690511 /CDT 5 leaves 104 B
|
|
|
|
--- sha256:bb4fd9ac89f41e3b Autosave EndTurn - turn3.sav
|
|
file: /tmp/saves/Autosave EndTurn - turn3.sav
|
|
root: a1448e6c1867fc53708810b3a2f9ec77
|
|
policy: floats=bits mask=none digest=blake2b-128 reader=fe5a6f7cd4ae7910
|
|
coverage: PROVED (603360 bytes rebuilt == inflated); 35031 leaves, 190807 value bytes
|
|
reader: 0 error, 0 warn
|
|
subsystems:
|
|
8c7e33a33dc76b3d /Summary 60 leaves 216 B
|
|
68913c619976ba5f /CreateParams 228 leaves 907 B
|
|
e9625f2b86f93f8c /Sim/RNG 1 leaves 2503 B
|
|
cea50f5077af4e42 /Sim/Attrib 1 leaves 4 B
|
|
c32bab57e99cdf79 /Sim/turnstats 545 leaves 2244 B
|
|
3416ca2128671b1e /Sim/players 29230 leaves 162841 B
|
|
1a36f0d18f0d8bab /Sim/systems 2779 leaves 10582 B
|
|
666872a3ce067218 /Sim/fleets 561 leaves 2058 B
|
|
7771763e19ec2652 /Sim/NdGr2 475 leaves 1900 B
|
|
a1139ab953664ab1 /Sim/trdmgr 166 leaves 664 B
|
|
99c457b5334248e7 /Sim/spymgr 2 leaves 8 B
|
|
6cd7196a38f53574 /Sim/SvSctOb 130 leaves 558 B
|
|
a3f7780ee3690511 /CDT 5 leaves 104 B
|
|
|