From 3d78123e28a5a0ec9430b8c46981a2dee5b184ff Mon Sep 17 00:00:00 2001 From: Jan Petykiewicz Date: Sat, 18 Apr 2026 18:54:16 -0700 Subject: [PATCH] Structure peer-site selector trace candidates --- crates/rrt-runtime/src/smp.rs | 30 ++++++++++++++++++++++++++++++ docs/rehost-queue.md | 5 +++++ 2 files changed, 35 insertions(+) diff --git a/crates/rrt-runtime/src/smp.rs b/crates/rrt-runtime/src/smp.rs index 6a0da11..a081dc1 100644 --- a/crates/rrt-runtime/src/smp.rs +++ b/crates/rrt-runtime/src/smp.rs @@ -3468,6 +3468,11 @@ pub struct SmpPeriodicCompanyServiceTraceReport { pub placed_structure_record_body_present: bool, #[serde(default)] pub infrastructure_asset_side_buffer_present: bool, + pub peer_site_selector_candidate_owner_strip: String, + pub peer_site_selector_candidate_persisted_tag_hex: String, + pub peer_site_selector_candidate_selector_lane: String, + #[serde(default)] + pub peer_site_selector_candidate_helper_linkage: Vec, #[serde(default)] pub atlas_candidate_consumers: Vec, #[serde(default)] @@ -4055,6 +4060,14 @@ fn build_periodic_company_service_trace_report( analysis.placed_structure_dynamic_side_buffer.is_some(); let world_issue_37_present = analysis.world_issue_37.is_some(); let world_finance_neighborhood_present = analysis.world_finance_neighborhood.is_some(); + let peer_site_selector_candidate_owner_strip = + "0x0045c150 -> 0x0045c310 -> 0x0045c36e -> 0x00456100 -> 0x00455b70".to_string(); + let peer_site_selector_candidate_persisted_tag_hex = "0x5dc1".to_string(); + let peer_site_selector_candidate_selector_lane = "[owner+0x23e]".to_string(); + let peer_site_selector_candidate_helper_linkage = vec![ + "0x0040ceab -> 0x0045c150".to_string(), + "0x0040d1a1 -> 0x0045c310".to_string(), + ]; let atlas_candidate_consumers = vec![ "0x004019e0 periodic company outer service owner".to_string(), "0x00406050 city-connection bonus/news owner".to_string(), @@ -4301,6 +4314,10 @@ fn build_periodic_company_service_trace_report( region_record_body_present, placed_structure_record_body_present, infrastructure_asset_side_buffer_present, + peer_site_selector_candidate_owner_strip, + peer_site_selector_candidate_persisted_tag_hex, + peer_site_selector_candidate_selector_lane, + peer_site_selector_candidate_helper_linkage, atlas_candidate_consumers, known_bridge_helpers, next_owner_questions, @@ -25954,6 +25971,19 @@ mod tests { assert_eq!(trace.known_bridge_helpers.len(), 38); assert_eq!(trace.next_owner_questions.len(), 4); assert_eq!(trace.companies.len(), 1); + assert_eq!( + trace.peer_site_selector_candidate_owner_strip, + "0x0045c150 -> 0x0045c310 -> 0x0045c36e -> 0x00456100 -> 0x00455b70" + ); + assert_eq!( + trace.peer_site_selector_candidate_persisted_tag_hex, + "0x5dc1" + ); + assert_eq!( + trace.peer_site_selector_candidate_selector_lane, + "[owner+0x23e]" + ); + assert_eq!(trace.peer_site_selector_candidate_helper_linkage.len(), 2); assert!(trace.atlas_candidate_consumers.iter().any(|line| { line.contains("0x00420030 / 0x00420280") && line.contains("0x006cec20") diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index 7f07f7d..c2b7a11 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -106,6 +106,11 @@ Working rule: `0x00420030 / 0x00420280 / 0x0047efe0 / 0x0047fd50` consume the resulting selector, with the current first target being the save-backed `0x0045c150 -> 0x0045c310 -> 0x0045c36e -> 0x00456100` family + - use the structured periodic-company trace candidate fields now checked into + `inspect-periodic-company-service-trace`: owner strip + `0x0045c150 -> 0x0045c310 -> 0x0045c36e -> 0x00456100 -> 0x00455b70`, persisted tag + `0x5dc1`, selector lane `[owner+0x23e]`, and helper linkage + `0x0040ceab -> 0x0045c150` / `0x0040d1a1 -> 0x0045c310` - decide whether the direct `0x0040ceab / 0x0040d1a1` linkage is enough to treat that save-backed owner family as the same class-0 site family consumed by `0x00420030 / 0x00420280 / 0x0047efe0 / 0x0047fd50`, or whether one more helper-field bridge