diff --git a/docs/H-probes.md b/docs/H-probes.md index f17db66..0bd4eb9 100644 --- a/docs/H-probes.md +++ b/docs/H-probes.md @@ -104,6 +104,38 @@ a 200-function closure". * *An entry counter reads more than 1 per turn.* The dispatch block would then be inside a loop nobody has read, which changes the cost model from "0 or 1 draw per site" to "per iteration". +### P2b-alt — an amendment, written after P2b and before any run + +Everything above was committed before I read the four callee bodies. I then read them (to name the +three inner functions for `addresses.d`), and **one of the four does not look like the other three**. +This is recorded as a competing prediction rather than folded into P2b, because retrofitting P2b +after seeing the code would destroy the test. + +Read from the decompiled bodies, each confirmed to be a real function start with exactly one caller: + +| callee | the loop it is | empty when | +|---|---|---| +| `ServerTradeManagerImpl_vslot15` 0x0082cca0 | over the vector at `tradeManager+0x3c .. +0x40` | no trade routes | +| `ServerSpyManager_vslot14` 0x0088db80 | over the vector at `spyManager+0x10 .. +0x14` | no spy programs | +| `ServerSpyManager_vslot13` 0x008877b0 | 1,869 bytes, same manager, not fully read | — | +| **`ServerTradeManagerImpl_vslot13` 0x0088ef80** | **over `GetServer()+0x64 .. +0x68` — the FLEETS vector** | **no fleets** | + +The first two are the shape P2b assumes: an empty container short-circuits the loop and no draw is +reachable, which is exactly "no trade routes and no spy program". **The fourth is not.** Its loop +iterates fleets — every save has fleets — and the draw is gated by a chain of per-fleet tests inside +the body (`0x0088f036` calls 0x00820ca0, whose result gates `0x0088f042`'s call to 0x0088b440). + +**P2b-alt. On a save with fleets, `ServerTradeManagerImpl_vslot13`'s loop body runs, and probe row 5 +(0x00820ca0) fires with a non-zero count — which means a `NextFloat` at 0x00820e18 and therefore a +NON-ZERO TAIL WORD COUNT.** If so, `tail-rng-ledger.md`'s "the tail's cost on these turns is 0" is +not merely workload-limited, it is limited by a per-fleet gate that our two ledger saves happened to +fail, and the Zuul save named for having 23 fleets is the obvious place to look. + +P2b and P2b-alt disagree about the same run, which is what makes it worth making. If P2b holds on a +23-fleet save, the gate is above 0x00820ca0 and the fleet loop is not the reason. If P2b-alt holds, +the four-callee blind spot is not "no trade, no spies" — it is one gate on one fleet property, and +the ledger needs the tail term now rather than after a manufactured workload. + **What this probe cannot settle without a manufactured workload.** Whether the sites draw *when* trade routes or spy programs exist. That needs a save with both, and building one is the expensive part of this lane; if it is not built, P2 downgrades from "the tail never draws" to "the tail never