From 210a1c28d2db4fcd1099a0f5bb4063fa9e1bed1e Mon Sep 17 00:00:00 2001 From: Jan Petykiewicz Date: Sat, 18 Apr 2026 19:08:27 -0700 Subject: [PATCH] Ground peer-site runtime reconstruction contract --- crates/rrt-runtime/src/smp.rs | 28 ++++++++++++++++++++++++---- docs/rehost-queue.md | 9 ++++++--- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/crates/rrt-runtime/src/smp.rs b/crates/rrt-runtime/src/smp.rs index 39460b2..008139c 100644 --- a/crates/rrt-runtime/src/smp.rs +++ b/crates/rrt-runtime/src/smp.rs @@ -3478,6 +3478,9 @@ pub struct SmpPeriodicCompanyServiceTraceReport { pub peer_site_restore_input_fields: Vec, #[serde(default)] pub peer_site_runtime_input_fields: Vec, + pub peer_site_runtime_reconstruction_status: String, + #[serde(default)] + pub peer_site_runtime_reconstruction_steps: Vec, #[serde(default)] pub atlas_candidate_consumers: Vec, #[serde(default)] @@ -4089,6 +4092,16 @@ fn build_periodic_company_service_trace_report( "[site+0x2a8] linked peer-site id consumed by 0x0040d1f0".to_string(), "[peer+0x08] route-entry anchor id consumed by 0x0047dda0".to_string(), ]; + let peer_site_runtime_reconstruction_status = + "restore_subset_and_bring_up_reconstruct_runtime_subset".to_string(); + let peer_site_runtime_reconstruction_steps = vec![ + "[site+0x04] restored from 0x0045c150 -> 0x0045c310 -> 0x0045c36e -> 0x00456100 -> 0x00455b70 -> 0x0052edf0" + .to_string(), + "[site+0x2a8] rewritten by 0x0040f6d0 after 0x00481390 returns the linked peer id" + .to_string(), + "[peer+0x08] refreshed during 0x00444690 -> 0x004133b0 -> 0x0040ee10 -> 0x0040edf6 -> 0x00480710" + .to_string(), + ]; let atlas_candidate_consumers = vec![ "0x004019e0 periodic company outer service owner".to_string(), "0x00406050 city-connection bonus/news owner".to_string(), @@ -4159,7 +4172,7 @@ fn build_periodic_company_service_trace_report( "0x00409950 linked-transit roster sibling owner".to_string(), ]; let next_owner_questions = vec![ - "Which minimum persisted fields are actually needed to rehost 0x004014b0 shelllessly once the selector seam is grounded: only the restore subset [site+0x3cc/+0x3d0] plus the 0x5dc1-backed [owner+0x23e/+0x242] lanes, or must the live runtime subset [site+0x04], [site+0x2a8], and [peer+0x08] also be materialized explicitly in the headless state contract?".to_string(), + "Which persisted region and company linkage fields are still missing for a shellless 0x004014b0 implementation once the peer-site restore subset is accepted as sufficient to reconstruct the live runtime subset?".to_string(), "How much of the linked-peer refresh path is strictly post-load versus recurring runtime maintenance now that 0x004133b0 reaches 0x0040ee10 -> 0x0040edf6 -> 0x00480710 during bring-up and 0x004160aa also re-enters 0x0040ee10 later?".to_string(), "Which persisted linkage fields behind 0x0047efe0, [region+0x2a4], and [region+0x276] are sufficient to rehost the 0x004014b0 proximity-and-news branch without shell state?".to_string(), "Which infrastructure consumer above the grounded 0x38a5 seam actually drives the linked-transit branch that 0x00409950 follows?".to_string(), @@ -4342,6 +4355,8 @@ fn build_periodic_company_service_trace_report( peer_site_selector_candidate_helper_linkage, peer_site_restore_input_fields, peer_site_runtime_input_fields, + peer_site_runtime_reconstruction_status, + peer_site_runtime_reconstruction_steps, atlas_candidate_consumers, known_bridge_helpers, next_owner_questions, @@ -26014,15 +26029,20 @@ mod tests { assert_eq!(trace.peer_site_selector_candidate_helper_linkage.len(), 4); assert_eq!(trace.peer_site_restore_input_fields.len(), 4); assert_eq!(trace.peer_site_runtime_input_fields.len(), 3); + assert_eq!( + trace.peer_site_runtime_reconstruction_status, + "restore_subset_and_bring_up_reconstruct_runtime_subset" + ); + assert_eq!(trace.peer_site_runtime_reconstruction_steps.len(), 3); assert!(trace.atlas_candidate_consumers.iter().any(|line| { line.contains("0x00420030 / 0x00420280") && line.contains("0x006cec20") && line.contains("peer-site boolean/selector pair") })); assert!(trace.next_owner_questions.iter().any(|line| { - line.contains("[site+0x3cc/+0x3d0]") - && line.contains("[owner+0x23e/+0x242]") - && line.contains("[site+0x04]") + line.contains("persisted region and company linkage fields") + && line.contains("0x004014b0") + && line.contains("peer-site restore subset") })); assert!(trace.next_owner_questions.iter().any(|line| { line.contains("0x004160aa") diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index 28b2f44..37b3f8e 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -119,10 +119,13 @@ Working rule: `[site+0x3cc/+0x3d0]` plus `0x5dc1`-backed `[owner+0x23e/+0x242]`, and runtime subset `[site+0x04]`, `[site+0x2a8]`, `[peer+0x08]` + - use the new structured reconstruction status in the same trace: + `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 - make the next periodic-company slice about the smaller shellless-simulation question instead: - whether `0x004014b0` and the city-connection sibling only need that restore subset to - reconstruct the runtime subset deterministically, or whether the runtime subset has to become - an explicit headless-state contract + 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 - Use the higher-layer probes as the standard entry point for the current blocked frontier instead of generic save scans: `runtime inspect-periodic-company-service-trace `,