Z: fix counts that predated the second save (64 observations, eight turns)

This commit is contained in:
alex 2026-09-08 09:57:32 -04:00
parent 3a3513b5cc
commit 5618483abe

View file

@ -273,9 +273,9 @@ Static: the image has one persistent strategic `Mars::RNG`, at `S+0x16c`, constr
turn roots; three more are stack temporaries in map generation. **The combat resolver draws from the same turn roots; three more are stack temporaries in map generation. **The combat resolver draws from the same
`S+0x16c` object** — all three RNG entry points in its 750-node direct-call closure load `[reg+0x16c]`. `S+0x16c` object** — all three RNG entry points in its 750-node direct-call closure load `[reg+0x16c]`.
Behavioural: across 32 ledger observations in four turns, **every** state resolved on a single forward chain Behavioural: across **64 ledger observations over eight turns on two saves**, every state resolved on a
— no `words: null`, no second chain. If a second generator had been in play, the ledger would have said so single forward chain — no `words: null`, no second chain. If a second generator had been in play, the ledger
by construction. would have said so by construction rather than by anyone noticing.
--- ---
@ -295,15 +295,15 @@ by construction.
hook family should do, and it needs a workload nobody has built yet: a save where two hostile fleets hook family should do, and it needs a workload nobody has built yet: a save where two hostile fleets
actually meet. actually meet.
* **Node-line expiry did not fire.** See §9 for the quantified distance rather than an absence. * **Node-line expiry did not fire.** See §9 for the quantified distance rather than an absence.
* **A turn with a genuinely empty encounter vector was not observed** (§3). Every turn of `ref-turn2` in * **A turn with a genuinely empty encounter vector was not observed** (§4). Both saves produce exactly one
contact produces exactly one sighting encounter. The tail-runs-every-turn claim is settled; the sighting encounter on every turn. The tail-runs-every-turn claim is settled; the no-encounters variant is
no-encounters variant is still an inference, now a much narrower one. still an inference, now a much narrower one.
* **`players` reads 8 on a 2-player save.** `(S+0x54)` enumerated as a `ServerPlayer*` vector gives 8 on * **`players` reads 8 on a 2-player save.** `(S+0x54)` enumerated as a `ServerPlayer*` vector gives 8 on
every record of a game the lobby shows as 2 players. Either the server always allocates a fixed slot every record of a game the lobby shows as 2 players. Either the server always allocates a fixed slot
count, or this offset enumerates something else (spare capacity is the failure this campaign has already count, or this offset enumerates something else (spare capacity is the failure this campaign has already
paid for once, at `S+0x64`). **Nothing in the ledger depends on it** — it is decoration on the argument paid for once, at `S+0x64`). **Nothing in the ledger depends on it** — it is decoration on the argument
record — but it should not be reused until someone resolves it. record — but it should not be reused until someone resolves it.
* **Which of the twelve-to-fourteen `S+0x8` increments per turn come from where** (§5). * **Which of the 12-to-44 `S+0x8` increments per turn come from where** (§5), and what they scale with.
* The direct-call sweeps behind "node-line decay's only RNG site is the `Chance(0.5f)`", "its downstream * The direct-call sweeps behind "node-line decay's only RNG site is the `Chance(0.5f)`", "its downstream
pair draws nothing" and "`ProcessNodeSpaceTravel` draws nothing" are **worth less than they look**, and pair draws nothing" and "`ProcessNodeSpaceTravel` draws nothing" are **worth less than they look**, and
method rule 16 (landed by lane J while this run was in flight) says why: an inlined draw leaves no method rule 16 (landed by lane J while this run was in flight) says why: an inlined draw leaves no