Ground bridge-only infrastructure prelude class

This commit is contained in:
Jan Petykiewicz 2026-04-18 14:58:01 -07:00
commit fb13cd22d8
3 changed files with 72 additions and 9 deletions

View file

@ -4297,8 +4297,8 @@ fn build_infrastructure_asset_trace_report(
"0x0048e140 / 0x0048e160 / 0x0048e180 route-entry resolver helpers".to_string(), "0x0048e140 / 0x0048e160 / 0x0048e180 route-entry resolver helpers".to_string(),
]; ];
let next_owner_questions = vec![ let next_owner_questions = vec![
"Does the pure bridge-section class 0x0002/0xff map directly to the two-child clone-path above 0x0048a1e0 and 0x0048dcf0?".to_string(), "Which upstream owner or boundary emits the grounded pure bridge-section class 0x0002/0xff before it reaches the two-child clone-path above 0x0048a1e0 and 0x0048dcf0?".to_string(),
"Does the pure BallastCap class 0x0055/0x00 represent a BallastCap-specific boundary artifact rather than a real outer prelude consumed by 0x0048dcf0?".to_string(), "Which upstream owner or boundary emits the pure BallastCap class 0x0055/0x00 if it is only a BallastCap-specific boundary artifact rather than a real outer prelude consumed by 0x0048dcf0?".to_string(),
"Which 0x38a5 embedded name-pair groups survive into the per-child vtable +0x40 payload callbacks dispatched through 0x00455a50?".to_string(), "Which 0x38a5 embedded name-pair groups survive into the per-child vtable +0x40 payload callbacks dispatched through 0x00455a50?".to_string(),
"Is cached primary-child slot [this+0x248] the first owner-visible bridge from the restored child stream into route-entry rebuild once the bridge two-child class is isolated?".to_string(), "Is cached primary-child slot [this+0x248] the first owner-visible bridge from the restored child stream into route-entry rebuild once the bridge two-child class is isolated?".to_string(),
]; ];
@ -4535,6 +4535,34 @@ fn build_infrastructure_asset_trace_report(
.unwrap_or_else(|| { .unwrap_or_else(|| {
"no candidate-pattern correlation summary was available".to_string() "no candidate-pattern correlation summary was available".to_string()
}), }),
side_buffer
.and_then(|probe| probe.payload_envelope_summary.as_ref())
.and_then(|summary| summary.name_prelude_candidate_summary.as_ref())
.and_then(|summary| {
summary.candidate_pattern_correlations.iter().find(|entry| {
entry.child_count_candidate == 2
&& entry.saved_primary_child_byte_candidate == 0xff
&& entry.dominant_primary_name.as_deref()
== Some("BridgeSTWood_Section.3dp")
&& entry.dominant_secondary_name.as_deref()
== Some("Infrastructure")
})
})
.map(|correlation| {
format!(
"the bridge-only two-child class is now grounded save-side too: candidate pattern {}/{} spans {} rows, stays pure {:?}/{:?}, and the dominant prior profile span is {:?} x{}",
correlation.child_count_candidate_hex,
correlation.saved_primary_child_byte_candidate_hex,
correlation.row_count,
correlation.dominant_primary_name,
correlation.dominant_secondary_name,
correlation.dominant_profile_span,
correlation.dominant_profile_span_count
)
})
.unwrap_or_else(|| {
"no grounded pure bridge-only two-child candidate class was available in the prelude correlations".to_string()
}),
side_buffer side_buffer
.and_then(|probe| probe.payload_envelope_summary.as_ref()) .and_then(|probe| probe.payload_envelope_summary.as_ref())
.and_then(|summary| summary.name_prelude_candidate_summary.as_ref()) .and_then(|summary| summary.name_prelude_candidate_summary.as_ref())
@ -4742,7 +4770,7 @@ fn build_infrastructure_asset_trace_report(
), ),
]; ];
let notes = vec![ let notes = vec![
"Infrastructure asset trace now makes the side-buffer-versus-triplet split explicit: owner seam identity is grounded, consumer semantics are still blocked.".to_string(), "Infrastructure asset trace now makes the side-buffer-versus-triplet split explicit: owner seam identity is grounded, the pure bridge-only 0x0002/0xff candidate class is grounded save-side, and the remaining unknown is the upstream chooser above the child attach path.".to_string(),
]; ];
SmpInfrastructureAssetTraceReport { SmpInfrastructureAssetTraceReport {
profile_family: analysis.profile_family.clone(), profile_family: analysis.profile_family.clone(),
@ -24254,7 +24282,27 @@ mod tests {
count: 110, count: 110,
}, },
), ),
candidate_pattern_correlations: Vec::new(), candidate_pattern_correlations: vec![
SmpSavePlacedStructureDynamicSideBufferNamePreludeCandidatePatternCorrelation {
child_count_candidate: 2,
child_count_candidate_hex: "0x0002".to_string(),
saved_primary_child_byte_candidate: 0xff,
saved_primary_child_byte_candidate_hex: "0xff".to_string(),
row_count: 18,
unique_name_pair_count: 1,
unique_profile_span_count: 1,
dominant_primary_name: Some(
"BridgeSTWood_Section.3dp".to_string(),
),
dominant_secondary_name: Some(
"Infrastructure".to_string(),
),
dominant_name_pair_count: 18,
dominant_profile_span: Some(6),
dominant_profile_span_count: 10,
sample_rows: Vec::new(),
},
],
profile_span_correlations: Vec::new(), profile_span_correlations: Vec::new(),
sample_rows: Vec::new(), sample_rows: Vec::new(),
}, },
@ -24310,12 +24358,22 @@ mod tests {
assert!(trace assert!(trace
.next_owner_questions .next_owner_questions
.iter() .iter()
.any(|line| line.contains("0x0002/0xff"))); .any(|line| line.contains("0x0002/0xff")
&& line.contains("emits")
&& line.contains("two-child clone-path")));
assert_eq!(trace.candidate_consumer_hypotheses.len(), 3); assert_eq!(trace.candidate_consumer_hypotheses.len(), 3);
assert_eq!( assert_eq!(
trace.candidate_consumer_hypotheses[0].status, trace.candidate_consumer_hypotheses[0].status,
"highest_priority_static_mapping_target" "highest_priority_static_mapping_target"
); );
assert!(
trace.candidate_consumer_hypotheses[0]
.evidence
.iter()
.any(|line| line.contains("bridge-only two-child class is now grounded save-side")
&& line.contains("0x0002")
&& line.contains("BridgeSTWood_Section.3dp"))
);
assert!( assert!(
trace.candidate_consumer_hypotheses[0] trace.candidate_consumer_hypotheses[0]
.evidence .evidence
@ -24339,6 +24397,9 @@ mod tests {
.any(|line| line.contains("0x005181f0/0x00518260") .any(|line| line.contains("0x005181f0/0x00518260")
&& line.contains("previous live id")) && line.contains("previous live id"))
); );
assert!(trace.notes.iter().any(|line| {
line.contains("0x0002/0xff candidate class is grounded save-side")
}));
assert!( assert!(
trace.candidate_consumer_hypotheses[0] trace.candidate_consumer_hypotheses[0]
.evidence .evidence

View file

@ -2998,8 +2998,9 @@ The low helper strip beneath that shared family is tighter now too: `0x0052ecd0`
`BridgeSTWood_Section.3dp / Infrastructure` class across `18` rows with dominant prior profile `BridgeSTWood_Section.3dp / Infrastructure` class across `18` rows with dominant prior profile
span `0x06` (`10` rows). So the next infrastructure pass should split its owner questions the span `0x06` (`10` rows). So the next infrastructure pass should split its owner questions the
same way: treat `0x0055 / 0x00` as a `BallastCap`-specific boundary artifact class, and treat same way: treat `0x0055 / 0x00` as a `BallastCap`-specific boundary artifact class, and treat
`0x0002 / 0xff` as the likely bridge-specific two-child / clone-path class above `0x0002 / 0xff` as the grounded save-side bridge-specific two-child candidate class above
`0x0048a1e0/0x0048dcf0`. `0x0048a1e0/0x0048dcf0`, with the remaining unknown narrowed to the upstream chooser that emits
that class before the attach/rebuild path runs.
The child loader family is explicit now too: local `.rdata` at `0x005cfd00` proves the The child loader family is explicit now too: local `.rdata` at `0x005cfd00` proves the
`Infrastructure` child vtable uses the shared tagged callback strip directly, with `Infrastructure` child vtable uses the shared tagged callback strip directly, with
`+0x40 = 0x00455fc0`, `+0x48 = 0x00455870`, and `+0x4c = 0x00455930`. So the remaining `+0x40 = 0x00455fc0`, `+0x48 = 0x00455870`, and `+0x4c = 0x00455930`. So the remaining

View file

@ -149,8 +149,9 @@ Working rule:
`BridgeSTWood_Section.3dp / Infrastructure` class across `18` rows with dominant prior profile `BridgeSTWood_Section.3dp / Infrastructure` class across `18` rows with dominant prior profile
span `0x06` (`10` rows). So the next infrastructure pass should split its owner questions: span `0x06` (`10` rows). So the next infrastructure pass should split its owner questions:
treat `0x0055 / 0x00` as a `BallastCap`-specific boundary artifact class, and treat treat `0x0055 / 0x00` as a `BallastCap`-specific boundary artifact class, and treat
`0x0002 / 0xff` as the likely bridge-specific two-child / clone-path class above `0x0002 / 0xff` as the grounded save-side bridge-specific two-child candidate class above
`0x0048a1e0/0x0048dcf0`. `0x0048a1e0/0x0048dcf0`, with the remaining unknown narrowed to the upstream chooser that emits
that class before the attach/rebuild path runs.
- Reconstruct the save-side region record body on top of the newly corrected non-direct tagged - Reconstruct the save-side region record body on top of the newly corrected non-direct tagged
region seam (`0x5209/0x520a/0x520b`, stride hint `0x06`, `Marker09` record stems) now that the region seam (`0x5209/0x520a/0x520b`, stride hint `0x06`, `Marker09` record stems) now that the
`0x55f3` payload is known to be fully consumed by the embedded profile collection on grounded `0x55f3` payload is known to be fully consumed by the embedded profile collection on grounded