Bound region service consumer candidates
This commit is contained in:
parent
61aed9e9ab
commit
1ec8749367
2 changed files with 23 additions and 1 deletions
|
|
@ -2951,6 +2951,8 @@ pub struct SmpRegionServiceTraceReport {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub queued_notice_record_count: usize,
|
pub queued_notice_record_count: usize,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
pub atlas_candidate_consumers: Vec<String>,
|
||||||
|
#[serde(default)]
|
||||||
pub entries: Vec<SmpRegionServiceTraceEntry>,
|
pub entries: Vec<SmpRegionServiceTraceEntry>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub notes: Vec<String>,
|
pub notes: Vec<String>,
|
||||||
|
|
@ -3592,6 +3594,16 @@ pub fn inspect_save_infrastructure_asset_trace_file(
|
||||||
fn build_region_service_trace_report(
|
fn build_region_service_trace_report(
|
||||||
analysis: &SmpSaveCompanyChairmanAnalysisReport,
|
analysis: &SmpSaveCompanyChairmanAnalysisReport,
|
||||||
) -> SmpRegionServiceTraceReport {
|
) -> 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
|
let entries = analysis
|
||||||
.region_record_triplets
|
.region_record_triplets
|
||||||
.as_ref()
|
.as_ref()
|
||||||
|
|
@ -3662,6 +3674,7 @@ fn build_region_service_trace_report(
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.map(|probe| probe.entries.len())
|
.map(|probe| probe.entries.len())
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
|
atlas_candidate_consumers,
|
||||||
entries,
|
entries,
|
||||||
notes,
|
notes,
|
||||||
}
|
}
|
||||||
|
|
@ -21606,6 +21619,7 @@ mod tests {
|
||||||
let trace = build_region_service_trace_report(&analysis);
|
let trace = build_region_service_trace_report(&analysis);
|
||||||
assert_eq!(trace.region_record_triplet_count, 1);
|
assert_eq!(trace.region_record_triplet_count, 1);
|
||||||
assert_eq!(trace.queued_notice_record_count, 0);
|
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.len(), 1);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
trace.entries[0].branches[0].status,
|
trace.entries[0].branches[0].status,
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,11 @@ Working rule:
|
||||||
and any stable region-id or class discriminator that can drive shellless city-connection
|
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
|
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
|
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
|
- 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
|
`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
|
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
|
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
|
the later route/local-runtime follow-on owners. That means the next `0x38a5` pass can be
|
||||||
targeted static mapping instead of another generic scan.
|
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
|
- 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
|
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`
|
at metadata dword `16`, while the actual region family is the larger non-direct `Marker09`
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue