Structure peer-site selector trace candidates

This commit is contained in:
Jan Petykiewicz 2026-04-18 18:54:16 -07:00
commit 3d78123e28
2 changed files with 35 additions and 0 deletions

View file

@ -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<String>,
#[serde(default)]
pub atlas_candidate_consumers: Vec<String>,
#[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")

View file

@ -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