board: lane AI4 - ModCount decomposed with zero residual, all EIPs named; reference-game corrections
This commit is contained in:
parent
ae47971316
commit
ed73b9fe7a
1 changed files with 5 additions and 0 deletions
|
|
@ -303,3 +303,8 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
|
|||
| Ship::RepairCost read; a stronger negative | objects | verified | high | 100% | 2026-09-08 | `max(0, design+0xcc - (ConCap + (flag ? design+0xd0 : 0)))`, plain integers; Ship::ApplyRepair 0x008151c0 names the fields - **ConCap is INVESTED CONSTRUCTION, not a per-turn capacity**, and +0xcc is its ceiling. Closes 0 leaves as predicted and the demand stays 0 (the design fields are cached stats off the wire) - but **the zero is now EVIDENCED, not silent**: the independent colony parks TEN SHIPS over Koa'Vo on both pairs and its Sav closes exactly at zero demand. Rule 20's stronger negative |
|
||||
| CORRECTION: out[6] is not a repair function | subsystems | verified | high | 100% | 2026-09-08 | output-turn-path.md had 0x007460b0 as a repair function. **It is SHIP-CARRIED POPULATION INCOME** - its summand 0x0081f8c0 gates on the design's carried-population bit and computes GroupIncome over the ship's own Population, a slot the engine already had. Corrected in place; lane C3's three unread stubs superseded. ALSO: GrowCivilianPops' real end is 0x00754b59 (its group-type loop's back edge is OUTSIDE every decompiler `if` - rule 17, SEVENTH lane); MaxPopGeneric ends 0x0074a6cd so lanes N and E1's 0x0074a6d0 is A DIFFERENT FUNCTION; and **InitPopTypeTable NEVER WRITES the group ceiling** - the CRT static initialiser at 0x009abe20 does, to INT64_MAX, and read as zero it would cap every capacity in the game at nothing |
|
||||
| growth hypotheses (nothing exercises them) | verify | backlog | — | 0% | 2026-09-08 | Named by lane G3: one species per colony everywhere so the proportional rescale is only exercised DEGENERATELY; nothing shrinks (the -50,000,000 floor and negative rescale unexercised); pbon2 empty everywhere so the headroom/write-back asymmetry is invisible; haltv[1] false everywhere; **GFlags 0 everywhere so the 1.5x growth BONUS never fires**; no species ever seeded; the morale-event half not modelled; and imperial growth DELIBERATELY not committed - a no-op here, and committing it needs a capacity the corpus bounds from below but not above |
|
||||
| ModCount DECOMPOSED EXACTLY - zero residual | control-flow | verified | high | 95% | 2026-09-08 | Lane AI4. The ten command bumps lane W2 measured now decompose with **ZERO RESIDUAL**, and **all four of W2's unnamed handler EIPs are named plus the two it recorded as inlined**: 0x00821a87 x4 (research-rate gate, once per submitted block), 0x0086c3e9 (list 5 system rates), **0x0084946e (list 3 build order - THE DESTROYER LANE B6 COULD NOT FIND)**, 0x0088bf01 (list 10), **0x0089046f x2 (list 14, INLINED, the AI's fleet order)**, 0x008657ad (list 8 fleet route). The join came from reading ApplyTurnCommandBatch as an INSTRUCTION SEQUENCE: a flat run of 27 per-list loops in a fixed order (neither list nor offset order), the six prologue gates split across THREE separate per-player loops at three different points, and **four bumps INLINED INTO THE BATCH rather than in a handler - which is why call-graph sweeps under-count them**. THE COST RULE HAS A SHARP BOUNDARY: **lists 1-16 cost one bump per element, lists 17-27 cost NOTHING**, no exception either way; four gates bump, one is free, and CivilianRatios has NO APPLIER anywhere in the apply path - reported as UNKNOWN, not zero |
|
||||
| AI2's two-elements-per-fleet-order CONFIRMED from the counter side | verify | verified | high | 100% | 2026-09-08 | At zero VM cost: list 14's applier fired exactly **TWICE** on a turn that moved exactly **ONE** fleet (one list-8 bump), and the UI control (human-turn2-orders.sav) carries **ONE** list-14 element for its one move. Lane AI2 predicted this from the AI bridge calling the order method twice, (f,0,true) then (f,1,true), where the UI emits only mode 0 |
|
||||
| THE REFERENCE GAME IS NOT WHAT THE RECORD SAID | meta | verified | high | 100% | 2026-09-08 | Three corrections from the saves plus W2's log. (1) **`ref-turn2.sav` IS `turn2-state.sav`** - same 66,739 bytes, same sha256 - so W2's watchpoint measurement is of THE REFERENCE GAME and is directly comparable to the standalone's reference pair. (2) **THREE AI players, not one**: 32 (Fane Lao) and the two "dormant" Singularity players 496/512, which DO run - all three set ResRate 0.25->0.8 and picked a research target on turn 1. (3) **The four Species==4 monster factions submit NO COMMAND BLOCK AT ALL** - exactly four players go Status 0->4 and exactly four rate-gate bumps fire, the first direct evidence they have NO CLIENT rather than an empty task list. That third point also gives the Player.Status predicate a candidate shape (has-a-client vs not) with four positive instances |
|
||||
| AI order emission scaffold + the submit latch | engine | verified | high | 90% | 2026-09-08 | `src/game/ai/orders.{h,cpp}` + `agent.{h,cpp}`, 233 -> **423 checks**, ctest 51/51 -> **53/53**: the command block, the order API with (fleetId, mode) dedup, the AI fleet-order bridge, BlockModCountCost/TurnModCountDelta, the 34-phase turn spine, and the two-pass walk with **pass-0 silence enforced AT THE CLIENT, not by trusting the caller**. **THE SUBMIT LATCH**: EndTurn sets client+0x15c BEFORE BuildTurnCommands, so **phases 29-33 are DEAD** - a literal port would emit AN EXTRA COLONIZE ORDER PER AI PER TURN. Two more cross-checks: **phase 2 is Hiver-only** (`cmp [player+0x5c],1` - a FIFTH independent confirmation of the species reading, and the reason gate +0x3c has never been seen set), and cl_SetResearchTarget is AI-ONLY surface with exactly one caller in the image. IT DECIDES NOTHING - which tasks exist and what each wants are board questions this module does not model (standing convention) |
|
||||
| AI4's falsifiable turn1 prediction (probe routed) | verify | in-progress | — | 0% | 2026-09-08 | Committed BEFORE the build: turn1-state should also give 12, out of a DIFFERENT command set - 4 rate gates + 3 research targets + list 1 (new design) + list 3 (build) + list 5 (rates) + 2 drivers, with NO fleet order on turn 1. **The predicted trap multiset CONTAINS TWO EIPs W2 HAS NEVER SEEN AND OMITS THREE IT DID**, so the SET discriminates and a wrong model fails visibly rather than coincidentally landing on 12. One save swap on W2's unchanged watchpoint module; routed to lane W3. Specific falsifier: does 0x0088291a (list 1) fire? That is the difference between "the engine must emit a design COMMAND" and "a design OBJECT the build order merely names" |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue