Ground infrastructure material selector roles
This commit is contained in:
parent
bb91dc1611
commit
d8e6eac810
3 changed files with 34 additions and 7 deletions
|
|
@ -4307,8 +4307,8 @@ fn build_infrastructure_asset_trace_report(
|
|||
"0x0048e140 / 0x0048e160 / 0x0048e180 route-entry resolver helpers".to_string(),
|
||||
];
|
||||
let next_owner_questions = vec![
|
||||
"Inside the grounded bridge branch ([this+0x226]==1) and tunnel branch ([this+0x226]==2) of the upstream chooser siblings 0x004a2c80 (DT) and 0x004a34e0 (ST), which selector-byte combinations at [this+0x219]/[this+0x251] choose the decoded family tables before the grounded pure bridge-section class 0x0002/0xff reaches the two-child clone-path above 0x0048a1e0 and 0x0048dcf0, now that [this+0x252] is grounded as the suspension-cap radius/handedness selector in the special [this+0x219]==2 bridge path?".to_string(),
|
||||
"Inside the grounded overpass/ballast branch ([this+0x226]==3) of those same chooser siblings, when do the fixed BallastCap and Overpass literals (0x5cb138/0x5cb150 and 0x5cb168/0x5cb180) fire, and does the pure BallastCap class 0x0055/0x00 stay a boundary artifact or become a real outer prelude consumed by 0x0048dcf0?".to_string(),
|
||||
"With [this+0x219] now grounded as the bridge-material selector (steel/stone/suspension/wood) and [this+0x251] grounded as the tunnel-material selector (brick/concrete), how do those selector values surface in the save-side `0x38a5` compact-prefix classes before the grounded pure bridge-section class 0x0002/0xff reaches the two-child clone-path above 0x0048a1e0 and 0x0048dcf0?".to_string(),
|
||||
"Inside the grounded overpass/ballast branch ([this+0x226]==3) of the paired chooser siblings, when do the fixed BallastCap and Overpass literals (0x5cb138/0x5cb150 and 0x5cb168/0x5cb180) fire, and does the pure BallastCap class 0x0055/0x00 stay a boundary artifact or become a real outer prelude consumed by 0x0048dcf0?".to_string(),
|
||||
"Which 0x38a5 embedded name-pair groups survive into the per-child vtable +0x40 payload callbacks dispatched through 0x00455a50?".to_string(),
|
||||
"Is cached primary-child slot [this+0x248] the first owner-visible bridge from the restored child stream into route-entry rebuild once the bridge two-child class is isolated?".to_string(),
|
||||
];
|
||||
|
|
@ -4343,6 +4343,7 @@ fn build_infrastructure_asset_trace_report(
|
|||
"direct disassembly now also grounds paired upstream chooser siblings: 0x004a2c80 routes the DT family and 0x004a34e0 routes the ST family, with both repeatedly calling 0x0048a1e0 and branching on child type codes at [this+0x226], selector bytes at [this+0x219]/[this+0x251]/[this+0x252], bit 0x20 in [this+0x24c], and follow-on owners 0x0048a340/0x0048f4c0/0x00490200/0x00490960".to_string(),
|
||||
"the chooser tables now decode to concrete asset families too: 0x621a44/0x621a54 feed BridgeST caps/sections, 0x621a64 feeds TunnelST cap/section variants, 0x621a74/0x621a84 feed BridgeDT caps/sections, and 0x621a94 feeds TunnelDT variants; fixed literals 0x5cb138/0x5cb150 are BallastCapDT/ST and 0x5cb168/0x5cb180 are OverpassDT/ST".to_string(),
|
||||
"the top-level chooser branches are grounded now too: [this+0x226]==1 routes bridge families, [this+0x226]==2 routes tunnel families, [this+0x226]==3 routes overpass/ballast families, and bit 0x20 in [this+0x24c] selects the cap-oriented side over the section-oriented side inside those DT/ST siblings".to_string(),
|
||||
"the material selectors are grounded now too: in the bridge branch, [this+0x219] indexes Steel/Stone/Wood tables directly while value 2 takes the special suspension-cap path through [this+0x252]; in the tunnel branch, [this+0x251] selects Brick versus Concrete while the cap/section split comes from bit 0x20 choosing the base versus +0x8 table entry".to_string(),
|
||||
"the [this+0x252] selector is partially grounded now too: when [this+0x219]==2, the chooser jump tables dispatch fixed BridgeDT/BridgeST suspension-cap literals for R10, L10, 12, 14, 16, and 18 variants instead of using the general Bridge* table families".to_string(),
|
||||
side_buffer
|
||||
.and_then(|probe| probe.first_record_child_count_after_owner_shared)
|
||||
|
|
@ -4670,7 +4671,7 @@ fn build_infrastructure_asset_trace_report(
|
|||
"the smaller attach primitive 0x00490a3c no longer looks like the semantic fork by itself: it just allocates one literal Infrastructure child, seeds it through 0x455b70 with caller-provided stem input, attaches it through 0x5395d0, seeds position lanes through 0x539530/0x53a5b0, and optionally caches it as primary child".to_string(),
|
||||
],
|
||||
blockers: vec![
|
||||
"which selector-byte combinations at [this+0x219]/[this+0x251] drive the now-decoded DT/ST chooser siblings inside the already-grounded bridge/tunnel/overpass-ballast branches onto the grounded 0x38a5 compact-prefix and name-pair classes, especially the bridge-only 0x0002/0xff class and the BallastCap-only 0x0055/0x00 class, now that [this+0x252] is partly grounded as the suspension-cap radius/handedness selector".to_string(),
|
||||
"how the now-grounded bridge material selector [this+0x219] and tunnel material selector [this+0x251] surface in the save-side 0x38a5 compact-prefix and name-pair classes, especially the bridge-only 0x0002/0xff class and the BallastCap-only 0x0055/0x00 class, now that [this+0x252] is partly grounded as the suspension-cap radius/handedness selector".to_string(),
|
||||
"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(),
|
||||
"how the observed 0x55f3-to-next-0x55f1 gaps partition between the two 0x52ebd0 flag bytes and the next-record prelude now that the first 0x38a6 record head is grounded as child_count=1, saved_primary_child_byte=0xff, first 0x55f1 at +0x3".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(),
|
||||
|
|
@ -4785,7 +4786,7 @@ fn build_infrastructure_asset_trace_report(
|
|||
),
|
||||
];
|
||||
let notes = vec![
|
||||
"Infrastructure asset trace now makes the side-buffer-versus-triplet split explicit: owner seam identity is grounded, the pure bridge-only 0x0002/0xff candidate class is grounded save-side, and the upstream chooser above the child attach path is now grounded as paired DT/ST siblings at 0x004a2c80 and 0x004a34e0 with decoded Bridge/Tunnel/BallastCap/Overpass families and grounded top-level bridge/tunnel/overpass-ballast branch meaning; the remaining unknown is the selector-byte-to-class mapping inside those chooser siblings.".to_string(),
|
||||
"Infrastructure asset trace now makes the side-buffer-versus-triplet split explicit: owner seam identity is grounded, the pure bridge-only 0x0002/0xff candidate class is grounded save-side, and the upstream chooser above the child attach path is now grounded as paired DT/ST siblings at 0x004a2c80 and 0x004a34e0 with decoded Bridge/Tunnel/BallastCap/Overpass families, grounded top-level bridge/tunnel/overpass-ballast branch meaning, and grounded bridge/tunnel material selector roles; the remaining unknown is how those selector values surface in the save-side classes.".to_string(),
|
||||
if st_only_name_pair_corpus {
|
||||
"The current save-side side-buffer corpus is ST-only, so this trace directly exercises the ST chooser sibling while the DT sibling remains grounded statically but unexercised in this save.".to_string()
|
||||
} else {
|
||||
|
|
@ -24378,8 +24379,8 @@ mod tests {
|
|||
assert!(trace
|
||||
.next_owner_questions
|
||||
.iter()
|
||||
.any(|line| line.contains("0x0002/0xff")
|
||||
&& line.contains("0x004a2c80")
|
||||
.any(|line| line.contains("[this+0x219] now grounded as the bridge-material selector")
|
||||
&& line.contains("0x0002/0xff")
|
||||
&& line.contains("two-child clone-path")));
|
||||
assert!(trace
|
||||
.known_bridge_helpers
|
||||
|
|
@ -24418,6 +24419,14 @@ mod tests {
|
|||
&& line.contains("[this+0x226]==3 routes overpass/ballast families")
|
||||
&& line.contains("bit 0x20 in [this+0x24c]"))
|
||||
);
|
||||
assert!(
|
||||
trace.candidate_consumer_hypotheses[0]
|
||||
.evidence
|
||||
.iter()
|
||||
.any(|line| line.contains("[this+0x219] indexes Steel/Stone/Wood tables")
|
||||
&& line.contains("value 2 takes the special suspension-cap path")
|
||||
&& line.contains("[this+0x251] selects Brick versus Concrete"))
|
||||
);
|
||||
assert!(
|
||||
trace.candidate_consumer_hypotheses[0]
|
||||
.evidence
|
||||
|
|
@ -24430,7 +24439,8 @@ mod tests {
|
|||
trace.candidate_consumer_hypotheses[0]
|
||||
.blockers
|
||||
.iter()
|
||||
.any(|line| line.contains("[this+0x219]/[this+0x251]")
|
||||
.any(|line| line.contains("bridge material selector [this+0x219]")
|
||||
&& line.contains("tunnel material selector [this+0x251]")
|
||||
&& line.contains("[this+0x252]")
|
||||
&& line.contains("0x0002/0xff")
|
||||
&& line.contains("0x0055/0x00"))
|
||||
|
|
@ -24470,6 +24480,7 @@ mod tests {
|
|||
line.contains("0x0002/0xff candidate class is grounded save-side")
|
||||
&& line.contains("paired DT/ST siblings at 0x004a2c80 and 0x004a34e0")
|
||||
&& line.contains("grounded top-level bridge/tunnel/overpass-ballast branch meaning")
|
||||
&& line.contains("grounded bridge/tunnel material selector roles")
|
||||
&& line.contains("BallastCap/Overpass")
|
||||
}));
|
||||
assert!(trace
|
||||
|
|
|
|||
|
|
@ -3024,6 +3024,14 @@ The low helper strip beneath that shared family is tighter now too: `0x0052ecd0`
|
|||
selector problem is below that top-level split: the exact `[this+0x219]/[this+0x251]` values
|
||||
that choose the decoded family entries and how those values surface in the save-side `0x38a5`
|
||||
classes.
|
||||
Those material selectors are grounded now too: within the bridge branch, `[this+0x219]`
|
||||
selects `steel`, `stone`, `suspension`, or `wood`, with value `2` taking the special
|
||||
suspension-cap path through `[this+0x252]`; within the tunnel branch, `[this+0x251]` selects
|
||||
`brick` versus `concrete`, while bit `0x20` chooses cap versus section by switching between the
|
||||
base and `+0x8` table entry families. So the remaining infrastructure selector problem is no
|
||||
longer “what do these bytes mean?” but “how do those already-grounded selector values surface in
|
||||
the save-side `0x38a5` classes, especially the `0x0002 / 0xff` bridge class and the
|
||||
`0x0055 / 0x00` BallastCap class?”.
|
||||
One selector byte is partly grounded now too: when `[this+0x219]==2`, the chooser jump tables
|
||||
stop using the general bridge families and instead route `[this+0x252]` through fixed
|
||||
`BridgeDT/BridgeST` suspension-cap literals for `R10`, `L10`, `12`, `14`, `16`, and `18`.
|
||||
|
|
|
|||
|
|
@ -175,6 +175,14 @@ Working rule:
|
|||
selector problem is below that top-level split: the exact `[this+0x219]/[this+0x251]` values
|
||||
that choose the decoded family entries and how those values surface in the save-side `0x38a5`
|
||||
classes.
|
||||
- Those material selectors are grounded now too: within the bridge branch, `[this+0x219]`
|
||||
selects `steel`, `stone`, `suspension`, or `wood`, with value `2` taking the special
|
||||
suspension-cap path through `[this+0x252]`; within the tunnel branch, `[this+0x251]` selects
|
||||
`brick` versus `concrete`, while bit `0x20` chooses cap versus section by switching between the
|
||||
base and `+0x8` table entry families. So the remaining infrastructure selector problem is no
|
||||
longer “what do these bytes mean?” but “how do those already-grounded selector values surface in
|
||||
the save-side `0x38a5` classes, especially the `0x0002 / 0xff` bridge class and the
|
||||
`0x0055 / 0x00` BallastCap class?”.
|
||||
- One selector byte is partly grounded now too: when `[this+0x219]==2`, the chooser jump tables
|
||||
stop using the general bridge families and instead route `[this+0x252]` through fixed
|
||||
`BridgeDT/BridgeST` suspension-cap literals for `R10`, `L10`, `12`, `14`, `16`, and `18`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue