diff --git a/findings/subsystems/turncommands-capture.md b/findings/subsystems/turncommands-capture.md index 2d8f60a..6dba3c1 100644 --- a/findings/subsystems/turncommands-capture.md +++ b/findings/subsystems/turncommands-capture.md @@ -197,29 +197,35 @@ named set as an id, and nobody has mapped 282 to a name. That is the honest stat The autosave is `d59bb9f2fd0eb535…` (66,746 B) — which is exactly the file lane L5's own `hooks=off` run produced. Two lanes, two processes, same outcome, by chance. -### 4.2 Runs C5a, pinned — the creation turn IS reproducible +### 4.2 Runs C5a and C5b, pinned — the creation turn IS reproducible -C5a is C3 re-run with `aiseed=pin` set to the three seeds **C3 itself observed**. Its own natural -seeds were entirely different (`0x227235b9` / `0x762d125e` / `0x9d77d4e6`) and were overwritten -before the client ctor saw them. +C5a and C5b are C3 re-run with `aiseed=pin` set to the three seeds **C3 itself observed**. Each is a +separate process; each drew its own three natural seeds, all different from C3's and from each +other's, and each had them overwritten before the client constructor saw them. -| | C3 (unpinned) | C5a (pinned to C3's seeds) | -|---|---|---| -| natural seeds drawn | `e70a4703` / `0c63ca36` / `372be4df` | `227235b9` / `762d125e` / `9d77d4e6` | -| seeds **used** | same | **C3's** | -| research targets 32 / 496 / 512 | 144 / 90 / **282** | 144 / 90 / **282** | -| every other gate and element record | — | **identical** | -| `(Autosave).sav` | `d59bb9f2fd0eb535…` | **`d59bb9f2fd0eb535…`** | +| | C3 (unpinned) | C5a (pinned) | C5b (pinned) | +|---|---|---|---| +| natural seeds drawn | `e70a4703` / `0c63ca36` / `372be4df` | `227235b9` / `762d125e` / `9d77d4e6` | `be649c5c` / `2200dbd2` / `d418f3f8` | +| seeds **used** | its own | **C3's** | **C3's** | +| research targets 32 / 496 / 512 | 144 / 90 / **282** | 144 / 90 / **282** | 144 / 90 / **282** | +| all six gates, all four blocks | — | **identical** | **identical** | +| element records (lists 1, 3, 5, 23) | — | **identical** | **identical** | +| `(Autosave).sav` | `d59bb9f2fd0eb535…` | **`d59bb9f2fd0eb535…`** | **`d59bb9f2fd0eb535…`** | -**The workload that three lanes could not reproduce is reproducible once the seeds are pinned.** -Lane L1's mechanism is confirmed from the other end: the seed is *the* per-process input, and -`game/ai` is a deterministic function of (save, per-client seed). Rung B's input is therefore a -**closed** record — save + seeds + block — and not a log of something that happened once. +**The workload that three lanes could not reproduce is reproducible once the seeds are pinned — +three processes, nine distinct natural seeds, one autosave.** Lane L1's mechanism is confirmed from +the other end: the seed is *the* per-process input, and `game/ai` is a deterministic function of +(save, per-client seed). Rung B's input is a **closed** record — save + seeds + block — not a log of +something that happened once. -The single difference in the whole decoded stream is **word 3 of list 23's unnamed `Population` -body** (`876301736` vs `245`). By the argument of §2 — two runs, byte-identical autosaves — that -word is not a word the applier reads either, which is one more word localised as noise, using the -pinned pair as the instrument. That is what a control on a `k > 1` workload is *for*. +Two runs agreeing on a `k > 1` workload is a `1/k` coincidence; three is `1/k²`, about 3 % at lane +L4's k = 6. That is the reason the third run was worth the eight minutes. + +The single difference anywhere in the decoded stream is **word 3 of list 23's unnamed `Population` +body** — `876301736`, `245`, `61179324` across the three. By the argument of §2 (runs whose +autosaves are byte-identical cannot differ in a word the applier reads) that word is noise, now on +three data points rather than two. Localising it is exactly what a control on a `k > 1` workload +is *for*, and it did not exist before this lane could pin. --- @@ -308,3 +314,25 @@ Rules for consuming it, in order of how much they cost to get wrong: it is not enough to show a word is *stable*, and the stable prefixes above are therefore upper bounds on noise, not proofs of a record. They agree with the writer's own instruction stream, which is the second, independent leg. + + +--- + +## 8. The guest, left as found (and one thing that was not preserved) + +VM146 stopped, `binkw32.dll` restored to lane L5's build (md5 `F8DFC4AE…`, verified equal to +`C:\SOTS\shimdist-l5\binkw32.dll`), `shim.cfg` back to `hooks=off`, `SavedGames` at eight files +so the Load-dialog row geometry is unchanged. + +**Not preserved:** the two autosaves that were in `SavedGames` when this lane took the guest. +`cbdeploy.ps1` deletes them before every run — deliberately, so that a run which writes none is +distinguishable from one that rewrites them, and so the dialog lists a constant six files. The +autosaves now present are run **C5b's** outputs (`a3f9dc4b…` / `d59bb9f2…`), both of which are +recorded byte-for-byte in `verify/results/saves/`. They are scratch files every lane's deploy script +deletes anyway, and nothing in the campaign depends on them, but the deletion was not announced in +advance and is recorded here rather than left for someone to notice. + +Left in place for the next lane: `C:\SOTS\shimdist-cb` (build `cb-final-20260908T2320Z` plus the +four `shim.cfg.cb*` variants) and `C:\SOTS\cb\` (`cbdeploy.ps1`, `cbstep.ps1`, `cbgrab.ps1`, +`cbrun.ps1`, and the five collected run directories). The WSL-side drivers are in +`verify/harness/cb/`. diff --git a/verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav b/verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav new file mode 100644 index 0000000..b952e1f Binary files /dev/null and b/verify/results/saves/cb-c5b-turn1to2-pinned-autosave.sav differ diff --git a/verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt b/verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt new file mode 100644 index 0000000..695cb7c --- /dev/null +++ b/verify/results/shim/aiorders/cb-c5b-turn1to2-pinned.txt @@ -0,0 +1,46 @@ +aiorders: out=C:\SOTS\shim.aiorders.txt probes=0 of 20 +aicfg words=32 deep=1 research=0 seed=pin pins=3 detours=2 +aiseed pin netId=32 value=0xe70a4703 +aiseed pin netId=496 value=0x0c63ca36 +aiseed pin netId=512 value=0x372be4df +aiorders: batch hook StrategySim::ApplyTurnCommandBatch rva=0x0048f9b0 va=00a6f9b0 create=MH_OK enable=MH_OK +aiseed: StrategyApp::RunAI rva=0x004706f0 va=00a506f0 create=MH_OK enable=MH_OK +airesearch: disabled (airesearch=off) +---- aibatch seq=1 blocks=0x012ff5b4 n=1 stride=0x1b4 ---- +aiblk seq=1 blk=0/1 at=0x012ff5b4 pid=16 rate=1:0.25 target=0:19920344 boost=0:0,0 g4=0:0,0 f3=0:1,1,1 civ=0 +ailists seq=1 blk=0 pid=16 nonEmpty=0 sizes(1..27)=[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] +aiprobe seq=1 none installed (aiprobes=off) +aiseed call=1 netId=32 observed=0xbe649c5c used=0xe70a4703 pinned=1 +aiseed call=2 netId=496 observed=0x2200dbd2 used=0x0c63ca36 pinned=1 +aiseed call=3 netId=512 observed=0xd418f3f8 used=0x372be4df pinned=1 +---- aibatch seq=2 blocks=0x1e391ef8 n=8 stride=0x1b4 ---- +aiblk seq=2 blk=0/8 at=0x1e391ef8 pid=16 rate=1:0.25 target=0:0 boost=0:0,0 g4=0:0,0 f3=0:1,1,1 civ=0 +ailists seq=2 blk=0 pid=16 nonEmpty=0 sizes(1..27)=[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] +aiblk seq=2 blk=1/8 at=0x1e3920ac pid=32 rate=1:0.8 target=1:144 boost=0:0,0 g4=0:0,0 f3=0:1,1,1 civ=0 +ailists seq=2 blk=1 pid=32 nonEmpty=4 sizes(1..27)=[ 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 ] +ailist blk=1 pid=32 list=1 off=0x070 size=1 +aielem blk=1 pid=32 list=1 idx=0 node=0x1e3746b0 words=32 f0=1.74428e-38 f1=-0.00012207 ints=[ 12447588 -1191182335 1869508424 1632378994 6644590 -1721931907 11 15 2135936087 2 44 862815264 862815468 862815468 -1564249672 0 0 0 -1109545122 2 41 855303880 855303948 855303948 1013849056 0 0 0 1727786879 2 46 862671456 ] hex=[ 00bdef64 b9000001 6f6e6f48 614c2072 0065636e 995d677d 0000000b 0000000f 7f4fcc57 00000002 0000002c 336d8420 336d84ec 336d84ec a2c371b8 00000000 00000000 00000000 bdddaf5e 00000002 00000029 32fae6c8 32fae70c 32fae70c 3c6e1be0 00000000 00000000 00000000 66fbef7f 00000002 0000002e 336b5260 ] +aivec blk=1 pid=32 list=1 idx=0 at=w11 first=0x336d8420 cap=51 count=51 ints=[ 863131624 0 0 0 24 31 0 8 0 0 0 0 0 0 15 0 0 863130944 0 0 0 24 31 0 8 0 0 0 0 0 0 15 ] hex=[ 337257e8 00000000 00000000 00000000 00000018 0000001f 00000000 00000008 00000000 00000000 00000000 00000000 00000000 00000000 0000000f 00000000 00000000 33725540 00000000 00000000 00000000 00000018 0000001f 00000000 00000008 00000000 00000000 00000000 00000000 00000000 00000000 0000000f ] TRUNCATED +aivec blk=1 pid=32 list=1 idx=0 at=w21 first=0x32fae6c8 cap=17 count=17 ints=[ 863131664 0 0 0 24 31 0 8 0 0 0 0 0 0 15 0 0 ] hex=[ 33725810 00000000 00000000 00000000 00000018 0000001f 00000000 00000008 00000000 00000000 00000000 00000000 00000000 00000000 0000000f 00000000 00000000 ] +aistr blk=1 pid=32 list=1 idx=0 at=w2 sso=1 len=11 text="Honor Lance" +ailist blk=1 pid=32 list=3 off=0x088 size=1 +aielem blk=1 pid=32 list=3 idx=0 node=0x339c8bc8 words=32 f0=0 f1=4.03574e-43 ints=[ 0 288 18 1 633685498 -2013235968 61229892 61229880 61229868 61229856 61229844 61229832 633423110 -2147453440 863640144 863640336 863640016 863640416 863640432 863640576 641549570 -2147453184 865897512 865897512 240 181 163 53 641287438 -2147452928 61185480 61185492 ] hex=[ 00000000 00000120 00000012 00000001 25c545fa 88007500 03a64b44 03a64b38 03a64b2c 03a64b20 03a64b14 03a64b08 25c14506 80007600 337a1a50 337a1b10 337a19d0 337a1b60 337a1b70 337a1c00 263d4502 80007700 339c8c28 339c8c28 000000f0 000000b5 000000a3 00000035 2639450e 80007800 03a59dc8 03a59dd4 ] +aivec blk=1 pid=32 list=3 idx=0 at=w16 first=0x337a19d0 cap=104 count=100 ints=[ 0 2 613324733 -2013248257 0 0 613455803 -2013248001 1065353216 0 613586873 -2013247745 0 0 613717959 -2013247489 1037465456 0 613849029 -2013247233 0 0 613980099 -2013246977 1065353216 5 614111169 -2013246721 1065353216 0 614242255 -2013246465 ] hex=[ 00000000 00000002 248e97bd 880044ff 00000000 00000000 249097bb 880045ff 3f800000 00000000 249297b9 880046ff 00000000 00000000 249497c7 880047ff 3dd67770 00000000 249697c5 880048ff 00000000 00000000 249897c3 880049ff 3f800000 00000005 249a97c1 88004aff 3f800000 00000000 249c97cf 88004bff ] TRUNCATED +ailist blk=1 pid=32 list=5 off=0x0a0 size=1 +aielem blk=1 pid=32 list=5 idx=0 node=0x3324d2e0 words=32 f0=4.03574e-43 f1=0 ints=[ 288 0 1065353216 0 0 0 0 0 603410151 -2147398144 12329660 528 2 0 65535 0 65535 0 864157696 32 600395489 -1946071296 506948320 858051440 858051200 15 864209288 865040320 1 864209288 864157697 32 ] hex=[ 00000120 00000000 3f800000 00000000 00000000 00000000 00000000 00000000 23f74ee7 80014e00 00bc22bc 00000210 00000002 00000000 0000ffff 00000000 0000ffff 00000000 33820000 00000020 23c94ee1 8c014f00 1e376ae0 3324d370 3324d280 0000000f 3382c988 338f77c0 00000001 3382c988 33820001 00000020 ] +ailist blk=1 pid=32 list=23 off=0x178 size=1 +aielem blk=1 pid=32 list=23 idx=0 node=0x337253b0 words=32 f0=4.03574e-43 f1=1.74089e-38 ints=[ 288 12423408 865896840 865896864 865896864 538968065 1018011388 -2147163360 1969644882 543516007 1684107860 1750278245 28777 1 1 2147483647 1018339065 -2147163104 1701407809 1918312558 1634427749 25959 3481707 1845493810 16776960 538968064 1018666498 -2147162848 1701407809 1918312558 1634427749 25959 ] hex=[ 00000120 00bd90f0 339c8988 339c89a0 339c89a0 20200001 3cad9efc 8004e320 75666552 20656567 64617254 68532065 00007069 00000001 00000001 7fffffff 3cb29ef9 8004e420 65696c41 7257206e 616b6365 00006567 0035206b 6e000032 00ffff00 20200000 3cb79e02 8004e520 65696c41 7257206e 616b6365 00006567 ] +aivec blk=1 pid=32 list=23 idx=0 at=w2 first=0x339c8988 cap=6 count=6 ints=[ 12422480 1 2 61179324 1000000000 0 ] hex=[ 00bd8d50 00000001 00000002 03a585bc 3b9aca00 00000000 ] +aiblk seq=2 blk=2/8 at=0x1e392260 pid=496 rate=1:0.8 target=1:90 boost=0:0,0 g4=0:0,0 f3=0:1,1,1 civ=0 +ailists seq=2 blk=2 pid=496 nonEmpty=0 sizes(1..27)=[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] +aiblk seq=2 blk=3/8 at=0x1e392414 pid=512 rate=1:0.8 target=1:282 boost=0:0,0 g4=0:0,0 f3=0:1,1,1 civ=0 +ailists seq=2 blk=3 pid=512 nonEmpty=0 sizes(1..27)=[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] +aiblk seq=2 blk=4/8 at=0x1e3925c8 pid=0 rate=0:8.96831e-44 target=0:0 boost=0:0,0 g4=0:0,0 f3=0:1,1,1 civ=0 +ailists seq=2 blk=4 pid=0 nonEmpty=0 sizes(1..27)=[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] +aiblk seq=2 blk=5/8 at=0x1e39277c pid=0 rate=0:8.96831e-44 target=0:0 boost=0:0,0 g4=0:0,0 f3=0:1,1,1 civ=0 +ailists seq=2 blk=5 pid=0 nonEmpty=0 sizes(1..27)=[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] +aiblk seq=2 blk=6/8 at=0x1e392930 pid=0 rate=0:8.96831e-44 target=0:0 boost=0:0,0 g4=0:0,0 f3=0:1,1,1 civ=0 +ailists seq=2 blk=6 pid=0 nonEmpty=0 sizes(1..27)=[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] +aiblk seq=2 blk=7/8 at=0x1e392ae4 pid=0 rate=0:8.96831e-44 target=0:0 boost=0:0,0 g4=0:0,0 f3=0:1,1,1 civ=0 +ailists seq=2 blk=7 pid=0 nonEmpty=0 sizes(1..27)=[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] +aiprobe seq=2 none installed (aiprobes=off) diff --git a/verify/results/turncommands/cb-turn1to2-pinned-run2.json b/verify/results/turncommands/cb-turn1to2-pinned-run2.json new file mode 100644 index 0000000..275bb7e --- /dev/null +++ b/verify/results/turncommands/cb-turn1to2-pinned-run2.json @@ -0,0 +1,1018 @@ +{ + "capture_version": 1, + "lane": "CB", + "guest": "VM146", + "build": "cb2-20260908T2251Z", + "captured_utc": "2026-09-08T23:24:43+00:00", + "instrument": { + "words": "32", + "deep": "1", + "research": "0", + "seed": "pin", + "pins": "3", + "detours": "2" + }, + "workload": "turn1-state.sav + one End Turn, AI client seeds PINNED to run C3's (third process)", + "note": "PINNED, run 2. Third process on this workload; its own natural seeds differ again and were overwritten. Same block, same autosave.", + "binding": { + "input": { + "file": "turn1-state.sav", + "bytes": 64967, + "sha256": "a3f9dc4b49fc669c814b09b87a9c6795de21bac80a1c7bfe3901b8e239fa36cc" + }, + "outputs": [ + { + "file": "(Autosave).sav", + "bytes": 66746, + "sha256": "d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8", + "path": "../saves/cb-c5b-turn1to2-pinned-autosave.sav" + } + ], + "control_run": "c3-turn1to2-run1 and c5a-turn1to2-pinned; all three produced d59bb9f2..." + }, + "ai_seeds": [ + { + "call": 1, + "netId": 32, + "observed": "0xbe649c5c", + "used": "0xe70a4703", + "pinned": true + }, + { + "call": 2, + "netId": 496, + "observed": "0x2200dbd2", + "used": "0x0c63ca36", + "pinned": true + }, + { + "call": 3, + "netId": 512, + "observed": "0xd418f3f8", + "used": "0x372be4df", + "pinned": true + } + ], + "list_size_self_check": { + "mismatches": [], + "note": "every list is measured twice, by walking its node chain and by reading _Mysize; an empty list here means the container layout agreed on every list of every block, which is the evidence that a zero size is a real zero rather than a wrong offset" + }, + "batches": [ + { + "seq": 1, + "blocks_va": "0x012ff5b4", + "n": 1, + "stride": 436, + "blocks": [ + { + "index": 0, + "n": 1, + "block_va": "0x012ff5b4", + "playerId": 16, + "gates": { + "researchRate": { + "set": true, + "payload": "0.25" + }, + "researchTarget": { + "set": false, + "payload": "19920344" + }, + "researchBoost": { + "set": false, + "payload": "0,0" + }, + "group4": { + "set": false, + "payload": "0,0" + }, + "group5": { + "set": false, + "payload": "1,1,1" + }, + "civilianRatios": { + "set": false + } + }, + "lists": [], + "list_sizes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + ] + }, + { + "seq": 2, + "blocks_va": "0x1e391ef8", + "n": 8, + "stride": 436, + "blocks": [ + { + "index": 0, + "n": 8, + "block_va": "0x1e391ef8", + "playerId": 16, + "gates": { + "researchRate": { + "set": true, + "payload": "0.25" + }, + "researchTarget": { + "set": false, + "payload": "0" + }, + "researchBoost": { + "set": false, + "payload": "0,0" + }, + "group4": { + "set": false, + "payload": "0,0" + }, + "group5": { + "set": false, + "payload": "1,1,1" + }, + "civilianRatios": { + "set": false + } + }, + "lists": [], + "list_sizes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "index": 1, + "n": 8, + "block_va": "0x1e3920ac", + "playerId": 32, + "gates": { + "researchRate": { + "set": true, + "payload": "0.8" + }, + "researchTarget": { + "set": true, + "payload": "144" + }, + "researchBoost": { + "set": false, + "payload": "0,0" + }, + "group4": { + "set": false, + "payload": "0,0" + }, + "group5": { + "set": false, + "payload": "1,1,1" + }, + "civilianRatios": { + "set": false + } + }, + "lists": [ + { + "list": 1, + "member_offset": "0x070", + "size": 1, + "elements": [ + { + "index": 0, + "node_va": "0x1e3746b0", + "raw_words": [ + 12447588, + 3103784961, + 1869508424, + 1632378994, + 6644590, + 2573035389, + 11, + 15, + 2135936087, + 2, + 44, + 862815264, + 862815468, + 862815468, + 2730717624, + 0, + 0, + 0, + 3185422174, + 2, + 41, + 855303880, + 855303948, + 855303948, + 1013849056, + 0, + 0, + 0, + 1727786879, + 2, + 46, + 862671456 + ], + "vectors": [ + { + "at_word": 11, + "first_va": "0x336d8420", + "capacity": 51, + "count": 51, + "words": [ + 863131624, + 0, + 0, + 0, + 24, + 31, + 0, + 8, + 0, + 0, + 0, + 0, + 0, + 0, + 15, + 0, + 0, + 863130944, + 0, + 0, + 0, + 24, + 31, + 0, + 8, + 0, + 0, + 0, + 0, + 0, + 0, + 15 + ], + "truncated": true + }, + { + "at_word": 21, + "first_va": "0x32fae6c8", + "capacity": 17, + "count": 17, + "words": [ + 863131664, + 0, + 0, + 0, + 24, + 31, + 0, + 8, + 0, + 0, + 0, + 0, + 0, + 0, + 15, + 0, + 0 + ], + "truncated": false + } + ], + "strings": [ + { + "at_word": 2, + "sso": true, + "len": 11, + "text": "Honor Lance" + } + ], + "decoded": { + "record": "NewDesign", + "wire": null, + "note": "polymorphic object; carried as raw words and decoded strings only" + } + } + ] + }, + { + "list": 3, + "member_offset": "0x088", + "size": 1, + "elements": [ + { + "index": 0, + "node_va": "0x339c8bc8", + "raw_words": [ + 0, + 288, + 18, + 1, + 633685498, + 2281731328, + 61229892, + 61229880, + 61229868, + 61229856, + 61229844, + 61229832, + 633423110, + 2147513856, + 863640144, + 863640336, + 863640016, + 863640416, + 863640432, + 863640576, + 641549570, + 2147514112, + 865897512, + 865897512, + 240, + 181, + 163, + 53, + 641287438, + 2147514368, + 61185480, + 61185492 + ], + "vectors": [ + { + "at_word": 16, + "first_va": "0x337a19d0", + "capacity": 104, + "count": 100, + "words": [ + 0, + 2, + 613324733, + 2281719039, + 0, + 0, + 613455803, + 2281719295, + 1065353216, + 0, + 613586873, + 2281719551, + 0, + 0, + 613717959, + 2281719807, + 1037465456, + 0, + 613849029, + 2281720063, + 0, + 0, + 613980099, + 2281720319, + 1065353216, + 5, + 614111169, + 2281720575, + 1065353216, + 0, + 614242255, + 2281720831 + ], + "truncated": true + } + ], + "strings": [], + "decoded": { + "record": "BuildOrder", + "ordinal": 1, + "designId": 18, + "systemId": 288, + "trailing": 0, + "wire": [ + 1, + 18, + 288, + 0 + ], + "record_words": 4 + } + } + ] + }, + { + "list": 5, + "member_offset": "0x0a0", + "size": 1, + "elements": [ + { + "index": 0, + "node_va": "0x3324d2e0", + "raw_words": [ + 288, + 0, + 1065353216, + 0, + 0, + 0, + 0, + 0, + 603410151, + 2147569152, + 12329660, + 528, + 2, + 0, + 65535, + 0, + 65535, + 0, + 864157696, + 32, + 600395489, + 2348896000, + 506948320, + 858051440, + 858051200, + 15, + 864209288, + 865040320, + 1, + 864209288, + 864157697, + 32 + ], + "vectors": [], + "strings": [], + "decoded": { + "record": "SystemRates", + "systemId": 288, + "wire": null, + "record_words": 8, + "rates_memory_order_u32": [ + 0, + 1065353216, + 0, + 0, + 0, + 0, + 0 + ], + "rates_memory_order_f32": [ + 0.0, + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "wire_order_unread": true, + "note": "memory member 1 is wire member SRsc (lane RB, from a replay that regressed two leaves when the memory order was used as the wire order); the other six memory members are UNREAD. Values are certain, positions are not." + } + } + ] + }, + { + "list": 23, + "member_offset": "0x178", + "size": 1, + "elements": [ + { + "index": 0, + "node_va": "0x337253b0", + "raw_words": [ + 288, + 12423408, + 865896840, + 865896864, + 865896864, + 538968065, + 1018011388, + 2147803936, + 1969644882, + 543516007, + 1684107860, + 1750278245, + 28777, + 1, + 1, + 2147483647, + 1018339065, + 2147804192, + 1701407809, + 1918312558, + 1634427749, + 25959, + 3481707, + 1845493810, + 16776960, + 538968064, + 1018666498, + 2147804448, + 1701407809, + 1918312558, + 1634427749, + 25959 + ], + "vectors": [ + { + "at_word": 2, + "first_va": "0x339c8988", + "capacity": 6, + "count": 6, + "words": [ + 12422480, + 1, + 2, + 61179324, + 1000000000, + 0 + ], + "truncated": false + } + ], + "strings": [], + "decoded": { + "record": "Population", + "systemId": 288, + "vptr": "0x00bd90f0", + "body": [ + 12422480, + 1, + 2, + 61179324, + 1000000000, + 0 + ], + "wire": [ + 288, + 6, + 12422480, + 1, + 2, + 61179324, + 1000000000, + 0 + ], + "record_words": 5 + } + } + ] + } + ], + "list_sizes": [ + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0 + ] + }, + { + "index": 2, + "n": 8, + "block_va": "0x1e392260", + "playerId": 496, + "gates": { + "researchRate": { + "set": true, + "payload": "0.8" + }, + "researchTarget": { + "set": true, + "payload": "90" + }, + "researchBoost": { + "set": false, + "payload": "0,0" + }, + "group4": { + "set": false, + "payload": "0,0" + }, + "group5": { + "set": false, + "payload": "1,1,1" + }, + "civilianRatios": { + "set": false + } + }, + "lists": [], + "list_sizes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "index": 3, + "n": 8, + "block_va": "0x1e392414", + "playerId": 512, + "gates": { + "researchRate": { + "set": true, + "payload": "0.8" + }, + "researchTarget": { + "set": true, + "payload": "282" + }, + "researchBoost": { + "set": false, + "payload": "0,0" + }, + "group4": { + "set": false, + "payload": "0,0" + }, + "group5": { + "set": false, + "payload": "1,1,1" + }, + "civilianRatios": { + "set": false + } + }, + "lists": [], + "list_sizes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "index": 4, + "n": 8, + "block_va": "0x1e3925c8", + "playerId": 0, + "gates": { + "researchRate": { + "set": false, + "payload": "8.96831e-44" + }, + "researchTarget": { + "set": false, + "payload": "0" + }, + "researchBoost": { + "set": false, + "payload": "0,0" + }, + "group4": { + "set": false, + "payload": "0,0" + }, + "group5": { + "set": false, + "payload": "1,1,1" + }, + "civilianRatios": { + "set": false + } + }, + "lists": [], + "list_sizes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "index": 5, + "n": 8, + "block_va": "0x1e39277c", + "playerId": 0, + "gates": { + "researchRate": { + "set": false, + "payload": "8.96831e-44" + }, + "researchTarget": { + "set": false, + "payload": "0" + }, + "researchBoost": { + "set": false, + "payload": "0,0" + }, + "group4": { + "set": false, + "payload": "0,0" + }, + "group5": { + "set": false, + "payload": "1,1,1" + }, + "civilianRatios": { + "set": false + } + }, + "lists": [], + "list_sizes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "index": 6, + "n": 8, + "block_va": "0x1e392930", + "playerId": 0, + "gates": { + "researchRate": { + "set": false, + "payload": "8.96831e-44" + }, + "researchTarget": { + "set": false, + "payload": "0" + }, + "researchBoost": { + "set": false, + "payload": "0,0" + }, + "group4": { + "set": false, + "payload": "0,0" + }, + "group5": { + "set": false, + "payload": "1,1,1" + }, + "civilianRatios": { + "set": false + } + }, + "lists": [], + "list_sizes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "index": 7, + "n": 8, + "block_va": "0x1e392ae4", + "playerId": 0, + "gates": { + "researchRate": { + "set": false, + "payload": "8.96831e-44" + }, + "researchTarget": { + "set": false, + "payload": "0" + }, + "researchBoost": { + "set": false, + "payload": "0,0" + }, + "group4": { + "set": false, + "payload": "0,0" + }, + "group5": { + "set": false, + "payload": "1,1,1" + }, + "civilianRatios": { + "set": false + } + }, + "lists": [], + "list_sizes": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + ] + } + ] +} diff --git a/verify/results/turncommands/cb-turn1to2-pinned-run2.tcb b/verify/results/turncommands/cb-turn1to2-pinned-run2.tcb new file mode 100644 index 0000000..68f1878 --- /dev/null +++ b/verify/results/turncommands/cb-turn1to2-pinned-run2.tcb @@ -0,0 +1,38 @@ +tcb 1 +meta source cb-c5b-turn1to2-pinned.txt +meta input turn1-state.sav +meta input_sha256 a3f9dc4b49fc669c814b09b87a9c6795de21bac80a1c7bfe3901b8e239fa36cc +meta output (Autosave).sav 66746 d59bb9f2fd0eb5358c35954fbf2fcb70d06bafbba2560e0fa5d3f906bfb159d8 +meta control c3-turn1to2-run1 and c5a-turn1to2-pinned; all three produced d59bb9f2... +meta lane CB capture_version 1 build cb2-20260908T2251Z guest VM146 +meta extension vN:a,b -- a vector whose contents ARE known; bare vN still means unknown and must still be refused +meta batch seq=2 n=8 +seed 32 0xe70a4703 pinned +seed 496 0x0c63ca36 pinned +seed 512 0x372be4df pinned +block 0 16 +gate 0 rate 0.25 +block 1 32 +gate 1 rate 0.8 +gate 1 target 144 +list 1 1 1 +elem 1 1 0 ? +meta string 1 1 0 w2 "Honor Lance" +list 1 3 1 +elem 1 3 0 i1 i18 i288 i0 +list 1 5 1 +elem 1 5 0 i288 ? ? ? ? ? ? ? +meta rates 1 5 0 memory-order-f32 0.0,1.0,0.0,0.0,0.0,0.0,0.0 +meta rates-note memory member 1 is wire member SRsc (lane RB, from a replay that regressed two leaves when the memory order was used as the wire order); the other six memory members are UNREAD. Values are certain, positions are not. +list 1 23 1 +elem 1 23 0 i288 ? v6:12422480,1,2,61179324,1000000000,0 +block 2 496 +gate 2 rate 0.8 +gate 2 target 90 +block 3 512 +gate 3 rate 0.8 +gate 3 target 282 +block 4 0 +block 5 0 +block 6 0 +block 7 0