# Runtime Effect Kind-8 Tier2 Named Availability Note This note records the current named-candidate availability comparison between the strongest title-overlap pair: - `Louisiana.gmp` - `Dutchlantis.gmp` The comparison uses the checked `rt3_105_save_name_table_probe` surface from `inspect-smp`. ## Immediate Result `Warehouse05` is **not** the differentiator. Observed values: - `Warehouse05` - `Louisiana.gmp = 1` - `Dutchlantis.gmp = 1` - `Port01` - `Louisiana.gmp = 1` - `Dutchlantis.gmp = 1` - `Furniture Factory` - `Louisiana.gmp = 1` - `Dutchlantis.gmp = 1` - `FarmGrain` - `Louisiana.gmp = 1` - `Dutchlantis.gmp = 1` - `Logging Camp` - `Louisiana.gmp = 1` - `Dutchlantis.gmp = 1` So the strongest current `Louisiana -> Dutchlantis` title overlap does not also come with a unique `Warehouse05` availability toggle that would directly explain the one-row `Add Building Warehouse05` dispatch cluster in `Louisiana.gmp`. ## Full Named-Availability Differences The current comparison shows `18` differing names: - `AluminumMill`: `Louisiana = 0`, `Dutchlantis = 1` - `AutoPlant`: `Louisiana = 0`, `Dutchlantis = 1` - `Bauxite Mine`: `Louisiana = 0`, `Dutchlantis = 1` - `Chemical Plant`: `Louisiana = 0`, `Dutchlantis = 1` - `Farm Corn`: `Louisiana = 1`, `Dutchlantis = 0` - `FarmCotton`: `Louisiana = 1`, `Dutchlantis = 0` - `FarmRice`: `Louisiana = 1`, `Dutchlantis = 0` - `FarmSheep`: `Louisiana = 0`, `Dutchlantis = 1` - `FarmSugar`: `Louisiana = 1`, `Dutchlantis = 0` - `Fertilizer Factory`: `Louisiana = 0`, `Dutchlantis = 1` - `Iron Mine`: `Louisiana = 0`, `Dutchlantis = 1` - `Nuclear Power Plant`: `Louisiana = 0`, `Dutchlantis = 1` - `Oil Refinery`: `Louisiana = 1`, `Dutchlantis = 0` - `Plastics Factory`: `Louisiana = 0`, `Dutchlantis = 1` - `Recycling Plant`: `Louisiana = 0`, `Dutchlantis = 1` - `Steel Mill`: `Louisiana = 0`, `Dutchlantis = 1` - `Tool And Die`: `Louisiana = 0`, `Dutchlantis = 1` - `Uranium Mine`: `Louisiana = 0`, `Dutchlantis = 1` The broader `compare-candidate-table` surface agrees with the same conclusion: - common semantic family remains `scenario-named-candidate-availability-table` - `Warehouse05` stays `1 / 1` - `difference_count = 43`, but those differences are still driven by the wider industrial mix, header words, and the zero-trailer-name set rather than by any unique `Warehouse05` bit ## Current Implication The Tier 2 candidate/world-state rebuild strip remains plausible in general because it owns named candidate availability seeding and refresh, but the current evidence no longer supports the narrow claim that `Louisiana.gmp` gets its `Add Building Warehouse05` row from a unique `Warehouse05` availability difference relative to `Dutchlantis.gmp`. Two deeper grounded notes tighten that further: - `structure_candidate_collection_rebuild_runtime_records_from_scenario_state` `0x00412d70` does **not** consult the scenario-side recipe-book name at `[state+0x0fe8]`; it formats the rebuilt candidate display stem from one of two fixed built-in roots `0x005c93d8` or `0x005c93e8` plus the current ordinal. - `scenario_state_upsert_named_candidate_availability_record_and_refresh_runtime_filters` `0x00434f20` now reads safely as a real boolean availability override writer rather than a wider mode enum. So the next Tier 2 recovery question is now tighter still: - whether the relevant difference is in broader candidate-state rebuild sequencing, latch refresh, or cargo-membership/runtime-record reconstruction under `0x00437737 / 0x00412c10 / 0x00412bd0 / 0x00412d70 / 0x00412fb0`, rather than in the direct named availability bit for `Warehouse05` itself. ## Nearest Single-Import Peer Check The same boundary now holds against the nearest single-import recipe peer too: - `Louisiana.gmp` - `South East USA.gmp` Direct `inspect-candidate-table` checks still keep the key port/warehouse rows aligned: - `Warehouse05` - `Louisiana.gmp = 1` - `South East USA.gmp = 1` - `Port01` - `Louisiana.gmp = 1` - `South East USA.gmp = 1` So even after the recipe-side frontier moved from “same coarse mode shape” to “same single-import family,” the direct named-availability table still does not provide the missing Tier 2 split for the shipped `5200 :: [7:0]` `Add Building Warehouse05` row. That leaves the same later owners as the honest next focus: - `0x00412d70` template-bank and runtime-record rebuild - `0x00411ce0 / 0x00411ee0` dependent mode-flag and cargo-summary refresh - `0x00412c10` latch refresh after those runtime records already exist ## Port Versus Warehouse Runtime Roots One broader binary pass now closes the fixed-root ambiguity inside `0x00412d70`. Direct `objdump` over `RT3.exe` shows the two built-in format roots are: - `0x005c93d8 = "Warehouse%02d"` - `0x005c93e8 = "Port%02d"` And the candidate rebuild chooses between them exactly as: - if `[candidate+0xba] != 0` - use `Port%02d` - else - use `Warehouse%02d` So the later Tier 2 runtime-record frontier is no longer an abstract “two built-in roots” question. It is specifically: - how `0x00412d70` bank or template selection and the live availability bytes `[candidate+0xba/+0xbb]` determine which rebuilt candidates land on the `Warehouse%02d` side versus the `Port%02d` side - and why the `Warehouse%02d` side in `Louisiana.gmp` is the one that later lines up with the shipped `5200 :: [7:0]` `Add Building Warehouse05` strip That also keeps the direct named-availability boundary honest: - `Warehouse05 = 1` in the fixed scenario table still does not explain the runtime split by itself - the next meaningful owner seam is the later port-versus-warehouse runtime-record rebuild under `0x00412d70`, before `0x00412c10` mirrors anything into `[candidate+0x7ac]` ## Writer-Side Split Above The Availability Bytes One more direct disassembly pass narrows that owner seam further. `structure_candidate_stream_load_runtime_record_and_rebuild_cargo_state` `0x004120b0` does rebuild a substantial portion of each live candidate record: - clears dependent runtime pointers and flags such as `[candidate+0x79c/+0x7a0/+0x78c/+0x790/+0x794/+0x7b0]` - reads the fixed per-record stream fields at `[candidate+0x04/+0x22/+0x26/+0x28/+0x2a/+0x2e/+0x32/+0x33]` - allocates and streams the packed `0xbc` descriptor array into `[candidate+0x37]` But in the checked `0x004120b0` body there is still **no** write to: - `[candidate+0xba]` - `[candidate+0xbb]` So the current strongest ownership split is now: - direct named-availability table `[state+0x66b2]` is not the missing differentiator by itself - per-record stream-load `0x004120b0` is also not where the port-versus-warehouse availability bytes are authored - the surviving writer-side frontier is the later template-bank path in `0x00412d70`, where the imported record is cloned or reused against one bank-qualified live candidate before the runtime descriptor and membership rebuilds run That makes the next Tier 2 question more concrete still: - how the bank-qualified template source selected under `[candidate+0xba]` versus `[candidate+0xbb]` seeds the later `Warehouse%02d` side in `Louisiana.gmp` - and whether that preserved bank/template state is the real bridge from the minimal recipe cluster to the shipped `5200 :: [7:0]` `Add Building Warehouse05` row