Bound infrastructure asset consumer candidates

This commit is contained in:
Jan Petykiewicz 2026-04-18 12:40:06 -07:00
commit 61aed9e9ab
2 changed files with 47 additions and 1 deletions

View file

@ -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<String>,
#[serde(default)]
pub branches: Vec<SmpServiceTraceBranchStatus>,
#[serde(default)]
pub notes: Vec<String>,
@ -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,
}

View file

@ -13,7 +13,11 @@ Working rule:
`runtime inspect-infrastructure-asset-trace <save.gms>` 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`