From 61aed9e9abc2f451f9c693763a076a877479fa8a Mon Sep 17 00:00:00 2001 From: Jan Petykiewicz Date: Sat, 18 Apr 2026 12:40:06 -0700 Subject: [PATCH] Bound infrastructure asset consumer candidates --- crates/rrt-runtime/src/smp.rs | 37 +++++++++++++++++++++++++++++++++++ docs/rehost-queue.md | 11 ++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/crates/rrt-runtime/src/smp.rs b/crates/rrt-runtime/src/smp.rs index 7e6fe94..ec64fb9 100644 --- a/crates/rrt-runtime/src/smp.rs +++ b/crates/rrt-runtime/src/smp.rs @@ -2970,8 +2970,16 @@ pub struct SmpInfrastructureAssetTraceReport { #[serde(default)] pub side_buffer_unique_name_pair_count: usize, #[serde(default)] + pub bridge_like_name_pair_count: usize, + #[serde(default)] + pub tunnel_like_name_pair_count: usize, + #[serde(default)] + pub track_cap_like_name_pair_count: usize, + #[serde(default)] pub triplet_alignment_overlap_count: usize, #[serde(default)] + pub atlas_candidate_consumers: Vec, + #[serde(default)] pub branches: Vec, #[serde(default)] pub notes: Vec, @@ -3666,6 +3674,31 @@ fn build_infrastructure_asset_trace_report( let alignment = analysis .placed_structure_dynamic_side_buffer_alignment .as_ref(); + let name_pair_summaries = side_buffer + .map(|probe| probe.name_pair_summaries.as_slice()) + .unwrap_or(&[]); + let bridge_like_name_pair_count = name_pair_summaries + .iter() + .filter(|summary| summary.primary_name.contains("Bridge")) + .count(); + let tunnel_like_name_pair_count = name_pair_summaries + .iter() + .filter(|summary| summary.primary_name.contains("Tunnel")) + .count(); + let track_cap_like_name_pair_count = name_pair_summaries + .iter() + .filter(|summary| summary.primary_name.contains("TrackCap")) + .count(); + let atlas_candidate_consumers = vec![ + "0x0048a1e0 infrastructure child attach helper".to_string(), + "0x0048dd50 infrastructure child rebuild loop".to_string(), + "0x00490a3c infrastructure payload attach helper".to_string(), + "0x004559d0 infrastructure tagged string-triplet serializer".to_string(), + "0x00455870 infrastructure tagged string-triplet load companion".to_string(), + "0x00455930 infrastructure scalar-triplet serializer sibling".to_string(), + "0x00448a70 / 0x00493660 / 0x0048b660 route and world follow-on family".to_string(), + "0x004133b0 placed-structure local-runtime refresh outer owner".to_string(), + ]; let branches = vec![ build_service_trace_branch_status( "infrastructure_asset_owner_seam", @@ -3752,9 +3785,13 @@ fn build_infrastructure_asset_trace_report( side_buffer_unique_name_pair_count: side_buffer .map(|probe| probe.unique_embedded_name_pair_count) .unwrap_or_default(), + bridge_like_name_pair_count, + tunnel_like_name_pair_count, + track_cap_like_name_pair_count, triplet_alignment_overlap_count: alignment .map(|probe| probe.overlapping_name_pair_count) .unwrap_or_default(), + atlas_candidate_consumers, branches, notes, } diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index 29ea111..dbdecaf 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -13,7 +13,11 @@ Working rule: `runtime inspect-infrastructure-asset-trace ` now shows that the `0x38a5` infrastructure-asset seam is grounded and the old alias hypothesis is disproved on `q.gms`, so the next placed-structure slice should target the consumer mapping above that seam rather than - more collection discovery. + more collection discovery; the same trace now also carries atlas-backed candidate consumers + (`0x0048a1e0`, `0x0048dd50`, `0x00490a3c`, `0x004559d0`, `0x00455870`, `0x00455930`, + `0x00448a70/0x00493660/0x0048b660`, `0x004133b0`) plus bridge/tunnel/track-cap name-family + counts, so the next pass can start at those concrete owners instead of the whole + placed-structure family. - 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 @@ -82,6 +86,11 @@ Working rule: seams; the region trace keeps the queued kind-`7` notice family on the transient side; and the infrastructure trace now makes the `0x38a5` consumer-mapping blocker first-class after disproving any alias to the `0x36b1` placed-structure triplet corpus. +- The infrastructure trace now also carries one small atlas-backed static-analysis layer above that + seam: bridge/tunnel/track-cap name-family counts from the real side-buffer corpus plus concrete + consumer candidates rooted at the `Infrastructure` child attach/rebuild/serializer helpers and + the later route/local-runtime follow-on owners. That means the next `0x38a5` pass can be + targeted static mapping instead of another generic scan. - Save inspection now splits the shared `0x5209/0x520a/0x520b` family correctly: the smaller direct `0x1d5` collection is the live train family and now exposes a live-entry directory rooted at metadata dword `16`, while the actual region family is the larger non-direct `Marker09`