Z: rewrite the opening for what the run actually found

This commit is contained in:
alex 2026-09-08 10:46:23 -04:00
parent 82f92b6ced
commit 9bf86325d9

View file

@ -19,17 +19,22 @@ neither.
## 0. Where to start if you are building the standalone
Three sentences, then the evidence.
1. A turn costs **18–22 generator words**, all of it inside
`StrategyServer::ProcessTurn`; the two autosave files bracket exactly that interval and nothing draws
between them outside the two turn drivers.
2. `verify/results/shim/tailrng/z-t6-endturn.sav` → `z-t6-autosave.sav` is a **byte-identical oracle pair
with a known RNG cost of 18 words**, verified from the file bytes independently of the live hook. Test
against that pair before any other.
3. Lane K's warning stands and is now quantified: the tail's cost is 0 **today** because no save is within
~40 turns of a node-line expiry (§9) and no encounter has ever produced a battle (§8). Both terms are
real; both are latent.
1. **A turn costs 18–22 generator words on the reference save, and §11 says which call site spends each
one**, summing to the measured total with nothing left over on three consecutive turns. Sixteen of them
are two `Chance` calls per player in `FUN_00893290` — a function that is **not** in the static
inventory of `ProcessTurn`'s draw sites and is still unidentified. Model that one first.
2. **Two byte-identical oracle pairs with a known RNG cost** are in `verify/results/shim/tailrng/`:
`z-t6-endturn` → `z-t6-autosave` (18 words) and `z2-endturn` → `z2-autosave` (20). Both were verified
from the file bytes independently of any hook. Test against those before any other save, because no
corpus save carries a known cost.
3. **Combat is free.** The first battle ever instrumented in this campaign moved the strategic generator
by **0** words (§10). A reimplementation can model a turn's RNG and nothing about combat.
4. **Node-line decay is not free, and it is no longer hypothetical.** It fired on turn 64 of the Zuul save
and cost exactly the 1 word lane K predicted from the instruction stream (§9). Before that turn a
reimplementation modelling only `ProcessTurn` would have been correct; on that turn it would have been
one word out and every later turn would diverge.
5. **The generator does not move between turns** (§2.1), so the interval to reproduce is closed at both
ends.
## 1. The instrument, and why it is not an RNG hook
@ -320,7 +325,11 @@ would have said so by construction rather than by anyone noticing.
* ~~The combat resolver has never run under an instrument.~~ **It has now, once — see §10. It cost 0
words.** What remains unsettled is everything a single auto-resolved encounter cannot speak for; §10.2
lists it.
* **Node-line expiry did not fire.** See §9 for the quantified distance rather than an absence.
* ~~Node-line expiry did not fire.~~ **It fired on turn 64 — §9.1.** What is still open about it is in
§9.3.
* **`FUN_00893290` is unidentified** and spends 16 of every turn's 18–20 words (§11.1). This is the single
biggest open item for anyone modelling a turn's RNG, and it is bigger than everything else on this list
put together.
* **A turn with a genuinely empty encounter vector was not observed** (§4). Both saves produce exactly one
sighting encounter on every turn. The tail-runs-every-turn claim is settled; the no-encounters variant is
still an inference, now a much narrower one.