From 3d5f06eeb52fc824b9c56444b3e149fe344b20f3 Mon Sep 17 00:00:00 2001 From: Jan Petykiewicz Date: Sat, 18 Apr 2026 23:19:55 -0700 Subject: [PATCH] Ground linked-transit company cache root --- crates/rrt-runtime/src/smp.rs | 29 ++++++++++++++++++++++++----- docs/rehost-queue.md | 5 ++++- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/crates/rrt-runtime/src/smp.rs b/crates/rrt-runtime/src/smp.rs index 91fc3e2..302496f 100644 --- a/crates/rrt-runtime/src/smp.rs +++ b/crates/rrt-runtime/src/smp.rs @@ -4987,7 +4987,8 @@ fn build_periodic_company_service_trace_report( "company linked-transit peer-cache refresh absolute counter [company+0x0d3e] driving the shorter 0x00409720 -> 0x004093d0 cadence".to_string(), "company linked-transit autoroute site-score refresh absolute counter [company+0x0d3a] driving the longer 0x00409720 -> 0x00407bd0 cadence".to_string(), "company linked-transit latch [company+0x0d56] consumed by 0x00409950 and the annual-finance debt lane".to_string(), - "placed-structure-side company cache cells addressed through [site+0x5bd][company_id] and peer rows filled by 0x004a6630".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-side per-company cache cells addressed through [site+0x5bd][company_id] and peer rows filled by 0x004a6630".to_string(), "linked-transit peer-table row lanes +0x05 step count and +0x09 normalized continuity share under 0x004093d0".to_string(), "linked-transit site-score cache lanes [site+0x0e/+0x12/+0x16] rebuilt by 0x00407bd0".to_string(), "linked-transit local site occupancy/count lane [site+0x5c1] reset by 0x00481910, adjusted by 0x004819b0, and consumed by 0x00408280 as a divisor/penalty lane".to_string(), @@ -4997,8 +4998,8 @@ 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 persisted site-side inputs are sufficient to rebuild the peer/company cache cells [site+0x5bd], local occupancy/age lanes [site+0x5c1/+0x5c5], and weighted site-score lanes [site+0x0e/+0x12/+0x16] without relying on shell-owned layout or route refresh follow-ons".to_string(), - "which placed-structure-side owner seam above 0x004093d0 / 0x00407bd0 guarantees those cache lanes are trustworthy before 0x00408280 / 0x00408380 / 0x00409770 run shelllessly".to_string(), + "which persisted site-side inputs are sufficient to repopulate the 0x1a-byte per-company cache cells rooted at [site+0x5bd], the local occupancy/age lanes [site+0x5c1/+0x5c5], and the weighted site-score lanes [site+0x0e/+0x12/+0x16] without relying on shell-owned layout or route refresh follow-ons".to_string(), + "which placed-structure-side restore or service owner above 0x00407780 / 0x004077e0 / 0x004093d0 / 0x00407bd0 guarantees those repopulated cache lanes are trustworthy before 0x00408280 / 0x00408380 / 0x00409770 run shelllessly".to_string(), ]; let companies = analysis @@ -5201,6 +5202,9 @@ fn build_periodic_company_service_trace_report( notes.push( "Those extra chooser-side local lanes are tighter now too: 0x00481910 first clears [site+0x5c1] across the live placed-structure collection and then repopulates it by resolving site ids through 0x004a9340, while 0x004819b0 decrements one prior site's [site+0x5c1] and increments one new site's copy during later reassignment. The companion age lane [site+0x5c5] is stamped directly from world counter [world+0x15] at 0x004aee2b. 0x00408280 then uses [site+0x5c1] as an occupancy divisor/penalty and [site+0x5c5] as a zero-occupancy age bonus ladder, so those lanes are no longer anonymous chooser magic; they are grounded live cache inputs with bounded writer strips.".to_string(), ); + notes.push( + "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( "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(), ); @@ -28247,7 +28251,7 @@ mod tests { trace.linked_transit_shellless_readiness_status, "timed_cache_and_train_side_followons_grounded_site_cache_input_owners_missing" ); - assert_eq!(trace.linked_transit_runtime_backed_input_families.len(), 12); + assert_eq!(trace.linked_transit_runtime_backed_input_families.len(), 13); assert_eq!(trace.linked_transit_remaining_owner_gaps.len(), 2); assert_eq!(trace.companies.len(), 1); assert_eq!( @@ -28699,6 +28703,14 @@ mod tests { .iter() .any(|line| line.contains("0x00409770") && line.contains("0x00409830")) ); + assert!( + trace + .linked_transit_runtime_backed_input_families + .iter() + .any(|line| line.contains("[site+0x5bd]") + && line.contains("0x00407780") + && line.contains("0x004077e0")) + ); assert!( trace .linked_transit_runtime_backed_input_families @@ -28717,7 +28729,8 @@ mod tests { trace .linked_transit_remaining_owner_gaps .iter() - .any(|line| line.contains("[site+0x5bd]") + .any(|line| line.contains("0x1a-byte per-company cache cells") + && line.contains("[site+0x5bd]") && line.contains("[site+0x5c1/+0x5c5]") && line.contains("[site+0x0e/+0x12/+0x16]")) ); @@ -28933,6 +28946,12 @@ mod tests { && line.contains("0x004aee2b") && line.contains("[site+0x5c5]") })); + assert!(trace.notes.iter().any(|line| { + line.contains("0x00407780") + && line.contains("0x004077e0") + && line.contains("[site+0x5bd]") + && line.contains("0x1a-byte") + })); assert!( trace .near_city_acquisition_runtime_backed_input_families diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index 9562ad8..18138f4 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -32,8 +32,11 @@ Working rule: - the chooser-local cache words are bounded too: `[site+0x5c1]` is a live occupancy/count lane reset by `0x00481910` and adjusted by `0x004819b0`, while `[site+0x5c5]` is a world-counter age lane stamped at `0x004aee2b` + - the per-company cache root is bounded too: + `[site+0x5bd]` is allocated by `0x00407780` as a 0x20-entry table of 0x1a-byte per-company + cache cells and freed by `0x004077e0` - that makes the next linked-transit question narrower: - identify which persisted site-side inputs are sufficient to rebuild the peer/company cache + identify which persisted site-side inputs are sufficient to repopulate the per-company cache cells, occupancy/age lanes, and weighted site-score lanes consumed by `0x00408280 / 0x00408380`, because the bounded train-side strip `0x00409770 / 0x00409830 / 0x00409950` is no longer the blocker