use crate::inspect::smp::services::*;

pub(super) fn build_route_local_runtime_follow_on_hypothesis(
    side_buffer_present: bool,
) -> SmpServiceConsumerHypothesis {
    SmpServiceConsumerHypothesis {
        label: "route/local-runtime follow-on path".to_string(),
        status: if side_buffer_present {
            "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 and the direct seeded-lane bridge is now grounded before these later owners run".to_string(),
            "direct disassembly now shows 0x00448a70 as a world-overlay byte write helper over [world+0x15e1/+0x162d], with the neighboring 0x00448af0 reading three world bitsets at [world+0x2139/+0x213d/+0x2141] rather than any infrastructure child fields".to_string(),
            "direct disassembly now shows 0x00493660 as a counter-and-follow-on owner over one infrastructure child: it updates local counters by [child+0x218], [child+0x226], and [child+0x44], optionally resolves a peer through 0x48dcb0 and 0x426c20, then maps one world-raster byte back into the companion region collection 0x006cfc9c and calls 0x487960".to_string(),
            "direct disassembly now shows 0x0048b660 as a presentation-color/style owner: it gates on global shell state, then branches on [child+0x216], [child+0x218], [child+0x226], [child+0x44], and bit 0x40 in [child+0x201] before publishing fixed RGBA tuples through 0x53a350".to_string(),
            "the remaining local-runtime helpers are tighter now too: 0x0048e2c0 flips bit 0x20 in [child+0x201] and, when enabling that bit, reruns 0x53a3a0 plus 0x48a9e0; 0x0048e330 similarly flips bit 0x40 in [child+0x201] and tail-calls 0x48b660; and 0x0048e3c0 updates [child+0x22e] through the auxiliary route tracker 0x006cfcb4 after resolving one route entry via [child+0x212], then scans class-0 regions through 0x455800/0x455810 and 0x51dbb0 before setting bit 0x02 in [child+0x24c] only when the region test fails".to_string(),
        ],
        blockers: vec![
            "which mixed exact compact-prefix classes still survive into these later owners after the seeded-lane bridge and earlier child-stream restore semantics are accounted for".to_string(),
            "no direct save-side correlation yet between the remaining mixed exact classes and the later 0x00493660 counter buckets, 0x0048b660 style branches, or the 0x0048e2c0/0x0048e3c0 flag-and-region follow-ons".to_string(),
        ],
    }
}
