Extract acquisition tri-lane formula inputs

This commit is contained in:
Jan Petykiewicz 2026-04-18 22:32:13 -07:00
commit 7cb9edcf42
2 changed files with 67 additions and 0 deletions

View file

@ -3689,6 +3689,8 @@ pub struct SmpPeriodicCompanyServiceTraceReport {
#[serde(default)]
pub near_city_acquisition_tri_lane_direct_caller_families: Vec<String>,
#[serde(default)]
pub near_city_acquisition_tri_lane_formula_input_lanes: Vec<String>,
#[serde(default)]
pub near_city_acquisition_projection_hypotheses: Vec<SmpServiceConsumerHypothesis>,
#[serde(default)]
pub near_city_acquisition_remaining_owner_gaps: Vec<String>,
@ -4693,6 +4695,13 @@ fn build_periodic_company_service_trace_report(
"0x0044b81a is an owner-company-aware 0x0040d540 caller that also reaches 0x0040cb70 and 0x00436590 news/event id 0x65".to_string(),
"0x004b70f5 / 0x004b7979 are broader 0x0040d540 callers routing through 0x004337a0 and downstream 0x00540120 / 0x00518140 state consumers".to_string(),
];
let near_city_acquisition_tri_lane_formula_input_lanes = vec![
"0x00412560 uses candidate-row time window [+0x20/+0x22], owner/absence booleans [+0x24/+0x28], list count [+0x2c], and membership list [+0x44]".to_string(),
"0x00412560 consumes world date and policy flags through 0x006cec78 fields [world+0x0d] and [world+0x4afb]".to_string(),
"0x0040d450 combines helper outputs 0x00455810 / 0x00455800 / 0x0044ad60 with owner-company lane [site+0x276] and world event sink 0x00436590 ids 0x66/0x68".to_string(),
"0x00410b30..0x004118f4 consumes candidate-row fields [+0x18/+0x1c/+0x2a/+0x2c/+0x44], subject latch [site+0x78c], and personality byte [site+0x391]".to_string(),
"0x00410b30..0x004118f4 also feeds world-side scalar [world+0x4caa], owner-company scalar [company+0x0d5d] through 0x0040d210, and the local cache bands [site+0x2e8], [site+0x310], [site+0x338], and [site+0x360]".to_string(),
];
let near_city_acquisition_projection_hypotheses = vec![
SmpServiceConsumerHypothesis {
label: "site_owner_replay_from_post_load_refresh_self_id_reconstructible".to_string(),
@ -5175,6 +5184,7 @@ fn build_periodic_company_service_trace_report(
near_city_acquisition_tri_lane_candidate_gate_fields,
near_city_acquisition_tri_lane_runtime_writer_roles,
near_city_acquisition_tri_lane_direct_caller_families,
near_city_acquisition_tri_lane_formula_input_lanes,
near_city_acquisition_projection_hypotheses,
near_city_acquisition_remaining_owner_gaps,
near_city_acquisition_region_lane_statuses,
@ -28230,6 +28240,12 @@ mod tests {
.len(),
5
);
assert_eq!(
trace
.near_city_acquisition_tri_lane_formula_input_lanes
.len(),
5
);
assert_eq!(trace.near_city_acquisition_projection_hypotheses.len(), 3);
assert_eq!(
trace.near_city_acquisition_projection_hypotheses[0].label,
@ -28609,6 +28625,45 @@ mod tests {
&& line.contains("0x004337a0")
&& line.contains("0x00540120 / 0x00518140"))
);
assert!(
trace
.near_city_acquisition_tri_lane_formula_input_lanes
.iter()
.any(|line| line.contains("[+0x20/+0x22]")
&& line.contains("[+0x24/+0x28]")
&& line.contains("[+0x44]"))
);
assert!(
trace
.near_city_acquisition_tri_lane_formula_input_lanes
.iter()
.any(|line| line.contains("[world+0x0d]") && line.contains("[world+0x4afb]"))
);
assert!(
trace
.near_city_acquisition_tri_lane_formula_input_lanes
.iter()
.any(|line| line.contains("0x00455810 / 0x00455800 / 0x0044ad60")
&& line.contains("[site+0x276]")
&& line.contains("0x66/0x68"))
);
assert!(
trace
.near_city_acquisition_tri_lane_formula_input_lanes
.iter()
.any(|line| line.contains("[+0x18/+0x1c/+0x2a/+0x2c/+0x44]")
&& line.contains("[site+0x78c]")
&& line.contains("[site+0x391]"))
);
assert!(
trace
.near_city_acquisition_tri_lane_formula_input_lanes
.iter()
.any(|line| line.contains("[world+0x4caa]")
&& line.contains("[company+0x0d5d]")
&& line.contains("[site+0x310]")
&& line.contains("[site+0x360]"))
);
assert!(
trace
.near_city_acquisition_remaining_owner_gaps