Promote control-lane branch evidence into trace

This commit is contained in:
Jan Petykiewicz 2026-04-21 18:01:43 -07:00
commit 5f65b78c26
7 changed files with 76 additions and 0 deletions

View file

@ -62,6 +62,10 @@ pub(super) fn build_near_city_acquisition_trace_inputs(
.near_city_acquisition_nontransport_dispatch_records_with_trigger_kind, .near_city_acquisition_nontransport_dispatch_records_with_trigger_kind,
near_city_acquisition_nontransport_add_building_record_count: projection near_city_acquisition_nontransport_add_building_record_count: projection
.near_city_acquisition_nontransport_add_building_record_count, .near_city_acquisition_nontransport_add_building_record_count,
near_city_acquisition_nontransport_late_bringup_candidate_branches: projection
.near_city_acquisition_nontransport_late_bringup_candidate_branches,
near_city_acquisition_nontransport_explicit_trigger_kind_retags: projection
.near_city_acquisition_nontransport_explicit_trigger_kind_retags,
near_city_acquisition_nontransport_add_building_descriptor_map_paths: projection near_city_acquisition_nontransport_add_building_descriptor_map_paths: projection
.near_city_acquisition_nontransport_add_building_descriptor_map_paths, .near_city_acquisition_nontransport_add_building_descriptor_map_paths,
near_city_acquisition_nontransport_add_building_signature_condition_cluster_map_paths: near_city_acquisition_nontransport_add_building_signature_condition_cluster_map_paths:

View file

@ -25,6 +25,10 @@ pub(in crate::inspect::smp) struct NearCityAcquisitionTraceInputs {
pub(in crate::inspect::smp) near_city_acquisition_nontransport_dispatch_records_with_trigger_kind: pub(in crate::inspect::smp) near_city_acquisition_nontransport_dispatch_records_with_trigger_kind:
usize, usize,
pub(in crate::inspect::smp) near_city_acquisition_nontransport_add_building_record_count: usize, pub(in crate::inspect::smp) near_city_acquisition_nontransport_add_building_record_count: usize,
pub(in crate::inspect::smp) near_city_acquisition_nontransport_late_bringup_candidate_branches:
Vec<String>,
pub(in crate::inspect::smp) near_city_acquisition_nontransport_explicit_trigger_kind_retags:
Vec<String>,
pub(in crate::inspect::smp) near_city_acquisition_nontransport_add_building_descriptor_map_paths: pub(in crate::inspect::smp) near_city_acquisition_nontransport_add_building_descriptor_map_paths:
BTreeMap<String, Vec<String>>, BTreeMap<String, Vec<String>>,
pub(in crate::inspect::smp) near_city_acquisition_nontransport_add_building_signature_condition_cluster_map_paths: pub(in crate::inspect::smp) near_city_acquisition_nontransport_add_building_signature_condition_cluster_map_paths:

View file

@ -16,6 +16,8 @@ pub(super) struct NearCityProjectionStatusFields {
pub(super) near_city_acquisition_nontransport_dispatch_record_count: usize, pub(super) near_city_acquisition_nontransport_dispatch_record_count: usize,
pub(super) near_city_acquisition_nontransport_dispatch_records_with_trigger_kind: usize, pub(super) near_city_acquisition_nontransport_dispatch_records_with_trigger_kind: usize,
pub(super) near_city_acquisition_nontransport_add_building_record_count: usize, pub(super) near_city_acquisition_nontransport_add_building_record_count: usize,
pub(super) near_city_acquisition_nontransport_late_bringup_candidate_branches: Vec<String>,
pub(super) near_city_acquisition_nontransport_explicit_trigger_kind_retags: Vec<String>,
pub(super) near_city_acquisition_nontransport_add_building_descriptor_map_paths: pub(super) near_city_acquisition_nontransport_add_building_descriptor_map_paths:
BTreeMap<String, Vec<String>>, BTreeMap<String, Vec<String>>,
pub(super) near_city_acquisition_nontransport_add_building_signature_condition_cluster_map_paths: pub(super) near_city_acquisition_nontransport_add_building_signature_condition_cluster_map_paths:
@ -109,6 +111,20 @@ pub(super) fn build_near_city_projection_status_fields() -> NearCityProjectionSt
near_city_acquisition_nontransport_dispatch_record_count: 318, near_city_acquisition_nontransport_dispatch_record_count: 318,
near_city_acquisition_nontransport_dispatch_records_with_trigger_kind: 0, near_city_acquisition_nontransport_dispatch_records_with_trigger_kind: 0,
near_city_acquisition_nontransport_add_building_record_count: 10, near_city_acquisition_nontransport_add_building_record_count: 10,
near_city_acquisition_nontransport_late_bringup_candidate_branches: vec![
"0x00442c30 shell_apply_scenario_name_specific_post_load_world_and_object_fixups".to_string(),
"0x004354a0 world_publish_shell_controller_progress_scalar_from_year_thresholds_or_selector_overrides".to_string(),
"0x00435603 scenario_state_ensure_derived_year_threshold_band".to_string(),
"0x00412c10 structure_candidate_collection_refresh_named_availability_latch_0x7ac_and_tail_into_cargo_economy_filter_refresh".to_string(),
"0x00412bd0 structure_candidate_collection_rebuild_cargo_membership_tables_counts_and_scaled_rate_bands_for_all_live_records".to_string(),
"0x00434130 scenario_state_refresh_year_gap_scalar_from_current_year_minus_1850_into_0x4ca2".to_string(),
"0x00436af0 scenario_state_refresh_cached_available_locomotive_rating_from_year_baseline_and_live_availability_gates".to_string(),
"0x00437737 world_preseed_named_candidate_availability_records_from_live_pool".to_string(),
],
near_city_acquisition_nontransport_explicit_trigger_kind_retags: vec![
"0x00443526 SP - GOLD rewrites [event+0x7ef] 1 -> 5 for live runtime-event id 1 under [world+0x66de]".to_string(),
"0x00443601 Labor rewrites [event+0x7ef] 0 -> 2 for live runtime-event id 0x0d under [world+0x66de]".to_string(),
],
near_city_acquisition_nontransport_add_building_descriptor_map_paths: BTreeMap::from([ near_city_acquisition_nontransport_add_building_descriptor_map_paths: BTreeMap::from([
( (
"506 Add Building Barracks".to_string(), "506 Add Building Barracks".to_string(),

View file

@ -22,6 +22,8 @@ pub(super) struct NearCityReportFields {
pub(super) near_city_acquisition_nontransport_dispatch_record_count: usize, pub(super) near_city_acquisition_nontransport_dispatch_record_count: usize,
pub(super) near_city_acquisition_nontransport_dispatch_records_with_trigger_kind: usize, pub(super) near_city_acquisition_nontransport_dispatch_records_with_trigger_kind: usize,
pub(super) near_city_acquisition_nontransport_add_building_record_count: usize, pub(super) near_city_acquisition_nontransport_add_building_record_count: usize,
pub(super) near_city_acquisition_nontransport_late_bringup_candidate_branches: Vec<String>,
pub(super) near_city_acquisition_nontransport_explicit_trigger_kind_retags: Vec<String>,
pub(super) near_city_acquisition_nontransport_add_building_descriptor_map_paths: pub(super) near_city_acquisition_nontransport_add_building_descriptor_map_paths:
BTreeMap<String, Vec<String>>, BTreeMap<String, Vec<String>>,
pub(super) near_city_acquisition_nontransport_add_building_signature_condition_cluster_map_paths: pub(super) near_city_acquisition_nontransport_add_building_signature_condition_cluster_map_paths:
@ -92,6 +94,12 @@ pub(super) fn build_near_city_report_fields(
.near_city_acquisition_nontransport_dispatch_records_with_trigger_kind, .near_city_acquisition_nontransport_dispatch_records_with_trigger_kind,
near_city_acquisition_nontransport_add_building_record_count: inputs near_city_acquisition_nontransport_add_building_record_count: inputs
.near_city_acquisition_nontransport_add_building_record_count, .near_city_acquisition_nontransport_add_building_record_count,
near_city_acquisition_nontransport_late_bringup_candidate_branches: inputs
.near_city_acquisition_nontransport_late_bringup_candidate_branches
.clone(),
near_city_acquisition_nontransport_explicit_trigger_kind_retags: inputs
.near_city_acquisition_nontransport_explicit_trigger_kind_retags
.clone(),
near_city_acquisition_nontransport_add_building_descriptor_map_paths: inputs near_city_acquisition_nontransport_add_building_descriptor_map_paths: inputs
.near_city_acquisition_nontransport_add_building_descriptor_map_paths .near_city_acquisition_nontransport_add_building_descriptor_map_paths
.clone(), .clone(),

View file

@ -122,6 +122,10 @@ pub(in crate::inspect::smp) fn build_periodic_company_service_trace_report(
.near_city_acquisition_nontransport_dispatch_records_with_trigger_kind, .near_city_acquisition_nontransport_dispatch_records_with_trigger_kind,
near_city_acquisition_nontransport_add_building_record_count: near_city_fields near_city_acquisition_nontransport_add_building_record_count: near_city_fields
.near_city_acquisition_nontransport_add_building_record_count, .near_city_acquisition_nontransport_add_building_record_count,
near_city_acquisition_nontransport_late_bringup_candidate_branches: near_city_fields
.near_city_acquisition_nontransport_late_bringup_candidate_branches,
near_city_acquisition_nontransport_explicit_trigger_kind_retags: near_city_fields
.near_city_acquisition_nontransport_explicit_trigger_kind_retags,
near_city_acquisition_nontransport_add_building_descriptor_map_paths: near_city_fields near_city_acquisition_nontransport_add_building_descriptor_map_paths: near_city_fields
.near_city_acquisition_nontransport_add_building_descriptor_map_paths, .near_city_acquisition_nontransport_add_building_descriptor_map_paths,
near_city_acquisition_nontransport_add_building_signature_condition_cluster_map_paths: near_city_acquisition_nontransport_add_building_signature_condition_cluster_map_paths:

View file

@ -180,6 +180,10 @@ pub struct SmpPeriodicCompanyServiceTraceReport {
#[serde(default)] #[serde(default)]
pub near_city_acquisition_nontransport_add_building_record_count: usize, pub near_city_acquisition_nontransport_add_building_record_count: usize,
#[serde(default)] #[serde(default)]
pub near_city_acquisition_nontransport_late_bringup_candidate_branches: Vec<String>,
#[serde(default)]
pub near_city_acquisition_nontransport_explicit_trigger_kind_retags: Vec<String>,
#[serde(default)]
pub near_city_acquisition_nontransport_add_building_descriptor_map_paths: pub near_city_acquisition_nontransport_add_building_descriptor_map_paths:
BTreeMap<String, Vec<String>>, BTreeMap<String, Vec<String>>,
#[serde(default)] #[serde(default)]

View file

@ -324,6 +324,42 @@ fn builds_periodic_company_service_trace_report_with_candidate_consumers() {
trace.near_city_acquisition_nontransport_add_building_record_count, trace.near_city_acquisition_nontransport_add_building_record_count,
10 10
); );
assert_eq!(
trace
.near_city_acquisition_nontransport_late_bringup_candidate_branches
.len(),
8
);
assert!(
trace
.near_city_acquisition_nontransport_late_bringup_candidate_branches
.iter()
.any(|line| line.contains("0x00442c30"))
);
assert!(
trace
.near_city_acquisition_nontransport_late_bringup_candidate_branches
.iter()
.any(|line| line.contains("0x00437737"))
);
assert_eq!(
trace
.near_city_acquisition_nontransport_explicit_trigger_kind_retags
.len(),
2
);
assert!(
trace
.near_city_acquisition_nontransport_explicit_trigger_kind_retags
.iter()
.any(|line| line.contains("0x00443526") && line.contains("1 -> 5"))
);
assert!(
trace
.near_city_acquisition_nontransport_explicit_trigger_kind_retags
.iter()
.any(|line| line.contains("0x00443601") && line.contains("0 -> 2"))
);
assert_eq!( assert_eq!(
trace trace
.near_city_acquisition_nontransport_add_building_descriptor_map_paths .near_city_acquisition_nontransport_add_building_descriptor_map_paths