sots-re/verify/results/standalone/report.txt
alex c504729341 lane S2: the standalone scaffold, and the measured distance to the byte-match
tools/standalone_report.py drives sots-engine's sots_turn over each
consecutive-turn save pair and diffs the result against the game's own
post-turn save with state_checksum.py, which localises to named leaves and
proves its own coverage by re-serialisation.

  turn1-state -> turn2-state   baseline 209 diverging, after 204, closed 5
  turn2-state -> turn3-state   baseline 108 diverging, after 103, closed 5
  regressed 0 on both

`regressed` is reported next to `closed` and never netted off. It earned its
place immediately: committing the phase-31 player-status restore turned two
agreeing leaves into disagreeing ones, because the phase writes 1 and the file
carries 4.

The stable-system stand-in feeding the colony pass is a labelled hypothesis and
it survived a changed workload -- the same 3 ntdev leaves closed on both pairs,
six agreements, zero disagreements.

Two things deliberately NOT implemented: the TShn/ltis counters (18 leaves, a
`+1` would close them, but "+1 across one observed turn" is a hypothesis, not a
reading), and the RNG state write-back (an advanced-but-incomplete generator is
wrong in a different way from an untouched one).

dashboard.py gains section 6, reading verify/results/standalone/status.json:
phases modelled/committed per driver, baseline vs after, closed vs regressed,
the subsystem breakdown of what still differs, and the RNG gap. Sections 6-8
renumbered to 7-9; the delta footer tracks the two new counts.
DASHBOARD_README.md documents every number.

findings/control-flow/standalone-scaffold.md has the ranked blocker list.
2026-09-08 10:35:56 -04:00

88 lines
3.8 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# standalone vs the oracle
generated 2026-09-08T14:30:05Z binary /home/alex/sots-engine-wt-standalone/build-host/src/app/sots_turn
phases: 14/44 of the two turn drivers modelled, 7 committed (implemented 2, partial 5, blocked 7, stub 30)
2/37 of the post-combat tail modelled
## turn1-state.sav -> turn2-state.sav (real End Turn)
baseline (do nothing) 209 leaves diverge
after one standalone turn 204 leaves diverge
closed 5, regressed 0, byte match: no
coverage proved on all three saves: {'input': True, 'oracle': True, 'ours': True}
closed:
+ /Sim/Frame
+ /Sim/systems/Sys[112 "Gamma Cephei"]/ntdev
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/ntdev
+ /Sim/systems/Sys[304 "Koa’Vo"]/ntdev
+ /Summary/Turn
## turn2-state.sav -> turn3-state.sav (real End Turn)
baseline (do nothing) 108 leaves diverge
after one standalone turn 103 leaves diverge
closed 5, regressed 0, byte match: no
coverage proved on all three saves: {'input': True, 'oracle': True, 'ours': True}
closed:
+ /Sim/Frame
+ /Sim/systems/Sys[112 "Gamma Cephei"]/ntdev
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/ntdev
+ /Sim/systems/Sys[304 "Koa’Vo"]/ntdev
+ /Summary/Turn
## what still differs on the reference pair, by subsystem
82 /Sim/players
80 /Sim/systems
24 /Sim/turnstats
8 /Sim/SvSctOb
1 /Sim/DesignIDs[]
1 /Sim/FleetIDs[]
1 /Sim/ModCount
1 /Sim/NMnx
1 /Sim/NumFlts
1 /Sim/RNG
1 /Sim/ShipIDs[]
1 /Sim/cmbtid
1 /Sim/fleets
1 /Summary/Checksum
## first 40 remaining, named
/Sim/DesignIDs[]: removed [], added [18, 1712] (41 -> 43 entries)
/Sim/FleetIDs[]: removed [], added [1744] (6 -> 7 entries)
/Sim/ModCount: 2 -> 12
/Sim/NMnx: 106 -> 109
/Sim/NumFlts: 6 -> 7
/Sim/RNG/.: '<raw 2503 B 9e6887688129a8f6>' -> '<raw 2503 B ef4d678696ed4c53>'
/Sim/ShipIDs[]: removed [], added [1728] (15 -> 16 entries)
/Sim/SvSctOb/EncObj[3]/CDiff: -1 -> 0
/Sim/SvSctOb/EncObj[5]/Hives/.: only-in-A
/Sim/SvSctOb/EncObj[5]/Hives/.[0]: only-in-B
/Sim/SvSctOb/EncObj[5]/Hives/.[1]: only-in-B
/Sim/SvSctOb/EncObj[5]/Hives/.[2]: only-in-B
/Sim/SvSctOb/EncObj[6]/did: only-in-B
/Sim/SvSctOb/EncObj[6]/didc: 0 -> 1
/Sim/SvSctOb/EncObj[6]/ini: False -> True
/Sim/cmbtid: 1 -> 2
/Sim/fleets/Flt[1744 "Alpha Fleet"]: only-in-B
/Sim/players/Player[16 "re"]/BnkEl: -1590613 -> -1594593
/Sim/players/Player[16 "re"]/BnkPr: -787353 -> -789323
/Sim/players/Player[16 "re"]/Events/EvNxID: 0 -> 2
/Sim/players/Player[16 "re"]/Events/Events/.: only-in-A
/Sim/players/Player[16 "re"]/Events/Events/.[0]: only-in-B
/Sim/players/Player[16 "re"]/Events/Events/.[EvTurn=2]: only-in-B
/Sim/players/Player[16 "re"]/Sav: 50000 -> 289688
/Sim/players/Player[16 "re"]/Status: 0 -> 4
/Sim/players/Player[32 "Fane Lao"]/BnkEl: -1811273 -> -1815833
/Sim/players/Player[32 "Fane Lao"]/BnkPr: -896580 -> -898837
/Sim/players/Player[32 "Fane Lao"]/Events/EvNxID: 0 -> 2
/Sim/players/Player[32 "Fane Lao"]/Events/Events/.: only-in-A
/Sim/players/Player[32 "Fane Lao"]/Events/Events/.[0]: only-in-B
/Sim/players/Player[32 "Fane Lao"]/Events/Events/.[EvTurn=2]: only-in-B
/Sim/players/Player[32 "Fane Lao"]/FNG/FNGNum: 0 -> 1
/Sim/players/Player[32 "Fane Lao"]/Maint: 0 -> 500
/Sim/players/Player[32 "Fane Lao"]/NumDes: 5 -> 6
/Sim/players/Player[32 "Fane Lao"]/PvSav: 50000 -> 38100
/Sim/players/Player[32 "Fane Lao"]/ResRate: 0.25 -> 0.800000011920929 [1.34218e+07 ulp]
/Sim/players/Player[32 "Fane Lao"]/ResTNm: '' -> 'IND_Waldo'
/Sim/players/Player[32 "Fane Lao"]/Sav: 50000 -> 92651
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srb[0]: 0 -> 1
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srb[3]: only-in-B