diff --git a/docs/Z-tail-rng.md b/docs/Z-tail-rng.md index 00fd8b5..3b27a9e 100644 --- a/docs/Z-tail-rng.md +++ b/docs/Z-tail-rng.md @@ -180,3 +180,42 @@ cost this campaign has ever recorded — and the bracket total becomes `ProcessT This is the first genuinely falsifiable numeric claim this lane can make: every earlier one compared 0 against 0. + +--- + +## 7. P10, written with the encounter dialog on screen and unclicked + +The turn-54 End Turn on the Zuul long run stopped on an **Encounter at Gallandro**: the player's 5 ships +(3 DE Colonizer, 2 DE Armor) against a **Von Neumann**, with the dialog offering Fight Manually / Auto +Resolve / Fight Manually If Opponent Does / Retreat. Auto Resolve has not been clicked yet. + +This is the workload `sots-re/findings/control-flow/tail-rng-ledger.md` §8 says does not exist and lane J's +`combat-resolver.md` asks for: **every encounter measured so far had `res->+0x4` set, so +`ApplyEncounterResult` was a whole-function no-op and the combat resolver has never executed under any +instrument this campaign has built.** + +**P10. Clicking Auto Resolve produces the first non-zero tail cost this campaign has recorded.** +Specifically: `ApplyEncounterResult` records `res_no_battle = 0` for the first time; its measured `rng` +delta is **greater than 0**; and `OnAllCombatDone_Tail`'s total equals that delta, because node-line decay +is still 30-odd turns from firing and every other phase has measured 0 across 54 turns. + +On the size, following lane J's map of the three conditional sites: there is no node cannon here, so R1 +should not fire. A **Von Neumann is salvage** — R2 is one inlined `NextFloat` per back-engineering candidate +per combatant with a non-zero salvage slot, and R3 one `NextInt` per successful R2 roll. So the expected +cost is **small and odd-shaped: a handful of words, not a multiple of anything.** I am deliberately not +naming a single number, because I have not read the resolver and lane J has: a range with a mechanism +behind it is the honest form of this prediction. + +*Falsified by:* +* **tail cost 0 with `res_no_battle = 0`** — then the resolver really has no draw on a plain battle path, + which would make lane J's "no unconditional draw" stronger than either of us expected, and would mean a + battle is free to a reimplementation; +* **a large cost (tens or hundreds of words)** — then something in the battle path draws per ship or per + round, and the resolver's three sites are not the whole story; +* **a non-zero cost that does NOT show up under `ApplyEncounterResult`** — then the draw happens in combat + proper (`RunCombatRound` / the combat server), which runs *between* `ProcessTurn` and the tail and is + hooked by nobody; the bracket residual would go positive for the first time and that is where it would + appear. + +The third case is the one to watch: it is the only way this workload can produce a **non-zero residual**, +which every prediction so far has said should be 0 on a quiet turn.