From a56d360a3e544fb4a7cb7c5b42a09818e2c61f2b Mon Sep 17 00:00:00 2001 From: Jan Petykiewicz Date: Sun, 19 Apr 2026 12:43:07 -0700 Subject: [PATCH] Rule down post-load region placement branches --- crates/rrt-fixtures/src/load.rs | 22 +++++++++++++++++++ crates/rrt-runtime/src/smp.rs | 2 ++ ...tion-paintterrain-and-save-load-restore.md | 10 +++++++++ docs/rehost-queue.md | 10 +++++++++ 4 files changed, 44 insertions(+) diff --git a/crates/rrt-fixtures/src/load.rs b/crates/rrt-fixtures/src/load.rs index 9504c8e..4efd0d8 100644 --- a/crates/rrt-fixtures/src/load.rs +++ b/crates/rrt-fixtures/src/load.rs @@ -286,6 +286,10 @@ mod tests { world_locomotive_policy_state: None, company_roster: None, chairman_profile_table: None, + region_collection: None, + region_fixed_row_run_summary: None, + placed_structure_collection: None, + placed_structure_dynamic_side_buffer_summary: None, special_conditions_table: None, event_runtime_collection: None, notes: vec![], @@ -431,6 +435,10 @@ mod tests { world_locomotive_policy_state: None, company_roster: None, chairman_profile_table: None, + region_collection: None, + region_fixed_row_run_summary: None, + placed_structure_collection: None, + placed_structure_dynamic_side_buffer_summary: None, special_conditions_table: None, event_runtime_collection: Some( rrt_runtime::SmpLoadedEventRuntimeCollectionSummary { @@ -448,6 +456,20 @@ mod tests { live_entry_ids: vec![7], decoded_record_count: 1, imported_runtime_record_count: 0, + records_with_trigger_kind: 0, + records_missing_trigger_kind: 0, + nondirect_compact_record_count: 0, + nondirect_compact_records_missing_trigger_kind: 0, + trigger_kinds_present: vec![], + add_building_dispatch_strip_record_indexes: vec![], + add_building_dispatch_strip_descriptor_labels: vec![], + add_building_dispatch_strip_records_with_trigger_kind: 0, + add_building_dispatch_strip_records_missing_trigger_kind: 0, + add_building_dispatch_strip_row_shape_families: vec![], + add_building_dispatch_strip_signature_families: vec![], + add_building_dispatch_strip_condition_tuple_families: vec![], + add_building_dispatch_strip_signature_condition_clusters: vec![], + control_lane_notes: vec![], records: vec![rrt_runtime::SmpLoadedPackedEventRecordSummary { record_index: 0, live_entry_id: 7, diff --git a/crates/rrt-runtime/src/smp.rs b/crates/rrt-runtime/src/smp.rs index 7e484cd..74f66a8 100644 --- a/crates/rrt-runtime/src/smp.rs +++ b/crates/rrt-runtime/src/smp.rs @@ -5911,7 +5911,9 @@ fn build_region_service_trace_report( "0x004384d0 already exposes the stage ordering tightly enough to subdivide the next search: id 319 refreshes the route-entry collection, auxiliary route trackers, and then 0x004133b0 placed-structure local-runtime replay; id 320 runs 0x00421c20(1.0, 1) for the region-owned building setup strip; id 321 runs 0x00437b20 and then sweeps regions through 0x00423d30".to_string(), "the 319 placed-structure replay strip is now grounded as more than generic setup glue: 0x004133b0 drains queued site ids through 0x0040e450, sweeps every live placed structure through 0x0040ee10, and then reaches the already-grounded linked-site follow-on 0x00480710, which is a stronger structural bridge into acquisition-side site or peer state than the ruled-down territory/support loaders".to_string(), "the 320 building setup strip is narrower but still relevant: 0x00421c20 dispatches every live region into 0x004235c0, and that worker consults the region profile collection [region+0x37f], the placed-instance registry 0x0062b26c, and demand-balancing helpers like 0x00422900/0x00422be0/0x00422ee0, so current evidence keeps it in the same acquisition-adjacent owner family even though it is not yet a direct writer to [region+0x2a4] or [region+0x310/+0x338/+0x360]".to_string(), + "direct worker recovery now narrows 0x004235c0 further: it stays inside the live region demand-and-placement family by routing through 0x00422900 cached category accumulation, 0x004234e0 projected structure-count scalars, 0x00422be0 placed-count subtraction, and 0x00422ee0 placement attempts over 0x0062b26c rather than any restore-time field republisher".to_string(), "the 321 economy-seeding tail is also now bounded as a narrower cache refresh rather than generic noise: 0x00437b20 only stages a fast-forward guard and then sweeps 0x0062bae0 through 0x00423d30, which refreshes the cached category band [region+0x27a/+0x27e/+0x282/+0x286], so it remains a weaker but still explicit post-load owner family to rule in or out before returning to the deeper 0x00446d40 continuation".to_string(), + "direct local disassembly now narrows 0x00423d30 as well: it only republishes [region+0x27a/+0x27e/+0x282/+0x286] through 0x00422900 after the 0x00437b20 burst and does not touch [region+0x2a4] or [region+0x310/+0x338/+0x360]".to_string(), ], blockers: vec![ "current grounded evidence still does not show which post-load subphase actually republishes [region+0x2a4] or the cached tri-lane [region+0x310/+0x338/+0x360]".to_string(), diff --git a/docs/control-loop-atlas/post-load-generation-paintterrain-and-save-load-restore.md b/docs/control-loop-atlas/post-load-generation-paintterrain-and-save-load-restore.md index fc54633..60713ef 100644 --- a/docs/control-loop-atlas/post-load-generation-paintterrain-and-save-load-restore.md +++ b/docs/control-loop-atlas/post-load-generation-paintterrain-and-save-load-restore.md @@ -788,6 +788,16 @@ The same brush strip is tighter now too: way: when startup latch `0x006cd8d8` is clear it stamps `[0x006cec7c+0x79] = 1`, ensures `[world+0x6a6c] >= 1`, forces chairman-seat byte `[world+0x69db] = 1`, and then re-enters `0x004377a0` before the later route-entry and placed-structure refresh families. The + region-side setup branches are narrower in the same negative way now too: `0x00421c20` is just + the collection dispatcher, and its worker `0x004235c0` stays inside live region demand and + placement by routing through `0x00422900` cached category accumulation, `0x004234e0` projected + structure-count scalars, `0x00422be0` placed-count subtraction, and `0x00422ee0` placement + attempts over the live placed-structure registry `0x0062b26c`. Likewise the `321` tail + `0x00437b20 -> 0x00423d30` only refreshes cached category slots + `[region+0x27a/+0x27e/+0x282/+0x286]` through `0x00422900`. So these post-load branches stay + ruled down as setup and cache-maintenance work rather than the missing restore-time republisher + for `[region+0x2a4]` or `[region+0x310/+0x338/+0x360]`. + The editor-side read path is explicit on the same seam: `map_editor_economic_cost_panel_refresh_preview_curve_and_numeric_rows` `0x004caaf0` reads the same six-float band, builds the live preview curve on control `0x5be1`, and republishes the six diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index 2ec5279..90871c5 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -1565,6 +1565,16 @@ Working rule: `[region+0x27a/+0x27e/+0x282/+0x286]`. So the next non-hook region work should start from the post-load `319` placed-structure replay seam and only then revisit the narrower region-side `320/321` branches if the exact field bridge is still missing. +- The `320` branch is narrower than that headline now too: direct worker recovery shows + `0x004235c0` staying inside the live region demand-and-placement family by routing through + `0x00422900` cached category accumulation, `0x004234e0` projected structure-count scalars, + `0x00422be0` placed-count subtraction, and `0x00422ee0` placement attempts over the live + placed-structure registry `0x0062b26c`. That keeps it on live setup and maintenance work rather + than any restore-time republisher for `[region+0x2a4]` or `[region+0x310/+0x338/+0x360]`. +- The `321` branch is narrower in the same way: `0x00437b20` only stages the fast-forward burst, + then re-enters the live region collection through `0x00423d30`, and that helper only republishes + `[region+0x27a/+0x27e/+0x282/+0x286]` via `0x00422900`. It should stay ruled down as a cached + summary refresh instead of a plausible owner for the missing restore-side body lanes. - The later restore-side region owners are narrowed further now too: the `0x00421ce0 -> 0x0041fb00 -> 0x00421730` sweep is class-`0` raster/id rebuild, `0x004881b0` is a companion region-set cell-count rebuild over `[region+0x3d/+0x41]`, `0x00487de0` is a border-segment