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 {