diff --git a/crates/rrt-runtime/src/smp.rs b/crates/rrt-runtime/src/smp.rs index 2f8f923..bf18147 100644 --- a/crates/rrt-runtime/src/smp.rs +++ b/crates/rrt-runtime/src/smp.rs @@ -5069,7 +5069,7 @@ fn build_periodic_company_service_trace_report( )); branches.push(build_service_trace_branch_status( "linked_transit_roster_maintenance", - "blocked_missing_infrastructure_asset_consumer_mapping", + "blocked_missing_site_cache_input_owner_mapping", &[ "company linked-transit latch", "company linked-transit route-anchor tuple", @@ -5078,19 +5078,23 @@ fn build_periodic_company_service_trace_report( "route-preference override seam", ], &[ - "placed-structure record-body semantics", - "0x38a5 infrastructure-asset consumer mapping", + "placed-structure site-cache input owners beneath 0x004093d0 / 0x00407bd0", + "persisted site-side inputs behind 0x00408280 / 0x00408380", ], &[ "0x004019e0 periodic company outer owner", "0x00409720 timed linked-transit cache-service wrapper", "0x004093d0 linked-transit site-peer cache rebuild", "0x00407bd0 linked-transit autoroute site-score cache rebuild", + "0x00408280 linked-transit ranked-site chooser", + "0x00408380 linked-transit staged autoroute-entry builder", "0x00408f70 linked-transit aggregate site-score pressure helper", + "0x00409770 linked-transit autoroute append/rotate owner", + "0x00409830 linked-transit add-train/news owner", "0x00409950 linked-transit train-roster balancer", ], &[ - "The save side now grounds the timed cache-owner seams and route-anchor tuple, but not yet the higher-layer consumer mapping that turns the rebuilt site caches into roster or route actions.", + "The save side now grounds the timed cache-owner seams, ranked-site chooser, staged route builder, and train-side follow-ons; the remaining blocker is the placed-structure site-cache input ownership beneath those bounded consumers, not the train-side strip itself.", ], )); branches.push(build_service_trace_branch_status( @@ -5189,6 +5193,9 @@ fn build_periodic_company_service_trace_report( notes.push( "The linked-transit sibling owner is tighter now too: timed wrapper 0x00409720 compares world counter [world+0x15] against the save-owned company refresh counters [company+0x0d3e] and [company+0x0d3a], reruns the shorter peer-cache rebuild 0x004093d0 on the tighter 0x7ff80 cadence, reruns the heavier autoroute score-cache rebuild 0x00407bd0 on the broader 0x31380 cadence, and then feeds the raw site-score total 0x00408f70 into roster balancer 0x00409950. That means the remaining blocker for shellless linked-transit maintenance is no longer the timing seam; it is the higher-layer placed-structure / infrastructure consumer mapping above those grounded cache owners.".to_string(), ); + notes.push( + "The chooser-and-train strip is tighter now too: 0x00408280 only picks among company-owned linked-transit sites whose cache cells are already live, ranking them off site-cache lane [site+0x16] with one extra boost from local cache words [site+0x5c1/+0x5c5], while 0x00408380 either reuses one explicit site id or falls back to 0x00408280 before building a staged 0x33-byte route entry. Above that, 0x00409770 services the caches through 0x00409720, asks 0x00408380 for one staged entry, and then either appends or rotates it in-place, while 0x00409830 repeats the same builder twice before publishing the add-train/news side. So the remaining blocker is not the train-side consumer strip; it is the placed-structure-side owner seam that makes those site-cache lanes and ready bits trustworthy for shellless runs.".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(), ); @@ -28828,6 +28835,10 @@ mod tests { .iter() .find(|branch| branch.branch_name == "linked_transit_roster_maintenance") .expect("linked-transit branch"); + assert_eq!( + linked_transit_branch.status, + "blocked_missing_site_cache_input_owner_mapping" + ); assert!( linked_transit_branch .grounded_inputs @@ -28852,12 +28863,48 @@ mod tests { .iter() .any(|line| line.contains("0x00408f70")) ); + assert!( + linked_transit_branch + .candidate_consumers + .iter() + .any(|line| line.contains("0x00408280")) + ); + assert!( + linked_transit_branch + .candidate_consumers + .iter() + .any(|line| line.contains("0x00408380")) + ); + assert!( + linked_transit_branch + .candidate_consumers + .iter() + .any(|line| line.contains("0x00409770")) + ); + assert!( + linked_transit_branch + .candidate_consumers + .iter() + .any(|line| line.contains("0x00409830")) + ); + assert!( + linked_transit_branch + .blocking_inputs + .iter() + .any(|line| line.contains("0x00408280 / 0x00408380")) + ); assert!(trace.notes.iter().any(|line| { line.contains("0x00409720") && line.contains("[company+0x0d3e]") && line.contains("[company+0x0d3a]") && line.contains("0x00409950") })); + assert!(trace.notes.iter().any(|line| { + line.contains("0x00408280") + && line.contains("[site+0x16]") + && line.contains("0x00409770") + && line.contains("0x00409830") + })); assert!( trace .near_city_acquisition_runtime_backed_input_families diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index f49f7fe..519c5bb 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -30,8 +30,9 @@ Working rule: the rebuilt site caches, and `0x00409770 / 0x00409830 / 0x00409950` are the append/add/balance strip above that - that makes the next linked-transit question narrower: - identify which placed-structure or infrastructure owner seam feeds the rebuilt site-cache - lanes consumed by `0x00408280 / 0x00408380`, so the bounded train-side strip can run shelllessly + identify which placed-structure site-cache input owner seam feeds the rebuilt lanes consumed by + `0x00408280 / 0x00408380`, because the bounded train-side strip + `0x00409770 / 0x00409830 / 0x00409950` is 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