Rank higher-layer consumer hypotheses
This commit is contained in:
parent
1ec8749367
commit
c33f903be2
5 changed files with 212 additions and 7 deletions
|
|
@ -2953,6 +2953,8 @@ pub struct SmpRegionServiceTraceReport {
|
|||
#[serde(default)]
|
||||
pub atlas_candidate_consumers: Vec<String>,
|
||||
#[serde(default)]
|
||||
pub candidate_consumer_hypotheses: Vec<SmpServiceConsumerHypothesis>,
|
||||
#[serde(default)]
|
||||
pub entries: Vec<SmpRegionServiceTraceEntry>,
|
||||
#[serde(default)]
|
||||
pub notes: Vec<String>,
|
||||
|
|
@ -2982,11 +2984,25 @@ pub struct SmpInfrastructureAssetTraceReport {
|
|||
#[serde(default)]
|
||||
pub atlas_candidate_consumers: Vec<String>,
|
||||
#[serde(default)]
|
||||
pub candidate_consumer_hypotheses: Vec<SmpServiceConsumerHypothesis>,
|
||||
#[serde(default)]
|
||||
pub branches: Vec<SmpServiceTraceBranchStatus>,
|
||||
#[serde(default)]
|
||||
pub notes: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct SmpServiceConsumerHypothesis {
|
||||
pub label: String,
|
||||
pub status: String,
|
||||
#[serde(default)]
|
||||
pub candidate_consumers: Vec<String>,
|
||||
#[serde(default)]
|
||||
pub evidence: Vec<String>,
|
||||
#[serde(default)]
|
||||
pub blockers: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct SmpLoadedSpecialConditionsTable {
|
||||
pub source_kind: String,
|
||||
|
|
@ -3604,6 +3620,61 @@ fn build_region_service_trace_report(
|
|||
"0x00420030 / 0x00420280 city-connection peer probes".to_string(),
|
||||
"0x0047efe0 placed-structure linked-company resolver".to_string(),
|
||||
];
|
||||
let candidate_consumer_hypotheses = vec![
|
||||
SmpServiceConsumerHypothesis {
|
||||
label: "pending region bonus service path".to_string(),
|
||||
status: if analysis.region_record_triplets.is_some() {
|
||||
"highest_priority_static_mapping_target".to_string()
|
||||
} else {
|
||||
"possible_consumer_family".to_string()
|
||||
},
|
||||
candidate_consumers: vec![
|
||||
"0x004358d0 pending region bonus service owner".to_string(),
|
||||
"0x00420030 / 0x00420280 city-connection peer probes".to_string(),
|
||||
"0x0047efe0 placed-structure linked-company resolver".to_string(),
|
||||
],
|
||||
evidence: vec![
|
||||
"atlas already bounds this owner as the direct consumer of [region+0x276], [region+0x302], and [region+0x316]".to_string(),
|
||||
"the new region trace already proves the record envelope and profile subcollection, so the remaining gap is the separate persisted latch seam rather than the service owner".to_string(),
|
||||
],
|
||||
blockers: vec![
|
||||
"persisted owner seam for [region+0x25e/+0x276/+0x302/+0x316]".to_string(),
|
||||
"stable region id or class discriminator".to_string(),
|
||||
],
|
||||
},
|
||||
SmpServiceConsumerHypothesis {
|
||||
label: "periodic producer and queued-notice path".to_string(),
|
||||
status: "secondary_candidate_after_pending_service".to_string(),
|
||||
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(),
|
||||
"0x00438710 recurring queued-notice service owner".to_string(),
|
||||
],
|
||||
evidence: vec![
|
||||
"atlas ties these owners to the transient kind-7 queue family rooted at [world+0x66a6]".to_string(),
|
||||
"grounded save probes now show that the ordinary-save queue family is not obviously persisted, so this looks more like runtime rebuild state than a direct save seam".to_string(),
|
||||
],
|
||||
blockers: vec![
|
||||
"transient queue is not obviously persisted in ordinary saves".to_string(),
|
||||
"needs one upstream persisted latch or rebuild owner first".to_string(),
|
||||
],
|
||||
},
|
||||
SmpServiceConsumerHypothesis {
|
||||
label: "queued kind-7 modal dispatch path".to_string(),
|
||||
status: "shell_adjacent_reference_only".to_string(),
|
||||
candidate_consumers: vec![
|
||||
"0x00437c00 queued-kind dispatch owner".to_string(),
|
||||
"0x004c7520 kind-7 region-focused custom-modal owner".to_string(),
|
||||
],
|
||||
evidence: vec![
|
||||
"atlas already bounds this family as the shell-facing modal dispatch above the queued region id".to_string(),
|
||||
"it is still useful as a reference owner for field identity, but not the first shellless rehost target".to_string(),
|
||||
],
|
||||
blockers: vec![
|
||||
"full shell/dialog ownership remains out of scope".to_string(),
|
||||
],
|
||||
},
|
||||
];
|
||||
let entries = analysis
|
||||
.region_record_triplets
|
||||
.as_ref()
|
||||
|
|
@ -3675,6 +3746,7 @@ fn build_region_service_trace_report(
|
|||
.map(|probe| probe.entries.len())
|
||||
.unwrap_or_default(),
|
||||
atlas_candidate_consumers,
|
||||
candidate_consumer_hypotheses,
|
||||
entries,
|
||||
notes,
|
||||
}
|
||||
|
|
@ -3712,6 +3784,78 @@ fn build_infrastructure_asset_trace_report(
|
|||
"0x00448a70 / 0x00493660 / 0x0048b660 route and world follow-on family".to_string(),
|
||||
"0x004133b0 placed-structure local-runtime refresh outer owner".to_string(),
|
||||
];
|
||||
let candidate_consumer_hypotheses = vec![
|
||||
SmpServiceConsumerHypothesis {
|
||||
label: "infrastructure child attach/rebuild path".to_string(),
|
||||
status: if side_buffer.is_some() && (bridge_like_name_pair_count > 0
|
||||
|| tunnel_like_name_pair_count > 0
|
||||
|| track_cap_like_name_pair_count > 0)
|
||||
{
|
||||
"highest_priority_static_mapping_target".to_string()
|
||||
} else {
|
||||
"possible_consumer_family".to_string()
|
||||
},
|
||||
candidate_consumers: vec![
|
||||
"0x0048a1e0 infrastructure child attach helper".to_string(),
|
||||
"0x0048dd50 infrastructure child rebuild loop".to_string(),
|
||||
"0x00490a3c infrastructure payload attach helper".to_string(),
|
||||
],
|
||||
evidence: vec![
|
||||
format!(
|
||||
"real side-buffer name families currently count bridge/tunnel/track-cap pairs as {}/{}/{}",
|
||||
bridge_like_name_pair_count,
|
||||
tunnel_like_name_pair_count,
|
||||
track_cap_like_name_pair_count
|
||||
),
|
||||
"atlas already bounds these helpers under the literal Infrastructure owner".to_string(),
|
||||
"the side-buffer corpus is disjoint from the placed-structure triplet corpus, so a separate child/rebuild family is more plausible than a compact alias".to_string(),
|
||||
],
|
||||
blockers: vec![
|
||||
"exact compact-prefix regime semantics".to_string(),
|
||||
"which child fields or grouped rows consume the side-buffer payload".to_string(),
|
||||
],
|
||||
},
|
||||
SmpServiceConsumerHypothesis {
|
||||
label: "infrastructure serializer/load companion path".to_string(),
|
||||
status: if side_buffer.is_some() {
|
||||
"strong_static_mapping_candidate".to_string()
|
||||
} else {
|
||||
"possible_consumer_family".to_string()
|
||||
},
|
||||
candidate_consumers: vec![
|
||||
"0x004559d0 infrastructure tagged string-triplet serializer".to_string(),
|
||||
"0x00455870 infrastructure tagged string-triplet load companion".to_string(),
|
||||
"0x00455930 infrastructure scalar-triplet serializer sibling".to_string(),
|
||||
],
|
||||
evidence: vec![
|
||||
"atlas already bounds the serializer/load strip around the Infrastructure owner and the same 0x55f1/0x55f2/0x55f3 tag family".to_string(),
|
||||
"the save-side side-buffer carries embedded dual-name rows plus compact prefixes, which is compatible with a serializer-side bridge".to_string(),
|
||||
],
|
||||
blockers: vec![
|
||||
"whether the side-buffer is a direct serialized payload or one rebuild/cache layer above it".to_string(),
|
||||
],
|
||||
},
|
||||
SmpServiceConsumerHypothesis {
|
||||
label: "route/local-runtime follow-on path".to_string(),
|
||||
status: if side_buffer.is_some() {
|
||||
"secondary_candidate_after_attach_rebuild".to_string()
|
||||
} else {
|
||||
"possible_consumer_family".to_string()
|
||||
},
|
||||
candidate_consumers: vec![
|
||||
"0x00448a70 / 0x00493660 / 0x0048b660 route and world follow-on family".to_string(),
|
||||
"0x004133b0 placed-structure local-runtime refresh outer owner".to_string(),
|
||||
],
|
||||
evidence: vec![
|
||||
"atlas ties the Infrastructure rebuild loop to later route-side and local-runtime follow-on owners".to_string(),
|
||||
"current side-buffer trace shows separate infrastructure state but does not yet prove direct route-entry consumption".to_string(),
|
||||
],
|
||||
blockers: vec![
|
||||
"needs one upstream consumer or rebuild owner first".to_string(),
|
||||
"no direct save-side evidence yet for route-entry or local-runtime field linkage".to_string(),
|
||||
],
|
||||
},
|
||||
];
|
||||
let branches = vec![
|
||||
build_service_trace_branch_status(
|
||||
"infrastructure_asset_owner_seam",
|
||||
|
|
@ -3805,6 +3949,7 @@ fn build_infrastructure_asset_trace_report(
|
|||
.map(|probe| probe.overlapping_name_pair_count)
|
||||
.unwrap_or_default(),
|
||||
atlas_candidate_consumers,
|
||||
candidate_consumer_hypotheses,
|
||||
branches,
|
||||
notes,
|
||||
}
|
||||
|
|
@ -21620,6 +21765,11 @@ mod tests {
|
|||
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.candidate_consumer_hypotheses.len(), 3);
|
||||
assert_eq!(
|
||||
trace.candidate_consumer_hypotheses[0].status,
|
||||
"highest_priority_static_mapping_target"
|
||||
);
|
||||
assert_eq!(trace.entries.len(), 1);
|
||||
assert_eq!(
|
||||
trace.entries[0].branches[0].status,
|
||||
|
|
@ -21676,7 +21826,20 @@ mod tests {
|
|||
first_embedded_secondary_name: Some("Infrastructure".to_string()),
|
||||
embedded_name_row_samples: Vec::new(),
|
||||
compact_prefix_pattern_summaries: Vec::new(),
|
||||
name_pair_summaries: Vec::new(),
|
||||
name_pair_summaries: vec![SmpSavePlacedStructureDynamicSideBufferNamePairSummary {
|
||||
primary_name: "TrackCapST_Cap.3dp".to_string(),
|
||||
secondary_name: "Infrastructure".to_string(),
|
||||
count: 12,
|
||||
first_name_tag_relative_offset: 0x20,
|
||||
unique_compact_prefix_pattern_count: 2,
|
||||
dominant_prefix_leading_dword: 0xff0000ff,
|
||||
dominant_prefix_leading_dword_hex: "0xff0000ff".to_string(),
|
||||
dominant_prefix_trailing_word: 1,
|
||||
dominant_prefix_trailing_word_hex: "0x0001".to_string(),
|
||||
dominant_prefix_separator_byte: 0xff,
|
||||
dominant_prefix_separator_byte_hex: "0xff".to_string(),
|
||||
dominant_prefix_count: 9,
|
||||
}],
|
||||
evidence: Vec::new(),
|
||||
});
|
||||
analysis.placed_structure_dynamic_side_buffer_alignment =
|
||||
|
|
@ -21696,6 +21859,11 @@ 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.candidate_consumer_hypotheses.len(), 3);
|
||||
assert_eq!(
|
||||
trace.candidate_consumer_hypotheses[0].status,
|
||||
"highest_priority_static_mapping_target"
|
||||
);
|
||||
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