Trace infrastructure mixed exact prefix classes

This commit is contained in:
Jan Petykiewicz 2026-04-18 16:05:22 -07:00
commit 7f0e863185
3 changed files with 148 additions and 14 deletions

View file

@ -2221,9 +2221,21 @@ pub struct SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixCorrel
pub mode_family_counts:
Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeModeFamilyCount>,
#[serde(default)]
pub name_pair_summaries:
Vec<SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary>,
#[serde(default)]
pub profile_span_counts:
Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount>,
#[serde(default)]
pub sample_rows: Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount {
pub previous_profile_chunk_len_to_next_name_or_end: usize,
pub count: usize,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
pub sample_index: usize,
@ -4862,12 +4874,34 @@ fn build_infrastructure_asset_trace_report(
})
.map(|correlation| {
format!(
"the exact 0xff0000ff/0x0001/0xff compact-prefix class is now explicit: dominant name={:?}/{:?} x{}, dominant span={:?} x{}, and sample rows={:?}",
"the exact 0xff0000ff/0x0001/0xff compact-prefix class is now explicit: dominant name={:?}/{:?} x{}, dominant span={:?} x{}, mode counts={:?}, name-pair counts={:?}, span counts={:?}, and sample rows={:?}",
correlation.dominant_primary_name,
correlation.dominant_secondary_name,
correlation.dominant_name_pair_count,
correlation.dominant_profile_span,
correlation.dominant_profile_span_count,
correlation
.mode_family_counts
.iter()
.map(|mode| format!("{}:{}", mode.mode_family, mode.count))
.collect::<Vec<_>>(),
correlation
.name_pair_summaries
.iter()
.map(|entry| format!(
"{:?}/{:?}:{}",
entry.primary_name, entry.secondary_name, entry.count
))
.collect::<Vec<_>>(),
correlation
.profile_span_counts
.iter()
.map(|entry| format!(
"0x{:x}:{}",
entry.previous_profile_chunk_len_to_next_name_or_end,
entry.count
))
.collect::<Vec<_>>(),
correlation
.sample_rows
.iter()
@ -4895,12 +4929,26 @@ fn build_infrastructure_asset_trace_report(
})
.map(|correlation| {
format!(
"the exact 0xff0000ff/0x0002/0xff compact-prefix class is now explicit too: dominant name={:?}/{:?} x{}, dominant span={:?} x{}, and sample rows={:?}",
"the exact 0xff0000ff/0x0002/0xff compact-prefix class is now explicit too: dominant name={:?}/{:?} x{}, dominant span={:?} x{}, mode counts={:?}, span counts={:?}, and sample rows={:?}",
correlation.dominant_primary_name,
correlation.dominant_secondary_name,
correlation.dominant_name_pair_count,
correlation.dominant_profile_span,
correlation.dominant_profile_span_count,
correlation
.mode_family_counts
.iter()
.map(|mode| format!("{}:{}", mode.mode_family, mode.count))
.collect::<Vec<_>>(),
correlation
.profile_span_counts
.iter()
.map(|entry| format!(
"0x{:x}:{}",
entry.previous_profile_chunk_len_to_next_name_or_end,
entry.count
))
.collect::<Vec<_>>(),
correlation
.sample_rows
.iter()
@ -14189,6 +14237,27 @@ fn parse_save_placed_structure_dynamic_side_buffer_probe(
}
})
.collect(),
name_pair_summaries: name_pair_counts
.into_iter()
.map(|((primary_name, secondary_name), count)| {
SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary {
primary_name,
secondary_name,
count,
}
})
.collect(),
profile_span_counts: profile_span_counts
.into_iter()
.map(
|(previous_profile_chunk_len_to_next_name_or_end, count)| {
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount {
previous_profile_chunk_len_to_next_name_or_end,
count,
}
},
)
.collect(),
sample_rows: rows
.iter()
.take(8)
@ -25321,6 +25390,24 @@ mod tests {
count: 15,
},
],
name_pair_summaries: vec![
SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary {
primary_name: Some("TunnelSTBrick_Section.3dp".to_string()),
secondary_name: Some("Infrastructure".to_string()),
count: 15,
},
SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary {
primary_name: Some("TrackCapST_Cap.3dp".to_string()),
secondary_name: Some("Infrastructure".to_string()),
count: 2,
},
],
profile_span_counts: vec![
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount {
previous_profile_chunk_len_to_next_name_or_end: 3,
count: 17,
},
],
sample_rows: vec![
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
sample_index: 0,
@ -25367,6 +25454,19 @@ mod tests {
count: 1,
},
],
name_pair_summaries: vec![
SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary {
primary_name: Some("TunnelSTBrick_Section.3dp".to_string()),
secondary_name: Some("Infrastructure".to_string()),
count: 1,
},
],
profile_span_counts: vec![
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount {
previous_profile_chunk_len_to_next_name_or_end: 0x27,
count: 1,
},
],
sample_rows: vec![
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
sample_index: 0,
@ -25413,6 +25513,19 @@ mod tests {
count: 2,
},
],
name_pair_summaries: vec![
SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary {
primary_name: Some("BridgeSTWood_Section.3dp".to_string()),
secondary_name: Some("Infrastructure".to_string()),
count: 2,
},
],
profile_span_counts: vec![
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount {
previous_profile_chunk_len_to_next_name_or_end: 0x27,
count: 2,
},
],
sample_rows: vec![
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
sample_index: 0,

View file

@ -2986,12 +2986,19 @@ The low helper strip beneath that shared family is tighter now too: `0x0052ecd0`
next infrastructure pass should stop treating all short rows as equally ambiguous and focus on
the smaller outlier families inside that class, especially the `BallastCap`-style zero-like
rows and any remaining non-`0x0001 / 0xff` prelude candidates.
Those outliers are explicit now too: the remaining `10` short-span rows on grounded `q.gms`
break into `9` `BallastCapST_Cap.3dp / Infrastructure` rows with compact prefix
`0xf3010100 / 0x0055 / 0x00` and candidate pattern `0x0055 / 0x00`, plus `1`
`TrackCapST_Cap.3dp / Infrastructure` row with compact prefix `0xff0000ff / 0x0001 / 0xff`.
So the next infrastructure pass should target the `BallastCap` outlier family first instead of
spending time on the already-dominant bridge-section class.
The exact compact-prefix classes are explicit now too:
`0xff0000ff / 0x0002 / 0xff` is a pure bridge class, `0xff000000 / {0x0001,0x0002} / 0xff`
are pure bridge classes, `0xf3010100 / 0x0055 / 0x00` is a pure `BallastCap` class, and
`0x0005d368 / 0x0001 / 0xff` is a pure one-row `TrackCap` class.
That sharpens the remaining infrastructure unknowns considerably: the only mixed exact
compact-prefix classes left on grounded `q.gms` are `0x000055f3 / 0x0001 / 0xff` and
`0xff0000ff / 0x0001 / 0xff`.
The current `0x000055f3 / 0x0001 / 0xff` class is tunnel-dominant and stays entirely on prior
profile span `0x03`, while the current `0xff0000ff / 0x0001 / 0xff` class is `TrackCap`-
dominant but still carries `4` tunnel rows spread across many spans.
So the next infrastructure pass should stop treating the remaining frontier as a generic
“mixed 0x06/outlier” problem and instead target the owning constructor/restore semantics for
those two exact mixed compact-prefix classes.
The candidate-pattern classes are explicit now too: `0x0055 / 0x00` is a pure
`BallastCapST_Cap.3dp / Infrastructure` class across `18` rows, always preceded by a zero-length
prior profile span, while `0x0002 / 0xff` is a pure

View file

@ -180,12 +180,26 @@ Working rule:
next infrastructure slice should stop treating the `0x06` class as uniformly ambiguous and focus
on the smaller outlier families inside that class, especially the zero-like `BallastCap`-style
rows and any remaining non-`0x0001 / 0xff` prelude candidates.
- Those outliers are explicit now too: the remaining `10` short-span rows on grounded `q.gms`
break into `9` `BallastCapST_Cap.3dp / Infrastructure` rows with compact prefix
`0xf3010100 / 0x0055 / 0x00` and candidate pattern `0x0055 / 0x00`, plus `1`
`TrackCapST_Cap.3dp / Infrastructure` row with compact prefix `0xff0000ff / 0x0001 / 0xff`.
So the next infrastructure slice should target the `BallastCap` outlier family first, not the
already-dominant bridge-section class.
- The exact compact-prefix classes are explicit across the whole prelude now too:
`0xff0000ff / 0x0002 / 0xff` is a pure bridge class, `0xff000000 / {0x0001,0x0002} / 0xff`
are pure bridge classes, `0xf3010100 / 0x0055 / 0x00` is a pure `BallastCap` class, and
`0x0005d368 / 0x0001 / 0xff` is a pure one-row `TrackCap` class.
- That sharpens the remaining infrastructure unknowns considerably: the only mixed exact
compact-prefix classes left on grounded `q.gms` are `0x000055f3 / 0x0001 / 0xff` and
`0xff0000ff / 0x0001 / 0xff`.
- The current `0x000055f3 / 0x0001 / 0xff` class is tunnel-dominant:
`TunnelSTBrick_Section.3dp / Infrastructure:13`, `TunnelSTBrick_Cap.3dp / Infrastructure:4`,
`TrackCapST_Cap.3dp / Infrastructure:0` in the exact-prefix correlation, with all `17` rows
staying on prior profile span `0x03`.
- The current `0xff0000ff / 0x0001 / 0xff` class is `TrackCap`-dominant but still carries `4`
tunnel rows:
`TrackCapST_Cap.3dp / Infrastructure:18`,
`TunnelSTBrick_Cap.3dp / Infrastructure:2`,
`TunnelSTBrick_Section.3dp / Infrastructure:2`.
Its rows are spread across many spans rather than one dominant restore span.
- So the next infrastructure slice should stop treating the remaining frontier as a generic
“mixed 0x06/outlier” problem and instead target the owning constructor/restore semantics for
those two exact mixed compact-prefix classes.
- The candidate-pattern classes are now explicit across the whole stream too: `0x0055 / 0x00`
is a pure `BallastCapST_Cap.3dp / Infrastructure` class across `18` rows, always preceded by a
zero-length prior profile span, while `0x0002 / 0xff` is a pure