Split peer-site persisted and rebuild inputs

This commit is contained in:
Jan Petykiewicz 2026-04-19 09:52:37 -07:00
commit 2998d93615
2 changed files with 64 additions and 0 deletions

View file

@ -3768,6 +3768,13 @@ pub struct SmpPeriodicCompanyServiceTraceReport {
pub peer_site_selector_candidate_saved_nonzero_companion_name_pair_summaries:
Vec<SmpSavePlacedStructureNonzeroCompanionNamePairSummaryEntry>,
#[serde(default)]
pub peer_site_persisted_selector_bundle_fields: Vec<String>,
#[serde(default)]
pub peer_site_rebuilt_transient_followon_fields: Vec<String>,
pub peer_site_shellless_minimum_persisted_identity_status: String,
#[serde(default)]
pub peer_site_shellless_minimum_persisted_identity_inputs: Vec<String>,
#[serde(default)]
pub peer_site_restore_input_fields: Vec<String>,
#[serde(default)]
pub peer_site_runtime_input_fields: Vec<String>,
@ -4704,6 +4711,35 @@ fn build_periodic_company_service_trace_report(
summarize_peer_site_selector_candidate_saved_policy_trailing_words(analysis);
let peer_site_selector_candidate_saved_nonzero_companion_name_pair_summaries =
summarize_peer_site_selector_candidate_saved_nonzero_companion_name_pairs(analysis);
let peer_site_persisted_selector_bundle_fields = vec![
"0x5dc1 payload lane [owner+0x23e] restored by 0x0045c150 and later fed into 0x0045c36e"
.to_string(),
"0x5dc1 payload lane [owner+0x242] restored by 0x0045c150 as the repeated secondary payload string"
.to_string(),
"0x5dc1 post-secondary one-byte residue after the repeated secondary payload string"
.to_string(),
"broader saved child/runtime selector bundle [owner+0x246/+0x24e/+0x252] emitted by 0x0040c980 -> 0x0045b560"
.to_string(),
];
let peer_site_rebuilt_transient_followon_fields = vec![
"[owner+0x246] primary transient handle rebuilt from payload strings by 0x0045c310"
.to_string(),
"[owner+0x24a] ambient transient rebuilt through 0x0045b210 after 0x0045b5f0 refreshes the current derived position scalar"
.to_string(),
"transient roots [owner+0x24e/+0x256/+0x25a/+0x25e] cleared by 0x0045c150 before 0x0045b5f0 / 0x0045b6f0 rebuild follow-on variant state"
.to_string(),
"larger animation/light/random-sound variant family rooted in [owner+0x23e] rebuilt through 0x0045b6f0 / 0x0045b760 / 0x0045baf0"
.to_string(),
];
let peer_site_shellless_minimum_persisted_identity_status =
"name_pair_and_post_secondary_byte_minimum_identity_subset_child_runtime_bundle_rebuild_followon".to_string();
let peer_site_shellless_minimum_persisted_identity_inputs = vec![
"[site+0x3cc] cached source placed-structure id".to_string(),
"[site+0x3d0] cached companion candidate/profile id".to_string(),
"0x5dc1 payload lane [owner+0x23e]".to_string(),
"0x5dc1 payload lane [owner+0x242]".to_string(),
"0x5dc1 post-secondary one-byte residue".to_string(),
];
let peer_site_restore_input_fields = vec![
"[site+0x3cc] saved placed-structure id feeding 0x62b2fc".to_string(),
"[site+0x3d0] saved companion-region id from [placed+0x173] feeding 0x62b268".to_string(),
@ -5432,6 +5468,10 @@ fn build_periodic_company_service_trace_report(
"The same persisted selector seam is broader than just the two strings. Atlas-backed recovery now bounds 0x0040c980 -> 0x0045b560 as the derived serializer over [site+0x23e/+0x242/+0x246/+0x24e/+0x252], so the remaining restore-owner search should treat that 0x5dc1/0x5dc2 selector/child/runtime bundle as one persisted field family rather than only [site+0x23e/+0x242]."
.to_string(),
);
notes.push(
"The loader-side counterpart now narrows the shellless minimum persisted subset too. 0x0045c150 restores [owner+0x23e] and [owner+0x242], clears the transient roots, and then hands off to 0x0045c310 / 0x0045b5f0 / 0x0045b6f0 to rebuild the primary child handle and larger ambient/animation/light/random-sound family. That means the broader 0x5dc1/0x5dc2 bundle should be treated as one persisted owner seam, but current shellless planning can keep the minimum identity subset at the cached ids [site+0x3cc/+0x3d0], the restored name-pair [owner+0x23e/+0x242], and the post-secondary discriminator byte while the child/runtime follow-ons stay on the rebuild side."
.to_string(),
);
SmpPeriodicCompanyServiceTraceReport {
profile_family,
@ -5454,6 +5494,10 @@ fn build_periodic_company_service_trace_report(
peer_site_selector_candidate_saved_companion_byte_summaries,
peer_site_selector_candidate_saved_policy_trailing_word_summaries,
peer_site_selector_candidate_saved_nonzero_companion_name_pair_summaries,
peer_site_persisted_selector_bundle_fields,
peer_site_rebuilt_transient_followon_fields,
peer_site_shellless_minimum_persisted_identity_status,
peer_site_shellless_minimum_persisted_identity_inputs,
peer_site_restore_input_fields,
peer_site_runtime_input_fields,
peer_site_runtime_reconstruction_status,
@ -30179,6 +30223,18 @@ mod tests {
.primary_name,
"StationA"
);
assert_eq!(trace.peer_site_persisted_selector_bundle_fields.len(), 4);
assert_eq!(trace.peer_site_rebuilt_transient_followon_fields.len(), 4);
assert_eq!(
trace.peer_site_shellless_minimum_persisted_identity_status,
"name_pair_and_post_secondary_byte_minimum_identity_subset_child_runtime_bundle_rebuild_followon"
);
assert_eq!(
trace
.peer_site_shellless_minimum_persisted_identity_inputs
.len(),
5
);
assert_eq!(trace.peer_site_restore_input_fields.len(), 5);
assert_eq!(trace.peer_site_runtime_input_fields.len(), 3);
assert_eq!(

View file

@ -100,6 +100,14 @@ Working rule:
`[site+0x23e/+0x242/+0x246/+0x24e/+0x252]`, so the remaining restore-owner question should
treat that persisted selector/child/runtime bundle as one seam rather than only
`[site+0x23e/+0x242]`
- the loader-side counterpart narrows the minimum shellless identity subset too:
`0x0045c150` restores `[owner+0x23e/+0x242]`, clears the transient roots, and then hands off
to `0x0045c310 / 0x0045b5f0 / 0x0045b6f0` to rebuild the primary child handle plus the larger
ambient/animation/light/random-sound family, so current shellless planning can keep the
minimum persisted subset at cached ids `[site+0x3cc/+0x3d0]`, restored name-pair
`[owner+0x23e/+0x242]`, and the post-secondary discriminator byte while treating
`[owner+0x246/+0x24e/+0x252]` as part of the broader saved bundle that still flows through the
rebuild side
- Direct disassembly now narrows that acquisition strip further:
- `0x004014b0` scans the live placed-structure collection at `0x0062b26c`
- `0x0041f6e0 -> 0x0042b2d0` is the center-cell token gate over the current region