4.9 KiB
Certified pairs — what has actually been shown to reproduce, and under what procedure
determinism-hashes.txt next to this file is a file-hash inventory: it says what a byte string
hashed to. It cannot say what was done to produce it, and after 2026-09-09 that distinction is
load-bearing. Two findings made it so:
- A pair certifies a procedure, not a state (rule 26(c)). A control that agrees means "no exposed decision was reached on these turns", never "this state is deterministic".
- The route is part of the procedure. The same turn runs one way by continuation and another way
after a load, both reproducibly — because a
Colonizetask alive in the AI agent by continuation is simply absent after a load (lane BS). A hash without its route is not a claim.
So a pair is (input save, procedure, route, outputs, process count, masks). Anything missing one of
those columns is an observation, not a certification.
Certified
| input | procedure | route | (Autosave EndTurn) |
(Autosave) |
processes | evidence |
|---|---|---|---|---|---|---|
ref-turn2.sav ab4ac2d7… |
one End Turn | load | bb4fd9ac… |
978041ac… |
5 + 1 | runs A–E; reproduced by lane H after everything changed |
ar-turn37-816raiders.sav b6f4e05f… |
End Turn, auto-resolve peacefully, End Turn | load | 15b99255… |
7a8b3d5e… |
4 | lane AR ×3 hooks=off, lane BS ×1 instrumented |
ar-oracle-A-pre.sav 15b99255… |
one End Turn | load | 33e30092… |
4c356f59… |
3 | lane BQ ×2 hooks=off, lane BS ×1 instrumented |
The second and third rows are the same lineage and they do not agree with each other. Row 2's
second turn reached by continuation gives 7a8b3d5e…; the identical turn reached by loading row 2's
own intermediate save gives 4c356f59…. Both are certified; neither is wrong. This is the load
boundary, and it is why the route column exists.
Row 3 is the standalone's first trade-raid pair — one End Turn, no encounter, four raid rolls at one word each.
Masks that must be on the line
Player.Status(4 → 0 on load) and the derivedSummary.Checksum./CD[1]/NPrvVa, which advances by exactly +5.00 across a load and falls on a combat turn. The documented--mask resaverule said "nothing else varies"; that was true of early-game saves with an emptyCD[1]diplomacy block and false on these. Lane BQ's probe was unsatisfiable on that leaf alone, before any AI behaviour entered the question.- Row 3's
(Autosave EndTurn)is a resave ofar-oracle-A-pre.savand differs from it on that one leaf.
Explicitly NOT certified
| input | procedure | route | outcome set | why |
|---|---|---|---|---|
ad-turn27-two-raiders.sav 1c8baa27… |
one End Turn | load | 2: e913ff41… ×3, 724528ff… ×2 |
the fleet-visit-order residue |
Five processes across three instrument configurations, no third file, both members reproduced at
least twice. The two outputs are bp-pinA-turn28.sav and bp-pinB-turn28.sav, and lane BU showed
the difference is the two orderings of two heap pointers: the assignment pass walks a container
keyed on fleet->Location, and under LFH randomisation two same-size allocations land in either
relative order.
That is not a defect to fix and not a pair to keep hunting for. It is a two-member outcome set,
which is what C-set's shape needs, and state_checksum --relabel-new-ids compares across it:
IDENTICAL modulo π = {1970↔1986}. The unpinned pair on the same save is refused by that tool and
still reports 94 leaves, so the relabelling cannot launder a real divergence.
Do not add a row here on the strength of one agreeing run. Three processes on as-turn15 produced
the same bytes on a turn the predicate says is exposed, and a fourth produced different ones —
agreement on a single pair proves nothing (lane AP).
Standing rules for adding a row
- Two fresh processes minimum, and say how many.
- Run the control before reading anything from an instrumented run, so that if it is a single outcome the 1/k coincidence caveat does not apply (lane AR).
- Never extend a certified pair by a turn without its own agreement. Row 2's state enters the
following turn with
ResTNm == ''and is predicted to vary. - Record the exposure facts next to the hashes: each AI player's pre-turn
ResTNm,NumDes,NumOwn, whether ships completed, and which players actually have an AI client — a save with seven non-human players builds three clients, and the other four carry the signature inertly. - When the instrument cannot be removed, pin to a natural run's observed values and require byte-identity with it first (rule 26(d)). That agreement is both the pin's control and a noise mask.
Hashes here are recorded to 8 bytes for readability; the full values are in determinism-hashes.txt
and in each lane's findings file.