Track add-building row-shape families

This commit is contained in:
Jan Petykiewicz 2026-04-19 10:26:03 -07:00
commit 461cf087e5
4 changed files with 160 additions and 0 deletions

View file

@ -341,6 +341,8 @@ struct RuntimeCompactEventDispatchClusterReport {
add_building_dispatch_records_missing_trigger_kind: usize,
add_building_descriptor_occurrence_counts: BTreeMap<String, usize>,
add_building_descriptor_map_counts: BTreeMap<String, usize>,
add_building_row_shape_occurrence_counts: BTreeMap<String, usize>,
add_building_row_shape_map_counts: BTreeMap<String, usize>,
add_building_signature_family_occurrence_counts: BTreeMap<String, usize>,
add_building_signature_family_map_counts: BTreeMap<String, usize>,
add_building_condition_tuple_occurrence_counts: BTreeMap<String, usize>,
@ -370,6 +372,8 @@ struct RuntimeCompactEventDispatchClusterCountsReport {
add_building_dispatch_records_missing_trigger_kind: usize,
add_building_descriptor_occurrence_counts: BTreeMap<String, usize>,
add_building_descriptor_map_counts: BTreeMap<String, usize>,
add_building_row_shape_occurrence_counts: BTreeMap<String, usize>,
add_building_row_shape_map_counts: BTreeMap<String, usize>,
add_building_signature_family_occurrence_counts: BTreeMap<String, usize>,
add_building_signature_family_map_counts: BTreeMap<String, usize>,
add_building_condition_tuple_occurrence_counts: BTreeMap<String, usize>,
@ -1853,6 +1857,9 @@ fn run_runtime_inspect_compact_event_dispatch_cluster_counts(
add_building_descriptor_occurrence_counts: report
.add_building_descriptor_occurrence_counts,
add_building_descriptor_map_counts: report.add_building_descriptor_map_counts,
add_building_row_shape_occurrence_counts: report
.add_building_row_shape_occurrence_counts,
add_building_row_shape_map_counts: report.add_building_row_shape_map_counts,
add_building_signature_family_occurrence_counts: report
.add_building_signature_family_occurrence_counts,
add_building_signature_family_map_counts: report
@ -1894,6 +1901,8 @@ fn build_runtime_compact_event_dispatch_cluster_report(
let mut add_building_dispatch_records_missing_trigger_kind = 0usize;
let mut add_building_descriptor_occurrence_counts = BTreeMap::<String, usize>::new();
let mut add_building_descriptor_map_counts = BTreeMap::<String, usize>::new();
let mut add_building_row_shape_occurrence_counts = BTreeMap::<String, usize>::new();
let mut add_building_row_shape_map_counts = BTreeMap::<String, usize>::new();
let mut add_building_signature_family_occurrence_counts = BTreeMap::<String, usize>::new();
let mut add_building_signature_family_map_counts = BTreeMap::<String, usize>::new();
let mut add_building_condition_tuple_occurrence_counts = BTreeMap::<String, usize>::new();
@ -1919,6 +1928,7 @@ fn build_runtime_compact_event_dispatch_cluster_report(
let mut map_dispatch_strip_record_count = 0usize;
let mut map_descriptor_keys = BTreeSet::<String>::new();
let mut map_add_building_descriptor_keys = BTreeSet::<String>::new();
let mut map_add_building_row_shapes = BTreeSet::<String>::new();
let mut map_add_building_signature_families = BTreeSet::<String>::new();
let mut map_add_building_condition_tuples = BTreeSet::<String>::new();
let mut map_add_building_signature_condition_clusters = BTreeSet::<String>::new();
@ -1968,6 +1978,7 @@ fn build_runtime_compact_event_dispatch_cluster_report(
let signature_family = compact_event_signature_family_from_notes(&record.notes);
let condition_tuple_family =
compact_event_dispatch_condition_tuple_family(&condition_tuples);
let row_shape_family = compact_event_dispatch_row_shape_family(&matching_rows);
let signature_family_key = signature_family
.clone()
.unwrap_or_else(|| "unknown-signature-family".to_string());
@ -2005,6 +2016,10 @@ fn build_runtime_compact_event_dispatch_cluster_report(
.entry(descriptor_key.clone())
.or_insert(0) += 1;
map_add_building_descriptor_keys.insert(descriptor_key.clone());
*add_building_row_shape_occurrence_counts
.entry(row_shape_family.clone())
.or_insert(0) += 1;
map_add_building_row_shapes.insert(row_shape_family.clone());
*add_building_signature_family_occurrence_counts
.entry(signature_family_key.clone())
.or_insert(0) += 1;
@ -2054,6 +2069,11 @@ fn build_runtime_compact_event_dispatch_cluster_report(
.entry(descriptor_key)
.or_insert(0) += 1;
}
for row_shape in map_add_building_row_shapes {
*add_building_row_shape_map_counts
.entry(row_shape)
.or_insert(0) += 1;
}
for signature_family in map_add_building_signature_families {
*add_building_signature_family_map_counts
.entry(signature_family)
@ -2125,6 +2145,8 @@ fn build_runtime_compact_event_dispatch_cluster_report(
add_building_dispatch_records_missing_trigger_kind,
add_building_descriptor_occurrence_counts,
add_building_descriptor_map_counts,
add_building_row_shape_occurrence_counts,
add_building_row_shape_map_counts,
add_building_signature_family_occurrence_counts,
add_building_signature_family_map_counts,
add_building_condition_tuple_occurrence_counts,
@ -4516,6 +4538,26 @@ fn compact_event_dispatch_descriptor_key(
.unwrap_or_else(|| descriptor_id.to_string())
}
fn compact_event_dispatch_row_shape_family(
grouped_rows: &BTreeMap<u32, Vec<RuntimeCompactEventDispatchClusterRow>>,
) -> String {
let mut parts = grouped_rows
.values()
.flat_map(|rows| rows.iter())
.map(|row| {
format!(
"{}:{}:{}",
row.group_index, row.opcode, row.raw_scalar_value
)
})
.collect::<Vec<_>>();
if parts.is_empty() {
return "[]".to_string();
}
parts.sort();
format!("[{}]", parts.join(","))
}
fn compact_event_dispatch_condition_tuple_family(
tuples: &[RuntimeCompactEventDispatchClusterConditionTuple],
) -> String {

View file

@ -6603,6 +6603,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -7623,6 +7624,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -7766,6 +7768,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -7887,6 +7890,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -8034,6 +8038,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -8142,6 +8147,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -8318,6 +8324,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -8584,6 +8591,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -8685,6 +8693,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -8810,6 +8819,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -8908,6 +8918,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -9009,6 +9020,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -9123,6 +9135,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -9253,6 +9266,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -9354,6 +9368,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -9532,6 +9547,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -9655,6 +9671,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -9755,6 +9772,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -9855,6 +9873,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -10029,6 +10048,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -10148,6 +10168,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -10246,6 +10267,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -10354,6 +10376,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -10471,6 +10494,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -10596,6 +10620,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -10710,6 +10735,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -10810,6 +10836,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -10980,6 +11007,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -11160,6 +11188,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -11288,6 +11317,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -11397,6 +11427,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -11533,6 +11564,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -11663,6 +11695,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -11783,6 +11816,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -11899,6 +11933,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -12029,6 +12064,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -12144,6 +12180,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -12241,6 +12278,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -12343,6 +12381,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -12450,6 +12489,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -12557,6 +12597,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -12680,6 +12721,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -12794,6 +12836,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -12955,6 +12998,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -13115,6 +13159,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -13666,6 +13711,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -13871,6 +13917,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -14021,6 +14068,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -14170,6 +14218,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -14320,6 +14369,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -14454,6 +14504,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -14663,6 +14714,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -14780,6 +14832,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -14899,6 +14952,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -15089,6 +15143,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -15262,6 +15317,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -15376,6 +15432,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -15523,6 +15580,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -15658,6 +15716,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -15867,6 +15926,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],
@ -16086,6 +16146,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],

View file

@ -3988,6 +3988,8 @@ pub struct SmpLoadedEventRuntimeCollectionSummary {
#[serde(default)]
pub add_building_dispatch_strip_records_missing_trigger_kind: usize,
#[serde(default)]
pub add_building_dispatch_strip_row_shape_families: Vec<String>,
#[serde(default)]
pub add_building_dispatch_strip_signature_families: Vec<String>,
#[serde(default)]
pub add_building_dispatch_strip_condition_tuple_families: Vec<String>,
@ -9995,6 +9997,22 @@ fn parse_event_runtime_collection_summary_with_tag_width(
.collect::<Vec<_>>();
add_building_dispatch_strip_descriptor_labels.sort_unstable();
add_building_dispatch_strip_descriptor_labels.dedup();
let mut add_building_dispatch_strip_row_shape_families = records
.iter()
.filter(|record| {
record.grouped_effect_rows.iter().any(|row| {
opcode_reaches_world_apply_compact_runtime_effect_dispatch_strip(row.opcode)
&& compact_event_dispatch_add_building_descriptor_id(row.descriptor_id)
})
})
.map(|record| {
compact_event_dispatch_row_shape_family_from_summary_rows(
&record.grouped_effect_rows,
)
})
.collect::<Vec<_>>();
add_building_dispatch_strip_row_shape_families.sort_unstable();
add_building_dispatch_strip_row_shape_families.dedup();
let mut add_building_dispatch_strip_signature_families = records
.iter()
.filter(|record| {
@ -10174,6 +10192,10 @@ fn parse_event_runtime_collection_summary_with_tag_width(
"decoded Add Building descriptor labels present in the 0x00431b20 dispatch strip = {:?}",
add_building_dispatch_strip_descriptor_labels
));
control_lane_notes.push(format!(
"Add Building row-shape families present in the 0x00431b20 dispatch strip = {:?}",
add_building_dispatch_strip_row_shape_families
));
control_lane_notes.push(format!(
"Add Building signature families present in the 0x00431b20 dispatch strip = {:?}",
add_building_dispatch_strip_signature_families
@ -10223,6 +10245,7 @@ fn parse_event_runtime_collection_summary_with_tag_width(
add_building_dispatch_strip_descriptor_labels,
add_building_dispatch_strip_records_with_trigger_kind,
add_building_dispatch_strip_records_missing_trigger_kind,
add_building_dispatch_strip_row_shape_families,
add_building_dispatch_strip_signature_families,
add_building_dispatch_strip_condition_tuple_families,
add_building_dispatch_strip_signature_condition_clusters,
@ -10265,6 +10288,24 @@ fn compact_event_dispatch_condition_tuple_family_from_summary_rows(
format!("[{}]", parts.join(","))
}
fn compact_event_dispatch_row_shape_family_from_summary_rows(
rows: &[SmpLoadedPackedEventGroupedEffectRowSummary],
) -> String {
if rows.is_empty() {
return "[]".to_string();
}
let parts = rows
.iter()
.map(|row| {
format!(
"{}:{}:{}",
row.group_index, row.opcode, row.raw_scalar_value
)
})
.collect::<Vec<_>>();
format!("[{}]", parts.join(","))
}
fn compact_event_dispatch_signature_condition_cluster_from_summary_rows(
signature_family: Option<&str>,
rows: &[SmpLoadedPackedEventConditionRowSummary],
@ -23169,6 +23210,10 @@ mod tests {
.expect("non-direct event runtime collection summary should parse");
assert_eq!(summary.add_building_dispatch_strip_record_indexes, vec![0]);
assert_eq!(
summary.add_building_dispatch_strip_row_shape_families,
vec!["[0:8:1]".to_string()]
);
assert_eq!(
summary.add_building_dispatch_strip_signature_families,
vec!["nondirect-ge1e-h0001-ffff-0004-0000-0200-p0000-0000-0000-ffff".to_string()]
@ -23206,6 +23251,11 @@ mod tests {
"decoded Add Building descriptor labels present in the 0x00431b20 dispatch strip = [\"Add Building Port01\"]",
)
}));
assert!(summary.control_lane_notes.iter().any(|line| {
line.contains(
"Add Building row-shape families present in the 0x00431b20 dispatch strip = [\"[0:8:1]\"]",
)
}));
assert!(summary.control_lane_notes.iter().any(|line| {
line.contains(
"Add Building signature families present in the 0x00431b20 dispatch strip = [\"nondirect-ge1e-h0001-ffff-0004-0000-0200-p0000-0000-0000-ffff\"]",
@ -26005,6 +26055,7 @@ mod tests {
add_building_dispatch_strip_descriptor_labels: vec![],
add_building_dispatch_strip_records_with_trigger_kind: 0,
add_building_dispatch_strip_records_missing_trigger_kind: 0,
add_building_dispatch_strip_row_shape_families: vec![],
add_building_dispatch_strip_signature_families: vec![],
add_building_dispatch_strip_condition_tuple_families: vec![],
add_building_dispatch_strip_signature_condition_clusters: vec![],

View file

@ -320,6 +320,12 @@ Working rule:
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 descriptor-independent row-shape split is explicit now too:
the same cluster-counts surface reports normalized add-building row shapes.
Current targeted checks show `Texas Tea.gmp` on the one-row shape `[0:8:0]`, while
`Alternate USA.gmp` sits on the repeated three-row shape
`[0:8:-25,0:8:0,0:8:0]`; that gives the next pass a simpler shape-level discriminator even
when descriptor labels differ
- the same probe now narrows the candidate runtime-effect set too:
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