diff --git a/crates/rrt-runtime/src/smp.rs b/crates/rrt-runtime/src/smp.rs index 008139c..31fee15 100644 --- a/crates/rrt-runtime/src/smp.rs +++ b/crates/rrt-runtime/src/smp.rs @@ -3482,6 +3482,12 @@ pub struct SmpPeriodicCompanyServiceTraceReport { #[serde(default)] pub peer_site_runtime_reconstruction_steps: Vec, #[serde(default)] + pub near_city_acquisition_region_input_fields: Vec, + #[serde(default)] + pub near_city_acquisition_peer_input_fields: Vec, + #[serde(default)] + pub near_city_acquisition_company_input_fields: Vec, + #[serde(default)] pub atlas_candidate_consumers: Vec, #[serde(default)] pub known_bridge_helpers: Vec, @@ -4102,6 +4108,26 @@ fn build_periodic_company_service_trace_report( "[peer+0x08] refreshed during 0x00444690 -> 0x004133b0 -> 0x0040ee10 -> 0x0040edf6 -> 0x00480710" .to_string(), ]; + let near_city_acquisition_region_input_fields = vec![ + "[region+0x276] pending amount gate".to_string(), + "region vtable +0x80 byte-0x32 class filter consumed through 0x0040d360".to_string(), + "[region+0x3d5] age/year delta lane".to_string(), + "[region+0x310/+0x338/+0x360] cached tri-lane sampled through 0x0040cac0".to_string(), + "[region+0x2a4] winning linked company id output lane".to_string(), + ]; + let near_city_acquisition_peer_input_fields = vec![ + "center-cell token gate 0x0041f6e0 -> 0x0042b2d0 over the current region".to_string(), + "[site+0x04] live backing-record selector consumed by 0x0047efe0 / 0x0047fd50".to_string(), + "[site+0x2a8] linked peer-site id consumed by 0x0040d1f0".to_string(), + "[peer+0x08] route-entry anchor id consumed by 0x0047dda0".to_string(), + "linked-region status branch 0x0047de00 -> 0x0040c990".to_string(), + ]; + let near_city_acquisition_company_input_fields = vec![ + "company stat-family reader 0x2329/0x0d through 0x0042a5d0".to_string(), + "current chairman profile byte [profile+0x291] through 0x00426ef0".to_string(), + "company byte [company+0x5b] and indexed lane [company+0x67 + 12*0x0042a0e0()]".to_string(), + "company-root argument [company+0x00] passed into 0x0040d540 and 0x00455f60".to_string(), + ]; let atlas_candidate_consumers = vec![ "0x004019e0 periodic company outer service owner".to_string(), "0x00406050 city-connection bonus/news owner".to_string(), @@ -4357,6 +4383,9 @@ fn build_periodic_company_service_trace_report( peer_site_runtime_input_fields, peer_site_runtime_reconstruction_status, peer_site_runtime_reconstruction_steps, + near_city_acquisition_region_input_fields, + near_city_acquisition_peer_input_fields, + near_city_acquisition_company_input_fields, atlas_candidate_consumers, known_bridge_helpers, next_owner_questions, @@ -26034,6 +26063,9 @@ mod tests { "restore_subset_and_bring_up_reconstruct_runtime_subset" ); assert_eq!(trace.peer_site_runtime_reconstruction_steps.len(), 3); + assert_eq!(trace.near_city_acquisition_region_input_fields.len(), 5); + assert_eq!(trace.near_city_acquisition_peer_input_fields.len(), 5); + assert_eq!(trace.near_city_acquisition_company_input_fields.len(), 4); assert!(trace.atlas_candidate_consumers.iter().any(|line| { line.contains("0x00420030 / 0x00420280") && line.contains("0x006cec20") @@ -26044,6 +26076,24 @@ mod tests { && line.contains("0x004014b0") && line.contains("peer-site restore subset") })); + assert!( + trace + .near_city_acquisition_region_input_fields + .iter() + .any(|line| line.contains("[region+0x276]")) + ); + assert!( + trace + .near_city_acquisition_peer_input_fields + .iter() + .any(|line| line.contains("[site+0x04]")) + ); + assert!( + trace + .near_city_acquisition_company_input_fields + .iter() + .any(|line| line.contains("0x2329/0x0d")) + ); assert!(trace.next_owner_questions.iter().any(|line| { line.contains("0x004160aa") && line.contains("0x0040ee10") diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index 37b3f8e..5c33ef2 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -123,6 +123,16 @@ Working rule: `restore_subset_and_bring_up_reconstruct_runtime_subset` - treat the runtime subset as reconstructible from the restore subset plus the already-grounded bring-up path for planning purposes + - use the new structured acquisition input families in the same trace: + region subset + `[region+0x276]`, region vtable `+0x80` byte-`0x32`, `[region+0x3d5]`, + `[region+0x310/+0x338/+0x360]`, `[region+0x2a4]`; + peer subset + center-cell token gate, `[site+0x04]`, `[site+0x2a8]`, `[peer+0x08]`, linked-region status; + company subset + stat-family reader `0x2329/0x0d`, chairman byte `[profile+0x291]`, company byte `[company+0x5b]` + plus indexed lane `[company+0x67 + 12*0x0042a0e0()]`, and the company-root argument passed into + `0x0040d540 / 0x00455f60` - make the next periodic-company slice about the smaller shellless-simulation question instead: which persisted region/company linkage fields are still missing for `0x004014b0` and the city-connection sibling once the peer-site runtime subset is no longer the blocker