diff --git a/crates/rrt-runtime/src/smp.rs b/crates/rrt-runtime/src/smp.rs index 7bcbb41..9d0eaaf 100644 --- a/crates/rrt-runtime/src/smp.rs +++ b/crates/rrt-runtime/src/smp.rs @@ -5007,6 +5007,7 @@ fn build_periodic_company_service_trace_report( "company linked-transit latch [company+0x0d56] consumed by 0x00409950 and the annual-finance debt lane".to_string(), "active-company refresh owner 0x00429c10 walks the live company roster and re-enters 0x004093d0 for each active company when linked-transit site-peer caches need a broader rebuild".to_string(), "placed-structure-side company cache root [site+0x5bd] allocated by 0x00407780 as a 0x20-entry pointer table of 0x1a-byte per-company cache cells and freed by 0x004077e0".to_string(), + "placed-structure replay strip 0x00444690 -> 0x004133b0 -> 0x0040ee10 -> 0x0040edf6 -> 0x00480710 already republishes linked-peer ids, route-entry anchors, and world-cell owner chains before later recurring call 0x004160aa re-enters 0x0040ee10".to_string(), "placed-structure-side per-company cache cells addressed through [site+0x5bd][company_id] and peer rows filled by 0x004a6630".to_string(), "per-company cache-cell layout is bounded too: bytes +0x00/+0x01 gate participation, dword +0x02 is peer-row count, dword +0x06 is peer-row pointer, dword +0x0a is the peer-cache refresh stamp, and floats +0x0e/+0x12/+0x16 are the weighted/raw/final linked-transit score lanes".to_string(), "linked-transit peer-table row lanes +0x05 step count and +0x09 normalized continuity share under 0x004093d0".to_string(), @@ -5020,7 +5021,7 @@ fn build_periodic_company_service_trace_report( "linked-transit train-side autoroute append / rotate strip 0x00409770 plus add-train owner 0x00409830 beneath roster balancer 0x00409950".to_string(), ]; let linked_transit_remaining_owner_gaps = vec![ - "which placed-structure-side restore or service continuation guarantees that the save-backed identity inputs [site+0x276], [site+0x04], [site+0x2a4], [site+0x2a8], and [peer+0x04/+0x08] have already rehydrated the live site and peer tables before 0x004093d0 / 0x00407bd0 rebuild their scratch cache lanes".to_string(), + "which exact branch inside the known placed-structure replay continuation 0x0040e360..0x0040edf6 rehydrates [site+0x276], [site+0x2a4], and linked-peer rows beyond the already-grounded 0x00480710 anchor-side refresh before 0x004093d0 / 0x00407bd0 rebuild their scratch cache lanes".to_string(), "how much of the live placed-structure collection 0x006cec20 and linked-peer replay strip still has to run shelllessly beside already-grounded candidate-table owner 0x0041f4e0 / 0x0041ede0 and route-entry tracker owner 0x00494fb0 / 0x004a6360 before 0x00408280 / 0x00408380 / 0x00409770 become trustworthy".to_string(), ]; @@ -5228,7 +5229,7 @@ fn build_periodic_company_service_trace_report( "The per-company cache root is grounded now too: 0x00407780 allocates [site+0x5bd] as a 0x20-entry pointer table and seeds each entry with one zeroed 0x1a-byte company cache cell, while 0x004077e0 frees that same root and any nested cell payloads. That means the remaining linked-transit gap is no longer cache-root allocation identity; it is which persisted site-side inputs are sufficient to repopulate those per-company cells and the downstream score lanes before the bounded chooser/train strip runs shelllessly.".to_string(), ); notes.push( - "The per-company cache-cell layout is bounded now too: 0x004093d0 and 0x00407bd0 use bytes +0x00/+0x01 as the initial participation gates, dword +0x02 as the peer-row count, dword +0x06 as the peer-row pointer, dword +0x0a as the shorter peer-cache refresh stamp, and floats +0x0e/+0x12/+0x16 as the weighted/raw/final linked-transit score lanes. The candidate-table and route-entry-tracker owners are bounded above that too: 0x0062ba8c is constructed through 0x0041f4e0 -> 0x0041ede0 -> 0x0041e970, while 0x004a6360 / 0x004a6630 sit under owner-notify refresh 0x00494fb0. So the remaining linked-transit gap is no longer generic table ownership; it is the placed-structure-side restore/service continuation that makes the live site and peer rows trustworthy before those already-bounded helpers run.".to_string(), + "The per-company cache-cell layout is bounded now too: 0x004093d0 and 0x00407bd0 use bytes +0x00/+0x01 as the initial participation gates, dword +0x02 as the peer-row count, dword +0x06 as the peer-row pointer, dword +0x0a as the shorter peer-cache refresh stamp, and floats +0x0e/+0x12/+0x16 as the weighted/raw/final linked-transit score lanes. The candidate-table and route-entry-tracker owners are bounded above that too: 0x0062ba8c is constructed through 0x0041f4e0 -> 0x0041ede0 -> 0x0041e970, while 0x004a6360 / 0x004a6630 sit under owner-notify refresh 0x00494fb0. The remaining linked-transit gap is therefore inside the known placed-structure replay continuation: 0x00444690 -> 0x004133b0 -> 0x0040ee10 -> 0x0040edf6 -> 0x00480710 already republishes anchor-side linked-peer state, but the later exact branch that rehydrates [site+0x276], [site+0x2a4], and the live peer rows for shellless cache rebuilds is still the open question.".to_string(), ); notes.push( "Direct disassembly now closes the negative persistence side too: the direct 0x36b1 per-record callbacks serialize the shared base scalar triplets rooted at [this+0x206/+0x20a/+0x20e] plus the subordinate payload callback strip, while the 0x4a9d/0x4a3a/0x4a3b side-buffer owner only persists route-entry lists, three byte arrays, five proximity buckets, and the sampled-cell list. That means neither checked-in save owner seam currently persists the core peer-site identity fields [site+0x04], [site+0x2a8], or [peer+0x08] directly.".to_string(), @@ -28283,7 +28284,7 @@ mod tests { 5 ); assert_eq!(trace.linked_transit_live_rebuilt_cache_lanes.len(), 5); - assert_eq!(trace.linked_transit_runtime_backed_input_families.len(), 17); + assert_eq!(trace.linked_transit_runtime_backed_input_families.len(), 18); assert_eq!(trace.linked_transit_remaining_owner_gaps.len(), 2); assert_eq!(trace.companies.len(), 1); assert_eq!( @@ -28766,6 +28767,16 @@ mod tests { && line.contains("0x004093d0") && line.contains("live company roster")) ); + assert!( + trace + .linked_transit_runtime_backed_input_families + .iter() + .any(|line| line.contains("0x00444690") + && line.contains("0x004133b0") + && line.contains("0x0040ee10") + && line.contains("0x00480710") + && line.contains("0x004160aa")) + ); assert!( trace .linked_transit_runtime_backed_input_families @@ -28844,10 +28855,9 @@ mod tests { trace .linked_transit_remaining_owner_gaps .iter() - .any(|line| line.contains("[site+0x276]") - && line.contains("[site+0x04]") - && line.contains("[site+0x2a4]") - && line.contains("[peer+0x04/+0x08]")) + .any(|line| line.contains("0x0040e360..0x0040edf6") + && line.contains("[site+0x276]") + && line.contains("[site+0x2a4]")) ); assert!( trace @@ -29088,7 +29098,14 @@ mod tests { line.contains("0x0062ba8c") && line.contains("0x0041f4e0") && line.contains("0x00494fb0") - && line.contains("placed-structure-side restore/service continuation") + && line.contains("remaining linked-transit gap is therefore inside the known placed-structure replay continuation") + })); + assert!(trace.notes.iter().any(|line| { + line.contains("0x00444690") + && line.contains("0x004133b0") + && line.contains("0x0040ee10") + && line.contains("0x0040edf6") + && line.contains("[site+0x276]") })); assert!( trace diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index b8d841b..656eaeb 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -51,12 +51,16 @@ Working rule: `0x004093d0`; candidate table root `0x0062ba8c` is world-load owned by `0x0041f4e0 -> 0x0041ede0 -> 0x0041e970`; and route-entry tracker compatibility / chooser helpers `0x004a6360 / 0x004a6630` already sit under owner-notify refresh `0x00494fb0` + - the placed-structure replay strip is tighter now too: + `0x00444690 -> 0x004133b0 -> 0x0040ee10 -> 0x0040edf6 -> 0x00480710` already republishes + anchor-side linked-peer ids, route-entry anchors, and world-cell owner chains, and later + runtime path `0x004160aa -> 0x0040ee10` re-enters the same family outside bring-up - that makes the next linked-transit question narrower: - identify which placed-structure restore or service continuation guarantees those save-backed - site/peer/company identity lanes have already rebuilt the live placed-structure and linked-peer - rows before `0x004093d0 / 0x00407bd0 / 0x004a6630`, because the candidate table, - route-entry-tracker owners, bounded train-side strip `0x00409770 / 0x00409830 / 0x00409950`, - and cache-cell semantics are no longer the blocker + identify which exact branch inside `0x0040e360..0x0040edf6` rehydrates `[site+0x276]`, + `[site+0x2a4]`, and the live linked-peer rows beyond the already-grounded `0x00480710` + anchor-side refresh before `0x004093d0 / 0x00407bd0 / 0x004a6630`, because the candidate + table, route-entry-tracker owners, replay-strip framing, bounded train-side strip + `0x00409770 / 0x00409830 / 0x00409950`, and cache-cell semantics are no longer the blocker - Make the next static/rehost slice the near-city industry acquisition owner seam under `0x004014b0`, not another generic infrastructure pass. The concrete questions are: - which minimum persisted peer-site fields on the already-grounded `0x006cec20` placed-structure