findings/subsystems/ai-order-capture.md -- two workloads on VM145, every submitted TurnCommands block dumped at the batch applier, plus sixteen pass-attributed entry probes on the task bodies and the emission gates. Headline: our emission model reproduces both real blocks exactly, list for list and element for element, and both turns land on the measured ModCount of 12. What it did not have: a list-23 element on every AI turn (the first element ever observed in the free half of the cost table, and it really is free), client-allocated ids travelling inside the commands (design 18, fleet 34 -- neither in the input save), and build, rates and population all naming the same home system. Two predictions falsified, both usefully: the batch is n = playerCount = 8 with the four monster factions holding untouched slots, not n = 4; and the fleet order names the fleet the client has ALREADY created, not the one in the save. AITRaid's pass-0 question stays open and now says why -- the task never ran on either board, so the list-16 zero is 'never entered', not 'entered and silent'. Rule 19: the ref-turn2 control passed byte-identical to the published oracle with all seventeen detours installed. Separately, the turn-1 workload is NOT reproducible -- three runs, three autosaves, differing in exactly one field: the research target of the AI player that owns nothing. ghidra/addresses.d/lane-l4.json: 9 entries (8 IAITask::Execute bodies + the list-16 order method). Raw logs and the two divergent autosaves in verify/results/shim/aiorders/. |
||
|---|---|---|
| .. | ||
| lane-a.json | ||
| lane-a2.json | ||
| lane-ai1.json | ||
| lane-ai2.json | ||
| lane-ai3.json | ||
| lane-ai4.json | ||
| lane-b5.json | ||
| lane-b6.json | ||
| lane-c3.json | ||
| lane-d2.json | ||
| lane-e1.json | ||
| lane-e3.json | ||
| lane-ev.json | ||
| lane-g2.json | ||
| lane-g3.json | ||
| lane-h.json | ||
| lane-i.json | ||
| lane-j.json | ||
| lane-k.json | ||
| lane-l1.json | ||
| lane-l4.json | ||
| lane-l5.json | ||
| lane-n.json | ||
| lane-o.json | ||
| lane-p2.json | ||
| lane-pl.json | ||
| lane-q.json | ||
| lane-sv.json | ||
| lane-t.json | ||
| lane-t2.json | ||
| lane-u.json | ||
| lane-v2.json | ||
| lane-w.json | ||
| lane-w2.json | ||
| lane-w3.json | ||
| lane-z.json | ||
| README.md | ||
Per-lane address fragments
addresses.json is a single shared file. When several lanes run concurrently they edit the
same lines, and three times on 2026-09-08 one lane's git add swept another's in-flight
entries into the wrong commit. Nothing was lost, but authorship and atomicity were.
A lane may instead drop its own file here:
{ "entries": [ { "name": "...", "addr": "0x...", "convention": "...",
"prototype": "...", "status": "verified", "source": "findings/..." } ] }
Name it after the lane (lane-d.json). tools/gen_addresses.py merges every fragment in
sorted order after addresses.json. A duplicate name across files is a hard error, not
last-wins — two lanes disagreeing about an address is exactly the thing we must not paper over.
The integrator folds fragments back into addresses.json once the lane's work is merged.