board: REVERSAL - the tail does draw; gate is Commerce Raiding not container contents; L3 row superseded
This commit is contained in:
parent
bdaa26fe96
commit
479a0d28ae
1 changed files with 8 additions and 1 deletions
|
|
@ -370,7 +370,7 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
|
|||
| cl_RandFloat: a THIRD facade, hidden by a tail jump | objects | verified | high | 100% | 2026-09-08 | Found twice independently (live, and by a static scan following E9). **It reaches RNG_NextFloat by a TAIL JUMP**, which is exactly why ai-turn-logic.md 5's "zero NextFloat calls from the AI module" reads as true and is not. All **29** call sites of the three cl_* RNG facades are inside the AI band, so **the cl_* RNG facade is AI-only surface**. Tail-call thunks have now hidden: the OID allocation chain (B6), a sole caller that made a function look dead (T2), and this |
|
||||
| the instrument caught its OWN defect | meta | verified | high | 100% | 2026-09-08 | RNG_Chance calls RNG_NextFloat and **both were detoured, so one word was counted twice**. `left_delta` was never affected - **which is the reason the lane took two independent measurements**, and why the defect was visible at all. A single-instrument run would have reported the wrong per-site count with no way to notice |
|
||||
| call parity: wire and apply yes, call no (incomplete) | subsystems | mapped | med | 60% | 2026-09-08 | The secondary deliverable, unchallenged but not driven: parity holds at the WIRE and APPLY layers - the server cannot distinguish an AI block from a human one - and breaks at the CALL layer, where there is AI-only surface (the cl_* RNG facade, cl_SetResearchTarget, at least four order methods with no UI caller) and UI-only surface. **PAR did not drive the UI-reachable order methods**, so lane Q's ~22 hypothesis rows stay unconverted. That workload is still wanted |
|
||||
| TRADE + SPY WORKLOAD BUILT - and the tail still does not draw | verify | verified | high | 100% | 2026-09-08 | **Lane L3 cracked the workload three lanes failed at**, on one stock unmodified install from a cold main menu in one session: **20 trade routes by turn 4, 21 by turn 13, and a spy program count=1 on turn 14**. AND THE MEASUREMENT THAT MATTERS: with 21 routes, 6 trade sectors AND a live spy craft, the four outer tail callees are entered **exactly once per turn as always**, and the three inner RNG-bearing callees entered **ZERO** times - that turn and across all seven instrumented turns, every probe `installed=true`. **So the RNG ledger and the standalone's generator model do NOT need extending on account of either container being non-empty. Lane W3's open risk is retired BY EVIDENCE rather than by absence.** The next condition is ACTIVE contents, not present contents: `tsnumflt=0` on every sector (no freighters) and `spyon=0` on the spy (built, never deployed) |
|
||||
| TRADE + SPY WORKLOAD BUILT - and the tail still does not draw | verify | verified | high | 100% | 2026-09-08 | **[SUPERSEDED 2026-09-09 by lane AC: THE TAIL DOES DRAW. This row's negative was true of the state L3 built and false about the code - the gate is a TECH, not container contents. See the AC rows below.]** **Lane L3 cracked the workload three lanes failed at**, on one stock unmodified install from a cold main menu in one session: **20 trade routes by turn 4, 21 by turn 13, and a spy program count=1 on turn 14**. AND THE MEASUREMENT THAT MATTERS: with 21 routes, 6 trade sectors AND a live spy craft, the four outer tail callees are entered **exactly once per turn as always**, and the three inner RNG-bearing callees entered **ZERO** times - that turn and across all seven instrumented turns, every probe `installed=true`. **So the RNG ledger and the standalone's generator model do NOT need extending on account of either container being non-empty. Lane W3's open risk is retired BY EVIDENCE rather than by absence.** The next condition is ACTIVE contents, not present contents: `tsnumflt=0` on every sector (no freighters) and `spyon=0` on the spy (built, never deployed) |
|
||||
| why three lanes failed: it was the research UI, not the tech cost | meta | verified | high | 100% | 2026-09-08 | **Clicking a tech node is a PREVIEW.** The bottom-left button - which lane O read as "Cancel research" - is the **CONFIRM**, and it pops a `Confirm Research` dialog; Esc leaves without confirming. And the tech tree pans only on a **right-button drag of ~600 px**: left-drag, edge-scroll and wheel-zoom all do nothing useful, which is exactly why the screen reads as ignoring input. L3 added drag/rdrag/sdrag/wheel verbs to VM144's click helper. **TWO PREMISES CORRECTED**: a trade station is a +2-routes/+25%-income BONUS, not a prerequisite - `NumTradeRoutesSupported` has a floor of 1 per owned system, so population thresholds scale the count and never gated it; and the spy tender nobody could find is the **Cruiser "Repair and Salvage" mission section**, which nothing in the UI calls a tender or associates with spies. The container grows at **Build Spy while the craft is still docked**, so no enemy colony and no asteroid belt were ever on the critical path |
|
||||
| CORRECTION WITH TEETH: spies2 is not the spy list | objects | verified | high | 100% | 2026-09-08 | **`spies2` is 0 in all 28 systems of a save that DOES have a spy.** The natural reading of lane W's "count 0 in all 11 saves" was "no save ever had one" - **that reading is dead**. Either `spies2` is not the spy list, or it fills only for a DEPLOYED spy. A rule-6 hypothesis that survived because nothing exercised it, now exercised and found wrong |
|
||||
| a config that would have reported a CONFIDENT ZERO | meta | verified | high | 100% | 2026-09-08 | Lane L3 found and fixed a real defect in the watchpoint module: **`hooks=off watch=on` printed `watch=on` and armed NOTHING**. A lane using that combination as its rule-19 control would have logged zero traps and concluded the container never grew - the exact failure family as the stale binary, the shared build dir and the double-counted draw: **no error, no warning, a plausible number**. Its own instrument was byte-neutral: the armed run reproduced the determinism oracle exactly, which doubled as VM144's adoption check |
|
||||
|
|
@ -394,3 +394,10 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
|
|||
| corrections to lane PAR | verify | verified | high | 100% | 2026-09-09 | (1) PAR's site table **omits a live draw site**, 0x00691e9b - which PAR itself measured live at 0x00691ea0 - so the AI turn has **22 live sites, not 21**. (2) "Six of client 32's seven turn-1 words come from the composer" is **five from its body and two from a helper it calls**; all seven are in its subtree. Also: player 512's single cl_RandRange has now cost **1, 2 and 3 words across four observations** - the rejection loop, visible |
|
||||
| the composer's loop has NEVER RUN | verify | backlog | — | 0% | 2026-09-09 | Stated plainly by the lane: `H_obs = 0` on all six composer calls of all four runs, for two different reasons - on turn 1 the weapon lookups gate it, on turn 15 all three calls were price queries returning nine steps earlier. **Four of eight live sites have never fired; two of nine exits have ever been taken.** D/E/G/H are read, not measured. **THE WORKLOAD: a turn where the AI BUILDS (not prices) a design, on hull size > 0, with a point-defence weapon researched.** SD pushed human-turn15-spyprogram at it and still got only price queries; a follow-up should play that game forward until the AI commits a cruiser. **The instrument for it is already committed and cross-built (`w_alt`/`w_def`) but NO RUN HAS USED IT** |
|
||||
| SD self-reported a rule-21 shaped error | meta | verified | high | 100% | 2026-09-09 | Twice it ran `verify/design-rules/stock_designs.py` inside the **shared** sots-re clone to identify a save's players; **the script writes stock_designs.json as a side effect** and it restored the file with `git checkout -- <path>`. Clean afterwards, but that is exactly rule 21's shape - **and it would not have known if another lane had work in flight there.** Worth generalising: a read-only-looking script can have write side effects, so run analysis tools against a copy, not the shared tree |
|
||||
| REVERSAL: THE TAIL DOES DRAW - W3's risk is REALISED | verify | verified | high | 100% | 2026-09-09 | **Lane AC overturns the "retired by evidence" conclusion I reported.** OnAllCombatDone_Tail consumed **1 RNG word per turn** in the state AC built, against **0 in its own control** (same guest, same build, same probe config, one End Turn on L3's turn-15 save, run immediately after). `TradeManager::Slot13RngCalleeA` - **entered 0 times in every measurement any lane had ever taken** - was entered **1x/turn on both instrumented turns**; CalleeB on the turn the roll succeeded; CreateRaidEncounter once. All probes installed=true, watchpoint canary PASS every turn. **THE RNG LEDGER AND THE STANDALONE'S GENERATOR MODEL NEED EXTENDING BY ONE DRAW SITE** |
|
||||
| and the gate is a TECH, not container contents | verify | verified | high | 100% | 2026-09-09 | **Neither freighters nor a deployed spy is in the predicate** - AC disassembled the gate chain BEFORE building the state. `ServerTradeManagerImpl::vslot13` does not iterate routes or sectors; it iterates the **FLEET** vector and requires a fleet whose LocID resolves to a node of kind **2 (TradeSector)**, positioned **bit-equal** to the sector, whose owner's bit is set in the sector's **`tscr`** mask. `tscr` was **252 in every corpus save = exactly the six NPC slots**, and AC's own prediction P6 said that excluded real players and the callees would stay 0. **WRONG, AND INSTRUCTIVELY**: the mask is not fixed. Researching **`CCC_ComRaid` (Commerce Raiding, RP 12,000, one turn off CCC_FTLEcon)** takes tscr **252 -> 253** on every sector and sets the ServerPlayer flag serialised as **`CnRad`**. **The game says so in as many words**: before the tech, `Alpha Fleet cannot raid trade sector.`; after it the same click is accepted. **That dialog is the cheapest test of the whole chain** |
|
||||
| CORRECTION: L3's own save falsified the freighter hypothesis | verify | verified | high | 100% | 2026-09-09 | L3 3.5 says "every trade sector has `tsnumflt = 0`". **Wrong about its own save**: `human-turn15-spyprogram.sav` sector TradeID 816 has **`tsnumflt 1`, `tsflt 2736` - the AI's Freighters fleet, on an active route, across all seven of L3's instrumented turns, with the callees at 0.** So "freighters in service" was falsified BEFORE lane AC started. Also **`tsflt` is not a freighter list** - at turn 20 sector 6 reads tsflt 3744, which is AC's WARSHIP fleet. And lane V2's "trade slot 13 is draw-free" was a statement about the states that occurred (rule 23), not about the code |
|
||||
| spies2 NOT settled, and the deploy state is unreachable in that game | verify | backlog | — | 0% | 2026-09-09 | AC could not deploy a spy and **declined to infer around it**. `ARes2` on ServerSystem **is the asteroid-belt field** (non-zero values 1703-2531 sit inside SYSTEM_MIN/MAX_ASTEROID_RESOURCES 1500-3000); in L3's save only **5 of 28 systems have a belt and NONE is AI-owned** - the textbook deploy target does not exist in that game. **AND L3's "the next condition is spyon" UNDERSTATES IT BY THREE TURNS AND A DETECTION ROLL**: the chain needs `deat != 0`, then `sdet` set by a detection roll on an EARLIER turn, then `turn - sdet >= 3`. **That detection roll is itself an RNG draw, inline in vslot13, not inside P** - so a probe on P reading 0 does not mean the spy half is draw-free |
|
||||
| AC's coverage caveat, stated | verify | backlog | — | 0% | 2026-09-09 | Two turns, one fleet, one sector, one ship. **`Slot13RngCalleeA` has a short-circuit (`design+0x12c > 1` returns true without rolling) that AC's hull did not exercise**, so a different raider could cost **0 words while still firing B**. The one-word-per-turn figure is this raider's, not the site's |
|
||||
| ratchet warning: AC's saves carry new content | verify | backlog | — | 0% | 2026-09-09 | `ac-turn20-raider.sav` and `ac-turn22-raider.sav` (both --strict clean) carry **`CnRad`, `tscr = 253`, three `rt` route records, and a StarFleet whose `LocID` is a TradeSector id - the first fleet in the corpus located anywhere but a star.** Expect the coverage ratchet to break (rule 27); that is the content to type |
|
||||
| LAB: jmove reads but does not commit; static-link the shim | meta | verified | high | 100% | 2026-09-09 | **`jmove` (jiggle) is required to READ the star-map hover readout but SILENTLY FAILS TO COMMIT a move** - use plain `click` to confirm, and verify the order from `Flt.LocID` in the autosave, never from the fleet panel. And on the WSL dev box the mingw toolchain links **posix-threads**, so the shim DLL imports libwinpthread-1.dll and **the game dies at load with 0xC0000135 and NO LOG AT ALL**; `-DCMAKE_SHARED_LINKER_FLAGS=-static` fixes it. AC did not change the toolchain file - flagged for the integrator |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue