From fb13cd22d81e4c375239f311149dca333cf06284 Mon Sep 17 00:00:00 2001 From: Jan Petykiewicz Date: Sat, 18 Apr 2026 14:58:01 -0700 Subject: [PATCH] Ground bridge-only infrastructure prelude class --- crates/rrt-runtime/src/smp.rs | 71 +++++++++++++++++-- ...ntime-roots-camera-and-support-families.md | 5 +- docs/rehost-queue.md | 5 +- 3 files changed, 72 insertions(+), 9 deletions(-) diff --git a/crates/rrt-runtime/src/smp.rs b/crates/rrt-runtime/src/smp.rs index e6c63ba..bdd4bca 100644 --- a/crates/rrt-runtime/src/smp.rs +++ b/crates/rrt-runtime/src/smp.rs @@ -4297,8 +4297,8 @@ fn build_infrastructure_asset_trace_report( "0x0048e140 / 0x0048e160 / 0x0048e180 route-entry resolver helpers".to_string(), ]; 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(), - "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 grounded pure bridge-section class 0x0002/0xff before it reaches the two-child clone-path above 0x0048a1e0 and 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(), "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(|| { "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 .and_then(|probe| probe.payload_envelope_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![ - "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 { profile_family: analysis.profile_family.clone(), @@ -24254,7 +24282,27 @@ mod tests { 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(), sample_rows: Vec::new(), }, @@ -24310,12 +24358,22 @@ mod tests { assert!(trace .next_owner_questions .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[0].status, "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!( trace.candidate_consumer_hypotheses[0] .evidence @@ -24339,6 +24397,9 @@ mod tests { .any(|line| line.contains("0x005181f0/0x00518260") && line.contains("previous live id")) ); + assert!(trace.notes.iter().any(|line| { + line.contains("0x0002/0xff candidate class is grounded save-side") + })); assert!( trace.candidate_consumer_hypotheses[0] .evidence diff --git a/docs/control-loop-atlas/runtime-roots-camera-and-support-families.md b/docs/control-loop-atlas/runtime-roots-camera-and-support-families.md index 982e19d..b6ef9ab 100644 --- a/docs/control-loop-atlas/runtime-roots-camera-and-support-families.md +++ b/docs/control-loop-atlas/runtime-roots-camera-and-support-families.md @@ -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 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 - `0x0002 / 0xff` as the likely bridge-specific two-child / clone-path class above - `0x0048a1e0/0x0048dcf0`. + `0x0002 / 0xff` as the grounded save-side bridge-specific two-child candidate class above + `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 `Infrastructure` child vtable uses the shared tagged callback strip directly, with `+0x40 = 0x00455fc0`, `+0x48 = 0x00455870`, and `+0x4c = 0x00455930`. So the remaining diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index 9b2c709..9d3cf52 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -149,8 +149,9 @@ Working rule: `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: 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 - `0x0048a1e0/0x0048dcf0`. + `0x0002 / 0xff` as the grounded save-side bridge-specific two-child candidate class above + `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 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