Extract acquisition tri-lane formula inputs
This commit is contained in:
parent
c6f3683619
commit
7cb9edcf42
2 changed files with 67 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -179,6 +179,18 @@ Working rule:
|
|||
`0x0040cb70` and news/event id `0x65`,
|
||||
and `0x004b70f5 / 0x004b7979` are broader sibling `0x0040d540` callers routing through
|
||||
`0x004337a0` and downstream `0x00540120 / 0x00518140`
|
||||
- formula input lanes are now structured too:
|
||||
`0x00412560` uses candidate-row time window `+0x20/+0x22`,
|
||||
owner/absence booleans `+0x24/+0x28`,
|
||||
list count `+0x2c`,
|
||||
and membership list `+0x44`,
|
||||
while the wider `0x00410b30..0x004118f4` loop consumes candidate-row
|
||||
`+0x18/+0x1c/+0x2a/+0x2c/+0x44`,
|
||||
subject latch `[site+0x78c]`,
|
||||
personality byte `[site+0x391]`,
|
||||
world lanes `[world+0x0d]`, `[world+0x4afb]`, `[world+0x4caa]`,
|
||||
owner-company scalar `[company+0x0d5d]`,
|
||||
and the local cache bands `[site+0x2e8]`, `[site+0x310]`, `[site+0x338]`, `[site+0x360]`
|
||||
- the direct writer census now narrows the remaining owner-company question too:
|
||||
grounded `[site+0x276]` writes cluster under create-side and live mutation families such as
|
||||
`0x004269b0 / 0x00426a10`, the create-side `0x0040ef10 / 0x0040f6d0` strip, and the bulk
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue