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: pub mode_family_counts:
Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeModeFamilyCount>, Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeModeFamilyCount>,
#[serde(default)] #[serde(default)]
pub name_pair_summaries:
Vec<SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary>,
#[serde(default)]
pub profile_span_counts:
Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount>,
#[serde(default)]
pub sample_rows: Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample>, 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)] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample { pub struct SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
pub sample_index: usize, pub sample_index: usize,
@ -4862,12 +4874,34 @@ fn build_infrastructure_asset_trace_report(
}) })
.map(|correlation| { .map(|correlation| {
format!( 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_primary_name,
correlation.dominant_secondary_name, correlation.dominant_secondary_name,
correlation.dominant_name_pair_count, correlation.dominant_name_pair_count,
correlation.dominant_profile_span, correlation.dominant_profile_span,
correlation.dominant_profile_span_count, 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 correlation
.sample_rows .sample_rows
.iter() .iter()
@ -4895,12 +4929,26 @@ fn build_infrastructure_asset_trace_report(
}) })
.map(|correlation| { .map(|correlation| {
format!( 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_primary_name,
correlation.dominant_secondary_name, correlation.dominant_secondary_name,
correlation.dominant_name_pair_count, correlation.dominant_name_pair_count,
correlation.dominant_profile_span, correlation.dominant_profile_span,
correlation.dominant_profile_span_count, 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 correlation
.sample_rows .sample_rows
.iter() .iter()
@ -14189,6 +14237,27 @@ fn parse_save_placed_structure_dynamic_side_buffer_probe(
} }
}) })
.collect(), .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 sample_rows: rows
.iter() .iter()
.take(8) .take(8)
@ -25321,6 +25390,24 @@ mod tests {
count: 15, 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![ sample_rows: vec![
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample { SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
sample_index: 0, sample_index: 0,
@ -25367,6 +25454,19 @@ mod tests {
count: 1, 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![ sample_rows: vec![
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample { SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
sample_index: 0, sample_index: 0,
@ -25413,6 +25513,19 @@ mod tests {
count: 2, 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![ sample_rows: vec![
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample { SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
sample_index: 0, 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 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 the smaller outlier families inside that class, especially the `BallastCap`-style zero-like
rows and any remaining non-`0x0001 / 0xff` prelude candidates. 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` The exact compact-prefix classes are explicit now too:
break into `9` `BallastCapST_Cap.3dp / Infrastructure` rows with compact prefix `0xff0000ff / 0x0002 / 0xff` is a pure bridge class, `0xff000000 / {0x0001,0x0002} / 0xff`
`0xf3010100 / 0x0055 / 0x00` and candidate pattern `0x0055 / 0x00`, plus `1` are pure bridge classes, `0xf3010100 / 0x0055 / 0x00` is a pure `BallastCap` class, and
`TrackCapST_Cap.3dp / Infrastructure` row with compact prefix `0xff0000ff / 0x0001 / 0xff`. `0x0005d368 / 0x0001 / 0xff` is a pure one-row `TrackCap` class.
So the next infrastructure pass should target the `BallastCap` outlier family first instead of That sharpens the remaining infrastructure unknowns considerably: the only mixed exact
spending time on the already-dominant bridge-section class. 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 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 `BallastCapST_Cap.3dp / Infrastructure` class across `18` rows, always preceded by a zero-length
prior profile span, while `0x0002 / 0xff` is a pure 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 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 on the smaller outlier families inside that class, especially the zero-like `BallastCap`-style
rows and any remaining non-`0x0001 / 0xff` prelude candidates. 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` - The exact compact-prefix classes are explicit across the whole prelude now too:
break into `9` `BallastCapST_Cap.3dp / Infrastructure` rows with compact prefix `0xff0000ff / 0x0002 / 0xff` is a pure bridge class, `0xff000000 / {0x0001,0x0002} / 0xff`
`0xf3010100 / 0x0055 / 0x00` and candidate pattern `0x0055 / 0x00`, plus `1` are pure bridge classes, `0xf3010100 / 0x0055 / 0x00` is a pure `BallastCap` class, and
`TrackCapST_Cap.3dp / Infrastructure` row with compact prefix `0xff0000ff / 0x0001 / 0xff`. `0x0005d368 / 0x0001 / 0xff` is a pure one-row `TrackCap` class.
So the next infrastructure slice should target the `BallastCap` outlier family first, not the - That sharpens the remaining infrastructure unknowns considerably: the only mixed exact
already-dominant bridge-section class. 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` - 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 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 zero-length prior profile span, while `0x0002 / 0xff` is a pure