Promote candidate table row families into export
This commit is contained in:
parent
6bca2d4761
commit
f7a2342a7c
4 changed files with 370 additions and 10 deletions
|
|
@ -2301,5 +2301,101 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"files_with_port01_11_run_at_45_55_count": 37,
|
||||||
|
"files_with_warehouse01_11_run_at_56_66_count": 37,
|
||||||
|
"port00_warehouse00_row_pair_map_counts": {
|
||||||
|
"35/43": 30,
|
||||||
|
"10/18": 7
|
||||||
|
},
|
||||||
|
"port00_warehouse00_row_pair_map_paths": {
|
||||||
|
"35/43": [
|
||||||
|
"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/Britain.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/British Isles.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/Greenland Growing.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Ireland.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/Spanish Mainline.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Third Republic.gmp"
|
||||||
|
],
|
||||||
|
"10/18": [
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Crossing the Alps.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/East Coast, USA.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Germany.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Go West!.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Rhodes Unfinished.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/State of Germany.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/War Effort.gmp"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"numbered_port_warehouse_trailer_family_map_counts": {
|
||||||
|
"0x00000001": 28,
|
||||||
|
"0x00000000": 9
|
||||||
|
},
|
||||||
|
"numbered_port_warehouse_trailer_family_map_paths": {
|
||||||
|
"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/Crossing the Alps.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/Go West!.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/Rhodes Unfinished.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"
|
||||||
|
],
|
||||||
|
"0x00000000": [
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Britain.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/British Isles.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/East Coast, USA.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/Germany.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",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/State of Germany.gmp",
|
||||||
|
"rt3_wineprefix/drive_c/rt3/maps/War Effort.gmp"
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,9 +79,11 @@ Taken together they keep the current frontier narrow and concrete:
|
||||||
families remain binding-only canonical stems rather than stock numbered assets.
|
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
|
- `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.
|
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
|
- `candidate-table-named-runs.json` now carries those stable families explicitly:
|
||||||
stable `00`-row families while keeping `Port01..11` fixed at rows `45..55` and
|
`port00_warehouse00_row_pair_map_counts` keeps the `35/43 -> 30 maps` versus `10/18 -> 7 maps`
|
||||||
`Warehouse01..11` fixed at rows `56..66` in every probe-bearing map.
|
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.
|
||||||
|
|
||||||
So the open question is no longer whether the numbered families exist in stock assets, bindings,
|
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
|
or shipped candidate tables. The real remaining question is which earlier seed/projection seam
|
||||||
|
|
@ -243,6 +245,10 @@ So the surviving frontier is narrower again:
|
||||||
`0x00438c70` allocates the live candidate pool through `0x004131f0` and the auxiliary/source
|
`0x00438c70` allocates the live candidate pool through `0x004131f0` and the auxiliary/source
|
||||||
pool through `0x0041aa50`, and both constructors tail directly into the same fixed tagged-import
|
pool through `0x0041aa50`, and both constructors tail directly into the same fixed tagged-import
|
||||||
families rooted at `0x005c93fc` and `.\Data\BuildingTypes\`
|
families rooted at `0x005c93fc` and `.\Data\BuildingTypes\`
|
||||||
|
- the trailer split is checked in directly too: the same export's
|
||||||
|
`numbered_port_warehouse_trailer_family_map_counts` keeps the `0x00000001 -> 28 maps` versus
|
||||||
|
`0x00000000 -> 9 maps` split on the fixed `Port01..11` / `Warehouse01..11` rows visible without
|
||||||
|
reopening per-map samples
|
||||||
- but the still-missing owner is the earlier non-stock writer or restore-time projection seam that
|
- but the still-missing owner is the earlier non-stock writer or restore-time projection seam that
|
||||||
makes some live candidates reach those later consumers with nonzero `[candidate+0xba/+0xbb]`
|
makes some live candidates reach those later consumers with nonzero `[candidate+0xba/+0xbb]`
|
||||||
despite the observed all-zero BCA corpus
|
despite the observed all-zero BCA corpus
|
||||||
|
|
|
||||||
|
|
@ -61,10 +61,26 @@ pub(crate) struct RuntimeCandidateTableNamedRunScanReport {
|
||||||
pub(crate) files_with_any_numbered_port_runs_count: usize,
|
pub(crate) files_with_any_numbered_port_runs_count: usize,
|
||||||
pub(crate) files_with_any_numbered_warehouse_runs_count: usize,
|
pub(crate) files_with_any_numbered_warehouse_runs_count: usize,
|
||||||
pub(crate) files_with_both_numbered_run_families_count: usize,
|
pub(crate) files_with_both_numbered_run_families_count: usize,
|
||||||
|
pub(crate) files_with_port01_11_run_at_45_55_count: usize,
|
||||||
|
pub(crate) files_with_warehouse01_11_run_at_56_66_count: usize,
|
||||||
|
pub(crate) port00_warehouse00_row_pair_map_counts: BTreeMap<String, usize>,
|
||||||
|
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) skipped_file_count: usize,
|
pub(crate) skipped_file_count: usize,
|
||||||
pub(crate) samples: Vec<RuntimeCandidateTableNamedRunScanSample>,
|
pub(crate) samples: Vec<RuntimeCandidateTableNamedRunScanSample>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Default)]
|
||||||
|
struct RuntimeCandidateTableNamedRunAggregates {
|
||||||
|
files_with_port01_11_run_at_45_55_count: usize,
|
||||||
|
files_with_warehouse01_11_run_at_56_66_count: usize,
|
||||||
|
port00_warehouse00_row_pair_map_counts: BTreeMap<String, usize>,
|
||||||
|
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>>,
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) fn scan_candidate_table_headers(
|
pub(crate) fn scan_candidate_table_headers(
|
||||||
root_path: &Path,
|
root_path: &Path,
|
||||||
) -> Result<(), Box<dyn std::error::Error>> {
|
) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
|
@ -193,6 +209,7 @@ pub(crate) fn scan_candidate_table_named_runs(
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|sample| !sample.port_runs.is_empty() && !sample.warehouse_runs.is_empty())
|
.filter(|sample| !sample.port_runs.is_empty() && !sample.warehouse_runs.is_empty())
|
||||||
.count();
|
.count();
|
||||||
|
let aggregates = build_named_run_aggregates(&samples);
|
||||||
|
|
||||||
let report = RuntimeCandidateTableNamedRunScanReport {
|
let report = RuntimeCandidateTableNamedRunScanReport {
|
||||||
root_path: root_path.display().to_string(),
|
root_path: root_path.display().to_string(),
|
||||||
|
|
@ -201,6 +218,15 @@ pub(crate) fn scan_candidate_table_named_runs(
|
||||||
files_with_any_numbered_port_runs_count,
|
files_with_any_numbered_port_runs_count,
|
||||||
files_with_any_numbered_warehouse_runs_count,
|
files_with_any_numbered_warehouse_runs_count,
|
||||||
files_with_both_numbered_run_families_count,
|
files_with_both_numbered_run_families_count,
|
||||||
|
files_with_port01_11_run_at_45_55_count: aggregates.files_with_port01_11_run_at_45_55_count,
|
||||||
|
files_with_warehouse01_11_run_at_56_66_count: aggregates
|
||||||
|
.files_with_warehouse01_11_run_at_56_66_count,
|
||||||
|
port00_warehouse00_row_pair_map_counts: aggregates.port00_warehouse00_row_pair_map_counts,
|
||||||
|
port00_warehouse00_row_pair_map_paths: aggregates.port00_warehouse00_row_pair_map_paths,
|
||||||
|
numbered_port_warehouse_trailer_family_map_counts: aggregates
|
||||||
|
.numbered_port_warehouse_trailer_family_map_counts,
|
||||||
|
numbered_port_warehouse_trailer_family_map_paths: aggregates
|
||||||
|
.numbered_port_warehouse_trailer_family_map_paths,
|
||||||
skipped_file_count,
|
skipped_file_count,
|
||||||
samples,
|
samples,
|
||||||
};
|
};
|
||||||
|
|
@ -386,3 +412,233 @@ pub(crate) fn load_candidate_table_named_run_scan_sample(
|
||||||
warehouse_runs,
|
warehouse_runs,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn build_named_run_aggregates(
|
||||||
|
samples: &[RuntimeCandidateTableNamedRunScanSample],
|
||||||
|
) -> RuntimeCandidateTableNamedRunAggregates {
|
||||||
|
let mut aggregates = RuntimeCandidateTableNamedRunAggregates::default();
|
||||||
|
|
||||||
|
for sample in samples {
|
||||||
|
if find_named_run(&sample.port_runs, "Port01", "Port11", 45, 55, 11).is_some() {
|
||||||
|
aggregates.files_with_port01_11_run_at_45_55_count += 1;
|
||||||
|
}
|
||||||
|
if find_named_run(
|
||||||
|
&sample.warehouse_runs,
|
||||||
|
"Warehouse01",
|
||||||
|
"Warehouse11",
|
||||||
|
56,
|
||||||
|
66,
|
||||||
|
11,
|
||||||
|
)
|
||||||
|
.is_some()
|
||||||
|
{
|
||||||
|
aggregates.files_with_warehouse01_11_run_at_56_66_count += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
*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)
|
||||||
|
.or_default()
|
||||||
|
.push(sample.path.clone());
|
||||||
|
}
|
||||||
|
|
||||||
|
if let (Some(port_run), Some(warehouse_run)) = (
|
||||||
|
find_named_run(&sample.port_runs, "Port01", "Port11", 45, 55, 11),
|
||||||
|
find_named_run(
|
||||||
|
&sample.warehouse_runs,
|
||||||
|
"Warehouse01",
|
||||||
|
"Warehouse11",
|
||||||
|
56,
|
||||||
|
66,
|
||||||
|
11,
|
||||||
|
),
|
||||||
|
) {
|
||||||
|
let port_signature = trailer_signature(port_run);
|
||||||
|
let warehouse_signature = trailer_signature(warehouse_run);
|
||||||
|
let trailer_family_key = if port_signature == warehouse_signature {
|
||||||
|
port_signature
|
||||||
|
} else {
|
||||||
|
format!("port={port_signature} | warehouse={warehouse_signature}")
|
||||||
|
};
|
||||||
|
*aggregates
|
||||||
|
.numbered_port_warehouse_trailer_family_map_counts
|
||||||
|
.entry(trailer_family_key.clone())
|
||||||
|
.or_insert(0) += 1;
|
||||||
|
aggregates
|
||||||
|
.numbered_port_warehouse_trailer_family_map_paths
|
||||||
|
.entry(trailer_family_key)
|
||||||
|
.or_default()
|
||||||
|
.push(sample.path.clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for paths in aggregates
|
||||||
|
.port00_warehouse00_row_pair_map_paths
|
||||||
|
.values_mut()
|
||||||
|
{
|
||||||
|
paths.sort();
|
||||||
|
}
|
||||||
|
for paths in aggregates
|
||||||
|
.numbered_port_warehouse_trailer_family_map_paths
|
||||||
|
.values_mut()
|
||||||
|
{
|
||||||
|
paths.sort();
|
||||||
|
}
|
||||||
|
|
||||||
|
aggregates
|
||||||
|
}
|
||||||
|
|
||||||
|
fn find_named_run<'a>(
|
||||||
|
runs: &'a [RuntimeCandidateTableNamedRun],
|
||||||
|
first_name: &str,
|
||||||
|
last_name: &str,
|
||||||
|
start_index: usize,
|
||||||
|
end_index: usize,
|
||||||
|
count: usize,
|
||||||
|
) -> Option<&'a RuntimeCandidateTableNamedRun> {
|
||||||
|
runs.iter().find(|run| {
|
||||||
|
run.first_name == first_name
|
||||||
|
&& run.last_name == last_name
|
||||||
|
&& run.count == count
|
||||||
|
&& run.start_index == start_index
|
||||||
|
&& run.end_index == end_index
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fn find_named_run_by_names<'a>(
|
||||||
|
runs: &'a [RuntimeCandidateTableNamedRun],
|
||||||
|
first_name: &str,
|
||||||
|
last_name: &str,
|
||||||
|
count: usize,
|
||||||
|
) -> Option<&'a RuntimeCandidateTableNamedRun> {
|
||||||
|
runs.iter().find(|run| {
|
||||||
|
run.first_name == first_name && run.last_name == last_name && run.count == count
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fn trailer_signature(run: &RuntimeCandidateTableNamedRun) -> String {
|
||||||
|
run.distinct_trailer_hex_words.join("|")
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::{
|
||||||
|
RuntimeCandidateTableNamedRun, RuntimeCandidateTableNamedRunScanSample,
|
||||||
|
build_named_run_aggregates,
|
||||||
|
};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn builds_named_run_aggregate_split_fields() {
|
||||||
|
let samples = vec![
|
||||||
|
RuntimeCandidateTableNamedRunScanSample {
|
||||||
|
path: "Louisiana.gmp".to_string(),
|
||||||
|
profile_family: "unknown".to_string(),
|
||||||
|
source_kind: "map-fixed-catalog-range".to_string(),
|
||||||
|
observed_entry_count: 67,
|
||||||
|
port_runs: vec![
|
||||||
|
sample_run("Port00", "Port00", 35, 35, 1, vec!["0x00000001"]),
|
||||||
|
sample_run("Port01", "Port11", 45, 55, 11, vec!["0x00000001"]),
|
||||||
|
],
|
||||||
|
warehouse_runs: vec![
|
||||||
|
sample_run("Warehouse00", "Warehouse00", 43, 43, 1, vec!["0x00000001"]),
|
||||||
|
sample_run("Warehouse01", "Warehouse11", 56, 66, 11, vec!["0x00000001"]),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
RuntimeCandidateTableNamedRunScanSample {
|
||||||
|
path: "State of Germany.gmp".to_string(),
|
||||||
|
profile_family: "unknown".to_string(),
|
||||||
|
source_kind: "map-fixed-catalog-range".to_string(),
|
||||||
|
observed_entry_count: 67,
|
||||||
|
port_runs: vec![
|
||||||
|
sample_run("Port00", "Port00", 10, 10, 1, vec!["0x00000000"]),
|
||||||
|
sample_run("Port01", "Port11", 45, 55, 11, vec!["0x00000000"]),
|
||||||
|
],
|
||||||
|
warehouse_runs: vec![
|
||||||
|
sample_run("Warehouse00", "Warehouse00", 18, 18, 1, vec!["0x00000000"]),
|
||||||
|
sample_run("Warehouse01", "Warehouse11", 56, 66, 11, vec!["0x00000000"]),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
let aggregates = build_named_run_aggregates(&samples);
|
||||||
|
|
||||||
|
assert_eq!(aggregates.files_with_port01_11_run_at_45_55_count, 2);
|
||||||
|
assert_eq!(aggregates.files_with_warehouse01_11_run_at_56_66_count, 2);
|
||||||
|
assert_eq!(
|
||||||
|
aggregates
|
||||||
|
.port00_warehouse00_row_pair_map_counts
|
||||||
|
.get("35/43"),
|
||||||
|
Some(&1)
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
aggregates
|
||||||
|
.port00_warehouse00_row_pair_map_counts
|
||||||
|
.get("10/18"),
|
||||||
|
Some(&1)
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
aggregates
|
||||||
|
.numbered_port_warehouse_trailer_family_map_counts
|
||||||
|
.get("0x00000001"),
|
||||||
|
Some(&1)
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
aggregates
|
||||||
|
.numbered_port_warehouse_trailer_family_map_counts
|
||||||
|
.get("0x00000000"),
|
||||||
|
Some(&1)
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
aggregates
|
||||||
|
.port00_warehouse00_row_pair_map_paths
|
||||||
|
.get("35/43")
|
||||||
|
.cloned()
|
||||||
|
.unwrap_or_default(),
|
||||||
|
vec!["Louisiana.gmp".to_string()]
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
aggregates
|
||||||
|
.numbered_port_warehouse_trailer_family_map_paths
|
||||||
|
.get("0x00000000")
|
||||||
|
.cloned()
|
||||||
|
.unwrap_or_default(),
|
||||||
|
vec!["State of Germany.gmp".to_string()]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn sample_run(
|
||||||
|
first_name: &str,
|
||||||
|
last_name: &str,
|
||||||
|
start_index: usize,
|
||||||
|
end_index: usize,
|
||||||
|
count: usize,
|
||||||
|
distinct_trailer_hex_words: Vec<&str>,
|
||||||
|
) -> RuntimeCandidateTableNamedRun {
|
||||||
|
RuntimeCandidateTableNamedRun {
|
||||||
|
prefix: first_name
|
||||||
|
.trim_end_matches(|ch: char| ch.is_ascii_digit())
|
||||||
|
.to_string(),
|
||||||
|
start_index,
|
||||||
|
end_index,
|
||||||
|
count,
|
||||||
|
first_name: first_name.to_string(),
|
||||||
|
last_name: last_name.to_string(),
|
||||||
|
start_offset: 0,
|
||||||
|
end_offset: 0,
|
||||||
|
distinct_trailer_hex_words: distinct_trailer_hex_words
|
||||||
|
.into_iter()
|
||||||
|
.map(str::to_string)
|
||||||
|
.collect(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1246,12 +1246,14 @@
|
||||||
families.
|
families.
|
||||||
The root scan narrows the real corpus for that question too. `runtime scan-candidate-table-headers
|
The root scan narrows the real corpus for that question too. `runtime scan-candidate-table-headers
|
||||||
rt3_wineprefix/drive_c/rt3/maps` shows `37` probe-bearing shipped maps and `4` skips, while the
|
rt3_wineprefix/drive_c/rt3/maps` shows `37` probe-bearing shipped maps and `4` skips, while the
|
||||||
narrower `runtime scan-candidate-table-named-runs` command shows two stable `00`-row families
|
narrower `runtime scan-candidate-table-named-runs` command now keeps those aggregates explicit
|
||||||
across those `37` probe-bearing maps: `30` maps keep `Port00` / `Warehouse00` at rows `35` /
|
too: `port00_warehouse00_row_pair_map_counts` records the two stable `00`-row families across
|
||||||
`43`, while `7` maps move just those two `00` rows earlier to `10` / `18`; the
|
those `37` probe-bearing maps as `35/43 -> 30 maps` and `10/18 -> 7 maps`, while
|
||||||
`Port01..11` and `Warehouse01..11` runs stay fixed at rows `45..55` and `56..66` in every
|
`files_with_port01_11_run_at_45_55_count = 37` and
|
||||||
probe-bearing map. Trailer families split independently too: `28` maps keep the numbered rows
|
`files_with_warehouse01_11_run_at_56_66_count = 37` keep the `Port01..11` / `Warehouse01..11`
|
||||||
on trailer `0x00000001`, while `9` maps keep the same row layout but zero the same trailers.
|
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`.
|
||||||
The checked-in evidence join is explicit now too:
|
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
|
`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
|
`port` / `warehouse`, `artifacts/exports/rt3-1.06/event-effects-building-bindings.json` keeps
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue