diff --git a/crates/rrt-runtime/src/import.rs b/crates/rrt-runtime/src/import.rs index 5077f23..de73bba 100644 --- a/crates/rrt-runtime/src/import.rs +++ b/crates/rrt-runtime/src/import.rs @@ -14306,6 +14306,8 @@ mod tests { service_state: RuntimeServiceState { periodic_boundary_calls: 9, annual_finance_service_calls: 0, + periodic_route_preference_override_apply_count: 0, + periodic_route_preference_override_restore_count: 0, trigger_dispatch_counts: BTreeMap::new(), total_event_record_services: 4, dirty_rerun_count: 2, diff --git a/crates/rrt-runtime/src/runtime.rs b/crates/rrt-runtime/src/runtime.rs index 6acc675..2fce68f 100644 --- a/crates/rrt-runtime/src/runtime.rs +++ b/crates/rrt-runtime/src/runtime.rs @@ -1270,6 +1270,10 @@ pub struct RuntimeServiceState { #[serde(default)] pub annual_finance_service_calls: u64, #[serde(default)] + pub periodic_route_preference_override_apply_count: u64, + #[serde(default)] + pub periodic_route_preference_override_restore_count: u64, + #[serde(default)] pub trigger_dispatch_counts: BTreeMap, #[serde(default)] pub total_event_record_services: u64, @@ -4734,6 +4738,9 @@ pub fn runtime_begin_company_periodic_route_preference_override( .service_state .active_periodic_route_preference_override = Some(override_state.clone()); state.service_state.last_periodic_route_preference_override = Some(override_state.clone()); + state + .service_state + .periodic_route_preference_override_apply_count += 1; Some(override_state) } @@ -4746,6 +4753,9 @@ pub fn runtime_end_company_periodic_route_preference_override( .take()?; state.world_restore.auto_show_grade_during_track_lay_raw_u8 = override_state.base_route_preference_raw_u8; + state + .service_state + .periodic_route_preference_override_restore_count += 1; Some(override_state) } @@ -9305,6 +9315,18 @@ mod tests { state.service_state.last_periodic_route_preference_override, Some(applied.clone()) ); + assert_eq!( + state + .service_state + .periodic_route_preference_override_apply_count, + 1 + ); + assert_eq!( + state + .service_state + .periodic_route_preference_override_restore_count, + 0 + ); let restored = runtime_end_company_periodic_route_preference_override(&mut state) .expect("override should restore"); @@ -9323,6 +9345,18 @@ mod tests { state.service_state.last_periodic_route_preference_override, Some(restored) ); + assert_eq!( + state + .service_state + .periodic_route_preference_override_apply_count, + 1 + ); + assert_eq!( + state + .service_state + .periodic_route_preference_override_restore_count, + 1 + ); } #[test] diff --git a/crates/rrt-runtime/src/summary.rs b/crates/rrt-runtime/src/summary.rs index 5b6b2f0..a85f16c 100644 --- a/crates/rrt-runtime/src/summary.rs +++ b/crates/rrt-runtime/src/summary.rs @@ -298,6 +298,8 @@ pub struct RuntimeSummary { pub total_event_record_service_count: u64, pub periodic_boundary_call_count: u64, pub annual_finance_service_call_count: u64, + pub periodic_route_preference_override_apply_count: u64, + pub periodic_route_preference_override_restore_count: u64, pub annual_dividend_adjustment_commit_count: u64, pub annual_bond_last_retired_principal_total: u64, pub annual_bond_last_issued_principal_total: u64, @@ -1592,6 +1594,12 @@ impl RuntimeSummary { total_event_record_service_count: state.service_state.total_event_record_services, periodic_boundary_call_count: state.service_state.periodic_boundary_calls, annual_finance_service_call_count: state.service_state.annual_finance_service_calls, + periodic_route_preference_override_apply_count: state + .service_state + .periodic_route_preference_override_apply_count, + periodic_route_preference_override_restore_count: state + .service_state + .periodic_route_preference_override_restore_count, annual_dividend_adjustment_commit_count: state .service_state .annual_dividend_adjustment_commit_count, @@ -3106,6 +3114,16 @@ mod tests { summary.selected_company_periodic_service_route_quality_multiplier_basis_points, Some(180) ); + assert_eq!( + summary.active_periodic_route_preference_override_company_id, + None + ); + assert_eq!( + summary.last_periodic_route_preference_override_company_id, + None + ); + assert_eq!(summary.periodic_route_preference_override_apply_count, 0); + assert_eq!(summary.periodic_route_preference_override_restore_count, 0); assert_eq!(summary.selected_company_chairman_bonus_year, Some(1842)); assert_eq!(summary.selected_company_chairman_bonus_amount, Some(750)); } diff --git a/docs/rehost-queue.md b/docs/rehost-queue.md index ed1902d..35f3f37 100644 --- a/docs/rehost-queue.md +++ b/docs/rehost-queue.md @@ -76,6 +76,10 @@ Working rule: override rewrites `[world+0x4c74]` to the effective route preference for the selected company service pass, and ending the override restores the base world byte instead of leaving the seam as a pure reader bridge. +- The same route-preference mutation seam now also carries explicit apply/restore service counters + through runtime service state and summaries, so later periodic-company branches can assert that + override activity happened even before the missing city-connection / linked-transit service + owners are fully rehosted. - Company cash, confiscation, and major governance effects now write through owner state instead of drifting from market/cache readers. - Company credit rating, prime rate, book value per share, investor confidence, and management