Bound region service consumer candidates

This commit is contained in:
Jan Petykiewicz 2026-04-18 12:41:08 -07:00
commit 1ec8749367
2 changed files with 23 additions and 1 deletions

View file

@ -2951,6 +2951,8 @@ pub struct SmpRegionServiceTraceReport {
#[serde(default)]
pub queued_notice_record_count: usize,
#[serde(default)]
pub atlas_candidate_consumers: Vec<String>,
#[serde(default)]
pub entries: Vec<SmpRegionServiceTraceEntry>,
#[serde(default)]
pub notes: Vec<String>,
@ -3592,6 +3594,16 @@ pub fn inspect_save_infrastructure_asset_trace_file(
fn build_region_service_trace_report(
analysis: &SmpSaveCompanyChairmanAnalysisReport,
) -> SmpRegionServiceTraceReport {
let atlas_candidate_consumers = vec![
"0x00422100 periodic class-0 region picker and queue seed owner".to_string(),
"0x004337c0 queued 0x20-byte notice-node append helper".to_string(),
"0x00437c00 queued-kind dispatch owner".to_string(),
"0x004c7520 kind-7 region-focused custom-modal owner".to_string(),
"0x004358d0 pending region bonus service owner".to_string(),
"0x00438710 recurring queued-notice service owner".to_string(),
"0x00420030 / 0x00420280 city-connection peer probes".to_string(),
"0x0047efe0 placed-structure linked-company resolver".to_string(),
];
let entries = analysis
.region_record_triplets
.as_ref()
@ -3662,6 +3674,7 @@ fn build_region_service_trace_report(
.as_ref()
.map(|probe| probe.entries.len())
.unwrap_or_default(),
atlas_candidate_consumers,
entries,
notes,
}
@ -21606,6 +21619,7 @@ mod tests {
let trace = build_region_service_trace_report(&analysis);
assert_eq!(trace.region_record_triplet_count, 1);
assert_eq!(trace.queued_notice_record_count, 0);
assert!(!trace.atlas_candidate_consumers.is_empty());
assert_eq!(trace.entries.len(), 1);
assert_eq!(
trace.entries[0].branches[0].status,

View file

@ -27,7 +27,11 @@ Working rule:
and any stable region-id or class discriminator that can drive shellless city-connection
service. The newly grounded queue-node probe for the atlas-backed kind-`7` notice records is a
negative result on `q.gms`, `p.gms`, and `Autosave.gms`, so the next region pass should not
assume that the transient `[world+0x66a6]` queue family is persisted in ordinary saves.
assume that the transient `[world+0x66a6]` queue family is persisted in ordinary saves; the
region trace now also carries the concrete queued/service owners (`0x00422100`, `0x004337c0`,
`0x00437c00`, `0x004c7520`, `0x004358d0`, `0x00438710`, `0x00420030/0x00420280`,
`0x0047efe0`) so the next pass can focus on the missing saved latches and stable region id/class
rather than on rediscovering the outer service family.
- Reconstruct the save-side placed-structure collection body on top of the newly grounded
`0x36b1/0x36b2/0x36b3` header seam so the blocked city-connection / linked-transit branch can
stop depending on atlas-only placed-structure and local-runtime refresh notes, especially the
@ -91,6 +95,10 @@ Working rule:
consumer candidates rooted at the `Infrastructure` child attach/rebuild/serializer helpers and
the later route/local-runtime follow-on owners. That means the next `0x38a5` pass can be
targeted static mapping instead of another generic scan.
- The region trace now also carries the corresponding atlas-backed candidate owner strip above the
unresolved save latches, so the region frontier is now explicitly “missing persisted owner seam
for `[region+0x25e/+0x276/+0x302/+0x316]` and stable region id/class,” not “unknown service
family.”
- Save inspection now splits the shared `0x5209/0x520a/0x520b` family correctly: the smaller
direct `0x1d5` collection is the live train family and now exposes a live-entry directory rooted
at metadata dword `16`, while the actual region family is the larger non-direct `Marker09`