Add queue exports for Tier-2 and dispatch control lanes

This commit is contained in:
Jan Petykiewicz 2026-04-21 17:23:17 -07:00
commit 556335238e
8 changed files with 2566 additions and 4 deletions

View file

@ -31,6 +31,8 @@ Canonical derived outputs for the patch 1.06 executable.
- `event-effects-building-bindings.json`
- `economy-cargo-sources.json`
- `building-type-sources.json`
- `candidate-table-named-runs.json`
- `compact-event-dispatch-cluster-counts.json`
- `selected-year-bucket-ladder.json`
## Subgraphs and Branch Notes

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,215 @@
{
"root_path": "rt3_wineprefix/drive_c/rt3_105/maps",
"report": {
"maps_scanned": 41,
"maps_with_event_runtime_collection": 41,
"maps_with_dispatch_strip_records": 38,
"dispatch_strip_record_count": 318,
"dispatch_strip_records_with_trigger_kind": 0,
"dispatch_strip_records_missing_trigger_kind": 318,
"dispatch_strip_payload_families": {
"real_packed_nondirect_compact_v1": 318
},
"dispatch_descriptor_occurrence_counts": {
"1 Player Cash": 3,
"16 Company Track Pieces Buildable": 5,
"39 Game Variable 1": 46,
"40 Game Variable 2": 19,
"41 Game Variable 3": 16,
"42 Game Variable 4": 17,
"43 Company Variable 1": 46,
"44 Company Variable 2": 34,
"45 Company Variable 3": 40,
"46 Company Variable 4": 36,
"47 Player Variable 1": 24,
"48 Player Variable 2": 2,
"49 Player Variable 3": 4,
"50 Player Variable 4": 5,
"506 Add Building Barracks": 2,
"507 Add Building Bauxite Mine": 1,
"52 Territory Variable 2": 1,
"521 Add Building FarmGrain": 2,
"526 Add Building Furniture Factory": 1,
"528 Add Building Logging Camp": 2,
"54 Territory Variable 4": 9,
"548 Add Building Port01": 1,
"563 Add Building Warehouse05": 1,
"8 Economic Status": 47
},
"dispatch_descriptor_map_counts": {
"1 Player Cash": 3,
"16 Company Track Pieces Buildable": 4,
"39 Game Variable 1": 22,
"40 Game Variable 2": 9,
"41 Game Variable 3": 8,
"42 Game Variable 4": 8,
"43 Company Variable 1": 25,
"44 Company Variable 2": 22,
"45 Company Variable 3": 18,
"46 Company Variable 4": 19,
"47 Player Variable 1": 12,
"48 Player Variable 2": 2,
"49 Player Variable 3": 3,
"50 Player Variable 4": 3,
"506 Add Building Barracks": 1,
"507 Add Building Bauxite Mine": 1,
"52 Territory Variable 2": 1,
"521 Add Building FarmGrain": 1,
"526 Add Building Furniture Factory": 1,
"528 Add Building Logging Camp": 1,
"54 Territory Variable 4": 1,
"548 Add Building Port01": 1,
"563 Add Building Warehouse05": 1,
"8 Economic Status": 13
},
"unknown_descriptor_ids": [],
"unknown_descriptor_special_condition_label_matches": [],
"add_building_dispatch_record_count": 10,
"add_building_dispatch_records_with_trigger_kind": 0,
"add_building_dispatch_records_missing_trigger_kind": 10,
"add_building_descriptor_occurrence_counts": {
"506 Add Building Barracks": 2,
"507 Add Building Bauxite Mine": 1,
"521 Add Building FarmGrain": 2,
"526 Add Building Furniture Factory": 1,
"528 Add Building Logging Camp": 2,
"548 Add Building Port01": 1,
"563 Add Building Warehouse05": 1
},
"add_building_descriptor_map_counts": {
"506 Add Building Barracks": 1,
"507 Add Building Bauxite Mine": 1,
"521 Add Building FarmGrain": 1,
"526 Add Building Furniture Factory": 1,
"528 Add Building Logging Camp": 1,
"548 Add Building Port01": 1,
"563 Add Building Warehouse05": 1
},
"add_building_row_shape_occurrence_counts": {
"[0:8:-25,0:8:0,0:8:0]": 4,
"[0:8:0,0:8:0,0:8:0,0:8:0]": 1,
"[0:8:0,0:8:0,0:8:0]": 1,
"[0:8:0]": 4
},
"add_building_row_shape_map_counts": {
"[0:8:-25,0:8:0,0:8:0]": 1,
"[0:8:0,0:8:0,0:8:0,0:8:0]": 1,
"[0:8:0,0:8:0,0:8:0]": 1,
"[0:8:0]": 3
},
"add_building_signature_family_occurrence_counts": {
"nondirect-ge1e-h0001-0007-0000-5200-0200-p0000-0000-0000-ffff": 1,
"nondirect-ge1e-h0001-0007-0000-6d00-0200-p0000-0000-0000-ffff": 1,
"nondirect-ge1e-h0001-ffff-0004-0000-0200-p0000-0000-0000-ffff": 3,
"nondirect-ge34-h0002-0007-0004-7300-0200-p0000-0000-ffff-ffff": 1,
"nondirect-ge34-h0002-0007-0004-7500-0200-p0000-0000-ffff-ffff": 1,
"nondirect-ge34-h0002-0007-0004-7b00-0200-p0000-0000-ffff-ffff": 1,
"nondirect-ge34-h0002-0007-0004-8500-0200-p0000-0000-ffff-ffff": 1,
"nondirect-ge34-h0002-0022-0000-3200-0200-p0000-0000-0000-ffff": 1
},
"add_building_signature_family_map_counts": {
"nondirect-ge1e-h0001-0007-0000-5200-0200-p0000-0000-0000-ffff": 1,
"nondirect-ge1e-h0001-0007-0000-6d00-0200-p0000-0000-0000-ffff": 1,
"nondirect-ge1e-h0001-ffff-0004-0000-0200-p0000-0000-0000-ffff": 2,
"nondirect-ge34-h0002-0007-0004-7300-0200-p0000-0000-ffff-ffff": 1,
"nondirect-ge34-h0002-0007-0004-7500-0200-p0000-0000-ffff-ffff": 1,
"nondirect-ge34-h0002-0007-0004-7b00-0200-p0000-0000-ffff-ffff": 1,
"nondirect-ge34-h0002-0007-0004-8500-0200-p0000-0000-ffff-ffff": 1,
"nondirect-ge34-h0002-0022-0000-3200-0200-p0000-0000-0000-ffff": 1
},
"add_building_condition_tuple_occurrence_counts": {
"[-1:4]": 3,
"[34:0,130:4]": 1,
"[7:0]": 2,
"[7:4,42:0]": 4
},
"add_building_condition_tuple_map_counts": {
"[-1:4]": 2,
"[34:0,130:4]": 1,
"[7:0]": 2,
"[7:4,42:0]": 1
},
"add_building_signature_condition_cluster_occurrence_counts": {
"nondirect-ge1e-h0001-0007-0000-5200-0200-p0000-0000-0000-ffff :: [7:0]": 1,
"nondirect-ge1e-h0001-0007-0000-6d00-0200-p0000-0000-0000-ffff :: [7:0]": 1,
"nondirect-ge1e-h0001-ffff-0004-0000-0200-p0000-0000-0000-ffff :: [-1:4]": 3,
"nondirect-ge34-h0002-0007-0004-7300-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": 1,
"nondirect-ge34-h0002-0007-0004-7500-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": 1,
"nondirect-ge34-h0002-0007-0004-7b00-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": 1,
"nondirect-ge34-h0002-0007-0004-8500-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": 1,
"nondirect-ge34-h0002-0022-0000-3200-0200-p0000-0000-0000-ffff :: [34:0,130:4]": 1
},
"add_building_signature_condition_cluster_map_counts": {
"nondirect-ge1e-h0001-0007-0000-5200-0200-p0000-0000-0000-ffff :: [7:0]": 1,
"nondirect-ge1e-h0001-0007-0000-6d00-0200-p0000-0000-0000-ffff :: [7:0]": 1,
"nondirect-ge1e-h0001-ffff-0004-0000-0200-p0000-0000-0000-ffff :: [-1:4]": 2,
"nondirect-ge34-h0002-0007-0004-7300-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": 1,
"nondirect-ge34-h0002-0007-0004-7500-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": 1,
"nondirect-ge34-h0002-0007-0004-7b00-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": 1,
"nondirect-ge34-h0002-0007-0004-8500-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": 1,
"nondirect-ge34-h0002-0022-0000-3200-0200-p0000-0000-0000-ffff :: [34:0,130:4]": 1
},
"add_building_signature_condition_cluster_descriptor_keys": {
"nondirect-ge1e-h0001-0007-0000-5200-0200-p0000-0000-0000-ffff :: [7:0]": [
"563 Add Building Warehouse05"
],
"nondirect-ge1e-h0001-0007-0000-6d00-0200-p0000-0000-0000-ffff :: [7:0]": [
"548 Add Building Port01"
],
"nondirect-ge1e-h0001-ffff-0004-0000-0200-p0000-0000-0000-ffff :: [-1:4]": [
"16 Company Track Pieces Buildable",
"39 Game Variable 1",
"40 Game Variable 2",
"41 Game Variable 3",
"42 Game Variable 4",
"43 Company Variable 1",
"44 Company Variable 2",
"46 Company Variable 4",
"47 Player Variable 1",
"48 Player Variable 2",
"49 Player Variable 3",
"50 Player Variable 4",
"506 Add Building Barracks",
"507 Add Building Bauxite Mine"
],
"nondirect-ge34-h0002-0007-0004-7300-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": [
"528 Add Building Logging Camp"
],
"nondirect-ge34-h0002-0007-0004-7500-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": [
"521 Add Building FarmGrain"
],
"nondirect-ge34-h0002-0007-0004-7b00-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": [
"521 Add Building FarmGrain"
],
"nondirect-ge34-h0002-0007-0004-8500-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": [
"528 Add Building Logging Camp"
],
"nondirect-ge34-h0002-0022-0000-3200-0200-p0000-0000-0000-ffff :: [34:0,130:4]": [
"526 Add Building Furniture Factory"
]
},
"add_building_signature_condition_cluster_non_add_building_descriptor_keys": {
"nondirect-ge1e-h0001-0007-0000-5200-0200-p0000-0000-0000-ffff :: [7:0]": [],
"nondirect-ge1e-h0001-0007-0000-6d00-0200-p0000-0000-0000-ffff :: [7:0]": [],
"nondirect-ge1e-h0001-ffff-0004-0000-0200-p0000-0000-0000-ffff :: [-1:4]": [
"16 Company Track Pieces Buildable",
"39 Game Variable 1",
"40 Game Variable 2",
"41 Game Variable 3",
"42 Game Variable 4",
"43 Company Variable 1",
"44 Company Variable 2",
"46 Company Variable 4",
"47 Player Variable 1",
"48 Player Variable 2",
"49 Player Variable 3",
"50 Player Variable 4"
],
"nondirect-ge34-h0002-0007-0004-7300-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": [],
"nondirect-ge34-h0002-0007-0004-7500-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": [],
"nondirect-ge34-h0002-0007-0004-7b00-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": [],
"nondirect-ge34-h0002-0007-0004-8500-0200-p0000-0000-ffff-ffff :: [7:4,42:0]": [],
"nondirect-ge34-h0002-0022-0000-3200-0200-p0000-0000-0000-ffff :: [34:0,130:4]": []
}
}
}

View file

@ -64,6 +64,30 @@ The broader `compare-candidate-table` surface agrees with the same conclusion:
- `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 Export Join
The checked-in Tier-2 evidence set now joins three canonical exports directly:
- `artifacts/exports/rt3-1.06/building-type-sources.json`
- `artifacts/exports/rt3-1.06/event-effects-building-bindings.json`
- `artifacts/exports/rt3-1.06/candidate-table-named-runs.json`
Taken together they keep the current frontier narrow and concrete:
- `building-type-sources.json` still shows the stock `Data/BuildingTypes` corpus only owns the
bare source stems `port` and `warehouse`; the numbered `port00..11` / `warehouse00..11`
families remain binding-only canonical stems rather than stock numbered assets.
- `event-effects-building-bindings.json` is still the checked event-side naming surface that
proves those numbered `Port%02d` / `Warehouse%02d` families matter to runtime dispatch.
- `candidate-table-named-runs.json` now shows the shipped `37` probe-bearing maps split into two
stable `00`-row families while keeping `Port01..11` fixed at rows `45..55` and
`Warehouse01..11` fixed at rows `56..66` in every probe-bearing map.
So the open question is no longer whether the numbered families exist in stock assets, bindings,
or shipped candidate tables. The real remaining question is which earlier seed/projection seam
lets that fixed candidate-table cluster reach `0x00412d70` with nonzero bank-qualified state
before `0x00419230` ever clones or renames it.
## Current Implication
The Tier 2 candidate/world-state rebuild strip remains plausible in general because it owns named
@ -179,6 +203,9 @@ That makes the next Tier 2 question more concrete still:
drives 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
- and, more concretely, which earlier seed/projection seam lets candidate-table rows
`35/43/45..66` reach `0x00412d70` with nonzero `[candidate+0xba/+0xbb]` before the later
rebank-or-clone owner `0x00419230` consumes them
## Later Consumer-Side Reads Already Narrowed

View file

@ -35,6 +35,8 @@ pub const REQUIRED_EXPORTS: &[&str] = &[
"artifacts/exports/rt3-1.06/event-effects-building-bindings.json",
"artifacts/exports/rt3-1.06/event-effects-semantic-catalog.json",
"artifacts/exports/rt3-1.06/building-type-sources.json",
"artifacts/exports/rt3-1.06/candidate-table-named-runs.json",
"artifacts/exports/rt3-1.06/compact-event-dispatch-cluster-counts.json",
"artifacts/exports/rt3-1.06/economy-cargo-sources.json",
"artifacts/exports/rt3-1.06/selected-year-bucket-ladder.json",
];

View file

@ -49,7 +49,7 @@ pub(super) fn push_acquisition_frontier_notes(
.to_string(),
);
notes.push(
"Installed-map cluster counts now sharpen that candidate lane too: the current rt3_105/maps corpus has 41 bundled maps, 38 of them with dispatch-strip rows, and 318 dispatch-strip records total, all still on the non-direct compact family with null trigger kind. The add-building subset inside that corpus is narrower still at 10 grouped occurrences across 7 recovered descriptor keys (Barracks, Bauxite Mine, FarmGrain, Furniture Factory, Logging Camp, Port01, Warehouse05), again all with null trigger kind. So the open question is no longer whether ordinary loaded rows can reach the 0x00431b20 strip at scale; it is specifically how any of those rows acquire or bypass the missing trigger-kind control lane."
"Installed-map cluster counts now sharpen that candidate lane too: the checked-in export `artifacts/exports/rt3-1.06/compact-event-dispatch-cluster-counts.json` now captures the current rt3_105/maps corpus at 41 bundled maps, 38 of them with dispatch-strip rows, and 318 dispatch-strip records total, all still on the non-direct compact family with null trigger kind. The add-building subset inside that corpus is narrower still at 10 grouped occurrences across 7 recovered descriptor keys (Barracks, Bauxite Mine, FarmGrain, Furniture Factory, Logging Camp, Port01, Warehouse05), again all with null trigger kind. So the open question is no longer whether ordinary loaded rows can reach the 0x00431b20 strip at scale; it is specifically how any of those rows acquire or bypass the missing trigger-kind control lane."
.to_string(),
);
notes.push(

View file

@ -1252,6 +1252,12 @@
`Port01..11` and `Warehouse01..11` runs stay fixed at rows `45..55` and `56..66` in every
probe-bearing map. Trailer families split independently too: `28` maps keep the numbered rows
on trailer `0x00000001`, while `9` maps keep the same row layout but zero the same trailers.
The checked-in evidence join is explicit now too:
`artifacts/exports/rt3-1.06/building-type-sources.json` still bounds the stock side to bare
`port` / `warehouse`, `artifacts/exports/rt3-1.06/event-effects-building-bindings.json` keeps
the numbered `Port%02d` / `Warehouse%02d` dispatch family grounded on the event side, and the
new `artifacts/exports/rt3-1.06/candidate-table-named-runs.json` export keeps the scenario-side
row families grounded across the shipped `37`-map probe-bearing corpus.
Raw string presence is broader than that actual fixed-candidate-table seam too: `Port00`
appears in all `41` shipped `.gmp` files, but `Central Pacific.gmp`, `Italy.gmp`,
`Tex-Mex.gmp`, and `Texas Tea.gmp` do not expose the fixed candidate-table header at all. So
@ -1425,6 +1431,10 @@
`0x0050a1cd` keeps the same seeded rows out of one later availability branch. So the remaining
Tier-2 seed question is now sharper: which source/live rows become the first seeded rows that let
`0x00412d70` propagate nonzero bank bytes within that clone family?
The same question can now be stated against the fixed shipped scenario rows too: which earlier
seed/projection seam lets candidate-table rows `35/43/45..66` reach `0x00412d70` with nonzero
`[candidate+0xba/+0xbb]` before the later rebank-or-clone strip `0x00419230` ever consumes
them?
The later rebank-or-clone owner is bounded now too. Direct disassembly of `0x00419230` shows one
outer pass over bank selector `0` then `1`, with an inner `12`-ordinal sweep for each pass. For
each `(bank, ordinal)` pair it scans already-linked aux/source rows by owner candidate id

View file

@ -10,9 +10,10 @@ This file is the short active queue for the current runtime and reverse-engineer
## Current Active Items
- Keep the periodic-company trace as the main shellless simulation frontier.
- Push the next static/rehost slice through the near-city industry acquisition owner seam under `0x004014b0`.
- Keep the building style-family source pass focused on `0x004196c0 -> 0x00414490 -> 0x00416ce0 -> 0x00419230`.
- Keep the periodic-company trace as the main shellless simulation frontier, with the next concrete control-lane pass focused on the ordinary loaded runtime-effect strip `0x00444d92 -> 0x00432f40(kind 8) -> 0x004323a0 -> 0x00431b20`.
The checked `rt3_105/maps` compact-dispatch corpus is now exported directly: `41` maps scanned, `38` with dispatch-strip rows, `318` nondirect rows total, and the add-building subset is only `10` grouped occurrences across `7` descriptor keys, all still missing trigger kind. The active open question is therefore which ordinary loaded rows acquire or bypass the missing trigger-kind control lane before they can reach placed-structure mutation opcodes.
- Keep the next static Tier-2 building pass focused on the earlier seed/projection seam into `0x00412d70`, not another broad `BuildingTypes` sweep.
The grounded owner strip is `0x004196c0 -> 0x00414490 -> 0x00416ce0 -> 0x00419230`, but the active open question is which earlier seed/projection path lets the fixed candidate-table cluster at rows `35/43/45..66` reach `0x00412d70` with nonzero `[candidate+0xba/+0xbb]` before `0x00419230` clones or renames it.
## Preserved Detail