Ground acquisition create-side constructor family

This commit is contained in:
Jan Petykiewicz 2026-04-18 21:42:21 -07:00
commit a120053d2f
2 changed files with 42 additions and 5 deletions

View file

@ -4582,6 +4582,8 @@ fn build_periodic_company_service_trace_report(
.to_string(),
"station-detail mutation path 0x0040dc40 already consumes [site+0x276], company stat-family 0x2329/0x0d, and candidate field [candidate+0x22], then commits linked-site side-state rebuild through 0x0040d1f0 / 0x00480710 / 0x0045b160 / 0x0045b9b0 / 0x00418be0 / 0x0040cd70"
.to_string(),
"city-connection direct-placement family 0x00402cb0 -> 0x00403ed5/0x0040446b -> 0x004134d0 -> 0x0040ef10 already grounds the shared allocator/finalize path for newly created site rows"
.to_string(),
"company stat-family lane 0x2329/0x0d already rehosted in runtime company state".to_string(),
"company market state now carries the save-native linked-transit route-anchor tuple [company+0x0d35] and [company+0x7664/+0x7668/+0x766c]"
.to_string(),
@ -4674,6 +4676,7 @@ fn build_periodic_company_service_trace_report(
let atlas_candidate_consumers = vec![
"0x004019e0 periodic company outer service owner".to_string(),
"0x00406050 city-connection bonus/news owner".to_string(),
"0x00402cb0 city-connection direct-placement builder owner".to_string(),
"0x00409950 linked-transit train-roster balancer".to_string(),
"0x004014b0 near-city industry acquisition and news owner".to_string(),
"0x0040dc40 station-detail linked-site mutation validator/apply owner".to_string(),
@ -4733,6 +4736,10 @@ fn build_periodic_company_service_trace_report(
.to_string(),
"0x0040d1f0 / 0x00480710 / 0x0045b160 / 0x0045b9b0 / 0x00418be0 / 0x0040cd70 linked-site mutation-side side-state rebuild strip"
.to_string(),
"0x00402cb0 / 0x00403ed5 / 0x0040446b city-connection direct-placement commit family"
.to_string(),
"0x004134d0 / 0x0040ef10 shared placed-structure allocator and finalize-or-rebuild lane for newly created site rows"
.to_string(),
"0x0052edf0 generic base constructor seeding [this+0x04] from caller arg 1".to_string(),
"0x00455b70 placed-structure specialization constructor feeding 0x0052edf0 arg 3 as the primary selector and arg 1 as fallback"
.to_string(),
@ -4918,6 +4925,9 @@ fn build_periodic_company_service_trace_report(
notes.push(
"The acquisition-side consumer family is tighter now too. The checked-in station-detail action path 0x0040dc40 already consumes live owner company [site+0x276], candidate field [candidate+0x22], company stat-family 0x2329/0x0d, projected-cell validation 0x00417840 -> 0x004197e0, and compact-grid replay 0x004142c0/0x004142d0 before it commits the linked-site mutation through 0x0040d1f0 -> 0x00480710 -> 0x0045b160 / 0x0045b9b0 / 0x00418be0 / 0x0040cd70. That means these lanes are already grounded as live preconditions and mutation-side rebuild inputs, even though the save or replay owner that populates them for shellless acquisition is still the open question.".to_string(),
);
notes.push(
"The create-side family is grounded separately too. City-connection direct placement already reaches the shared constructor/finalize strip 0x00402cb0 -> 0x00403ed5/0x0040446b -> 0x004134d0 -> 0x0040ef10, so the remaining shellless gap is no longer 'how are new placed structures finalized?' It is specifically how restored existing rows regain the owner-company lane, self-id lane, cached tri-lane, and cached candidate bridge before acquisition-style consumers run.".to_string(),
);
notes.push(
"Direct disassembly now tightens the remaining placed-structure lanes too: 0x0040cac0 is only the raw tri-lane delta reader over [site+0x310/+0x338/+0x360]; 0x0040d360 is only the exact subtype test [candidate+0x32] == 4; and the current binary write scan finds no direct placed-structure runtime writer for either [site+0x2a4] or [site+0x310/+0x338/+0x360], which now makes both lanes look payload/restore-owned rather than service-produced.".to_string(),
);
@ -27922,8 +27932,8 @@ mod tests {
let trace = build_periodic_company_service_trace_report(&analysis);
assert_eq!(trace.selected_company_id, Some(7));
assert_eq!(trace.atlas_candidate_consumers.len(), 8);
assert_eq!(trace.known_bridge_helpers.len(), 47);
assert_eq!(trace.atlas_candidate_consumers.len(), 9);
assert_eq!(trace.known_bridge_helpers.len(), 49);
assert_eq!(trace.next_owner_questions.len(), 4);
assert_eq!(trace.companies.len(), 1);
assert_eq!(
@ -28064,7 +28074,7 @@ mod tests {
trace
.near_city_acquisition_runtime_backed_input_families
.len(),
11
12
);
assert_eq!(trace.near_city_acquisition_remaining_owner_gaps.len(), 4);
assert_eq!(trace.near_city_acquisition_region_lane_statuses.len(), 4);
@ -28077,6 +28087,9 @@ mod tests {
line.contains("0x0040dc40")
&& line.contains("linked-site mutation validator/apply owner")
}));
assert!(trace.atlas_candidate_consumers.iter().any(|line| {
line.contains("0x00402cb0") && line.contains("direct-placement builder owner")
}));
assert!(trace.next_owner_questions.iter().any(|line| {
line.contains("remaining placed-structure-side 0x004014b0 inputs")
&& line.contains("0x004014b0")
@ -28149,6 +28162,13 @@ mod tests {
&& line.contains("[site+0x276]")
&& line.contains("0x0040d1f0 / 0x00480710"))
);
assert!(
trace
.near_city_acquisition_runtime_backed_input_families
.iter()
.any(|line| line
.contains("0x00402cb0 -> 0x00403ed5/0x0040446b -> 0x004134d0 -> 0x0040ef10"))
);
assert!(
trace
.near_city_acquisition_runtime_backed_input_families
@ -28318,6 +28338,18 @@ mod tests {
assert!(trace.known_bridge_helpers.iter().any(|line| line.contains(
"0x0040d1f0 / 0x00480710 / 0x0045b160 / 0x0045b9b0 / 0x00418be0 / 0x0040cd70"
)));
assert!(
trace
.known_bridge_helpers
.iter()
.any(|line| line.contains("0x00402cb0 / 0x00403ed5 / 0x0040446b"))
);
assert!(
trace
.known_bridge_helpers
.iter()
.any(|line| line.contains("0x004134d0 / 0x0040ef10"))
);
let city_branch = trace.companies[0]
.branches
.iter()

View file

@ -121,9 +121,14 @@ Working rule:
`0x2329/0x0d`, candidate field `[candidate+0x22]`, and the projected-cell validation strip
`0x00417840 -> 0x004197e0`, then commits the linked-site mutation through
`0x0040d1f0 / 0x00480710 / 0x0045b160 / 0x0045b9b0 / 0x00418be0 / 0x0040cd70`
- the create-side family is grounded separately too:
city-connection direct placement already reaches
`0x00402cb0 -> 0x00403ed5/0x0040446b -> 0x004134d0 -> 0x0040ef10`
as the shared constructor/finalize strip for newly created site rows
- so the acquisition blocker is no longer “is there any real consumer family above these
lanes?”; it is specifically the restore or replay owner that populates those live preconditions
for shellless acquisition
lanes?” or “how do new placed structures finalize?”; it is specifically the restore or replay
owner that populates those live preconditions for already-restored rows before shellless
acquisition runs
- direct disassembly now shows the generic base constructor `0x0052edf0` clearing base state
through `0x0052ecd0` and then writing `[this+0x04]` from caller arg `1`
- `0x00455b70` is the concrete placed-structure specialization constructor feeding