Compare add-building cluster exclusivity
This commit is contained in:
parent
d334da6687
commit
2fbc0bd7e7
2 changed files with 51 additions and 0 deletions
|
|
@ -347,6 +347,9 @@ struct RuntimeCompactEventDispatchClusterReport {
|
||||||
add_building_condition_tuple_map_counts: BTreeMap<String, usize>,
|
add_building_condition_tuple_map_counts: BTreeMap<String, usize>,
|
||||||
add_building_signature_condition_cluster_occurrence_counts: BTreeMap<String, usize>,
|
add_building_signature_condition_cluster_occurrence_counts: BTreeMap<String, usize>,
|
||||||
add_building_signature_condition_cluster_map_counts: BTreeMap<String, usize>,
|
add_building_signature_condition_cluster_map_counts: BTreeMap<String, usize>,
|
||||||
|
add_building_signature_condition_cluster_descriptor_keys: BTreeMap<String, Vec<String>>,
|
||||||
|
add_building_signature_condition_cluster_non_add_building_descriptor_keys:
|
||||||
|
BTreeMap<String, Vec<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
|
|
@ -373,6 +376,9 @@ struct RuntimeCompactEventDispatchClusterCountsReport {
|
||||||
add_building_condition_tuple_map_counts: BTreeMap<String, usize>,
|
add_building_condition_tuple_map_counts: BTreeMap<String, usize>,
|
||||||
add_building_signature_condition_cluster_occurrence_counts: BTreeMap<String, usize>,
|
add_building_signature_condition_cluster_occurrence_counts: BTreeMap<String, usize>,
|
||||||
add_building_signature_condition_cluster_map_counts: BTreeMap<String, usize>,
|
add_building_signature_condition_cluster_map_counts: BTreeMap<String, usize>,
|
||||||
|
add_building_signature_condition_cluster_descriptor_keys: BTreeMap<String, Vec<String>>,
|
||||||
|
add_building_signature_condition_cluster_non_add_building_descriptor_keys:
|
||||||
|
BTreeMap<String, Vec<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize)]
|
#[derive(Debug, Clone, Serialize)]
|
||||||
|
|
@ -1858,6 +1864,10 @@ fn run_runtime_inspect_compact_event_dispatch_cluster_counts(
|
||||||
.add_building_signature_condition_cluster_occurrence_counts,
|
.add_building_signature_condition_cluster_occurrence_counts,
|
||||||
add_building_signature_condition_cluster_map_counts: report
|
add_building_signature_condition_cluster_map_counts: report
|
||||||
.add_building_signature_condition_cluster_map_counts,
|
.add_building_signature_condition_cluster_map_counts,
|
||||||
|
add_building_signature_condition_cluster_descriptor_keys: report
|
||||||
|
.add_building_signature_condition_cluster_descriptor_keys,
|
||||||
|
add_building_signature_condition_cluster_non_add_building_descriptor_keys: report
|
||||||
|
.add_building_signature_condition_cluster_non_add_building_descriptor_keys,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
println!("{}", serde_json::to_string_pretty(&output)?);
|
println!("{}", serde_json::to_string_pretty(&output)?);
|
||||||
|
|
@ -1891,6 +1901,9 @@ fn build_runtime_compact_event_dispatch_cluster_report(
|
||||||
let mut add_building_signature_condition_cluster_occurrence_counts =
|
let mut add_building_signature_condition_cluster_occurrence_counts =
|
||||||
BTreeMap::<String, usize>::new();
|
BTreeMap::<String, usize>::new();
|
||||||
let mut add_building_signature_condition_cluster_map_counts = BTreeMap::<String, usize>::new();
|
let mut add_building_signature_condition_cluster_map_counts = BTreeMap::<String, usize>::new();
|
||||||
|
let mut signature_condition_cluster_descriptor_keys =
|
||||||
|
BTreeMap::<String, BTreeSet<String>>::new();
|
||||||
|
let mut add_building_signature_condition_clusters = BTreeSet::<String>::new();
|
||||||
let mut dispatch_descriptor_occurrences =
|
let mut dispatch_descriptor_occurrences =
|
||||||
BTreeMap::<String, Vec<RuntimeCompactEventDispatchClusterOccurrence>>::new();
|
BTreeMap::<String, Vec<RuntimeCompactEventDispatchClusterOccurrence>>::new();
|
||||||
let mut unknown_descriptor_occurrences =
|
let mut unknown_descriptor_occurrences =
|
||||||
|
|
@ -1976,12 +1989,18 @@ fn build_runtime_compact_event_dispatch_cluster_report(
|
||||||
rows: rows.clone(),
|
rows: rows.clone(),
|
||||||
};
|
};
|
||||||
let descriptor_key = compact_event_dispatch_descriptor_key(descriptor_id, &rows);
|
let descriptor_key = compact_event_dispatch_descriptor_key(descriptor_id, &rows);
|
||||||
|
signature_condition_cluster_descriptor_keys
|
||||||
|
.entry(signature_condition_cluster_key.clone())
|
||||||
|
.or_default()
|
||||||
|
.insert(descriptor_key.clone());
|
||||||
*dispatch_descriptor_occurrence_counts
|
*dispatch_descriptor_occurrence_counts
|
||||||
.entry(descriptor_key.clone())
|
.entry(descriptor_key.clone())
|
||||||
.or_insert(0) += 1;
|
.or_insert(0) += 1;
|
||||||
map_descriptor_keys.insert(descriptor_key.clone());
|
map_descriptor_keys.insert(descriptor_key.clone());
|
||||||
if compact_event_dispatch_add_building_descriptor_id(descriptor_id) {
|
if compact_event_dispatch_add_building_descriptor_id(descriptor_id) {
|
||||||
record_has_add_building = true;
|
record_has_add_building = true;
|
||||||
|
add_building_signature_condition_clusters
|
||||||
|
.insert(signature_condition_cluster_key.clone());
|
||||||
*add_building_descriptor_occurrence_counts
|
*add_building_descriptor_occurrence_counts
|
||||||
.entry(descriptor_key.clone())
|
.entry(descriptor_key.clone())
|
||||||
.or_insert(0) += 1;
|
.or_insert(0) += 1;
|
||||||
|
|
@ -2063,6 +2082,29 @@ fn build_runtime_compact_event_dispatch_cluster_report(
|
||||||
.map(|label| format!("{descriptor_id} -> {label}"))
|
.map(|label| format!("{descriptor_id} -> {label}"))
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
let add_building_signature_condition_cluster_descriptor_keys =
|
||||||
|
add_building_signature_condition_clusters
|
||||||
|
.iter()
|
||||||
|
.map(|cluster| {
|
||||||
|
let keys = signature_condition_cluster_descriptor_keys
|
||||||
|
.get(cluster)
|
||||||
|
.map(|keys| keys.iter().cloned().collect::<Vec<_>>())
|
||||||
|
.unwrap_or_default();
|
||||||
|
(cluster.clone(), keys)
|
||||||
|
})
|
||||||
|
.collect::<BTreeMap<_, _>>();
|
||||||
|
let add_building_signature_condition_cluster_non_add_building_descriptor_keys =
|
||||||
|
add_building_signature_condition_cluster_descriptor_keys
|
||||||
|
.iter()
|
||||||
|
.map(|(cluster, keys)| {
|
||||||
|
let filtered = keys
|
||||||
|
.iter()
|
||||||
|
.filter(|key| !key.contains("Add Building"))
|
||||||
|
.cloned()
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
(cluster.clone(), filtered)
|
||||||
|
})
|
||||||
|
.collect::<BTreeMap<_, _>>();
|
||||||
|
|
||||||
Ok(RuntimeCompactEventDispatchClusterReport {
|
Ok(RuntimeCompactEventDispatchClusterReport {
|
||||||
maps_scanned: input_paths.len(),
|
maps_scanned: input_paths.len(),
|
||||||
|
|
@ -2089,6 +2131,8 @@ fn build_runtime_compact_event_dispatch_cluster_report(
|
||||||
add_building_condition_tuple_map_counts,
|
add_building_condition_tuple_map_counts,
|
||||||
add_building_signature_condition_cluster_occurrence_counts,
|
add_building_signature_condition_cluster_occurrence_counts,
|
||||||
add_building_signature_condition_cluster_map_counts,
|
add_building_signature_condition_cluster_map_counts,
|
||||||
|
add_building_signature_condition_cluster_descriptor_keys,
|
||||||
|
add_building_signature_condition_cluster_non_add_building_descriptor_keys,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -313,6 +313,13 @@ Working rule:
|
||||||
`FarmGrain`/`Logging Camp` clusters on `nondirect-ge34-h0002-0007-0004-73|75|7b|85...` with
|
`FarmGrain`/`Logging Camp` clusters on `nondirect-ge34-h0002-0007-0004-73|75|7b|85...` with
|
||||||
condition family `[7:4,42:0]`; that narrows the remaining trigger-kind/source question to a
|
condition family `[7:4,42:0]`; that narrows the remaining trigger-kind/source question to a
|
||||||
small set of compact subfamilies rather than a single undifferentiated add-building carrier
|
small set of compact subfamilies rather than a single undifferentiated add-building carrier
|
||||||
|
- the first exclusivity pass is positive too:
|
||||||
|
the widened cluster-counts report now surfaces, for each add-building
|
||||||
|
signature/condition cluster, the descriptor keys that share it plus the
|
||||||
|
non-add-building subset. Current targeted checks on `Texas Tea.gmp` and `Alternate USA.gmp`
|
||||||
|
show those observed add-building clusters have empty non-add-building companions, which biases
|
||||||
|
the next source/trigger-kind pass toward a distinct add-building compact subfamily rather than
|
||||||
|
a generic dispatch carrier reused by variable-band rows
|
||||||
- the same probe now narrows the candidate runtime-effect set too:
|
- the same probe now narrows the candidate runtime-effect set too:
|
||||||
it reports which decoded records already carry grouped opcodes in the grounded
|
it reports which decoded records already carry grouped opcodes in the grounded
|
||||||
`0x00431b20` dispatch strip; real `War Effort.gmp` currently narrows that to record indexes
|
`0x00431b20` dispatch strip; real `War Effort.gmp` currently narrows that to record indexes
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue