sots-re/verify/results/standalone/report.txt
alex 91a04377d4 lane PL: decompose the /Sim/players residual by mechanism; the bankruptcy protection factor is a float32
findings/subsystems/players-residual.md is the deliverable: every one of the 54
leaves on the reference pair and the 24 on pair 2 attributed to a named
mechanism, with the rung split. 53 of 54 are pass-through -- the block is
unmodelled, not mismodelled, and only player 32's Sav is a number we compute and
get wrong.

Three corrections to the record:
- T31's self-check compared its post-turn result against the pre-turn stored
  value, so its 6-of-8 covered only the players whose limit never moves.
- the AI difficulty column IS recoverable from the save, by recomputing BnkEl
  under both columns against the value the save carries; 1 AI + 1 non-AI on all
  eleven corpus saves.
- BANKRUPTCY_PROTECTION_LIMIT_FACTOR is read fmul dword ptr, so it is a float32
  in the image; the decimal disagrees at every max income divisible by ten and
  the corpus' seven records land where the two agree (rule 23). formula-gaps Q1
  addendum + ghidra/addresses.d/lane-pl.json (3 data entries, fragment validated
  to a scratch path, no duplicate names).

verify/results/standalone/{status.json,report.txt} refreshed from a build of main
aabd8a3: the committed copy was stale at 131/55, the real number is 128/54.

T34 RecordObservedDesigns is now readable off the corpus and is NOT an intel
pass: a design's creator registers the design in its own odes, its weapons in
owep, and re-stamps otnL on its techs in otch -- odes on build, otch on creation.
Both are hypotheses until a save exists where a player observes someone else's
design.

Status stays open and is flagged as NOT identifiable: eighteen fields of the
player record split the roster the same way and only two saves carry a non-zero
value. The probe is an entry hook on W2's writer.
2026-09-08 16:36:45 -04:00

198 lines
9.5 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-08T20:04:11Z binary /home/alex/sots-engine-pl/build-host/src/app/sots_turn
phases: 16/44 of the two turn drivers modelled, 12 committed (implemented 4, partial 8, blocked 4, stub 28)
5/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 128 leaves diverge
closed 81, regressed 0, byte match: no
coverage proved on all three saves: {'input': True, 'oracle': True, 'ours': True}
closed:
+ /Sim/Frame
+ /Sim/players/Player[16 "re"]/Sav
+ /Sim/players/Player[496 "Singularity"]/dipstats/.
+ /Sim/players/Player[496 "Singularity"]/dipstats/.[0]
+ /Sim/players/Player[496 "Singularity"]/dipstats/.[1]
+ /Sim/players/Player[512 "Singularity"]/dipstats/.
+ /Sim/players/Player[512 "Singularity"]/dipstats/.[0]
+ /Sim/players/Player[512 "Singularity"]/dipstats/.[1]
+ /Sim/players/Player[528 "Alien Menace"]/dipstats/.
+ /Sim/players/Player[528 "Alien Menace"]/dipstats/.[0]
+ /Sim/players/Player[528 "Alien Menace"]/dipstats/.[1]
+ /Sim/players/Player[528 "Alien Menace"]/dipstats/.[2]
+ /Sim/players/Player[528 "Alien Menace"]/dipstats/.[3]
+ /Sim/players/Player[544 "Peacekeeper Enforcer"]/dipstats/.
+ /Sim/players/Player[544 "Peacekeeper Enforcer"]/dipstats/.[0]
+ /Sim/players/Player[544 "Peacekeeper Enforcer"]/dipstats/.[1]
+ /Sim/players/Player[544 "Peacekeeper Enforcer"]/dipstats/.[2]
+ /Sim/players/Player[544 "Peacekeeper Enforcer"]/dipstats/.[3]
+ /Sim/players/Player[560 "Von Neumann"]/dipstats/.
+ /Sim/players/Player[560 "Von Neumann"]/dipstats/.[0]
+ /Sim/players/Player[560 "Von Neumann"]/dipstats/.[1]
+ /Sim/players/Player[560 "Von Neumann"]/dipstats/.[2]
+ /Sim/players/Player[560 "Von Neumann"]/dipstats/.[3]
+ /Sim/players/Player[576 "Independent Colony"]/Sav
+ /Sim/players/Player[576 "Independent Colony"]/dipstats/.
+ /Sim/players/Player[576 "Independent Colony"]/dipstats/.[0]
+ /Sim/players/Player[576 "Independent Colony"]/dipstats/.[1]
+ /Sim/players/Player[576 "Independent Colony"]/dipstats/.[2]
+ /Sim/players/Player[576 "Independent Colony"]/dipstats/.[3]
+ /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"]/Pop2/PopG/PopC
+ /Sim/systems/Sys[112 "Gamma Cephei"]/ltis
+ /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"]/Pop2/PopG/PopC
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/ltis
+ /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[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
## turn2-state.sav -> turn3-state.sav (real End Turn)
baseline (do nothing) 108 leaves diverge
after one standalone turn 69 leaves diverge
closed 39, regressed 0, byte match: no
coverage proved on all three saves: {'input': True, 'oracle': True, 'ours': True}
closed:
+ /Sim/Frame
+ /Sim/players/Player[16 "re"]/Sav
+ /Sim/players/Player[496 "Singularity"]/dipstats/.[1]/lastally
+ /Sim/players/Player[512 "Singularity"]/dipstats/.[1]/lastally
+ /Sim/players/Player[528 "Alien Menace"]/dipstats/.[1]/lastnap
+ /Sim/players/Player[528 "Alien Menace"]/dipstats/.[2]/lastnap
+ /Sim/players/Player[528 "Alien Menace"]/dipstats/.[3]/lastnap
+ /Sim/players/Player[544 "Peacekeeper Enforcer"]/dipstats/.[1]/lastnap
+ /Sim/players/Player[544 "Peacekeeper Enforcer"]/dipstats/.[2]/lastnap
+ /Sim/players/Player[544 "Peacekeeper Enforcer"]/dipstats/.[3]/lastnap
+ /Sim/players/Player[560 "Von Neumann"]/dipstats/.[1]/lastnap
+ /Sim/players/Player[560 "Von Neumann"]/dipstats/.[2]/lastnap
+ /Sim/players/Player[560 "Von Neumann"]/dipstats/.[3]/lastnap
+ /Sim/players/Player[576 "Independent Colony"]/Sav
+ /Sim/players/Player[576 "Independent Colony"]/dipstats/.[1]/lastnap
+ /Sim/players/Player[576 "Independent Colony"]/dipstats/.[2]/lastnap
+ /Sim/players/Player[576 "Independent Colony"]/dipstats/.[3]/lastnap
+ /Sim/systems/Sys[112 "Gamma Cephei"]/ETS
+ /Sim/systems/Sys[112 "Gamma Cephei"]/Pop2/PopG/PopC
+ /Sim/systems/Sys[112 "Gamma Cephei"]/ltis
+ /Sim/systems/Sys[112 "Gamma Cephei"]/ntdev
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/ETS
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/Pop2/PopG/PopC
+ /Sim/systems/Sys[288 "Ke'Dolarra"]/ltis
+ /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[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
## what still differs on the reference pair, by subsystem
54 /Sim/players
32 /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"]/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: 298113 -> 92651
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srb[0]: 0 -> 1
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srb[3]: only-in-B
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srbd: 0 -> 1