Rule out fixed infrastructure policy row as child header
This commit is contained in:
parent
3c09482b71
commit
1a0296ddd1
3 changed files with 32 additions and 3 deletions
|
|
@ -4034,6 +4034,7 @@ fn build_infrastructure_asset_trace_report(
|
|||
"[this+0x248] cached primary-child slot".to_string(),
|
||||
"[this+0x206/+0x20a/+0x20e] route-entry resolver fields".to_string(),
|
||||
"[this+0x1e2/+0x1e6/+0x1ea] published anchor triplet".to_string(),
|
||||
"[this+0x4b/+0x4f/+0x53] companion local triplet lane".to_string(),
|
||||
"child list [this+0x75] under the Infrastructure owner".to_string(),
|
||||
"non-direct live-entry directory [collection+0x3c] with 12-byte rows (payload pointer, previous live id, next live id)".to_string(),
|
||||
];
|
||||
|
|
@ -4048,6 +4049,7 @@ fn build_infrastructure_asset_trace_report(
|
|||
"0x005395d0 shared child-attach list owner".to_string(),
|
||||
"0x00539530 shared position-lane seed helper".to_string(),
|
||||
"0x0053a5b0 shared third position-lane seed helper".to_string(),
|
||||
"0x0052e8b0 runtime_object_publish_companion_triplet_lane_4b_4f_53".to_string(),
|
||||
"0x00530720 runtime_object_publish_anchor_triplet_and_optionally_rebind_world_cell_handle"
|
||||
.to_string(),
|
||||
"0x0048e140 / 0x0048e160 / 0x0048e180 route-entry resolver helpers".to_string(),
|
||||
|
|
@ -4158,6 +4160,7 @@ fn build_infrastructure_asset_trace_report(
|
|||
.map(|summary| summary.dominant_trailing_word_count)
|
||||
.unwrap_or_default()
|
||||
),
|
||||
"direct disassembly now also shows 0x530720 publishing the first fixed-triplet lane into [this+0x1e2/+0x1e6/+0x1ea], while 0x52e8b0 publishes the second fixed-triplet lane into [this+0x4b/+0x4f/+0x53] and sets bit 0x02".to_string(),
|
||||
"local .rdata at 0x005cfd00 now also proves the infrastructure child table uses the shared tagged callback strip directly: slot +0x40 = 0x455fc0, slot +0x48 = 0x455870, and slot +0x4c = 0x455930".to_string(),
|
||||
"direct disassembly now shows 0x0048a1e0 cloning the first child triplet bands through 0x52e880/0x52e720, destroying the prior child, seeding a new literal Infrastructure child through 0x455b70 with payload seed 0x5c87a8, attaching through 0x5395d0 or 0x53a5d0, and republishing the two bands through 0x52e8b0/0x530720".to_string(),
|
||||
"direct disassembly now also shows the outer owner at 0x0048dcf0 reading a child count plus optional primary-child ordinal from the tagged stream through 0x531150, zeroing [this+0x08], dispatching each fresh child through 0x455a50 -> vtable slot +0x40, culling ordinals above 5, and restoring cached primary-child slot [this+0x248] from the saved ordinal".to_string(),
|
||||
|
|
@ -4165,7 +4168,7 @@ fn build_infrastructure_asset_trace_report(
|
|||
],
|
||||
blockers: vec![
|
||||
"how the payload streams reached through 0x00518380 -> 0x00518140 align with the embedded 0x55f1 name-pair groups and compact-prefix regimes surfaced by the save-side probe".to_string(),
|
||||
"which tagged values inside each payload stream correspond to the child count, optional primary-child ordinal, and the per-child shared tagged callback sequence consumed by 0x0048dcf0".to_string(),
|
||||
"which outer-stream tagged values, outside the now-spoken-for fixed 0x55f2 triplets and short trailing flag bytes, correspond to the child count and optional primary-child ordinal consumed by 0x0048dcf0".to_string(),
|
||||
"which restored child fields or grouped rows retain the 0x38a5 embedded name-pair semantics before route/local-runtime follow-ons take over".to_string(),
|
||||
],
|
||||
},
|
||||
|
|
@ -22946,8 +22949,8 @@ mod tests {
|
|||
let trace = build_infrastructure_asset_trace_report(&analysis);
|
||||
assert!(trace.side_buffer_present);
|
||||
assert_eq!(trace.triplet_alignment_overlap_count, 0);
|
||||
assert_eq!(trace.known_owner_bridge_fields.len(), 5);
|
||||
assert_eq!(trace.known_bridge_helpers.len(), 12);
|
||||
assert_eq!(trace.known_owner_bridge_fields.len(), 6);
|
||||
assert_eq!(trace.known_bridge_helpers.len(), 13);
|
||||
assert_eq!(trace.next_owner_questions.len(), 3);
|
||||
assert_eq!(trace.candidate_consumer_hypotheses.len(), 3);
|
||||
assert_eq!(
|
||||
|
|
@ -22996,6 +22999,16 @@ mod tests {
|
|||
&& (line.contains("six 4-byte lanes") || line.contains("six dword lanes"))
|
||||
})
|
||||
);
|
||||
assert!(
|
||||
trace.candidate_consumer_hypotheses[0]
|
||||
.evidence
|
||||
.iter()
|
||||
.any(|line| {
|
||||
line.contains("0x530720")
|
||||
&& line.contains("0x52e8b0")
|
||||
&& line.contains("[this+0x4b/+0x4f/+0x53]")
|
||||
})
|
||||
);
|
||||
assert_eq!(trace.branches[0].status, "grounded_separate_owner_seam");
|
||||
assert_eq!(trace.branches[1].status, "disproved_by_grounded_probe");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue