standalone on the canonical pair turn2->turn3: 108 -> 63, closed 45, regressed 0

This commit is contained in:
alex 2026-09-08 18:06:30 -04:00
parent 62b738d27a
commit d1710e9676
4 changed files with 1214 additions and 1217 deletions

View file

@ -1,37 +1,37 @@
# SotS RE campaign — coverage dashboard
Generated 2026-09-08 21:01 UTC · `sots-re` @ 9075f60,2026-09-08 · `sots-engine` @ 0117495,2026-09-08 (192 commits) · regenerate with `tools/dashboard.py`
Generated 2026-09-08 22:06 UTC · `sots-re` @ 62b738d,2026-09-08 · `sots-engine` @ 7444c3b,2026-09-08 (194 commits) · regenerate with `tools/dashboard.py`
> **North star:** A functional reimplementation of the engine — behavior-equivalent, NOT byte-for-byte
## 1. Map coverage (campaign/board.md)
317 targets · mapped-or-better **284/317** `[█████████░] 90%` · verified **244/317** `[████████░░] 77%`
326 targets · mapped-or-better **293/326** `[█████████░] 90%` · verified **253/326** `[████████░░] 78%`
| Status | Count | % |
|---|---:|---:|
| verified | 244 | 77% |
| mapped | 40 | 13% |
| verified | 253 | 78% |
| mapped | 40 | 12% |
| in-progress | 3 | 1% |
| backlog | 28 | 9% |
| blocked | 2 | 1% |
| Type | verified | mapped | in-progress | backlog | blocked | total |
|---|---:|---:|---:|---:|---:|---:|
| objects | 39 | 6 | 0 | 3 | 1 | 49 |
| objects | 40 | 6 | 0 | 3 | 1 | 50 |
| control-flow | 23 | 2 | 0 | 0 | 0 | 25 |
| subsystems | 4 | 8 | 0 | 2 | 1 | 15 |
| engine | 25 | 0 | 0 | 0 | 0 | 25 |
| verify | 70 | 14 | 3 | 22 | 0 | 109 |
| engine | 26 | 0 | 0 | 0 | 0 | 26 |
| verify | 73 | 14 | 3 | 22 | 0 | 112 |
| phase2 | 13 | 3 | 0 | 0 | 0 | 16 |
| meta | 53 | 6 | 0 | 1 | 0 | 60 |
| meta | 57 | 6 | 0 | 1 | 0 | 64 |
| other | 17 | 1 | 0 | 0 | 0 | 18 |
## 2. Binary understanding
- 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
- Functions: **41,411** (parsed from `01-fingerprint.md`); named/annotated in the **address contract** (`ghidra/addresses.json`, not Ghidra's full rename count): **1188**, verified **1093** `[█████████░] 92%`
- Functions: **41,411** (parsed from `01-fingerprint.md`); named/annotated in the **address contract** (`ghidra/addresses.json`, not Ghidra's full rename count): **1210**, verified **1100** `[█████████░] 91%`
## 3. Data layer
@ -45,7 +45,7 @@ Generated 2026-09-08 21:01 UTC · `sots-re` @ 9075f60,2026-09-08 · `sots-engine
| Module | LOC | Test files | Checks | Wired | Doc |
|---|---:|---:|---:|---|---|
| `app` | 4,210 | 8 | 169 | yes | N-output-term.md |
| `app` | 4,231 | 8 | 169 | yes | N-output-term.md |
| `game/ai` | 1,197 | 5 | 206 | yes | — |
| `game/combat` | 582 | 2 | 34 | yes | mars-parse.md |
| `game/config` | 558 | 4 | 131 | yes | M1.md |
@ -54,18 +54,18 @@ Generated 2026-09-08 21:01 UTC · `sots-re` @ 9075f60,2026-09-08 · `sots-engine
| `game/effects` | 973 | 3 | 231 | yes | game-effects.md |
| `game/events` | 558 | 3 | 152 | yes | E-events.md |
| `game/nav` | 581 | 2 | 113 | yes | — |
| `game/sim` | 4,752 | 14 | 1034 | yes | game-sim.md |
| `game/sim` | 4,780 | 14 | 1038 | yes | game-sim.md |
| `mars/parse` | 875 | 12 | 277 | yes | mars-parse.md |
| `mars/rng` | 244 | 0 | 0 | yes | mars-rng.md |
| `mars/stream` | 5,407 | 7 | 310 | yes | mars-stream.md |
| `mars/text` | 899 | 8 | 245 | yes | mars-text.md |
| `mars/vfs` | 788 | 9 | 140 | yes | mars-vfs.md |
| `shim` | 13,257 | 0 | 0 | direct (WIN32) | H-probes.md |
| `shim/hooks` | 10,204 | 0 | 0 | direct (WIN32) | M0.md |
| `shim` | 13,384 | 0 | 0 | direct (WIN32) | H-probes.md |
| `shim/hooks` | 10,331 | 0 | 0 | direct (WIN32) | M0.md |
| `shim/trace` | 2,258 | 9 | 273 | direct (WIN32) | shim-trace.md |
| **total** | **50,620** | **117** | **4080** | | |
| **total** | **50,923** | **117** | **4084** | | |
Board `engine:` rows: verified **25**, mapped 0, in flight 0 (of 25) — verified & merged `[██████████] 100%`
Board `engine:` rows: verified **26**, mapped 0, in flight 0 (of 26) — verified & merged `[██████████] 100%`
## 5. Phase 2 milestones
@ -86,24 +86,24 @@ Turn-driver phases: **16/44** modelled (12 committed) `[████░░░░
| turn drivers (44) | 0 | 4 | 8 | 4 | 28 |
| post-combat tail (37) | 0 | 1 | 4 | 1 | 31 |
Reference pair `turn1-state.sav` → `turn2-state.sav`, leaves localised by `state_checksum.py` (coverage proved by re-serialisation):
Reference pair `turn2-state.sav` → `turn3-state.sav`, leaves localised by `state_checksum.py` (coverage proved by re-serialisation):
- baseline (a standalone that does nothing): **209** leaves diverge
- after one standalone turn: **124** leaves diverge — closed 85, regressed 0
- byte match: ❌ not yet `[████░░░░░░] 41%`
- baseline (a standalone that does nothing): **108** leaves diverge
- after one standalone turn: **63** leaves diverge — closed 45, regressed 0
- byte match: ❌ not yet `[████░░░░░░] 42%`
Where the remaining divergence lives:
| Subsystem | Leaves |
|---|---:|
| `/Sim/players` | 52 |
| `/Sim/systems` | 32 |
| `/Sim/turnstats` | 24 |
| `/Sim/SvSctOb` | 6 |
| `/Sim/DesignIDs[]` | 1 |
| `/Sim/systems` | 24 |
| `/Sim/players` | 20 |
| `/Sim/turnstats` | 8 |
| `/Sim/fleets` | 3 |
| `/Sim/FleetIDs[]` | 1 |
| `/Sim/ModCount` | 1 |
| `/Sim/NMnx` | 1 |
| `/Sim/NumFlts` | 1 |
Generator: 16 word(s) modelled per turn; unattributed per turn: 18-20 (lane Z, in flight). A byte-match is impossible until that closes — the generator state is saved state.
@ -120,7 +120,7 @@ Detail: `verify/results/standalone/report.txt`.
## 8. Open questions
Open **26** · resolved/parked 11 · backlog items: 1. The engine today 0, 2. The milestone, restated 2, 3. Engine work to Rung A 0, 4. Future engine modules 5, 5. Workloads to manufacture 7, 6. Multiplayer revival 4, 7. Method and infrastructure 5, Parked 2
Open **26** · resolved/parked 11 · backlog items: 1. The engine today 0, 2. The milestone, restated 3, 3. Engine work to Rung A 0, 4. Future engine modules 5, 5. Workloads to manufacture 7, 6. Multiplayer revival 4, 7. Method and infrastructure 5, Parked 2
Most recent open:
@ -132,11 +132,11 @@ Most recent open:
## 9. Delta since previous dashboard
- verified targets: 223 → 244 (+21) · mapped-or-better: 263 → 284 (+21)
- engine LOC: 48,076 → 50,620 (+2,544) · test files: 113 → 117 (+4) · checks: 3,883 → 4,080 (+197)
- addresses verified: 1,057 → 1,093 (+36) · recovered layouts: 384 → 384 (+0) · open questions: 26 → 26 (+0)
- standalone leaves closed: 78 → 85 (+7) · leaves still diverging: 131 → 124 (-7)
- verified targets: 244 → 253 (+9) · mapped-or-better: 284 → 293 (+9)
- engine LOC: 50,620 → 50,923 (+303) · test files: 117 → 117 (+0) · checks: 4,080 → 4,084 (+4)
- addresses verified: 1,093 → 1,100 (+7) · recovered layouts: 384 → 384 (+0) · open questions: 26 → 26 (+0)
- standalone leaves closed: 85 → 45 (-40) · leaves still diverging: 124 → 63 (-61)
---
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": 244, "mapped_plus": 284, "targets": 317, "loc": 50620, "tests": 117, "checks": 4080, "addr_verified": 1093, "addr_total": 1188, "layouts": 384, "open_q": 26, "sa_closed": 85, "sa_left": 124} -->
<!-- dashboard-metrics {"verified": 253, "mapped_plus": 293, "targets": 326, "loc": 50923, "tests": 117, "checks": 4084, "addr_verified": 1100, "addr_total": 1210, "layouts": 384, "open_q": 26, "sa_closed": 45, "sa_left": 63} -->

View file

@ -331,3 +331,4 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
| DECISION: determinism qualified, Rung B restated, reference pair swapped | meta | verified | high | 100% | 2026-09-08 | Adopted after lane L5's finding. (1) The oracle HOLDS where no AI must choose a target and FAILS where one must - never wrong, measured on the idle turn. (2) This is NOT a contradiction of lockstep MP but the reason for its shape: the AI is a StrategyClient deciding ONCE and relaying commands; the sim is deterministic given the stream. (3) **Canonical reference pair is now turn2-state -> turn3-state** (deterministic, oracle-hashed); turn1 -> turn2 is secondary with its four non-deterministic leaves masked. (4) **Rung B = byte-match given a recorded command stream (--turn-commands)**; a behaviourally-equivalent game/ai is **Rung C**, verified against the distribution of the original's choices. (5) Mechanism inferred, not proved: one-of-three varying suggests a pointer-ordered tie under ASLR rather than a time seed (which would move all three); probe routed to L1. Documented in backlog.md 2 and determinism-oracle.md |
| new crew member: re-resolver (Fable) | meta | verified | high | 100% | 2026-09-08 | `~/.claude/agents/re-resolver.md`. Invoked when a lane reports a SURPRISE - a falsified prediction, two lanes contradicting, a closed finding a new measurement qualifies, a number that does not add up, a possibly-perturbing instrument. It does NOT measure: it exonerates-or-indicts the instrument first, lists every standing claim touched (survives / qualified-with-scope / overturned), names the ONE probe that separates the live hypotheses, and sets the course - lane redirects, milestone restatement, a draft rule. Writes findings/resolutions/<date>-<slug>.md and PROPOSES board/backlog text rather than editing them. Runs on the planning model. Calibrated on today's five resolutions (ModCount, non-deterministic reference pair, hook perturbation, widened literals, stale build) |
| Rung C sharpened: the TIE-SET claim | meta | verified | high | 100% | 2026-09-08 | User's framing adopted: if the AI's variation is a per-process TIE, our engine picks canonically and the verification is "our choice is one of exactly k outcomes the original can produce, we can name all k, and every observed run lands in the set" - stronger than behavioural equivalence, and it keeps the byte-match alive wherever the tiebreaks agree. Lane L4 briefed to capture the varying empire's CANDIDATE SET and arrival order; lane L1 to read the AI client's generator seed across two processes. Between them the mechanism gets named |
| standalone on the CANONICAL pair: 108 -> 63, closed 45, regressed 0 | engine | verified | high | 100% | 2026-09-08 | First measurement on the deterministic reference pair turn2-state -> turn3-state, clean build (rule 24). Byte-match distance on the pair that has the oracle hashes. The secondary pair turn1 -> turn2 reads 209 -> 124 (closed 85) with four leaves the original itself cannot pin. Both are in status.json; the dashboard quotes the canonical one |

View file

@ -1,11 +1,63 @@
# standalone vs the oracle
generated 2026-09-08T21:01:53Z binary /srv/re-lab/build/eng-rep3/build-host/src/app/sots_turn
generated 2026-09-08T22:06:02Z binary /srv/re-lab/build/eng-ref/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)
6/37 of the post-combat tail modelled
## turn1-state.sav -> turn2-state.sav (real End Turn)
## turn2-state.sav -> turn3-state.sav (real End Turn (canonical reference))
baseline (do nothing) 108 leaves diverge
after one standalone turn 63 leaves diverge
closed 45, regressed 0, byte match: no
coverage proved on all three saves: {'input': True, 'oracle': True, 'ours': True}
closed:
+ /Sim/Frame
+ /Sim/SvSctOb/EncObj[5]/Hives/.[1]/NextQ
+ /Sim/SvSctOb/EncObj[5]/Hives/.[2]/NextQ
+ /Sim/players/Player[16 "re"]/BnkEl
+ /Sim/players/Player[16 "re"]/PvSav
+ /Sim/players/Player[16 "re"]/Sav
+ /Sim/players/Player[32 "Fane Lao"]/BnkEl
+ /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"]/PvSav
+ /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
## turn1-state.sav -> turn2-state.sav (real End Turn (secondary; 4 leaves non-deterministic in the original))
baseline (do nothing) 209 leaves diverge
after one standalone turn 124 leaves diverge
closed 85, regressed 0, byte match: no
@ -97,64 +149,11 @@ phases: 16/44 of the two turn drivers modelled, 12 committed (implemented 4, par
+ /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 63 leaves diverge
closed 45, regressed 0, byte match: no
coverage proved on all three saves: {'input': True, 'oracle': True, 'ours': True}
closed:
+ /Sim/Frame
+ /Sim/SvSctOb/EncObj[5]/Hives/.[1]/NextQ
+ /Sim/SvSctOb/EncObj[5]/Hives/.[2]/NextQ
+ /Sim/players/Player[16 "re"]/BnkEl
+ /Sim/players/Player[16 "re"]/PvSav
+ /Sim/players/Player[16 "re"]/Sav
+ /Sim/players/Player[32 "Fane Lao"]/BnkEl
+ /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"]/PvSav
+ /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
52 /Sim/players
32 /Sim/systems
24 /Sim/turnstats
6 /Sim/SvSctOb
1 /Sim/DesignIDs[]
24 /Sim/systems
20 /Sim/players
8 /Sim/turnstats
3 /Sim/fleets
1 /Sim/FleetIDs[]
1 /Sim/ModCount
1 /Sim/NMnx
@ -162,47 +161,46 @@ phases: 16/44 of the two turn drivers modelled, 12 committed (implemented 4, par
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[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/cmbtid: 1 -> 2
/Sim/fleets/Flt[1744 "Alpha Fleet"]: only-in-B
/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"]/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
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/src: only-in-B
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srd: only-in-B
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/sri[0]: 0 -> 1
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/sri[3]: only-in-B
/Sim/FleetIDs[]: removed [1744], added [34, 1776] (7 -> 8 entries)
/Sim/ModCount: 14 -> 24
/Sim/NMnx: 109 -> 111
/Sim/NumFlts: 7 -> 8
/Sim/RNG/.: '<raw 2503 B ef4d678696ed4c53>' -> '<raw 2503 B a80459bfd63a006b>'
/Sim/ShipIDs[]: removed [], added [1760] (16 -> 17 entries)
/Sim/cmbtid: 2 -> 3
/Sim/fleets/Flt[1744 "Alpha Fleet"]: only-in-A
/Sim/fleets/Flt[1776 "Gamma Fleet"]: only-in-B
/Sim/fleets/Flt[34 "Beta Fleet"]: only-in-B
/Sim/players/Player[16 "re"]/BnkPr: -789323 -> -791290
/Sim/players/Player[16 "re"]/Events/EvNxID: 2 -> 3
/Sim/players/Player[16 "re"]/Events/Events/.[0]: 1 -> 2
/Sim/players/Player[16 "re"]/Events/Events/.[EvTurn=3]: only-in-B
/Sim/players/Player[32 "Fane Lao"]/BnkPr: -898837 -> -901002
/Sim/players/Player[32 "Fane Lao"]/Events/EvNxID: 2 -> 4
/Sim/players/Player[32 "Fane Lao"]/Events/Events/.[0]: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/Events/Events/.[EvTurn=3]: only-in-B
/Sim/players/Player[32 "Fane Lao"]/FNG/FNGNum: 1 -> 3
/Sim/players/Player[32 "Fane Lao"]/Maint: 500 -> 1000
/Sim/players/Player[32 "Fane Lao"]/PvSav: 92651 -> 80751
/Sim/players/Player[32 "Fane Lao"]/Sav: 142379 -> 135486
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srb[0]: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srb[3]: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/sri[0]: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/sri[3]: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/TechTree/TResDone[106]: 2879 -> 5768
/Sim/players/Player[32 "Fane Lao"]/TechTree/Tbd[106]: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/lboid: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/odes/.[1]/otnL: 2 -> 3
/Sim/systems/Sys[112 "Gamma Cephei"]/PvPop2/PopG/PopC: 500000000 -> 520000000
/Sim/systems/Sys[112 "Gamma Cephei"]/RepCur: 336360.0 -> 336840.0 [15360 ulp]
/Sim/systems/Sys[112 "Gamma Cephei"]/RepMax: 336360.0 -> 336840.0 [15360 ulp]
/Sim/systems/Sys[112 "Gamma Cephei"]/TShn: 2 -> 3
/Sim/systems/Sys[224 "Spica"]/TShn: 2 -> 3
/Sim/systems/Sys[288 "Ke'Dolarra"]/DefF: 1744 -> 1776
/Sim/systems/Sys[288 "Ke'Dolarra"]/Flt: 1744 -> 1776
/Sim/systems/Sys[288 "Ke'Dolarra"]/PvPop2/PopG/PopC: 500000000 -> 520000000
/Sim/systems/Sys[288 "Ke'Dolarra"]/RepCur: 370000.0 -> 370520.0 [16640 ulp]
/Sim/systems/Sys[288 "Ke'Dolarra"]/RepMax: 370000.0 -> 370520.0 [16640 ulp]

File diff suppressed because it is too large Load diff