diff --git a/docs/re/live-unit-definitions.md b/docs/re/live-unit-definitions.md index 4425796..697c978 100644 --- a/docs/re/live-unit-definitions.md +++ b/docs/re/live-unit-definitions.md @@ -1,5 +1,12 @@ # Live unit definitions from a running Stage 02 (2026-08-12) +> ❌ **CORRECTION (2026-08-26):** "Route B — 13 defaulted fields read out of the +> running game" is **withdrawn**. All 13 `Size_Y` values are on the disc, each +> *exactly equal* to the value the runtime run "recovered". Nothing was recovered +> that the disc did not already hold; the run confirms only that the parser reads +> the disc. Measured: **0 of 114** objects with a `Generic.Type` are missing any +> of `Size_X/Y/Z/HP`. +> > ❌ **CORRECTION (2026-08-25):** the **`Size_Y` inherits `Size_X`** rule this > file supports is **WITHDRAWN**. `Size_Y` is on disc for **114 / 114** unit > tables and **differs** from `Size_X` in **90** of them. The old reader missed diff --git a/docs/re/structures/unit-struct-runtime.md b/docs/re/structures/unit-struct-runtime.md index 7bd6dda..f99e6a0 100644 --- a/docs/re/structures/unit-struct-runtime.md +++ b/docs/re/structures/unit-struct-runtime.md @@ -1,5 +1,37 @@ # Runtime `Unit` struct (craft / vessel definitions) — read from live guest memory +> ## ❌ CORRECTION (2026-08-26) — "defaulted on disc" is false here too +> +> The player-craft table below lists ~30 fields as *defaulted on disc* and gives +> values "recovered from the running game". **All of them are on the disc**, at +> exactly those values — the [record table](idxd-container.md) reads them +> directly. Verified for `UN_f001_TCAF_DeltaSaber_T`: +> +> | field | record | on disc | +> |---|---|---| +> | `Size_Radius` | `Generic` | 10.0 | +> | `FCSRange` | `Generic` | 500000.0 | +> | `ResistanceToOptics` / `HQRatio` / `ShieldRatio` / `ThrusterRatio` | `Generic` | 1.0 | +> | `ResistanceToShell` / `ResistanceToExplosion` | `Generic` | 1.0 | +> | `MassScore` | `Generic` | 0 | +> | `ChargeSpeed` / `ChargeDelay_Break` | **`Shield`** | 25.0 / 10.0 | +> | `DryMass` | **`Mass`** | 100.0 | +> | `LowerHPThresholdRatio` | **`SE`** | 0.3 | +> +> Look at the record column: the values are spread across `Generic`, `Shield`, +> `Mass` and `SE`. That is *why* the old flat reader missed them — it had no way +> to say which record it meant, so a per-record field read as absent. +> +> ❌ **"18 of the 23 vessel records are missing at least one of `Size_X/Y/Z/HP`, +> nearly always `Size_Y`"** is also wrong. Measured over every object with a +> `Generic.Type`: **43 Craft + 71 Vessel = 114 objects, and 0 of them are missing +> any of the four.** +> +> The runtime capture stands as measurement; what is withdrawn is the premise +> that it was reaching values the disc does not hold. See also +> [idxd-legacy-reader-audit](../idxd-legacy-reader-audit.md). + + **Confidence: ✅ CONFIRMED** for the 27 fields marked ✅ below (each binding is reproduced by 10–21 independent disc records, on ≥3 distinct values, with **zero** contradictions), plus the Maneuver block's declaration-order layout