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 # 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 > **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)
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 | % | | Status | Count | % |
|---|---:|---:| |---|---:|---:|
| verified | 244 | 77% | | verified | 253 | 78% |
| mapped | 40 | 13% | | mapped | 40 | 12% |
| in-progress | 3 | 1% | | in-progress | 3 | 1% |
| backlog | 28 | 9% | | backlog | 28 | 9% |
| blocked | 2 | 1% | | blocked | 2 | 1% |
| Type | verified | mapped | in-progress | backlog | blocked | total | | 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 | | control-flow | 23 | 2 | 0 | 0 | 0 | 25 |
| subsystems | 4 | 8 | 0 | 2 | 1 | 15 | | subsystems | 4 | 8 | 0 | 2 | 1 | 15 |
| engine | 25 | 0 | 0 | 0 | 0 | 25 | | engine | 26 | 0 | 0 | 0 | 0 | 26 |
| verify | 70 | 14 | 3 | 22 | 0 | 109 | | verify | 73 | 14 | 3 | 22 | 0 | 112 |
| phase2 | 13 | 3 | 0 | 0 | 0 | 16 | | 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 | | other | 17 | 1 | 0 | 0 | 0 | 18 |
## 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): **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 ## 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 | | 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/ai` | 1,197 | 5 | 206 | yes | — |
| `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 |
@ -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/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` | 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/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 |
| `mars/text` | 899 | 8 | 245 | yes | mars-text.md | | `mars/text` | 899 | 8 | 245 | yes | mars-text.md |
| `mars/vfs` | 788 | 9 | 140 | yes | mars-vfs.md | | `mars/vfs` | 788 | 9 | 140 | yes | mars-vfs.md |
| `shim` | 13,257 | 0 | 0 | direct (WIN32) | H-probes.md | | `shim` | 13,384 | 0 | 0 | direct (WIN32) | H-probes.md |
| `shim/hooks` | 10,204 | 0 | 0 | direct (WIN32) | M0.md | | `shim/hooks` | 10,331 | 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** | **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 ## 5. Phase 2 milestones
@ -86,24 +86,24 @@ Turn-driver phases: **16/44** modelled (12 committed) `[████░░░░
| turn drivers (44) | 0 | 4 | 8 | 4 | 28 | | turn drivers (44) | 0 | 4 | 8 | 4 | 28 |
| post-combat tail (37) | 0 | 1 | 4 | 1 | 31 | | 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 - baseline (a standalone that does nothing): **108** leaves diverge
- after one standalone turn: **124** leaves diverge — closed 85, regressed 0 - after one standalone turn: **63** leaves diverge — closed 45, regressed 0
- byte match: ❌ not yet `[████░░░░░░] 41%` - byte match: ❌ not yet `[████░░░░░░] 42%`
Where the remaining divergence lives: Where the remaining divergence lives:
| Subsystem | Leaves | | Subsystem | Leaves |
|---|---:| |---|---:|
| `/Sim/players` | 52 | | `/Sim/systems` | 24 |
| `/Sim/systems` | 32 | | `/Sim/players` | 20 |
| `/Sim/turnstats` | 24 | | `/Sim/turnstats` | 8 |
| `/Sim/SvSctOb` | 6 | | `/Sim/fleets` | 3 |
| `/Sim/DesignIDs[]` | 1 |
| `/Sim/FleetIDs[]` | 1 | | `/Sim/FleetIDs[]` | 1 |
| `/Sim/ModCount` | 1 | | `/Sim/ModCount` | 1 |
| `/Sim/NMnx` | 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. 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 ## 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: Most recent open:
@ -132,11 +132,11 @@ Most recent open:
## 9. Delta since previous dashboard ## 9. Delta since previous dashboard
- verified targets: 223 → 244 (+21) · mapped-or-better: 263 → 284 (+21) - verified targets: 244 → 253 (+9) · mapped-or-better: 284 → 293 (+9)
- engine LOC: 48,076 → 50,620 (+2,544) · test files: 113 → 117 (+4) · checks: 3,883 → 4,080 (+197) - engine LOC: 50,620 → 50,923 (+303) · test files: 117 → 117 (+0) · checks: 4,080 → 4,084 (+4)
- addresses verified: 1,057 → 1,093 (+36) · recovered layouts: 384 → 384 (+0) · open questions: 26 → 26 (+0) - addresses verified: 1,093 → 1,100 (+7) · recovered layouts: 384 → 384 (+0) · open questions: 26 → 26 (+0)
- standalone leaves closed: 78 → 85 (+7) · leaves still diverging: 131 → 124 (-7) - 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 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 | | 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) | | 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 | | 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 # 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) 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 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 baseline (do nothing) 209 leaves diverge
after one standalone turn 124 leaves diverge after one standalone turn 124 leaves diverge
closed 85, regressed 0, byte match: no 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 + /Sim/systems/Sys[64 "Hyperion"]/ltis
+ /Summary/Turn + /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 ## what still differs on the reference pair, by subsystem
52 /Sim/players 24 /Sim/systems
32 /Sim/systems 20 /Sim/players
24 /Sim/turnstats 8 /Sim/turnstats
6 /Sim/SvSctOb 3 /Sim/fleets
1 /Sim/DesignIDs[]
1 /Sim/FleetIDs[] 1 /Sim/FleetIDs[]
1 /Sim/ModCount 1 /Sim/ModCount
1 /Sim/NMnx 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/RNG
1 /Sim/ShipIDs[] 1 /Sim/ShipIDs[]
1 /Sim/cmbtid 1 /Sim/cmbtid
1 /Sim/fleets
1 /Summary/Checksum 1 /Summary/Checksum
## first 40 remaining, named ## first 40 remaining, named
/Sim/DesignIDs[]: removed [], added [18, 1712] (41 -> 43 entries) /Sim/FleetIDs[]: removed [1744], added [34, 1776] (7 -> 8 entries)
/Sim/FleetIDs[]: removed [], added [1744] (6 -> 7 entries) /Sim/ModCount: 14 -> 24
/Sim/ModCount: 2 -> 12 /Sim/NMnx: 109 -> 111
/Sim/NMnx: 106 -> 109 /Sim/NumFlts: 7 -> 8
/Sim/NumFlts: 6 -> 7 /Sim/RNG/.: '<raw 2503 B ef4d678696ed4c53>' -> '<raw 2503 B a80459bfd63a006b>'
/Sim/RNG/.: '<raw 2503 B 9e6887688129a8f6>' -> '<raw 2503 B ef4d678696ed4c53>' /Sim/ShipIDs[]: removed [], added [1760] (16 -> 17 entries)
/Sim/ShipIDs[]: removed [], added [1728] (15 -> 16 entries) /Sim/cmbtid: 2 -> 3
/Sim/SvSctOb/EncObj[5]/Hives/.: only-in-A /Sim/fleets/Flt[1744 "Alpha Fleet"]: only-in-A
/Sim/SvSctOb/EncObj[5]/Hives/.[0]: only-in-B /Sim/fleets/Flt[1776 "Gamma Fleet"]: only-in-B
/Sim/SvSctOb/EncObj[5]/Hives/.[1]: only-in-B /Sim/fleets/Flt[34 "Beta Fleet"]: only-in-B
/Sim/SvSctOb/EncObj[5]/Hives/.[2]: only-in-B /Sim/players/Player[16 "re"]/BnkPr: -789323 -> -791290
/Sim/SvSctOb/EncObj[6]/did: only-in-B /Sim/players/Player[16 "re"]/Events/EvNxID: 2 -> 3
/Sim/SvSctOb/EncObj[6]/didc: 0 -> 1 /Sim/players/Player[16 "re"]/Events/Events/.[0]: 1 -> 2
/Sim/cmbtid: 1 -> 2 /Sim/players/Player[16 "re"]/Events/Events/.[EvTurn=3]: only-in-B
/Sim/fleets/Flt[1744 "Alpha Fleet"]: only-in-B /Sim/players/Player[32 "Fane Lao"]/BnkPr: -898837 -> -901002
/Sim/players/Player[16 "re"]/BnkPr: -787353 -> -789323 /Sim/players/Player[32 "Fane Lao"]/Events/EvNxID: 2 -> 4
/Sim/players/Player[16 "re"]/Events/EvNxID: 0 -> 2 /Sim/players/Player[32 "Fane Lao"]/Events/Events/.[0]: 1 -> 2
/Sim/players/Player[16 "re"]/Events/Events/.: only-in-A /Sim/players/Player[32 "Fane Lao"]/Events/Events/.[EvTurn=3]: only-in-B
/Sim/players/Player[16 "re"]/Events/Events/.[0]: only-in-B /Sim/players/Player[32 "Fane Lao"]/FNG/FNGNum: 1 -> 3
/Sim/players/Player[16 "re"]/Events/Events/.[EvTurn=2]: only-in-B /Sim/players/Player[32 "Fane Lao"]/Maint: 500 -> 1000
/Sim/players/Player[16 "re"]/Status: 0 -> 4 /Sim/players/Player[32 "Fane Lao"]/PvSav: 92651 -> 80751
/Sim/players/Player[32 "Fane Lao"]/BnkPr: -896580 -> -898837 /Sim/players/Player[32 "Fane Lao"]/Sav: 142379 -> 135486
/Sim/players/Player[32 "Fane Lao"]/Events/EvNxID: 0 -> 2 /Sim/players/Player[32 "Fane Lao"]/ShipRecs/srb[0]: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/Events/Events/.: only-in-A /Sim/players/Player[32 "Fane Lao"]/ShipRecs/srb[3]: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/Events/Events/.[0]: only-in-B /Sim/players/Player[32 "Fane Lao"]/ShipRecs/sri[0]: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/Events/Events/.[EvTurn=2]: only-in-B /Sim/players/Player[32 "Fane Lao"]/ShipRecs/sri[3]: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/FNG/FNGNum: 0 -> 1 /Sim/players/Player[32 "Fane Lao"]/TechTree/TResDone[106]: 2879 -> 5768
/Sim/players/Player[32 "Fane Lao"]/Maint: 0 -> 500 /Sim/players/Player[32 "Fane Lao"]/TechTree/Tbd[106]: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/NumDes: 5 -> 6 /Sim/players/Player[32 "Fane Lao"]/lboid: 1 -> 2
/Sim/players/Player[32 "Fane Lao"]/PvSav: 50000 -> 38100 /Sim/players/Player[32 "Fane Lao"]/odes/.[1]/otnL: 2 -> 3
/Sim/players/Player[32 "Fane Lao"]/ResRate: 0.25 -> 0.800000011920929 [1.34218e+07 ulp] /Sim/systems/Sys[112 "Gamma Cephei"]/PvPop2/PopG/PopC: 500000000 -> 520000000
/Sim/players/Player[32 "Fane Lao"]/ResTNm: '' -> 'IND_Waldo' /Sim/systems/Sys[112 "Gamma Cephei"]/RepCur: 336360.0 -> 336840.0 [15360 ulp]
/Sim/players/Player[32 "Fane Lao"]/Sav: 298113 -> 92651 /Sim/systems/Sys[112 "Gamma Cephei"]/RepMax: 336360.0 -> 336840.0 [15360 ulp]
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srb[0]: 0 -> 1 /Sim/systems/Sys[112 "Gamma Cephei"]/TShn: 2 -> 3
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srb[3]: only-in-B /Sim/systems/Sys[224 "Spica"]/TShn: 2 -> 3
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srbd: 0 -> 1 /Sim/systems/Sys[288 "Ke'Dolarra"]/DefF: 1744 -> 1776
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/src: only-in-B /Sim/systems/Sys[288 "Ke'Dolarra"]/Flt: 1744 -> 1776
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srd: only-in-B /Sim/systems/Sys[288 "Ke'Dolarra"]/PvPop2/PopG/PopC: 500000000 -> 520000000
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/sri[0]: 0 -> 1 /Sim/systems/Sys[288 "Ke'Dolarra"]/RepCur: 370000.0 -> 370520.0 [16640 ulp]
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/sri[3]: only-in-B /Sim/systems/Sys[288 "Ke'Dolarra"]/RepMax: 370000.0 -> 370520.0 [16640 ulp]

File diff suppressed because it is too large Load diff