Promote Tier2 row and trailer crossover matrix
This commit is contained in:
parent
e0115dded4
commit
08819c19a4
6 changed files with 139 additions and 11 deletions
|
|
@ -2397,5 +2397,58 @@
|
|||
"rt3_wineprefix/drive_c/rt3/maps/State of Germany.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/War Effort.gmp"
|
||||
]
|
||||
},
|
||||
"row_pair_and_numbered_trailer_family_map_counts": {
|
||||
"10/18 :: 0x00000000": 4,
|
||||
"10/18 :: 0x00000001": 3,
|
||||
"35/43 :: 0x00000000": 5,
|
||||
"35/43 :: 0x00000001": 25
|
||||
},
|
||||
"row_pair_and_numbered_trailer_family_map_paths": {
|
||||
"10/18 :: 0x00000000": [
|
||||
"rt3_wineprefix/drive_c/rt3/maps/East Coast, USA.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Germany.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/State of Germany.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/War Effort.gmp"
|
||||
],
|
||||
"10/18 :: 0x00000001": [
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Crossing the Alps.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Go West!.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Rhodes Unfinished.gmp"
|
||||
],
|
||||
"35/43 :: 0x00000000": [
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Britain.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/British Isles.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Greenland Growing.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Ireland.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Spanish Mainline.gmp"
|
||||
],
|
||||
"35/43 :: 0x00000001": [
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Alternate USA.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Argentina Opens Up.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/California Island.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Chicago to New York.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Coast to Coast.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Dutchlantis.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/East of Mississippi.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Eastern Canada.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Eastern China.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/France.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Germantown.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Japan Trembles.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Louisiana.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Mexico.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Mississippi Valley.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/New Beginnings.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Orient Express.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Pacific Coastal.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Pacific NW.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Poland.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Russia.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/South East Australia.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/South East USA.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Southern Pacific.gmp",
|
||||
"rt3_wineprefix/drive_c/rt3/maps/Third Republic.gmp"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,6 +84,11 @@ Taken together they keep the current frontier narrow and concrete:
|
|||
split visible directly, `port00_warehouse00_row_pair_map_paths` keeps the carrier maps checked
|
||||
in, and the same export also keeps `files_with_port01_11_run_at_45_55_count = 37` plus
|
||||
`files_with_warehouse01_11_run_at_56_66_count = 37` across the whole probe-bearing corpus.
|
||||
- the same export now keeps the row/trailer crossover explicit too:
|
||||
`row_pair_and_numbered_trailer_family_map_counts` records
|
||||
`35/43 :: 0x00000001 -> 25 maps`, `35/43 :: 0x00000000 -> 5 maps`,
|
||||
`10/18 :: 0x00000000 -> 4 maps`, and `10/18 :: 0x00000001 -> 3 maps`, so the off-row family
|
||||
does not collapse to one numbered trailer lane.
|
||||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -67,6 +67,8 @@ pub(crate) struct RuntimeCandidateTableNamedRunScanReport {
|
|||
pub(crate) port00_warehouse00_row_pair_map_paths: BTreeMap<String, Vec<String>>,
|
||||
pub(crate) numbered_port_warehouse_trailer_family_map_counts: BTreeMap<String, usize>,
|
||||
pub(crate) numbered_port_warehouse_trailer_family_map_paths: BTreeMap<String, Vec<String>>,
|
||||
pub(crate) row_pair_and_numbered_trailer_family_map_counts: BTreeMap<String, usize>,
|
||||
pub(crate) row_pair_and_numbered_trailer_family_map_paths: BTreeMap<String, Vec<String>>,
|
||||
pub(crate) skipped_file_count: usize,
|
||||
pub(crate) samples: Vec<RuntimeCandidateTableNamedRunScanSample>,
|
||||
}
|
||||
|
|
@ -79,6 +81,8 @@ struct RuntimeCandidateTableNamedRunAggregates {
|
|||
port00_warehouse00_row_pair_map_paths: BTreeMap<String, Vec<String>>,
|
||||
numbered_port_warehouse_trailer_family_map_counts: BTreeMap<String, usize>,
|
||||
numbered_port_warehouse_trailer_family_map_paths: BTreeMap<String, Vec<String>>,
|
||||
row_pair_and_numbered_trailer_family_map_counts: BTreeMap<String, usize>,
|
||||
row_pair_and_numbered_trailer_family_map_paths: BTreeMap<String, Vec<String>>,
|
||||
}
|
||||
|
||||
pub(crate) fn scan_candidate_table_headers(
|
||||
|
|
@ -227,6 +231,10 @@ pub(crate) fn scan_candidate_table_named_runs(
|
|||
.numbered_port_warehouse_trailer_family_map_counts,
|
||||
numbered_port_warehouse_trailer_family_map_paths: aggregates
|
||||
.numbered_port_warehouse_trailer_family_map_paths,
|
||||
row_pair_and_numbered_trailer_family_map_counts: aggregates
|
||||
.row_pair_and_numbered_trailer_family_map_counts,
|
||||
row_pair_and_numbered_trailer_family_map_paths: aggregates
|
||||
.row_pair_and_numbered_trailer_family_map_paths,
|
||||
skipped_file_count,
|
||||
samples,
|
||||
};
|
||||
|
|
@ -435,22 +443,24 @@ fn build_named_run_aggregates(
|
|||
aggregates.files_with_warehouse01_11_run_at_56_66_count += 1;
|
||||
}
|
||||
|
||||
if let (Some(port00_run), Some(warehouse00_run)) = (
|
||||
let row_pair_key = if let (Some(port00_run), Some(warehouse00_run)) = (
|
||||
find_named_run_by_names(&sample.port_runs, "Port00", "Port00", 1),
|
||||
find_named_run_by_names(&sample.warehouse_runs, "Warehouse00", "Warehouse00", 1),
|
||||
) {
|
||||
let row_pair_key =
|
||||
format!("{}/{}", port00_run.start_index, warehouse00_run.start_index);
|
||||
let row_pair_key = format!("{}/{}", port00_run.start_index, warehouse00_run.start_index);
|
||||
*aggregates
|
||||
.port00_warehouse00_row_pair_map_counts
|
||||
.entry(row_pair_key.clone())
|
||||
.or_insert(0) += 1;
|
||||
aggregates
|
||||
.port00_warehouse00_row_pair_map_paths
|
||||
.entry(row_pair_key)
|
||||
.entry(row_pair_key.clone())
|
||||
.or_default()
|
||||
.push(sample.path.clone());
|
||||
}
|
||||
Some(row_pair_key)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
if let (Some(port_run), Some(warehouse_run)) = (
|
||||
find_named_run(&sample.port_runs, "Port01", "Port11", 45, 55, 11),
|
||||
|
|
@ -476,9 +486,22 @@ fn build_named_run_aggregates(
|
|||
.or_insert(0) += 1;
|
||||
aggregates
|
||||
.numbered_port_warehouse_trailer_family_map_paths
|
||||
.entry(trailer_family_key)
|
||||
.entry(trailer_family_key.clone())
|
||||
.or_default()
|
||||
.push(sample.path.clone());
|
||||
|
||||
if let Some(row_pair_key) = &row_pair_key {
|
||||
let combined_key = format!("{row_pair_key} :: {trailer_family_key}");
|
||||
*aggregates
|
||||
.row_pair_and_numbered_trailer_family_map_counts
|
||||
.entry(combined_key.clone())
|
||||
.or_insert(0) += 1;
|
||||
aggregates
|
||||
.row_pair_and_numbered_trailer_family_map_paths
|
||||
.entry(combined_key)
|
||||
.or_default()
|
||||
.push(sample.path.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -494,6 +517,12 @@ fn build_named_run_aggregates(
|
|||
{
|
||||
paths.sort();
|
||||
}
|
||||
for paths in aggregates
|
||||
.row_pair_and_numbered_trailer_family_map_paths
|
||||
.values_mut()
|
||||
{
|
||||
paths.sort();
|
||||
}
|
||||
|
||||
aggregates
|
||||
}
|
||||
|
|
@ -614,6 +643,26 @@ mod tests {
|
|||
.unwrap_or_default(),
|
||||
vec!["State of Germany.gmp".to_string()]
|
||||
);
|
||||
assert_eq!(
|
||||
aggregates
|
||||
.row_pair_and_numbered_trailer_family_map_counts
|
||||
.get("35/43 :: 0x00000001"),
|
||||
Some(&1)
|
||||
);
|
||||
assert_eq!(
|
||||
aggregates
|
||||
.row_pair_and_numbered_trailer_family_map_counts
|
||||
.get("10/18 :: 0x00000000"),
|
||||
Some(&1)
|
||||
);
|
||||
assert_eq!(
|
||||
aggregates
|
||||
.row_pair_and_numbered_trailer_family_map_paths
|
||||
.get("35/43 :: 0x00000001")
|
||||
.cloned()
|
||||
.unwrap_or_default(),
|
||||
vec!["Louisiana.gmp".to_string()]
|
||||
);
|
||||
}
|
||||
|
||||
fn sample_run(
|
||||
|
|
|
|||
|
|
@ -1253,7 +1253,11 @@
|
|||
`files_with_warehouse01_11_run_at_56_66_count = 37` keep the `Port01..11` / `Warehouse01..11`
|
||||
runs fixed at rows `45..55` and `56..66` in every probe-bearing map. Trailer families split
|
||||
independently too: `numbered_port_warehouse_trailer_family_map_counts` keeps the fixed numbered
|
||||
rows on `0x00000001 -> 28 maps` versus `0x00000000 -> 9 maps`.
|
||||
rows on `0x00000001 -> 28 maps` versus `0x00000000 -> 9 maps`. The new crossover field
|
||||
`row_pair_and_numbered_trailer_family_map_counts` keeps that interaction explicit too:
|
||||
`35/43 :: 0x00000001 -> 25 maps`, `35/43 :: 0x00000000 -> 5 maps`,
|
||||
`10/18 :: 0x00000000 -> 4 maps`, and `10/18 :: 0x00000001 -> 3 maps`, so the off-row `10/18`
|
||||
subset still stays mixed instead of collapsing to one numbered trailer family.
|
||||
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
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ This file is the short active queue for the current runtime and reverse-engineer
|
|||
The checked `rt3_105/maps` compact-dispatch corpus is now exported directly and partially mirrored into the periodic-company trace: `41` maps scanned, `38` with dispatch-strip rows, `318` nondirect rows total, the add-building subset is only `10` grouped occurrences across `7` descriptor keys, and the strongest broader nondirect families are now bounded too at `36` grouped occurrences across `18` maps for `nondirect-ge1e-h0001-0360-0004-0100-0200-p0000-0000-0000-ffff :: [864:4]` plus `27` across `14` maps for the mixed `[-1:4]` cluster. All of those checked rows still lack recovered 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.
|
||||
Preserved checked control-lane detail now lives in [Periodic company control lane](rehost-queue/periodic-company-control-lane-2026-04-21.md).
|
||||
- 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`, and the checked candidate-table export now keeps the concrete row families explicit too: among the `37` probe-bearing maps, `Port00/Warehouse00` stay at `35/43` on `30` maps and shift earlier to `10/18` on `7`, while `Port01..11` / `Warehouse01..11` stay fixed at `45..55` / `56..66` and the numbered trailer family splits independently at `0x00000001 -> 28 maps` versus `0x00000000 -> 9 maps`. The stock `BuildingTypes` side is narrower too: across `77` checked `.bca` files only `MachineShop.bca` carries nonzero selector bytes at `0xb8..0xbb`, while the broader nonzero stock signal lives in the `22`-file `.bty` alias-root family with `dword_0xbb = 0x000001f4`, especially the `TextileMill` branch that already covers `Port.bty` and `Warehouse.bty`. The active open question is therefore which earlier seed/projection path lifts that narrow stock-side signal and the fixed numbered cluster into nonzero live `[candidate+0xba/+0xbb]` before `0x00412d70` and `0x00419230` consume it.
|
||||
The grounded owner strip is `0x004196c0 -> 0x00414490 -> 0x00416ce0 -> 0x00419230`, and the checked candidate-table export now keeps the concrete row families explicit too: among the `37` probe-bearing maps, `Port00/Warehouse00` stay at `35/43` on `30` maps and shift earlier to `10/18` on `7`, while `Port01..11` / `Warehouse01..11` stay fixed at `45..55` / `56..66` and the numbered trailer family splits independently at `0x00000001 -> 28 maps` versus `0x00000000 -> 9 maps`. The new crossover matrix stays mixed rather than collapsing to one side too: `35/43 :: 0x00000001 -> 25 maps`, `35/43 :: 0x00000000 -> 5 maps`, `10/18 :: 0x00000000 -> 4 maps`, and `10/18 :: 0x00000001 -> 3 maps`. The stock `BuildingTypes` side is narrower too: across `77` checked `.bca` files only `MachineShop.bca` carries nonzero selector bytes at `0xb8..0xbb`, while the broader nonzero stock signal lives in the `22`-file `.bty` alias-root family with `dword_0xbb = 0x000001f4`, especially the `TextileMill` branch that already covers `Port.bty` and `Warehouse.bty`. The active open question is therefore which earlier seed/projection path lifts that narrow stock-side signal and the fixed numbered cluster into nonzero live `[candidate+0xba/+0xbb]` before `0x00412d70` and `0x00419230` consume it.
|
||||
Preserved checked row-family detail now lives in [Tier2 candidate row families](rehost-queue/tier2-candidate-row-families-2026-04-21.md).
|
||||
Preserved checked stock selector-byte detail now lives in [Tier2 selector-byte sources](rehost-queue/tier2-selector-byte-sources-2026-04-21.md).
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,11 @@ samples:
|
|||
- `numbered_port_warehouse_trailer_family_map_counts`
|
||||
- `0x00000001 -> 28`
|
||||
- `0x00000000 -> 9`
|
||||
- `row_pair_and_numbered_trailer_family_map_counts`
|
||||
- `35/43 :: 0x00000001 -> 25`
|
||||
- `35/43 :: 0x00000000 -> 5`
|
||||
- `10/18 :: 0x00000000 -> 4`
|
||||
- `10/18 :: 0x00000001 -> 3`
|
||||
|
||||
## Off-Row Carrier Maps
|
||||
|
||||
|
|
@ -34,6 +39,17 @@ The earlier `10/18` family is narrow and fully enumerated in the checked export:
|
|||
Everything else in the current probe-bearing corpus keeps the `35/43` `Port00` / `Warehouse00`
|
||||
pair while still preserving the fixed numbered runs at `45..55` and `56..66`.
|
||||
|
||||
## Crossover Reading
|
||||
|
||||
The new crossover field keeps the row-family and trailer-family interaction explicit too:
|
||||
|
||||
- the dominant family is still the ordinary `35/43 :: 0x00000001` case on `25` maps
|
||||
- the off-row `10/18` family stays mixed, splitting `4` maps on trailer `0x00000000` and `3`
|
||||
maps on trailer `0x00000001`
|
||||
- the ordinary `35/43` family is mixed too, with a smaller `5`-map `0x00000000` subset
|
||||
|
||||
So the row shift and numbered trailer split do not collapse to one underlying map family.
|
||||
|
||||
## Immediate Reading
|
||||
|
||||
This keeps the Tier-2 frontier narrower than a generic “candidate table varies by scenario” claim:
|
||||
|
|
@ -41,6 +57,7 @@ This keeps the Tier-2 frontier narrower than a generic “candidate table varies
|
|||
- the `Port01..11` / `Warehouse01..11` numbered families are structurally fixed across all `37`
|
||||
probe-bearing maps
|
||||
- only the `00` pair moves, and it does so in one small `7`-map family
|
||||
- the numbered trailer split is independent of the row-pair split, so the next owner question is
|
||||
still the earlier seed or projection seam that feeds nonzero `[candidate+0xba/+0xbb]` into
|
||||
`0x00412d70`, not the mere existence of the stable named rows themselves
|
||||
- the numbered trailer split stays mixed across both row-pair families instead of collapsing to
|
||||
the off-row subset, so the next owner question is still the earlier seed or projection seam
|
||||
that feeds nonzero `[candidate+0xba/+0xbb]` into `0x00412d70`, not the mere existence of the
|
||||
stable named rows themselves
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue