rrt/artifacts/exports/rt3-1.06/runtime-effect-kind8-tier2-named-availability-note.md

7.2 KiB

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