#!/usr/bin/env python3
"""Scan direct dword bridges between target-side aliases and current selector 2:0."""
from __future__ import annotations

import argparse
import html
import json
import struct
import sys
from pathlib import Path
from typing import Any

sys.path.insert(0, str(Path(__file__).resolve().parent))

from probe_exe_scene_tables import find_cns_strings, read_sections, va_to_offset
from summarize_save_selector_stream_traces import trace_stream


ROOT = Path(__file__).resolve().parents[1]
OUT = ROOT / "out"
EXE = ROOT / "Hwanse2.exe"
SOURCE = "map1_01a"
TARGET = "map2_02d"
CURRENT_SELECTOR = "2:0"
CURRENT_ROOT_FALLBACK_END = 0x00543578
CURRENT_WRITER = 0x005428BC
CURRENT_LEAF_TABLE_START = 0x005429A8
CURRENT_LEAF_TABLE_END = 0x00542A04
CURRENT_WRAPPER_ENTRY = 0x00542A04
CURRENT_LEAF_START = 0x00542A84
CURRENT_READER = 0x00542B0C
CURRENT_SOURCE_RECORD = 0x00542B44
CURRENT_TARGET_RECORD = 0x00542BAC
CURRENT_FRONTIER_CLUSTER_END = 0x00542E78
FAILED_TARGET_ALIAS_BRIDGE_GATE_IDS = [
    "target-alias-execution-order",
    "branch-state-persistence",
    "real-selector-2:0-or-selected-root-runtime",
    "strict-source-hotspot",
]
TARGET_ALIAS_BRIDGE_MISSING_EVIDENCE = [
    "target-side alias execution before current selector 2:0",
    "secondaryBranchState persistence into current reader 0x00542b0c",
    "selector 2:0 savedata or runtime selected-pointer evidence",
    "strict map1_01a source hotspot",
]
TARGET_ALIAS_BRIDGE_EVIDENCE_REFS = [
    {
        "path": "Hwanse2.exe",
        "fields": [
            "target alias root ranges",
            "current selector 2:0 range",
            "pre-writer trace windows",
        ],
    },
    {
        "path": "out/save_scene_selectors.json",
        "fields": ["group", "slot", "selectedPointerHex", "fieldMaps"],
    },
    {
        "path": "out/save_selector_mapset_aliases.json",
        "fields": ["targetAliasSelectors", "publicCoveredAliasSelectors"],
    },
    {
        "path": "out/save_selector_secondary_fill_roots.json",
        "fields": ["roots", "fillEntryReferenceRoots", "predecessorFillEntryCandidateFound"],
    },
    {
        "path": "out/save_selector_leaf_index_space.json",
        "fields": ["rows", "routePairEntryIndices", "correctedReaderHitCount"],
    },
]
ADDRESS_PACKAGE_REQUIRED_SOURCE = "map1_01a.cns"
ADDRESS_PACKAGE_REQUIRED_TARGET = "map2_02d.cns"
ADDRESS_PACKAGE_AUDIO_RESOURCE = "middata.mlk"


def hex32(value: int) -> str:
    return f"0x{value:08x}"


def range_hex(start: int, end: int | None) -> str:
    return f"{hex32(start)}..{hex32(end) if end is not None else '?'}"


def load_json(path: Path, fallback: Any) -> Any:
    if not path.exists():
        return fallback
    return json.loads(path.read_text(encoding="utf-8"))


def parse_hex(value: str | None) -> int | None:
    return int(value, 16) if value else None


def selector_key(row: dict) -> str:
    return f"{row.get('group')}:{row.get('slot')}"


def find_selector(selectors: list[dict], key: str) -> dict:
    for row in selectors:
        if selector_key(row) == key:
            return row
    raise ValueError(f"selector {key} not found")


def unique_roots(selectors: list[dict]) -> list[int]:
    roots = {
        int(row["selectedPointerHex"], 16)
        for row in selectors
        if row.get("fieldMaps") and row.get("selectedPointerHex")
    }
    return sorted(roots)


def root_range(selectors: list[dict], root_va: int) -> tuple[int, int | None]:
    roots = unique_roots(selectors)
    index = roots.index(root_va)
    end = roots[index + 1] if index + 1 < len(roots) else None
    return root_va, end


def dword_at_va(exe: bytes, sections: list[dict], va: int) -> int | None:
    offset = va_to_offset(sections, va)
    if offset is None or offset + 4 > len(exe):
        return None
    return struct.unpack_from("<I", exe, offset)[0]


def root_fill_row(root_hex: str, secondary_fill_roots: dict) -> dict:
    for row in secondary_fill_roots.get("roots") or []:
        if row.get("rootHex") == root_hex:
            return row
    return {}


def leaf_index_rows_by_entry(leaf_index_space: dict | None) -> dict[str, dict]:
    return {
        row.get("entryVaHex"): row
        for row in (leaf_index_space or {}).get("rows") or []
        if row.get("entryVaHex")
    }


def source_location_role(source_va: int, current_selector: dict, alias_selector: dict) -> str:
    current_selected_entry = parse_hex(current_selector.get("selectedPointerVaHex"))
    current_row_pointer = parse_hex(current_selector.get("rowPointerHex"))
    alias_selected_entry = parse_hex(alias_selector.get("selectedPointerVaHex"))
    alias_row_pointer = parse_hex(alias_selector.get("rowPointerHex"))
    if source_va == current_selected_entry:
        return "current-selector-row-selected-root-entry"
    if source_va == current_row_pointer:
        return "current-selector-row-pointer"
    if source_va == alias_selected_entry:
        return "alias-selector-row-selected-root-entry"
    if source_va == alias_row_pointer:
        return "alias-selector-row-pointer"
    return "root-range-data"


def target_value_label(value: int, target_root: int, target_end: int | None, exact_targets: dict[int, str]) -> str:
    if value in exact_targets:
        return exact_targets[value]
    if target_end is not None and target_root <= value < target_end:
        return "inside-target-root-range"
    return "outside-target-range"


def promoting_label(label: str) -> bool:
    return label in {
        "current root 2:0",
        "current frontier reader/resource gate",
        "current source scene record map1_01a",
        "current target scene record map2_02d",
    }


def current_target_class(value: int, target_label: str, metadata_like: bool) -> str:
    if metadata_like:
        return "selector-row-metadata"
    if target_label == "current root 2:0":
        return "current-root-exact"
    if target_label == "current frontier reader/resource gate":
        return "frontier-reader-exact"
    if target_label in {"current source scene record map1_01a", "current target scene record map2_02d"}:
        return "route-scene-record-exact"
    if value < CURRENT_WRITER:
        return "pre-writer-script-range"
    if value < CURRENT_LEAF_TABLE_START:
        return "writer-payload-range"
    if value < CURRENT_LEAF_TABLE_END:
        return "leaf-table-window"
    if value == CURRENT_WRAPPER_ENTRY:
        return "wrapper-entry"
    if value < CURRENT_READER:
        return "leaf-or-wrapper-child-range"
    if value < CURRENT_SOURCE_RECORD:
        return "reader-to-scene-gap"
    if value < CURRENT_FRONTIER_CLUSTER_END:
        return "frontier-scene-cluster-range"
    return "post-frontier-current-tail"


def generic_target_class(_value: int, target_label: str, metadata_like: bool) -> str:
    if metadata_like:
        return "selector-row-metadata"
    if target_label.startswith("alias ") and "secondaryBranchState fill" in target_label:
        return "alias-secondary-fill"
    if target_label.startswith("alias root"):
        return "alias-root-exact"
    return "inside-target-root-range"


def trace_contains_va(trace: list[dict], va: int) -> bool:
    va_hex = hex32(va)
    return any(
        row.get("vaHex") == va_hex
        or row.get("branchTargetHex") == va_hex
        or row.get("fallthroughVaHex") == va_hex
        for row in trace
    )


def summarize_pre_writer_traces(
    exe: bytes,
    sections: list[dict],
    strings: dict[int, str],
    hits: list[dict],
    max_steps: int = 48,
) -> list[dict]:
    counts: dict[int, int] = {}
    source_vas: dict[int, list[str]] = {}
    for hit in hits:
        if hit.get("targetClass") != "pre-writer-script-range":
            continue
        value = parse_hex(hit.get("valueHex"))
        if value is None:
            continue
        counts[value] = counts.get(value, 0) + 1
        source_vas.setdefault(value, []).append(hit.get("sourceVaHex"))
    rows = []
    for value, count in sorted(counts.items()):
        trace = trace_stream(exe, sections, strings, value, max_steps)
        stop = trace[-1] if trace else {}
        rows.append({
            "targetHex": hex32(value),
            "sourceHitCount": count,
            "sampleSourceVaHex": source_vas.get(value, [])[:8],
            "traceStepCount": len(trace),
            "traceStopReason": stop.get("stopReason"),
            "traceStopVaHex": stop.get("vaHex"),
            "containsCurrentWriter": trace_contains_va(trace, CURRENT_WRITER),
            "containsCurrentReader": trace_contains_va(trace, CURRENT_READER),
            "containsSourceRecord": trace_contains_va(trace, CURRENT_SOURCE_RECORD),
            "containsTargetRecord": trace_contains_va(trace, CURRENT_TARGET_RECORD),
            "containsRouteSceneRecord": (
                trace_contains_va(trace, CURRENT_SOURCE_RECORD)
                or trace_contains_va(trace, CURRENT_TARGET_RECORD)
            ),
            "firstOpcodes": [row.get("opcodeHex") for row in trace[:8] if row.get("opcodeHex")],
            "trace": trace[:16],
        })
    return rows


def count_target_classes(hits: list[dict]) -> dict[str, int]:
    counts: dict[str, int] = {}
    for hit in hits:
        target_class = hit.get("targetClass")
        if not target_class:
            continue
        counts[target_class] = counts.get(target_class, 0) + 1
    return counts


def package_resource_ref_role(ref_va: int) -> str:
    if ref_va == CURRENT_SOURCE_RECORD:
        return "current-source-scene-record"
    if ref_va == CURRENT_TARGET_RECORD:
        return "current-target-scene-record"
    if CURRENT_LEAF_TABLE_START <= ref_va < CURRENT_LEAF_TABLE_END:
        return "current-leaf-table-window"
    if CURRENT_WRAPPER_ENTRY <= ref_va < CURRENT_READER:
        return "current-wrapper-or-leaf-child-window"
    if CURRENT_READER <= ref_va < CURRENT_FRONTIER_CLUSTER_END:
        return "current-frontier-cluster"
    return "current-root-data"


def scan_current_root_package_resource_refs(
    exe: bytes,
    sections: list[dict],
    current_start: int,
    current_end: int | None,
    string_entries: list[dict],
) -> list[dict]:
    if current_end is None:
        return []
    names_by_va: dict[int, str] = {}
    for row in string_entries:
        value = parse_hex(row.get("vaHex"))
        if value is not None and row.get("text"):
            names_by_va[value] = row["text"]
    refs = []
    for ref_va in range(current_start, current_end, 4):
        value = dword_at_va(exe, sections, ref_va)
        if value is None or value not in names_by_va:
            continue
        refs.append({
            "refVaHex": hex32(ref_va),
            "resourceVaHex": hex32(value),
            "resourceName": names_by_va[value],
            "role": package_resource_ref_role(ref_va),
        })
    return refs


def summarize_address_adjacent_package(
    exe: bytes,
    sections: list[dict],
    current_start: int,
    current_end: int | None,
    address_predecessor_context: dict | None,
) -> dict:
    context = address_predecessor_context or {}
    following_strings = context.get("addressPredecessorCurrentRootRefFollowingStrings") or []
    following_string_entries = context.get("addressPredecessorCurrentRootRefFollowingStringEntries") or []
    current_root_refs = context.get("addressPredecessorToCurrentRootRefs") or []
    current_ref = current_root_refs[0] if current_root_refs else {}
    includes_source = ADDRESS_PACKAGE_REQUIRED_SOURCE in following_strings
    includes_target = ADDRESS_PACKAGE_REQUIRED_TARGET in following_strings
    includes_audio = ADDRESS_PACKAGE_AUDIO_RESOURCE in following_strings
    current_root_pointer_found = bool(context.get("addressPredecessorToCurrentRootRefCount"))
    current_root_pointer_is_selector_row_entry = bool(
        context.get("addressPredecessorToCurrentRootRefIsCurrentSelectorRowEntry")
    )
    classification = context.get("addressPredecessorCurrentRootRefClassification") or "unknown"
    package_prefix_found = (
        current_root_pointer_found
        and current_root_pointer_is_selector_row_entry
        and bool(following_strings)
    )
    current_root_resource_refs = scan_current_root_package_resource_refs(
        exe,
        sections,
        current_start,
        current_end,
        following_string_entries,
    )
    source_scene_resource_refs = [
        row for row in current_root_resource_refs
        if row["role"] == "current-source-scene-record"
    ]
    target_scene_resource_refs = [
        row for row in current_root_resource_refs
        if row["role"] == "current-target-scene-record"
    ]
    current_scene_records_use_package_resources = (
        any(row["resourceName"] == ADDRESS_PACKAGE_REQUIRED_SOURCE for row in source_scene_resource_refs)
        and any(row["resourceName"] == ADDRESS_PACKAGE_REQUIRED_TARGET for row in target_scene_resource_refs)
    )
    resource_ref_role_counts: dict[str, int] = {}
    for ref in current_root_resource_refs:
        role = ref["role"]
        resource_ref_role_counts[role] = resource_ref_role_counts.get(role, 0) + 1
    route_proof_found = False
    status = (
        "package-prefix-shape-only"
        if package_prefix_found
        else "not-found"
    )
    note = (
        "address-adjacent 10:0 contains the current 2:0 root pointer followed by a resource list that "
        "includes source/target map resources, but the pointer is selector-row/package metadata and still "
        "has no execution, consumer, reader, or scene-record edge"
        if package_prefix_found
        else "address-adjacent package prefix not found in the supplied context"
    )
    return {
        "packagePrefixFound": package_prefix_found,
        "selector": context.get("addressPredecessorSelector"),
        "rangeHex": context.get("addressPredecessorRangeHex"),
        "currentRootRefCount": context.get("addressPredecessorToCurrentRootRefCount", 0),
        "currentRootRefHex": current_ref.get("refVaHex"),
        "currentRootTargetHex": current_ref.get("targetVaHex"),
        "currentRootRefClassification": classification,
        "currentRootPointerIsSelectorRowEntry": current_root_pointer_is_selector_row_entry,
        "followingStrings": following_strings,
        "followingStringEntries": following_string_entries,
        "includesAudioResource": includes_audio,
        "includesSourceMapResource": includes_source,
        "includesTargetMapResource": includes_target,
        "currentRootPackageResourceRefCount": len(current_root_resource_refs),
        "currentRootPackageResourceRefs": current_root_resource_refs,
        "currentRootPackageResourceRefRoleCounts": dict(sorted(resource_ref_role_counts.items())),
        "sourceSceneRecordPackageResourceRefs": source_scene_resource_refs,
        "targetSceneRecordPackageResourceRefs": target_scene_resource_refs,
        "currentSceneRecordsUsePackageResources": current_scene_records_use_package_resources,
        "containsSourceFieldMap": bool(context.get("addressPredecessorContainsSource")),
        "containsTargetFieldMap": bool(context.get("addressPredecessorContainsTarget")),
        "currentEqualsAddressPredecessorPlusSource": bool(
            context.get("currentEqualsAddressPredecessorPlusSource")
        ),
        "tailCurrentRootRangePointerCount": context.get(
            "addressPredecessorTailCurrentRootRangePointerCount", 0
        ),
        "tailCurrentRootExactRefCount": context.get("addressPredecessorTailCurrentRootExactRefCount", 0),
        "tailFrontierReaderRefCount": context.get("addressPredecessorTailFrontierReaderRefCount", 0),
        "tailSourceRecordRefCount": context.get("addressPredecessorTailSourceRecordRefCount", 0),
        "tailTargetRecordRefCount": context.get("addressPredecessorTailTargetRecordRefCount", 0),
        "tailLooksLikeDescriptorData": bool(context.get("addressPredecessorTailLooksLikeDescriptorData")),
        "addressContiguityProvesExecution": bool(context.get("addressContiguityProvesExecution")),
        "routeProofFound": route_proof_found,
        "status": status,
        "note": note,
    }


def class_counts_text(counts: dict[str, int]) -> str:
    return ", ".join(f"{key}:{counts[key]}" for key in sorted(counts)) or "-"


def compact_alias_row(row: dict) -> dict:
    alias_to_current = row["aliasToCurrent"]
    current_to_alias = row["currentToAlias"]
    return {
        "selector": row["selector"],
        "role": row.get("role"),
        "rootHex": row.get("rootHex"),
        "rootRangeHex": row.get("rootRangeHex"),
        "fillCount": row.get("fillCount"),
        "publicSampleIds": row.get("publicSampleIds") or [],
        "aliasToCurrentHitCount": alias_to_current.get("hitCount"),
        "aliasToCurrentMetadataHitCount": alias_to_current.get("metadataHitCount"),
        "aliasToCurrentDataHitCount": alias_to_current.get("dataHitCount"),
        "aliasToCurrentPromotingDataHitCount": alias_to_current.get("promotingDataHitCount"),
        "aliasToCurrentPromotingMetadataHitCount": row.get(
            "aliasToCurrentPromotingMetadataHitCount"
        ),
        "aliasToCurrentReaderOrSceneRecordHitCount": alias_to_current.get("readerOrSceneRecordHitCount"),
        "aliasToCurrentTargetClassCounts": alias_to_current.get("targetClassCounts") or {},
        "aliasToCurrentLeafTableHitCount": row.get("aliasToCurrentLeafTableHitCount"),
        "aliasToCurrentLeafTableRoutePairHitCount": row.get("aliasToCurrentLeafTableRoutePairHitCount"),
        "aliasToCurrentLeafTableCorrectedReaderHitCount": row.get(
            "aliasToCurrentLeafTableCorrectedReaderHitCount"
        ),
        "aliasToCurrentLeafTableEffectiveReaderHitCount": row.get(
            "aliasToCurrentLeafTableEffectiveReaderHitCount"
        ),
        "aliasToCurrentPreWriterUniqueTargetCount": row.get("aliasToCurrentPreWriterUniqueTargetCount"),
        "aliasToCurrentPreWriterTraceCurrentWriterHitCount": row.get(
            "aliasToCurrentPreWriterTraceCurrentWriterHitCount"
        ),
        "aliasToCurrentPreWriterTraceCurrentReaderHitCount": row.get(
            "aliasToCurrentPreWriterTraceCurrentReaderHitCount"
        ),
        "aliasToCurrentPreWriterTraceRouteSceneRecordHitCount": row.get(
            "aliasToCurrentPreWriterTraceRouteSceneRecordHitCount"
        ),
        "aliasToCurrentAfterLastFillHitCount": row.get("aliasToCurrentAfterLastFillHitCount"),
        "aliasToCurrentAfterLastFillMetadataHitCount": row.get(
            "aliasToCurrentAfterLastFillMetadataHitCount"
        ),
        "aliasToCurrentAfterLastFillDataHitCount": row.get("aliasToCurrentAfterLastFillDataHitCount"),
        "aliasToCurrentAfterLastFillTargetClassCounts": row.get(
            "aliasToCurrentAfterLastFillTargetClassCounts"
        ) or {},
        "aliasToCurrentAfterLastFillPreWriterHitCount": row.get(
            "aliasToCurrentAfterLastFillPreWriterHitCount"
        ),
        "aliasToCurrentAfterLastFillLeafTableHitCount": row.get(
            "aliasToCurrentAfterLastFillLeafTableHitCount"
        ),
        "aliasToCurrentAfterLastFillLeafTableCorrectedReaderHitCount": row.get(
            "aliasToCurrentAfterLastFillLeafTableCorrectedReaderHitCount"
        ),
        "aliasToCurrentAfterLastFillLeafTableEffectiveReaderHitCount": row.get(
            "aliasToCurrentAfterLastFillLeafTableEffectiveReaderHitCount"
        ),
        "aliasToCurrentAfterLastFillReaderOrSceneRecordHitCount": row.get(
            "aliasToCurrentAfterLastFillReaderOrSceneRecordHitCount"
        ),
        "aliasToCurrentAfterLastFillPreWriterUniqueTargetCount": row.get(
            "aliasToCurrentAfterLastFillPreWriterUniqueTargetCount"
        ),
        "aliasToCurrentAfterLastFillTraceCurrentWriterHitCount": row.get(
            "aliasToCurrentAfterLastFillTraceCurrentWriterHitCount"
        ),
        "aliasToCurrentAfterLastFillTraceCurrentReaderHitCount": row.get(
            "aliasToCurrentAfterLastFillTraceCurrentReaderHitCount"
        ),
        "aliasToCurrentAfterLastFillTraceRouteSceneRecordHitCount": row.get(
            "aliasToCurrentAfterLastFillTraceRouteSceneRecordHitCount"
        ),
        "aliasToCurrentExecutionLikeBridgeFound": row.get("aliasToCurrentExecutionLikeBridgeFound"),
        "aliasToCurrentAfterLastFillExecutionLikeBridgeFound": row.get(
            "aliasToCurrentAfterLastFillExecutionLikeBridgeFound"
        ),
        "currentToAliasHitCount": current_to_alias.get("hitCount"),
    }


def hit_source_after(hit: dict, floor_va: int | None) -> bool:
    if floor_va is None:
        return False
    source_va = parse_hex(hit.get("sourceVaHex"))
    return source_va is not None and source_va > floor_va


def scan_dword_bridge(
    exe: bytes,
    sections: list[dict],
    source_start: int,
    source_end: int | None,
    target_start: int,
    target_end: int | None,
    exact_targets: dict[int, str],
    source_role_fn,
    target_class_fn=generic_target_class,
) -> dict:
    if source_end is None:
        return {
            "sourceRangeHex": range_hex(source_start, source_end),
            "targetRangeHex": range_hex(target_start, target_end),
            "readableDwordCount": 0,
            "unreadableDwordCount": 0,
            "hitCount": 0,
            "metadataHitCount": 0,
            "dataHitCount": 0,
            "hits": [],
        }
    readable = 0
    unreadable = 0
    hits = []
    for va in range(source_start, source_end, 4):
        value = dword_at_va(exe, sections, va)
        if value is None:
            unreadable += 1
            continue
        readable += 1
        inside_target_range = target_end is not None and target_start <= value < target_end
        exact_label = exact_targets.get(value)
        if not inside_target_range and exact_label is None:
            continue
        role = source_role_fn(va)
        metadata_like = role != "root-range-data"
        target_label = target_value_label(value, target_start, target_end, exact_targets)
        target_class = target_class_fn(value, target_label, metadata_like)
        hits.append({
            "sourceVaHex": hex32(va),
            "valueHex": hex32(value),
            "insideTargetRange": inside_target_range,
            "targetLabel": target_label,
            "targetClass": target_class,
            "sourceLocationRole": role,
            "metadataLike": metadata_like,
        })
    target_class_counts = count_target_classes(hits)
    return {
        "sourceRangeHex": range_hex(source_start, source_end),
        "targetRangeHex": range_hex(target_start, target_end),
        "readableDwordCount": readable,
        "unreadableDwordCount": unreadable,
        "hitCount": len(hits),
        "metadataHitCount": sum(1 for row in hits if row["metadataLike"]),
        "dataHitCount": sum(1 for row in hits if not row["metadataLike"]),
        "promotingExactHitCount": sum(1 for row in hits if promoting_label(row["targetLabel"])),
        "promotingDataHitCount": sum(
            1 for row in hits
            if promoting_label(row["targetLabel"]) and not row["metadataLike"]
        ),
        "readerOrSceneRecordHitCount": sum(
            1 for row in hits
            if row["targetClass"] in {
                "frontier-reader-exact",
                "route-scene-record-exact",
                "frontier-scene-cluster-range",
            }
        ),
        "targetClassCounts": target_class_counts,
        "hits": hits,
    }


def alias_rows(
    exe: bytes,
    sections: list[dict],
    selectors: list[dict],
    mapset_aliases: dict,
    secondary_fill_roots: dict,
    leaf_index_space: dict | None = None,
) -> list[dict]:
    current_selector = find_selector(selectors, CURRENT_SELECTOR)
    current_root = parse_hex(current_selector.get("selectedPointerHex"))
    if current_root is None:
        raise ValueError("current selector is missing selectedPointerHex")
    current_start, _current_dynamic_end = root_range(selectors, current_root)
    current_end = CURRENT_ROOT_FALLBACK_END
    current_exact_targets = {
        current_root: "current root 2:0",
        CURRENT_READER: "current frontier reader/resource gate",
        CURRENT_SOURCE_RECORD: "current source scene record map1_01a",
        CURRENT_TARGET_RECORD: "current target scene record map2_02d",
    }
    leaf_rows_by_entry = leaf_index_rows_by_entry(leaf_index_space)
    strings = find_cns_strings(exe, sections)
    rows = []
    for alias in (mapset_aliases.get("targetAliasGroup") or {}).get("aliases") or []:
        selector = alias.get("selector")
        alias_selector = find_selector(selectors, selector)
        alias_root = parse_hex(alias_selector.get("selectedPointerHex"))
        if alias_root is None:
            raise ValueError(f"alias selector {selector} is missing selectedPointerHex")
        alias_start, alias_end = root_range(selectors, alias_root)
        alias_exact_targets = {
            alias_root: f"alias root {selector}",
        }
        fill_root = root_fill_row(hex32(alias_root), secondary_fill_roots)
        fills = fill_root.get("fills") or []
        for fill in fills:
            fill_va = parse_hex(fill.get("vaHex"))
            if fill_va is not None:
                alias_exact_targets[fill_va] = f"alias {selector} secondaryBranchState fill"
        alias_to_current = scan_dword_bridge(
            exe,
            sections,
            alias_start,
            alias_end,
            current_start,
            current_end,
            current_exact_targets,
            lambda va, alias_selector=alias_selector: source_location_role(va, current_selector, alias_selector),
            current_target_class,
        )
        alias_to_current_promoting_metadata_hits = [
            hit for hit in alias_to_current["hits"]
            if promoting_label(hit["targetLabel"]) and hit["metadataLike"]
        ]
        last_fill_va = parse_hex((fills[-1] or {}).get("vaHex")) if fills else None
        alias_to_current_after_last_fill_hits = [
            hit for hit in alias_to_current["hits"]
            if hit_source_after(hit, last_fill_va)
        ]
        current_to_alias = scan_dword_bridge(
            exe,
            sections,
            current_start,
            current_end,
            alias_start,
            alias_end,
            alias_exact_targets,
            lambda va, alias_selector=alias_selector: source_location_role(va, current_selector, alias_selector),
        )
        leaf_table_hits = []
        for hit in alias_to_current["hits"]:
            if hit.get("targetClass") != "leaf-table-window":
                continue
            leaf_row = leaf_rows_by_entry.get(hit.get("valueHex")) or {}
            leaf_table_hits.append({
                **hit,
                "rootRelativeIndex": leaf_row.get("rootRelativeIndex"),
                "insideCurrentRootEntryRun": leaf_row.get("insideCurrentRootEntryRun"),
                "descriptorHex": leaf_row.get("descriptorHex"),
                "childPointerHex": leaf_row.get("childPointerHex"),
                "descriptorHasRoutePair": leaf_row.get("descriptorHasRoutePair"),
                "childHasRoutePair": leaf_row.get("childHasRoutePair"),
                "descriptorTraceContainsFrontierReader": leaf_row.get("descriptorTraceContainsFrontierReader"),
                "childTraceContainsFrontierReader": leaf_row.get("childTraceContainsFrontierReader"),
                "correctedDescriptorTraceContainsFrontierReader": leaf_row.get(
                    "correctedDescriptorTraceContainsFrontierReader"
                ),
                "correctedDescriptorFrontierReaderStep": leaf_row.get("correctedDescriptorFrontierReaderStep"),
                "effectiveDescriptorTraceContainsFrontierReader": leaf_row.get(
                    "effectiveDescriptorTraceContainsFrontierReader"
                ),
                "isFrontierLeafChild": leaf_row.get("isFrontierLeafChild"),
                "routeRelevant": leaf_row.get("routeRelevant"),
            })
        leaf_table_route_pair_hit_count = sum(
            1 for hit in leaf_table_hits
            if hit.get("descriptorHasRoutePair") or hit.get("childHasRoutePair")
        )
        leaf_table_reader_hit_count = sum(
            1 for hit in leaf_table_hits
            if hit.get("descriptorTraceContainsFrontierReader") or hit.get("childTraceContainsFrontierReader")
        )
        leaf_table_corrected_reader_hit_count = sum(
            1 for hit in leaf_table_hits
            if hit.get("correctedDescriptorTraceContainsFrontierReader")
        )
        leaf_table_effective_reader_hit_count = sum(
            1 for hit in leaf_table_hits
            if (
                hit.get("descriptorTraceContainsFrontierReader")
                or hit.get("childTraceContainsFrontierReader")
                or hit.get("correctedDescriptorTraceContainsFrontierReader")
            )
        )
        after_last_fill_leaf_table_hits = [
            hit for hit in leaf_table_hits
            if hit_source_after(hit, last_fill_va)
        ]
        after_last_fill_leaf_table_corrected_reader_hit_count = sum(
            1 for hit in after_last_fill_leaf_table_hits
            if hit.get("correctedDescriptorTraceContainsFrontierReader")
        )
        after_last_fill_leaf_table_effective_reader_hit_count = sum(
            1 for hit in after_last_fill_leaf_table_hits
            if (
                hit.get("descriptorTraceContainsFrontierReader")
                or hit.get("childTraceContainsFrontierReader")
                or hit.get("correctedDescriptorTraceContainsFrontierReader")
            )
        )
        leaf_table_frontier_leaf_hit_count = sum(1 for hit in leaf_table_hits if hit.get("isFrontierLeafChild"))
        leaf_table_negative_hit_count = sum(
            1 for hit in leaf_table_hits
            if isinstance(hit.get("rootRelativeIndex"), int) and hit["rootRelativeIndex"] < 0
        )
        pre_writer_traces = summarize_pre_writer_traces(exe, sections, strings, alias_to_current["hits"])
        pre_writer_trace_writer_count = sum(1 for trace in pre_writer_traces if trace.get("containsCurrentWriter"))
        pre_writer_trace_reader_count = sum(1 for trace in pre_writer_traces if trace.get("containsCurrentReader"))
        pre_writer_trace_route_scene_count = sum(
            1 for trace in pre_writer_traces
            if trace.get("containsRouteSceneRecord")
        )
        after_last_fill_pre_writer_traces = summarize_pre_writer_traces(
            exe,
            sections,
            strings,
            alias_to_current_after_last_fill_hits,
        )
        after_last_fill_trace_writer_count = sum(
            1 for trace in after_last_fill_pre_writer_traces
            if trace.get("containsCurrentWriter")
        )
        after_last_fill_trace_reader_count = sum(
            1 for trace in after_last_fill_pre_writer_traces
            if trace.get("containsCurrentReader")
        )
        after_last_fill_trace_route_scene_count = sum(
            1 for trace in after_last_fill_pre_writer_traces
            if trace.get("containsRouteSceneRecord")
        )
        after_last_fill_promoting_data_hit_count = sum(
            1 for hit in alias_to_current_after_last_fill_hits
            if promoting_label(hit["targetLabel"]) and not hit["metadataLike"]
        )
        after_last_fill_reader_or_scene_record_hit_count = sum(
            1 for hit in alias_to_current_after_last_fill_hits
            if hit["targetClass"] in {
                "frontier-reader-exact",
                "route-scene-record-exact",
                "frontier-scene-cluster-range",
            }
        )
        after_last_fill_execution_like = (
            after_last_fill_promoting_data_hit_count > 0
            or after_last_fill_reader_or_scene_record_hit_count > 0
            or after_last_fill_trace_writer_count > 0
            or after_last_fill_trace_reader_count > 0
            or after_last_fill_trace_route_scene_count > 0
        )
        alias_to_current_execution_like = alias_to_current["promotingDataHitCount"] > 0
        rows.append({
            "selector": selector,
            "role": alias.get("role"),
            "rootHex": hex32(alias_root),
            "rootRangeHex": range_hex(alias_start, alias_end),
            "fillCount": len(fills),
            "firstFillHex": (fills[0] or {}).get("vaHex") if fills else None,
            "lastFillHex": (fills[-1] or {}).get("vaHex") if fills else None,
            "publicSampleIds": alias.get("publicSampleIds") or [],
            "aliasToCurrent": alias_to_current,
            "currentToAlias": current_to_alias,
            "aliasToCurrentPromotingMetadataHitCount": len(alias_to_current_promoting_metadata_hits),
            "aliasToCurrentPromotingMetadataHits": alias_to_current_promoting_metadata_hits,
            "aliasToCurrentLeafTableHits": leaf_table_hits,
            "aliasToCurrentLeafTableHitCount": len(leaf_table_hits),
            "aliasToCurrentLeafTableRoutePairHitCount": leaf_table_route_pair_hit_count,
            "aliasToCurrentLeafTableReaderHitCount": leaf_table_reader_hit_count,
            "aliasToCurrentLeafTableCorrectedReaderHitCount": leaf_table_corrected_reader_hit_count,
            "aliasToCurrentLeafTableEffectiveReaderHitCount": leaf_table_effective_reader_hit_count,
            "aliasToCurrentLeafTableFrontierLeafHitCount": leaf_table_frontier_leaf_hit_count,
            "aliasToCurrentLeafTableNegativeHitCount": leaf_table_negative_hit_count,
            "aliasToCurrentPreWriterTraces": pre_writer_traces,
            "aliasToCurrentPreWriterUniqueTargetCount": len(pre_writer_traces),
            "aliasToCurrentPreWriterTraceCurrentWriterHitCount": pre_writer_trace_writer_count,
            "aliasToCurrentPreWriterTraceCurrentReaderHitCount": pre_writer_trace_reader_count,
            "aliasToCurrentPreWriterTraceRouteSceneRecordHitCount": pre_writer_trace_route_scene_count,
            "aliasToCurrentExecutionLikeBridgeFound": alias_to_current_execution_like,
            "aliasToCurrentAfterLastFillHits": alias_to_current_after_last_fill_hits,
            "aliasToCurrentAfterLastFillHitCount": len(alias_to_current_after_last_fill_hits),
            "aliasToCurrentAfterLastFillDataHitCount": sum(
                1 for hit in alias_to_current_after_last_fill_hits
                if not hit["metadataLike"]
            ),
            "aliasToCurrentAfterLastFillMetadataHitCount": sum(
                1 for hit in alias_to_current_after_last_fill_hits
                if hit["metadataLike"]
            ),
            "aliasToCurrentAfterLastFillPreWriterHitCount": sum(
                1 for hit in alias_to_current_after_last_fill_hits
                if hit["targetClass"] == "pre-writer-script-range"
            ),
            "aliasToCurrentAfterLastFillLeafTableHitCount": sum(
                1 for hit in alias_to_current_after_last_fill_hits
                if hit["targetClass"] == "leaf-table-window"
            ),
            "aliasToCurrentAfterLastFillLeafTableCorrectedReaderHitCount": after_last_fill_leaf_table_corrected_reader_hit_count,
            "aliasToCurrentAfterLastFillLeafTableEffectiveReaderHitCount": after_last_fill_leaf_table_effective_reader_hit_count,
            "aliasToCurrentAfterLastFillReaderOrSceneRecordHitCount": after_last_fill_reader_or_scene_record_hit_count,
            "aliasToCurrentAfterLastFillPromotingDataHitCount": after_last_fill_promoting_data_hit_count,
            "aliasToCurrentAfterLastFillTargetClassCounts": count_target_classes(
                alias_to_current_after_last_fill_hits
            ),
            "aliasToCurrentAfterLastFillPreWriterTraces": after_last_fill_pre_writer_traces,
            "aliasToCurrentAfterLastFillPreWriterUniqueTargetCount": len(after_last_fill_pre_writer_traces),
            "aliasToCurrentAfterLastFillTraceCurrentWriterHitCount": after_last_fill_trace_writer_count,
            "aliasToCurrentAfterLastFillTraceCurrentReaderHitCount": after_last_fill_trace_reader_count,
            "aliasToCurrentAfterLastFillTraceRouteSceneRecordHitCount": after_last_fill_trace_route_scene_count,
            "aliasToCurrentAfterLastFillExecutionLikeBridgeFound": after_last_fill_execution_like,
            "aliasToCurrentMetadataOnly": (
                alias_to_current["hitCount"] > 0
                and alias_to_current["dataHitCount"] == 0
            ),
        })
    return rows


def build_summary(
    exe: bytes,
    selectors: list[dict] | None = None,
    mapset_aliases: dict | None = None,
    secondary_fill_roots: dict | None = None,
    leaf_index_space: dict | None = None,
    address_predecessor_context: dict | None = None,
) -> dict:
    sections = read_sections(exe)
    selectors = selectors if selectors is not None else load_json(OUT / "save_scene_selectors.json", [])
    mapset_aliases = mapset_aliases if mapset_aliases is not None else load_json(OUT / "save_selector_mapset_aliases.json", {})
    secondary_fill_roots = (
        secondary_fill_roots
        if secondary_fill_roots is not None
        else load_json(OUT / "save_selector_secondary_fill_roots.json", {})
    )
    leaf_index_space = (
        leaf_index_space
        if leaf_index_space is not None
        else load_json(OUT / "save_selector_leaf_index_space.json", {})
    )
    address_predecessor_context = (
        address_predecessor_context
        if address_predecessor_context is not None
        else load_json(OUT / "save_selector_address_predecessor_context.json", {})
    )
    current_selector = find_selector(selectors, CURRENT_SELECTOR)
    current_root = parse_hex(current_selector.get("selectedPointerHex"))
    if current_root is None:
        raise ValueError("current selector is missing selectedPointerHex")
    current_start, _current_dynamic_end = root_range(selectors, current_root)
    current_end = CURRENT_ROOT_FALLBACK_END
    rows = alias_rows(exe, sections, selectors, mapset_aliases, secondary_fill_roots, leaf_index_space)
    alias_to_current_hit_count = sum(row["aliasToCurrent"]["hitCount"] for row in rows)
    alias_to_current_metadata_hit_count = sum(row["aliasToCurrent"]["metadataHitCount"] for row in rows)
    alias_to_current_data_hit_count = sum(row["aliasToCurrent"]["dataHitCount"] for row in rows)
    alias_to_current_promoting_exact_hit_count = sum(row["aliasToCurrent"]["promotingExactHitCount"] for row in rows)
    alias_to_current_promoting_data_hit_count = sum(row["aliasToCurrent"]["promotingDataHitCount"] for row in rows)
    alias_to_current_promoting_metadata_hit_count = sum(
        row["aliasToCurrentPromotingMetadataHitCount"] for row in rows
    )
    alias_to_current_promoting_metadata_hits = [
        {"selector": row["selector"], **hit}
        for row in rows
        for hit in row["aliasToCurrentPromotingMetadataHits"]
    ]
    alias_to_current_promoting_metadata_hit_selectors = sorted({
        row["selector"] for row in alias_to_current_promoting_metadata_hits
    })
    alias_to_current_promoting_metadata_source_roles = sorted({
        row.get("sourceLocationRole")
        for row in alias_to_current_promoting_metadata_hits
        if row.get("sourceLocationRole")
    })
    alias_to_current_promoting_exact_metadata_only = (
        alias_to_current_promoting_exact_hit_count > 0
        and alias_to_current_promoting_data_hit_count == 0
        and alias_to_current_promoting_metadata_hit_count == alias_to_current_promoting_exact_hit_count
    )
    alias_to_current_reader_or_scene_record_hit_count = sum(
        row["aliasToCurrent"]["readerOrSceneRecordHitCount"] for row in rows
    )
    alias_to_current_leaf_table_hit_count = sum(row["aliasToCurrentLeafTableHitCount"] for row in rows)
    alias_to_current_leaf_table_route_pair_hit_count = sum(
        row["aliasToCurrentLeafTableRoutePairHitCount"] for row in rows
    )
    alias_to_current_leaf_table_reader_hit_count = sum(
        row["aliasToCurrentLeafTableReaderHitCount"] for row in rows
    )
    alias_to_current_leaf_table_corrected_reader_hit_count = sum(
        row["aliasToCurrentLeafTableCorrectedReaderHitCount"] for row in rows
    )
    alias_to_current_leaf_table_effective_reader_hit_count = sum(
        row["aliasToCurrentLeafTableEffectiveReaderHitCount"] for row in rows
    )
    alias_to_current_leaf_table_frontier_leaf_hit_count = sum(
        row["aliasToCurrentLeafTableFrontierLeafHitCount"] for row in rows
    )
    alias_to_current_leaf_table_negative_hit_count = sum(row["aliasToCurrentLeafTableNegativeHitCount"] for row in rows)
    alias_to_current_pre_writer_unique_target_count = sum(
        row["aliasToCurrentPreWriterUniqueTargetCount"] for row in rows
    )
    alias_to_current_pre_writer_trace_current_writer_hit_count = sum(
        row["aliasToCurrentPreWriterTraceCurrentWriterHitCount"] for row in rows
    )
    alias_to_current_pre_writer_trace_current_reader_hit_count = sum(
        row["aliasToCurrentPreWriterTraceCurrentReaderHitCount"] for row in rows
    )
    alias_to_current_pre_writer_trace_route_scene_record_hit_count = sum(
        row["aliasToCurrentPreWriterTraceRouteSceneRecordHitCount"] for row in rows
    )
    alias_to_current_after_last_fill_hit_count = sum(
        row["aliasToCurrentAfterLastFillHitCount"] for row in rows
    )
    alias_to_current_after_last_fill_data_hit_count = sum(
        row["aliasToCurrentAfterLastFillDataHitCount"] for row in rows
    )
    alias_to_current_after_last_fill_metadata_hit_count = sum(
        row["aliasToCurrentAfterLastFillMetadataHitCount"] for row in rows
    )
    alias_to_current_after_last_fill_pre_writer_hit_count = sum(
        row["aliasToCurrentAfterLastFillPreWriterHitCount"] for row in rows
    )
    alias_to_current_after_last_fill_leaf_table_hit_count = sum(
        row["aliasToCurrentAfterLastFillLeafTableHitCount"] for row in rows
    )
    alias_to_current_after_last_fill_leaf_table_corrected_reader_hit_count = sum(
        row["aliasToCurrentAfterLastFillLeafTableCorrectedReaderHitCount"] for row in rows
    )
    alias_to_current_after_last_fill_leaf_table_effective_reader_hit_count = sum(
        row["aliasToCurrentAfterLastFillLeafTableEffectiveReaderHitCount"] for row in rows
    )
    alias_to_current_after_last_fill_reader_or_scene_record_hit_count = sum(
        row["aliasToCurrentAfterLastFillReaderOrSceneRecordHitCount"] for row in rows
    )
    alias_to_current_after_last_fill_promoting_data_hit_count = sum(
        row["aliasToCurrentAfterLastFillPromotingDataHitCount"] for row in rows
    )
    alias_to_current_after_last_fill_pre_writer_unique_target_count = sum(
        row["aliasToCurrentAfterLastFillPreWriterUniqueTargetCount"] for row in rows
    )
    alias_to_current_after_last_fill_trace_current_writer_hit_count = sum(
        row["aliasToCurrentAfterLastFillTraceCurrentWriterHitCount"] for row in rows
    )
    alias_to_current_after_last_fill_trace_current_reader_hit_count = sum(
        row["aliasToCurrentAfterLastFillTraceCurrentReaderHitCount"] for row in rows
    )
    alias_to_current_after_last_fill_trace_route_scene_record_hit_count = sum(
        row["aliasToCurrentAfterLastFillTraceRouteSceneRecordHitCount"] for row in rows
    )
    alias_to_current_target_class_counts: dict[str, int] = {}
    alias_to_current_after_last_fill_target_class_counts: dict[str, int] = {}
    for row in rows:
        for target_class, count in row["aliasToCurrent"]["targetClassCounts"].items():
            alias_to_current_target_class_counts[target_class] = (
                alias_to_current_target_class_counts.get(target_class, 0) + count
            )
        for target_class, count in row["aliasToCurrentAfterLastFillTargetClassCounts"].items():
            alias_to_current_after_last_fill_target_class_counts[target_class] = (
                alias_to_current_after_last_fill_target_class_counts.get(target_class, 0) + count
            )
    execution_like_aliases = [
        row["selector"]
        for row in rows
        if row["aliasToCurrentExecutionLikeBridgeFound"]
    ]
    after_last_fill_execution_like_aliases = [
        row["selector"]
        for row in rows
        if row["aliasToCurrentAfterLastFillExecutionLikeBridgeFound"]
    ]
    metadata_only_aliases = [
        row["selector"]
        for row in rows
        if row["aliasToCurrentMetadataOnly"]
    ]
    aliases_with_forward_hits = [
        row["selector"]
        for row in rows
        if row["aliasToCurrent"]["hitCount"] > 0
    ]
    aliases_with_forward_data_hits = [
        row["selector"]
        for row in rows
        if row["aliasToCurrent"]["dataHitCount"] > 0
    ]
    aliases_with_after_last_fill_hits = [
        row["selector"]
        for row in rows
        if row["aliasToCurrentAfterLastFillHitCount"] > 0
    ]
    aliases_with_after_last_fill_data_hits = [
        row["selector"]
        for row in rows
        if row["aliasToCurrentAfterLastFillDataHitCount"] > 0
    ]
    max_forward_data_hits = max(
        [row["aliasToCurrent"]["dataHitCount"] for row in rows],
        default=0,
    )
    max_after_last_fill_data_hits = max(
        [row["aliasToCurrentAfterLastFillDataHitCount"] for row in rows],
        default=0,
    )
    dominant_forward_data_aliases = [
        row["selector"]
        for row in rows
        if max_forward_data_hits > 0 and row["aliasToCurrent"]["dataHitCount"] == max_forward_data_hits
    ]
    dominant_after_last_fill_data_aliases = [
        row["selector"]
        for row in rows
        if (
            max_after_last_fill_data_hits > 0
            and row["aliasToCurrentAfterLastFillDataHitCount"] == max_after_last_fill_data_hits
        )
    ]
    aliases_without_forward_hits = [
        row["selector"]
        for row in rows
        if row["aliasToCurrent"]["hitCount"] == 0
    ]
    public_sample_ids = sorted({
        sample_id
        for row in rows
        for sample_id in row.get("publicSampleIds") or []
    })
    public_covered_aliases = [
        row["selector"]
        for row in rows
        if row.get("publicSampleIds")
    ]
    public_covered_forward_hit_aliases = [
        row["selector"]
        for row in rows
        if row.get("publicSampleIds") and row["aliasToCurrent"]["hitCount"] > 0
    ]
    public_covered_forward_data_aliases = [
        row["selector"]
        for row in rows
        if row.get("publicSampleIds") and row["aliasToCurrent"]["dataHitCount"] > 0
    ]
    public_covered_after_last_fill_data_aliases = [
        row["selector"]
        for row in rows
        if row.get("publicSampleIds") and row["aliasToCurrentAfterLastFillDataHitCount"] > 0
    ]
    forward_hit_public_sample_count = len({
        sample_id
        for row in rows
        if row["aliasToCurrent"]["hitCount"] > 0
        for sample_id in row.get("publicSampleIds") or []
    })
    address_adjacent_forward_hit_aliases = [
        row["selector"]
        for row in rows
        if "address-adjacent" in str(row.get("role") or "")
        and row["aliasToCurrent"]["hitCount"] > 0
    ]
    address_adjacent_forward_data_aliases = [
        row["selector"]
        for row in rows
        if "address-adjacent" in str(row.get("role") or "")
        and row["aliasToCurrent"]["dataHitCount"] > 0
    ]
    non_public_forward_hit_aliases = [
        row["selector"]
        for row in rows
        if not row.get("publicSampleIds") and row["aliasToCurrent"]["hitCount"] > 0
    ]
    forward_hits_address_adjacent_only = (
        bool(aliases_with_forward_hits)
        and set(aliases_with_forward_hits) == set(address_adjacent_forward_hit_aliases)
    )
    public_forward_hit_coverage_status = (
        "uncovered-address-adjacent-only"
        if (
            aliases_with_forward_hits
            and not public_covered_forward_hit_aliases
            and forward_hits_address_adjacent_only
        )
        else "covered"
        if public_covered_forward_hit_aliases
        else "no-forward-hits"
    )
    target_alias_execution_exclusion_status = (
        "address-adjacent-alias-data-only"
        if (
            not execution_like_aliases
            and not after_last_fill_execution_like_aliases
            and forward_hits_address_adjacent_only
            and not public_covered_forward_hit_aliases
            and alias_to_current_promoting_exact_metadata_only
        )
        else "open"
    )
    target_alias_execution_exclusion_detail = (
        "public-covered aliases have no forward hits; all forward/data/tail-data hits come from "
        f"{','.join(address_adjacent_forward_hit_aliases) or '-'}, with exact current-root promotion limited "
        "to selector-row metadata and no writer/reader/scene-record trace hits"
        if target_alias_execution_exclusion_status == "address-adjacent-alias-data-only"
        else "target alias bridge still needs separate execution review"
    )
    address_adjacent_package_bridge = summarize_address_adjacent_package(
        exe,
        sections,
        current_start,
        current_end,
        address_predecessor_context,
    )
    conclusion = (
        "The target-side alias bridge scan finds direct dword links from target aliases into the bounded current 2:0 "
        "root range, but all forward hits come from the non-public, address-adjacent 10:0 range; the public-covered "
        "target alias 1:0 has no forward hits. None of those links directly targets the current root, the 0x00542b0c "
        "reader, or the map1_01a/map2_02d scene-record pair as a data edge. The sole exact current-root hit is "
        "selector-row metadata at 0x0053f328 rather than a root-range data edge. Two leaf-table hits land on current "
        "route-pair descriptor entries; their raw traces stop before the frontier reader, while the opcode-0x2c-"
        "corrected traces do reach it. The after-last-fill subset contains only 10:0 tail data links into pre-writer "
        "script and leaf-table windows, and those pre-writer traces still do not reach the current writer, reader, "
        "or route scene records. The address-adjacent 10:0 prefix also contains the current 2:0 root pointer followed "
        "by a resource list containing middata.mlk and source/target map CNS names, which is a useful package/list "
        "shape clue but still metadata rather than an execution edge. The hits therefore narrow likely shared substructure and corrected route-pair "
        "adjacency between alias roots but still do not prove runtime leaf selection, execution order, branch-state "
        "persistence, or a strict map1_01a hotspot."
    )
    return {
        "source": SOURCE,
        "target": TARGET,
        "currentSelector": CURRENT_SELECTOR,
        "currentRootHex": hex32(current_root),
        "currentRootRangeHex": range_hex(current_start, current_end),
        "targetAliasSelectors": [row["selector"] for row in rows],
        "aliasRows": rows,
        "aliasBridgeSummaryRows": [compact_alias_row(row) for row in rows],
        "publicSampleIds": public_sample_ids,
        "publicCoveredAliasSelectors": public_covered_aliases,
        "publicCoveredAliasCount": len(public_covered_aliases),
        "publicCoveredForwardHitSelectors": public_covered_forward_hit_aliases,
        "publicCoveredForwardHitAliasCount": len(public_covered_forward_hit_aliases),
        "publicCoveredForwardDataSelectors": public_covered_forward_data_aliases,
        "publicCoveredForwardDataAliasCount": len(public_covered_forward_data_aliases),
        "publicCoveredAfterLastFillDataSelectors": public_covered_after_last_fill_data_aliases,
        "publicCoveredAfterLastFillDataAliasCount": len(public_covered_after_last_fill_data_aliases),
        "forwardHitPublicSampleCount": forward_hit_public_sample_count,
        "addressAdjacentForwardHitSelectors": address_adjacent_forward_hit_aliases,
        "addressAdjacentForwardDataSelectors": address_adjacent_forward_data_aliases,
        "nonPublicForwardHitSelectors": non_public_forward_hit_aliases,
        "forwardHitsAddressAdjacentOnly": forward_hits_address_adjacent_only,
        "publicForwardHitCoverageStatus": public_forward_hit_coverage_status,
        "targetAliasExecutionExclusionStatus": target_alias_execution_exclusion_status,
        "targetAliasExecutionExclusionDetail": target_alias_execution_exclusion_detail,
        "addressAdjacentPackageBridge": address_adjacent_package_bridge,
        "addressAdjacentPackagePrefixFound": address_adjacent_package_bridge["packagePrefixFound"],
        "addressAdjacentPackageStatus": address_adjacent_package_bridge["status"],
        "addressAdjacentPackageRouteProofFound": address_adjacent_package_bridge["routeProofFound"],
        "addressAdjacentPackageFollowingStrings": address_adjacent_package_bridge["followingStrings"],
        "addressAdjacentPackageCurrentRootRefClassification": address_adjacent_package_bridge[
            "currentRootRefClassification"
        ],
        "addressAdjacentPackageIncludesSourceMapResource": address_adjacent_package_bridge[
            "includesSourceMapResource"
        ],
        "addressAdjacentPackageIncludesTargetMapResource": address_adjacent_package_bridge[
            "includesTargetMapResource"
        ],
        "addressAdjacentPackageCurrentRootResourceRefCount": address_adjacent_package_bridge[
            "currentRootPackageResourceRefCount"
        ],
        "addressAdjacentPackageCurrentSceneRecordsUsePackageResources": address_adjacent_package_bridge[
            "currentSceneRecordsUsePackageResources"
        ],
        "aliasesWithForwardHits": aliases_with_forward_hits,
        "aliasesWithForwardDataHits": aliases_with_forward_data_hits,
        "aliasesWithAfterLastFillHits": aliases_with_after_last_fill_hits,
        "aliasesWithAfterLastFillDataHits": aliases_with_after_last_fill_data_hits,
        "dominantForwardDataAliases": dominant_forward_data_aliases,
        "dominantAfterLastFillDataAliases": dominant_after_last_fill_data_aliases,
        "aliasToCurrentHitCount": alias_to_current_hit_count,
        "aliasToCurrentMetadataHitCount": alias_to_current_metadata_hit_count,
        "aliasToCurrentDataHitCount": alias_to_current_data_hit_count,
        "aliasToCurrentPromotingExactHitCount": alias_to_current_promoting_exact_hit_count,
        "aliasToCurrentPromotingDataHitCount": alias_to_current_promoting_data_hit_count,
        "aliasToCurrentPromotingMetadataHitCount": alias_to_current_promoting_metadata_hit_count,
        "aliasToCurrentPromotingExactMetadataOnly": alias_to_current_promoting_exact_metadata_only,
        "aliasToCurrentPromotingMetadataHits": alias_to_current_promoting_metadata_hits,
        "aliasToCurrentPromotingMetadataHitSelectors": alias_to_current_promoting_metadata_hit_selectors,
        "aliasToCurrentPromotingMetadataSourceRoles": alias_to_current_promoting_metadata_source_roles,
        "aliasToCurrentReaderOrSceneRecordHitCount": alias_to_current_reader_or_scene_record_hit_count,
        "aliasToCurrentTargetClassCounts": alias_to_current_target_class_counts,
        "aliasToCurrentLeafTableHitCount": alias_to_current_leaf_table_hit_count,
        "aliasToCurrentLeafTableRoutePairHitCount": alias_to_current_leaf_table_route_pair_hit_count,
        "aliasToCurrentLeafTableReaderHitCount": alias_to_current_leaf_table_reader_hit_count,
        "aliasToCurrentLeafTableCorrectedReaderHitCount": alias_to_current_leaf_table_corrected_reader_hit_count,
        "aliasToCurrentLeafTableEffectiveReaderHitCount": alias_to_current_leaf_table_effective_reader_hit_count,
        "aliasToCurrentLeafTableFrontierLeafHitCount": alias_to_current_leaf_table_frontier_leaf_hit_count,
        "aliasToCurrentLeafTableNegativeHitCount": alias_to_current_leaf_table_negative_hit_count,
        "aliasToCurrentPreWriterUniqueTargetCount": alias_to_current_pre_writer_unique_target_count,
        "aliasToCurrentPreWriterTraceCurrentWriterHitCount": alias_to_current_pre_writer_trace_current_writer_hit_count,
        "aliasToCurrentPreWriterTraceCurrentReaderHitCount": alias_to_current_pre_writer_trace_current_reader_hit_count,
        "aliasToCurrentPreWriterTraceRouteSceneRecordHitCount": alias_to_current_pre_writer_trace_route_scene_record_hit_count,
        "aliasToCurrentAfterLastFillHitCount": alias_to_current_after_last_fill_hit_count,
        "aliasToCurrentAfterLastFillDataHitCount": alias_to_current_after_last_fill_data_hit_count,
        "aliasToCurrentAfterLastFillMetadataHitCount": alias_to_current_after_last_fill_metadata_hit_count,
        "aliasToCurrentAfterLastFillPreWriterHitCount": alias_to_current_after_last_fill_pre_writer_hit_count,
        "aliasToCurrentAfterLastFillLeafTableHitCount": alias_to_current_after_last_fill_leaf_table_hit_count,
        "aliasToCurrentAfterLastFillLeafTableCorrectedReaderHitCount": alias_to_current_after_last_fill_leaf_table_corrected_reader_hit_count,
        "aliasToCurrentAfterLastFillLeafTableEffectiveReaderHitCount": alias_to_current_after_last_fill_leaf_table_effective_reader_hit_count,
        "aliasToCurrentAfterLastFillReaderOrSceneRecordHitCount": alias_to_current_after_last_fill_reader_or_scene_record_hit_count,
        "aliasToCurrentAfterLastFillPromotingDataHitCount": alias_to_current_after_last_fill_promoting_data_hit_count,
        "aliasToCurrentAfterLastFillTargetClassCounts": alias_to_current_after_last_fill_target_class_counts,
        "aliasToCurrentAfterLastFillPreWriterUniqueTargetCount": alias_to_current_after_last_fill_pre_writer_unique_target_count,
        "aliasToCurrentAfterLastFillTraceCurrentWriterHitCount": alias_to_current_after_last_fill_trace_current_writer_hit_count,
        "aliasToCurrentAfterLastFillTraceCurrentReaderHitCount": alias_to_current_after_last_fill_trace_current_reader_hit_count,
        "aliasToCurrentAfterLastFillTraceRouteSceneRecordHitCount": alias_to_current_after_last_fill_trace_route_scene_record_hit_count,
        "aliasToCurrentAfterLastFillExecutionLikeBridgeFound": bool(after_last_fill_execution_like_aliases),
        "aliasToCurrentAfterLastFillExecutionLikeAliases": after_last_fill_execution_like_aliases,
        "aliasToCurrentExecutionLikeBridgeFound": bool(execution_like_aliases),
        "aliasToCurrentExecutionLikeAliases": execution_like_aliases,
        "aliasToCurrentMetadataOnlyAliases": metadata_only_aliases,
        "aliasesWithoutForwardHits": aliases_without_forward_hits,
        "proofFound": False,
        "targetAliasBridgeProofFound": False,
        "failedTargetAliasBridgeGateIds": FAILED_TARGET_ALIAS_BRIDGE_GATE_IDS,
        "missingEvidence": TARGET_ALIAS_BRIDGE_MISSING_EVIDENCE,
        "evidenceRefs": TARGET_ALIAS_BRIDGE_EVIDENCE_REFS,
        "evidenceRefCount": len(TARGET_ALIAS_BRIDGE_EVIDENCE_REFS),
        "promotionStatus": "blocked",
        "remainingProofs": TARGET_ALIAS_BRIDGE_MISSING_EVIDENCE,
        "conclusion": conclusion,
    }


def markdown(summary: dict) -> str:
    lines = [
        "# Save Selector Target Alias Bridges",
        "",
        f"- route: `{summary['source']}` -> `{summary['target']}`",
        f"- current selector/root: `{summary['currentSelector']}` / `{summary['currentRootHex']}`",
        f"- target aliases: `{', '.join(summary['targetAliasSelectors'])}`",
        f"- alias -> current hits: {summary['aliasToCurrentHitCount']}",
        f"- alias -> current metadata hits: {summary['aliasToCurrentMetadataHitCount']}",
        f"- alias -> current data hits: {summary['aliasToCurrentDataHitCount']}",
        f"- alias -> current promoting exact hits: {summary['aliasToCurrentPromotingExactHitCount']}",
        f"- alias -> current promoting data hits: {summary['aliasToCurrentPromotingDataHitCount']}",
        f"- alias -> current promoting metadata hits: {summary['aliasToCurrentPromotingMetadataHitCount']}",
        f"- promoting exact hits are metadata-only: {summary['aliasToCurrentPromotingExactMetadataOnly']}",
        f"- promoting metadata source roles: `{', '.join(summary['aliasToCurrentPromotingMetadataSourceRoles']) or '-'}`",
        f"- public samples: `{', '.join(summary['publicSampleIds']) or '-'}`",
        f"- public-covered aliases: `{', '.join(summary['publicCoveredAliasSelectors']) or '-'}`",
        f"- public-covered forward/data/after-fill-data aliases: `{', '.join(summary['publicCoveredForwardHitSelectors']) or '-'}` / `{', '.join(summary['publicCoveredForwardDataSelectors']) or '-'}` / `{', '.join(summary['publicCoveredAfterLastFillDataSelectors']) or '-'}`",
        f"- forward-hit public sample count: {summary['forwardHitPublicSampleCount']}",
        f"- address-adjacent forward/data aliases: `{', '.join(summary['addressAdjacentForwardHitSelectors']) or '-'}` / `{', '.join(summary['addressAdjacentForwardDataSelectors']) or '-'}`",
        f"- forward hits address-adjacent only: {summary['forwardHitsAddressAdjacentOnly']}",
        f"- public forward-hit coverage status: `{summary['publicForwardHitCoverageStatus']}`",
        f"- target-alias execution exclusion: `{summary['targetAliasExecutionExclusionStatus']}` ({summary['targetAliasExecutionExclusionDetail']})",
        f"- address-adjacent package prefix found: {summary['addressAdjacentPackagePrefixFound']}",
        f"- address-adjacent package status: `{summary['addressAdjacentPackageStatus']}`",
        f"- address-adjacent package current-root ref class: `{summary['addressAdjacentPackageCurrentRootRefClassification']}`",
        f"- address-adjacent package resources include source/target: {summary['addressAdjacentPackageIncludesSourceMapResource']}/{summary['addressAdjacentPackageIncludesTargetMapResource']}",
        f"- address-adjacent package current-root resource refs: {summary['addressAdjacentPackageCurrentRootResourceRefCount']}",
        f"- address-adjacent package scene records use package resources: {summary['addressAdjacentPackageCurrentSceneRecordsUsePackageResources']}",
        f"- address-adjacent package route proof found: {summary['addressAdjacentPackageRouteProofFound']}",
        f"- alias -> current reader/scene-record hits: {summary['aliasToCurrentReaderOrSceneRecordHitCount']}",
        f"- alias -> current leaf-table hits: {summary['aliasToCurrentLeafTableHitCount']}",
        f"- alias -> current leaf-table route-pair hits: {summary['aliasToCurrentLeafTableRoutePairHitCount']}",
        f"- alias -> current leaf-table reader hits: {summary['aliasToCurrentLeafTableReaderHitCount']}",
        f"- alias -> current leaf-table corrected reader hits: {summary['aliasToCurrentLeafTableCorrectedReaderHitCount']}",
        f"- alias -> current leaf-table effective reader hits: {summary['aliasToCurrentLeafTableEffectiveReaderHitCount']}",
        f"- alias -> current pre-writer unique targets: {summary['aliasToCurrentPreWriterUniqueTargetCount']}",
        f"- pre-writer traces hitting current writer/reader/scene records: {summary['aliasToCurrentPreWriterTraceCurrentWriterHitCount']}/{summary['aliasToCurrentPreWriterTraceCurrentReaderHitCount']}/{summary['aliasToCurrentPreWriterTraceRouteSceneRecordHitCount']}",
        f"- alias -> current after last fill hits: {summary['aliasToCurrentAfterLastFillHitCount']}",
        f"- after last fill metadata/data/promoting-data hits: {summary['aliasToCurrentAfterLastFillMetadataHitCount']}/{summary['aliasToCurrentAfterLastFillDataHitCount']}/{summary['aliasToCurrentAfterLastFillPromotingDataHitCount']}",
        f"- after last fill pre-writer/leaf-table/reader-scene hits: {summary['aliasToCurrentAfterLastFillPreWriterHitCount']}/{summary['aliasToCurrentAfterLastFillLeafTableHitCount']}/{summary['aliasToCurrentAfterLastFillReaderOrSceneRecordHitCount']}",
        f"- after last fill leaf-table corrected/effective reader hits: {summary['aliasToCurrentAfterLastFillLeafTableCorrectedReaderHitCount']}/{summary['aliasToCurrentAfterLastFillLeafTableEffectiveReaderHitCount']}",
        f"- after-fill traces hitting current writer/reader/scene records: {summary['aliasToCurrentAfterLastFillTraceCurrentWriterHitCount']}/{summary['aliasToCurrentAfterLastFillTraceCurrentReaderHitCount']}/{summary['aliasToCurrentAfterLastFillTraceRouteSceneRecordHitCount']}",
        f"- after last fill execution-like bridge found: {summary['aliasToCurrentAfterLastFillExecutionLikeBridgeFound']}",
        f"- execution-like alias -> current bridge found: {summary['aliasToCurrentExecutionLikeBridgeFound']}",
        f"- aliases with forward hits: `{', '.join(summary['aliasesWithForwardHits']) or '-'}`",
        f"- aliases with forward data hits: `{', '.join(summary['aliasesWithForwardDataHits']) or '-'}`",
        f"- aliases with after-fill data hits: `{', '.join(summary['aliasesWithAfterLastFillDataHits']) or '-'}`",
        f"- dominant forward/after-fill data aliases: `{', '.join(summary['dominantForwardDataAliases']) or '-'}` / `{', '.join(summary['dominantAfterLastFillDataAliases']) or '-'}`",
        f"- metadata-only aliases: `{', '.join(summary['aliasToCurrentMetadataOnlyAliases']) or '-'}`",
        f"- aliases without forward hits: `{', '.join(summary['aliasesWithoutForwardHits']) or '-'}`",
        f"- proof found: {summary['proofFound']}",
        f"- failed target-alias bridge gates: {', '.join(summary['failedTargetAliasBridgeGateIds'])}",
        f"- missing evidence count: {len(summary['missingEvidence'])}",
        f"- evidence refs: {summary.get('evidenceRefCount')}",
        f"- promotion status: `{summary['promotionStatus']}`",
        "",
        summary["conclusion"],
        "",
        "## Address-Adjacent Package Prefix",
        "",
        f"- selector: `{summary['addressAdjacentPackageBridge'].get('selector') or '-'}`",
        f"- range: `{summary['addressAdjacentPackageBridge'].get('rangeHex') or '-'}`",
        f"- current-root ref: `{summary['addressAdjacentPackageBridge'].get('currentRootRefHex') or '-'}` -> `{summary['addressAdjacentPackageBridge'].get('currentRootTargetHex') or '-'}`",
        f"- current-root ref class: `{summary['addressAdjacentPackageBridge'].get('currentRootRefClassification') or '-'}`",
        f"- current-root pointer is selector-row entry: {summary['addressAdjacentPackageBridge'].get('currentRootPointerIsSelectorRowEntry')}",
        f"- following resources: `{', '.join(summary['addressAdjacentPackageBridge'].get('followingStrings') or []) or '-'}`",
        f"- contains source/target field maps: {summary['addressAdjacentPackageBridge'].get('containsSourceFieldMap')}/{summary['addressAdjacentPackageBridge'].get('containsTargetFieldMap')}",
        f"- current equals address-predecessor plus source: {summary['addressAdjacentPackageBridge'].get('currentEqualsAddressPredecessorPlusSource')}",
        f"- tail current-root range/exact pointers: {summary['addressAdjacentPackageBridge'].get('tailCurrentRootRangePointerCount')}/{summary['addressAdjacentPackageBridge'].get('tailCurrentRootExactRefCount')}",
        f"- tail reader/source/target record refs: {summary['addressAdjacentPackageBridge'].get('tailFrontierReaderRefCount')}/{summary['addressAdjacentPackageBridge'].get('tailSourceRecordRefCount')}/{summary['addressAdjacentPackageBridge'].get('tailTargetRecordRefCount')}",
        f"- current-root package resource refs: {summary['addressAdjacentPackageBridge'].get('currentRootPackageResourceRefCount')}",
        f"- current-root package resource ref roles: `{class_counts_text(summary['addressAdjacentPackageBridge'].get('currentRootPackageResourceRefRoleCounts') or {})}`",
        f"- source scene resource refs: `{', '.join(row.get('resourceName', '-') for row in summary['addressAdjacentPackageBridge'].get('sourceSceneRecordPackageResourceRefs') or []) or '-'}`",
        f"- target scene resource refs: `{', '.join(row.get('resourceName', '-') for row in summary['addressAdjacentPackageBridge'].get('targetSceneRecordPackageResourceRefs') or []) or '-'}`",
        f"- current scene records use package resources: {summary['addressAdjacentPackageBridge'].get('currentSceneRecordsUsePackageResources')}",
        f"- status: `{summary['addressAdjacentPackageBridge'].get('status')}`",
        f"- note: {summary['addressAdjacentPackageBridge'].get('note')}",
        "",
        "## Promoting Exact Hits",
        "",
        "| selector | source | value | target label | source role | target class | metadata |",
        "| --- | --- | --- | --- | --- | --- | --- |",
    ]
    if summary["aliasToCurrentPromotingMetadataHits"]:
        for hit in summary["aliasToCurrentPromotingMetadataHits"]:
            lines.append(
                f"| `{hit['selector']}` | `{hit['sourceVaHex']}` | `{hit['valueHex']}` | "
                f"{hit['targetLabel']} | `{hit['sourceLocationRole']}` | "
                f"`{hit['targetClass']}` | {hit['metadataLike']} |"
            )
    else:
        lines.append("| - | - | - | - | - | - | - |")
    lines.extend([
        "",
        "## Alias Bridge Summary",
        "",
        "| selector | role | public samples | hits | data | classes | after-fill data | after-fill classes | leaf corrected/effective | pre-writer targets | trace W/R/S | current->alias |",
        "| --- | --- | --- | ---: | ---: | --- | ---: | --- | --- | ---: | --- | ---: |",
    ])
    for row in summary["aliasBridgeSummaryRows"]:
        classes = class_counts_text(row["aliasToCurrentTargetClassCounts"])
        after_classes = class_counts_text(row["aliasToCurrentAfterLastFillTargetClassCounts"])
        lines.append(
            f"| `{row['selector']}` | {row['role']} | `{','.join(row['publicSampleIds']) or '-'}` | {row['aliasToCurrentHitCount']} | "
            f"{row['aliasToCurrentDataHitCount']} | {classes} | "
            f"{row['aliasToCurrentAfterLastFillDataHitCount']} | {after_classes} | "
            f"{row['aliasToCurrentLeafTableCorrectedReaderHitCount']}/{row['aliasToCurrentLeafTableEffectiveReaderHitCount']} | "
            f"{row['aliasToCurrentPreWriterUniqueTargetCount']} | "
            f"{row['aliasToCurrentPreWriterTraceCurrentWriterHitCount']}/{row['aliasToCurrentPreWriterTraceCurrentReaderHitCount']}/{row['aliasToCurrentPreWriterTraceRouteSceneRecordHitCount']} | "
            f"{row['currentToAliasHitCount']} |"
        )
    lines.extend([
        "",
        "## Alias Rows",
        "",
        "| selector | role | root range | fills | alias->current hits | metadata/data/promoting/promoting-data | after last fill hits | after-fill traces W/R/S | current->alias hits | execution-like |",
        "| --- | --- | --- | ---: | ---: | --- | ---: | --- | ---: | --- |",
    ])
    for row in summary["aliasRows"]:
        alias_to_current = row["aliasToCurrent"]
        current_to_alias = row["currentToAlias"]
        lines.append(
            f"| `{row['selector']}` | {row['role']} | `{row['rootRangeHex']}` | {row['fillCount']} | "
            f"{alias_to_current['hitCount']} | {alias_to_current['metadataHitCount']}/{alias_to_current['dataHitCount']}/{alias_to_current['promotingExactHitCount']}/{alias_to_current['promotingDataHitCount']} | "
            f"{row['aliasToCurrentAfterLastFillHitCount']} | {row['aliasToCurrentAfterLastFillTraceCurrentWriterHitCount']}/{row['aliasToCurrentAfterLastFillTraceCurrentReaderHitCount']}/{row['aliasToCurrentAfterLastFillTraceRouteSceneRecordHitCount']} | "
            f"{current_to_alias['hitCount']} | {row['aliasToCurrentExecutionLikeBridgeFound']} |"
        )
    lines.extend(["", "## Target Classes", ""])
    for target_class, count in sorted(summary["aliasToCurrentTargetClassCounts"].items()):
        lines.append(f"- `{target_class}`: {count}")
    lines.extend(["", "## After Last Fill Target Classes", ""])
    for target_class, count in sorted(summary["aliasToCurrentAfterLastFillTargetClassCounts"].items()):
        lines.append(f"- `{target_class}`: {count}")
    lines.extend([
        "",
        "## After Last Fill Summary",
        "",
        "| selector | tail hits | metadata | data | pre-writer | leaf-table | corrected/effective leaf reader | reader/scene | unique trace targets | trace W/R/S | execution-like |",
        "| --- | ---: | ---: | ---: | ---: | ---: | --- | ---: | ---: | --- | --- |",
    ])
    for row in summary["aliasRows"]:
        lines.append(
            f"| `{row['selector']}` | {row['aliasToCurrentAfterLastFillHitCount']} | "
            f"{row['aliasToCurrentAfterLastFillMetadataHitCount']} | "
            f"{row['aliasToCurrentAfterLastFillDataHitCount']} | "
            f"{row['aliasToCurrentAfterLastFillPreWriterHitCount']} | "
            f"{row['aliasToCurrentAfterLastFillLeafTableHitCount']} | "
            f"{row['aliasToCurrentAfterLastFillLeafTableCorrectedReaderHitCount']}/{row['aliasToCurrentAfterLastFillLeafTableEffectiveReaderHitCount']} | "
            f"{row['aliasToCurrentAfterLastFillReaderOrSceneRecordHitCount']} | "
            f"{row['aliasToCurrentAfterLastFillPreWriterUniqueTargetCount']} | "
            f"{row['aliasToCurrentAfterLastFillTraceCurrentWriterHitCount']}/{row['aliasToCurrentAfterLastFillTraceCurrentReaderHitCount']}/{row['aliasToCurrentAfterLastFillTraceRouteSceneRecordHitCount']} | "
            f"{row['aliasToCurrentAfterLastFillExecutionLikeBridgeFound']} |"
        )
    lines.extend([
        "",
        "## Leaf-Table Hits",
        "",
        "| selector | source | entry | index | descriptor | child | route pair | raw reader | corrected reader | effective reader | frontier leaf |",
        "| --- | --- | --- | ---: | --- | --- | --- | --- | --- | --- | --- |",
    ])
    for row in summary["aliasRows"]:
        for hit in row["aliasToCurrentLeafTableHits"]:
            route_pair = bool(hit.get("descriptorHasRoutePair") or hit.get("childHasRoutePair"))
            reader = bool(hit.get("descriptorTraceContainsFrontierReader") or hit.get("childTraceContainsFrontierReader"))
            corrected_reader = bool(hit.get("correctedDescriptorTraceContainsFrontierReader"))
            effective_reader = bool(reader or corrected_reader)
            lines.append(
                f"| `{row['selector']}` | `{hit['sourceVaHex']}` | `{hit['valueHex']}` | "
                f"{hit.get('rootRelativeIndex')} | `{hit.get('descriptorHex') or '-'}` | "
                f"`{hit.get('childPointerHex') or '-'}` | {route_pair} | {reader} | "
                f"{corrected_reader} | {effective_reader} | {hit.get('isFrontierLeafChild')} |"
            )
    lines.extend([
        "",
        "## Pre-Writer Trace Targets",
        "",
        "| selector | target | hits | steps | stop | writer | reader | scene record | first opcodes |",
        "| --- | --- | ---: | ---: | --- | --- | --- | --- | --- |",
    ])
    for row in summary["aliasRows"]:
        for trace_row in row["aliasToCurrentPreWriterTraces"]:
            lines.append(
                f"| `{row['selector']}` | `{trace_row['targetHex']}` | {trace_row['sourceHitCount']} | "
                f"{trace_row['traceStepCount']} | {trace_row.get('traceStopReason') or '-'} @ `{trace_row.get('traceStopVaHex') or '-'}` | "
                f"{trace_row['containsCurrentWriter']} | {trace_row['containsCurrentReader']} | "
                f"{trace_row['containsRouteSceneRecord']} | `{','.join(trace_row.get('firstOpcodes') or []) or '-'}` |"
            )
    lines.extend(["", "## Forward Hits", ""])
    for row in summary["aliasRows"]:
        lines.append(f"### {row['selector']}")
        hits = row["aliasToCurrent"]["hits"]
        if not hits:
            lines.append("")
            lines.append("- none")
            lines.append("")
            continue
        lines.extend(["", "| source | value | target label | source role |", "| --- | --- | --- | --- |"])
        for hit in hits:
            lines.append(
                f"| `{hit['sourceVaHex']}` | `{hit['valueHex']}` | {hit['targetLabel']} | `{hit['sourceLocationRole']}` |"
            )
        lines.append("")
    lines.extend(["## Remaining Proofs", ""])
    lines.extend(f"- {item}" for item in summary["remainingProofs"])
    lines.append("")
    return "\n".join(lines)


def html_page(summary: dict) -> str:
    alias_rows = "\n".join(
        "<tr>"
        f"<td><code>{html.escape(row['selector'])}</code></td>"
        f"<td>{html.escape(str(row['role']))}</td>"
        f"<td><code>{html.escape(row['rootRangeHex'])}</code></td>"
        f"<td>{row['fillCount']}</td>"
        f"<td>{row['aliasToCurrent']['hitCount']}</td>"
        f"<td>{row['aliasToCurrent']['metadataHitCount']}/{row['aliasToCurrent']['dataHitCount']}/{row['aliasToCurrent']['promotingExactHitCount']}/{row['aliasToCurrent']['promotingDataHitCount']}</td>"
        f"<td>{row['aliasToCurrentAfterLastFillHitCount']}</td>"
        f"<td>{row['aliasToCurrentAfterLastFillTraceCurrentWriterHitCount']}/{row['aliasToCurrentAfterLastFillTraceCurrentReaderHitCount']}/{row['aliasToCurrentAfterLastFillTraceRouteSceneRecordHitCount']}</td>"
        f"<td>{row['currentToAlias']['hitCount']}</td>"
        f"<td>{row['aliasToCurrentExecutionLikeBridgeFound']}</td>"
        "</tr>"
        for row in summary["aliasRows"]
    )
    forward_sections = []
    for row in summary["aliasRows"]:
        hit_rows = "\n".join(
            "<tr>"
            f"<td><code>{html.escape(hit['sourceVaHex'])}</code></td>"
            f"<td><code>{html.escape(hit['valueHex'])}</code></td>"
            f"<td>{html.escape(hit['targetLabel'])}</td>"
            f"<td><code>{html.escape(hit['sourceLocationRole'])}</code></td>"
            "</tr>"
            for hit in row["aliasToCurrent"]["hits"]
        )
        if not hit_rows:
            hit_rows = "<tr><td colspan=\"4\">none</td></tr>"
        forward_sections.append(
            f"<h3>{html.escape(row['selector'])}</h3>"
            "<table><thead><tr><th>source</th><th>value</th><th>target label</th><th>source role</th></tr></thead><tbody>"
            f"{hit_rows}</tbody></table>"
        )
    proofs = "".join(f"<li>{html.escape(item)}</li>" for item in summary["remainingProofs"])
    return "\n".join([
        "<!doctype html><meta charset=\"utf-8\"><title>Save Selector Target Alias Bridges</title>",
        "<style>body{font-family:system-ui,sans-serif;background:#111;color:#eee;max-width:1200px;margin:24px auto}table{border-collapse:collapse;width:100%;margin:12px 0}td,th{border:1px solid #444;padding:6px 8px;vertical-align:top}code{color:#9bd4ff}</style>",
        "<h1>Save Selector Target Alias Bridges</h1>",
        "<ul>",
        f"<li>route: <code>{html.escape(summary['source'])}</code> -&gt; <code>{html.escape(summary['target'])}</code></li>",
        f"<li>current selector/root: <code>{html.escape(summary['currentSelector'])}</code> / <code>{html.escape(summary['currentRootHex'])}</code></li>",
        f"<li>target aliases: <code>{html.escape(', '.join(summary['targetAliasSelectors']))}</code></li>",
        f"<li>alias -&gt; current hits: {summary['aliasToCurrentHitCount']} metadata {summary['aliasToCurrentMetadataHitCount']} data {summary['aliasToCurrentDataHitCount']}</li>",
        f"<li>alias -&gt; current promoting exact hits: {summary['aliasToCurrentPromotingExactHitCount']}</li>",
        f"<li>alias -&gt; current promoting data hits: {summary['aliasToCurrentPromotingDataHitCount']}</li>",
        f"<li>alias -&gt; current promoting metadata hits: {summary['aliasToCurrentPromotingMetadataHitCount']}</li>",
        f"<li>promoting exact hits are metadata-only: {summary['aliasToCurrentPromotingExactMetadataOnly']}</li>",
        f"<li>promoting metadata source roles: <code>{html.escape(', '.join(summary['aliasToCurrentPromotingMetadataSourceRoles']) or '-')}</code></li>",
        f"<li>public samples: <code>{html.escape(', '.join(summary['publicSampleIds']) or '-')}</code></li>",
        f"<li>public-covered aliases: <code>{html.escape(', '.join(summary['publicCoveredAliasSelectors']) or '-')}</code></li>",
        f"<li>public-covered forward/data/after-fill-data aliases: <code>{html.escape(', '.join(summary['publicCoveredForwardHitSelectors']) or '-')}</code> / <code>{html.escape(', '.join(summary['publicCoveredForwardDataSelectors']) or '-')}</code> / <code>{html.escape(', '.join(summary['publicCoveredAfterLastFillDataSelectors']) or '-')}</code></li>",
        f"<li>forward-hit public sample count: {summary['forwardHitPublicSampleCount']}</li>",
        f"<li>address-adjacent forward/data aliases: <code>{html.escape(', '.join(summary['addressAdjacentForwardHitSelectors']) or '-')}</code> / <code>{html.escape(', '.join(summary['addressAdjacentForwardDataSelectors']) or '-')}</code></li>",
        f"<li>forward hits address-adjacent only: {summary['forwardHitsAddressAdjacentOnly']}</li>",
        f"<li>public forward-hit coverage status: <code>{html.escape(summary['publicForwardHitCoverageStatus'])}</code></li>",
        f"<li>target-alias execution exclusion: <code>{html.escape(summary['targetAliasExecutionExclusionStatus'])}</code> ({html.escape(summary['targetAliasExecutionExclusionDetail'])})</li>",
        f"<li>address-adjacent package prefix found: {summary['addressAdjacentPackagePrefixFound']}</li>",
        f"<li>address-adjacent package status: <code>{html.escape(summary['addressAdjacentPackageStatus'])}</code></li>",
        f"<li>address-adjacent package current-root ref class: <code>{html.escape(summary['addressAdjacentPackageCurrentRootRefClassification'])}</code></li>",
        f"<li>address-adjacent package resources include source/target: {summary['addressAdjacentPackageIncludesSourceMapResource']}/{summary['addressAdjacentPackageIncludesTargetMapResource']}</li>",
        f"<li>address-adjacent package current-root resource refs: {summary['addressAdjacentPackageCurrentRootResourceRefCount']}</li>",
        f"<li>address-adjacent package scene records use package resources: {summary['addressAdjacentPackageCurrentSceneRecordsUsePackageResources']}</li>",
        f"<li>address-adjacent package route proof found: {summary['addressAdjacentPackageRouteProofFound']}</li>",
        f"<li>alias -&gt; current reader/scene-record hits: {summary['aliasToCurrentReaderOrSceneRecordHitCount']}</li>",
        f"<li>alias -&gt; current leaf-table hits: {summary['aliasToCurrentLeafTableHitCount']}</li>",
        f"<li>alias -&gt; current leaf-table route-pair hits: {summary['aliasToCurrentLeafTableRoutePairHitCount']}</li>",
        f"<li>alias -&gt; current leaf-table reader hits: {summary['aliasToCurrentLeafTableReaderHitCount']}</li>",
        f"<li>alias -&gt; current leaf-table corrected reader hits: {summary['aliasToCurrentLeafTableCorrectedReaderHitCount']}</li>",
        f"<li>alias -&gt; current leaf-table effective reader hits: {summary['aliasToCurrentLeafTableEffectiveReaderHitCount']}</li>",
        f"<li>alias -&gt; current pre-writer unique targets: {summary['aliasToCurrentPreWriterUniqueTargetCount']}</li>",
        f"<li>pre-writer traces hitting current writer/reader/scene records: {summary['aliasToCurrentPreWriterTraceCurrentWriterHitCount']}/{summary['aliasToCurrentPreWriterTraceCurrentReaderHitCount']}/{summary['aliasToCurrentPreWriterTraceRouteSceneRecordHitCount']}</li>",
        f"<li>alias -&gt; current after last fill hits: {summary['aliasToCurrentAfterLastFillHitCount']}</li>",
        f"<li>after last fill metadata/data/promoting-data hits: {summary['aliasToCurrentAfterLastFillMetadataHitCount']}/{summary['aliasToCurrentAfterLastFillDataHitCount']}/{summary['aliasToCurrentAfterLastFillPromotingDataHitCount']}</li>",
        f"<li>after last fill pre-writer/leaf-table/reader-scene hits: {summary['aliasToCurrentAfterLastFillPreWriterHitCount']}/{summary['aliasToCurrentAfterLastFillLeafTableHitCount']}/{summary['aliasToCurrentAfterLastFillReaderOrSceneRecordHitCount']}</li>",
        f"<li>after last fill leaf-table corrected/effective reader hits: {summary['aliasToCurrentAfterLastFillLeafTableCorrectedReaderHitCount']}/{summary['aliasToCurrentAfterLastFillLeafTableEffectiveReaderHitCount']}</li>",
        f"<li>after-fill traces hitting current writer/reader/scene records: {summary['aliasToCurrentAfterLastFillTraceCurrentWriterHitCount']}/{summary['aliasToCurrentAfterLastFillTraceCurrentReaderHitCount']}/{summary['aliasToCurrentAfterLastFillTraceRouteSceneRecordHitCount']}</li>",
        f"<li>after last fill execution-like bridge found: {summary['aliasToCurrentAfterLastFillExecutionLikeBridgeFound']}</li>",
        f"<li>execution-like alias -&gt; current bridge found: {summary['aliasToCurrentExecutionLikeBridgeFound']}</li>",
        f"<li>aliases with forward hits: <code>{html.escape(', '.join(summary['aliasesWithForwardHits']) or '-')}</code></li>",
        f"<li>aliases with forward data hits: <code>{html.escape(', '.join(summary['aliasesWithForwardDataHits']) or '-')}</code></li>",
        f"<li>aliases with after-fill data hits: <code>{html.escape(', '.join(summary['aliasesWithAfterLastFillDataHits']) or '-')}</code></li>",
        f"<li>dominant forward/after-fill data aliases: <code>{html.escape(', '.join(summary['dominantForwardDataAliases']) or '-')}</code> / <code>{html.escape(', '.join(summary['dominantAfterLastFillDataAliases']) or '-')}</code></li>",
        f"<li>metadata-only aliases: <code>{html.escape(', '.join(summary['aliasToCurrentMetadataOnlyAliases']) or '-')}</code></li>",
        f"<li>aliases without forward hits: <code>{html.escape(', '.join(summary['aliasesWithoutForwardHits']) or '-')}</code></li>",
        f"<li>proof found: <code>{summary['proofFound']}</code></li>",
        f"<li>failed target-alias bridge gates: <code>{html.escape(','.join(summary['failedTargetAliasBridgeGateIds']))}</code></li>",
        f"<li>missing evidence count: {len(summary['missingEvidence'])}</li>",
        f"<li>evidence refs: {summary.get('evidenceRefCount')}</li>",
        f"<li>promotion status: <code>{html.escape(summary['promotionStatus'])}</code></li>",
        "</ul>",
        "<h2>Address-Adjacent Package Prefix</h2>",
        "<ul>",
        f"<li>selector/range: <code>{html.escape(str(summary['addressAdjacentPackageBridge'].get('selector') or '-'))}</code> / <code>{html.escape(str(summary['addressAdjacentPackageBridge'].get('rangeHex') or '-'))}</code></li>",
        f"<li>current-root ref: <code>{html.escape(str(summary['addressAdjacentPackageBridge'].get('currentRootRefHex') or '-'))}</code> -&gt; <code>{html.escape(str(summary['addressAdjacentPackageBridge'].get('currentRootTargetHex') or '-'))}</code></li>",
        f"<li>current-root ref class: <code>{html.escape(str(summary['addressAdjacentPackageBridge'].get('currentRootRefClassification') or '-'))}</code></li>",
        f"<li>following resources: <code>{html.escape(', '.join(summary['addressAdjacentPackageBridge'].get('followingStrings') or []) or '-')}</code></li>",
        f"<li>contains source/target field maps: {summary['addressAdjacentPackageBridge'].get('containsSourceFieldMap')}/{summary['addressAdjacentPackageBridge'].get('containsTargetFieldMap')}</li>",
        f"<li>current equals address-predecessor plus source: {summary['addressAdjacentPackageBridge'].get('currentEqualsAddressPredecessorPlusSource')}</li>",
        f"<li>tail current-root range/exact pointers: {summary['addressAdjacentPackageBridge'].get('tailCurrentRootRangePointerCount')}/{summary['addressAdjacentPackageBridge'].get('tailCurrentRootExactRefCount')}</li>",
        f"<li>tail reader/source/target record refs: {summary['addressAdjacentPackageBridge'].get('tailFrontierReaderRefCount')}/{summary['addressAdjacentPackageBridge'].get('tailSourceRecordRefCount')}/{summary['addressAdjacentPackageBridge'].get('tailTargetRecordRefCount')}</li>",
        f"<li>current-root package resource refs: {summary['addressAdjacentPackageBridge'].get('currentRootPackageResourceRefCount')}</li>",
        f"<li>current-root package resource ref roles: <code>{html.escape(class_counts_text(summary['addressAdjacentPackageBridge'].get('currentRootPackageResourceRefRoleCounts') or {}))}</code></li>",
        f"<li>source scene resource refs: <code>{html.escape(', '.join(row.get('resourceName', '-') for row in summary['addressAdjacentPackageBridge'].get('sourceSceneRecordPackageResourceRefs') or []) or '-')}</code></li>",
        f"<li>target scene resource refs: <code>{html.escape(', '.join(row.get('resourceName', '-') for row in summary['addressAdjacentPackageBridge'].get('targetSceneRecordPackageResourceRefs') or []) or '-')}</code></li>",
        f"<li>current scene records use package resources: {summary['addressAdjacentPackageBridge'].get('currentSceneRecordsUsePackageResources')}</li>",
        f"<li>note: {html.escape(str(summary['addressAdjacentPackageBridge'].get('note') or ''))}</li>",
        "</ul>",
        "<h2>Promoting Exact Hits</h2>",
        "<table><thead><tr><th>selector</th><th>source</th><th>value</th><th>target label</th><th>source role</th><th>target class</th><th>metadata</th></tr></thead><tbody>",
        *[
            "<tr>"
            f"<td><code>{html.escape(hit['selector'])}</code></td>"
            f"<td><code>{html.escape(hit['sourceVaHex'])}</code></td>"
            f"<td><code>{html.escape(hit['valueHex'])}</code></td>"
            f"<td>{html.escape(hit['targetLabel'])}</td>"
            f"<td><code>{html.escape(hit['sourceLocationRole'])}</code></td>"
            f"<td><code>{html.escape(hit['targetClass'])}</code></td>"
            f"<td>{hit['metadataLike']}</td>"
            "</tr>"
            for hit in summary["aliasToCurrentPromotingMetadataHits"]
        ],
        "</tbody></table>",
        "<h2>Alias Bridge Summary</h2>",
        "<table><thead><tr><th>selector</th><th>role</th><th>public samples</th><th>hits</th><th>data</th><th>classes</th><th>after-fill data</th><th>after-fill classes</th><th>leaf corrected/effective</th><th>pre-writer targets</th><th>trace W/R/S</th><th>current-&gt;alias</th></tr></thead><tbody>",
        *[
            "<tr>"
            f"<td><code>{html.escape(row['selector'])}</code></td>"
            f"<td>{html.escape(str(row['role']))}</td>"
            f"<td><code>{html.escape(','.join(row['publicSampleIds']) or '-')}</code></td>"
            f"<td>{row['aliasToCurrentHitCount']}</td>"
            f"<td>{row['aliasToCurrentDataHitCount']}</td>"
            f"<td>{html.escape(class_counts_text(row['aliasToCurrentTargetClassCounts']))}</td>"
            f"<td>{row['aliasToCurrentAfterLastFillDataHitCount']}</td>"
            f"<td>{html.escape(class_counts_text(row['aliasToCurrentAfterLastFillTargetClassCounts']))}</td>"
            f"<td>{row['aliasToCurrentLeafTableCorrectedReaderHitCount']}/{row['aliasToCurrentLeafTableEffectiveReaderHitCount']}</td>"
            f"<td>{row['aliasToCurrentPreWriterUniqueTargetCount']}</td>"
            f"<td>{row['aliasToCurrentPreWriterTraceCurrentWriterHitCount']}/{row['aliasToCurrentPreWriterTraceCurrentReaderHitCount']}/{row['aliasToCurrentPreWriterTraceRouteSceneRecordHitCount']}</td>"
            f"<td>{row['currentToAliasHitCount']}</td>"
            "</tr>"
            for row in summary["aliasBridgeSummaryRows"]
        ],
        "</tbody></table>",
        "<h2>After Last Fill Summary</h2>",
        "<table><thead><tr><th>selector</th><th>tail hits</th><th>metadata</th><th>data</th><th>pre-writer</th><th>leaf-table</th><th>corrected/effective leaf reader</th><th>reader/scene</th><th>unique trace targets</th><th>trace W/R/S</th><th>execution-like</th></tr></thead><tbody>",
        *[
            "<tr>"
            f"<td><code>{html.escape(row['selector'])}</code></td>"
            f"<td>{row['aliasToCurrentAfterLastFillHitCount']}</td>"
            f"<td>{row['aliasToCurrentAfterLastFillMetadataHitCount']}</td>"
            f"<td>{row['aliasToCurrentAfterLastFillDataHitCount']}</td>"
            f"<td>{row['aliasToCurrentAfterLastFillPreWriterHitCount']}</td>"
            f"<td>{row['aliasToCurrentAfterLastFillLeafTableHitCount']}</td>"
            f"<td>{row['aliasToCurrentAfterLastFillLeafTableCorrectedReaderHitCount']}/{row['aliasToCurrentAfterLastFillLeafTableEffectiveReaderHitCount']}</td>"
            f"<td>{row['aliasToCurrentAfterLastFillReaderOrSceneRecordHitCount']}</td>"
            f"<td>{row['aliasToCurrentAfterLastFillPreWriterUniqueTargetCount']}</td>"
            f"<td>{row['aliasToCurrentAfterLastFillTraceCurrentWriterHitCount']}/{row['aliasToCurrentAfterLastFillTraceCurrentReaderHitCount']}/{row['aliasToCurrentAfterLastFillTraceRouteSceneRecordHitCount']}</td>"
            f"<td>{row['aliasToCurrentAfterLastFillExecutionLikeBridgeFound']}</td>"
            "</tr>"
            for row in summary["aliasRows"]
        ],
        "</tbody></table>",
        "<h2>Leaf-Table Hits</h2>",
        "<table><thead><tr><th>selector</th><th>source</th><th>entry</th><th>index</th><th>descriptor</th><th>child</th><th>route pair</th><th>raw reader</th><th>corrected reader</th><th>effective reader</th><th>frontier leaf</th></tr></thead><tbody>",
        *[
            "<tr>"
            f"<td><code>{html.escape(row['selector'])}</code></td>"
            f"<td><code>{html.escape(hit['sourceVaHex'])}</code></td>"
            f"<td><code>{html.escape(hit['valueHex'])}</code></td>"
            f"<td>{html.escape(str(hit.get('rootRelativeIndex')))}</td>"
            f"<td><code>{html.escape(str(hit.get('descriptorHex') or '-'))}</code></td>"
            f"<td><code>{html.escape(str(hit.get('childPointerHex') or '-'))}</code></td>"
            f"<td>{bool(hit.get('descriptorHasRoutePair') or hit.get('childHasRoutePair'))}</td>"
            f"<td>{bool(hit.get('descriptorTraceContainsFrontierReader') or hit.get('childTraceContainsFrontierReader'))}</td>"
            f"<td>{bool(hit.get('correctedDescriptorTraceContainsFrontierReader'))}</td>"
            f"<td>{bool(hit.get('descriptorTraceContainsFrontierReader') or hit.get('childTraceContainsFrontierReader') or hit.get('correctedDescriptorTraceContainsFrontierReader'))}</td>"
            f"<td>{hit.get('isFrontierLeafChild')}</td>"
            "</tr>"
            for row in summary["aliasRows"]
            for hit in row["aliasToCurrentLeafTableHits"]
        ],
        "</tbody></table>",
        "<h2>Pre-Writer Trace Targets</h2>",
        "<table><thead><tr><th>selector</th><th>target</th><th>hits</th><th>steps</th><th>stop</th><th>writer</th><th>reader</th><th>scene record</th><th>first opcodes</th></tr></thead><tbody>",
        *[
            "<tr>"
            f"<td><code>{html.escape(row['selector'])}</code></td>"
            f"<td><code>{html.escape(trace_row['targetHex'])}</code></td>"
            f"<td>{trace_row['sourceHitCount']}</td>"
            f"<td>{trace_row['traceStepCount']}</td>"
            f"<td>{html.escape(str(trace_row.get('traceStopReason') or '-'))} @ <code>{html.escape(str(trace_row.get('traceStopVaHex') or '-'))}</code></td>"
            f"<td>{trace_row['containsCurrentWriter']}</td>"
            f"<td>{trace_row['containsCurrentReader']}</td>"
            f"<td>{trace_row['containsRouteSceneRecord']}</td>"
            f"<td><code>{html.escape(','.join(trace_row.get('firstOpcodes') or []) or '-')}</code></td>"
            "</tr>"
            for row in summary["aliasRows"]
            for trace_row in row["aliasToCurrentPreWriterTraces"]
        ],
        "</tbody></table>",
        f"<p>{html.escape(summary['conclusion'])}</p>",
        "<h2>Alias Rows</h2>",
        "<table><thead><tr><th>selector</th><th>role</th><th>root range</th><th>fills</th><th>alias-&gt;current</th><th>metadata/data/promoting/promoting-data</th><th>after last fill hits</th><th>after-fill traces W/R/S</th><th>current-&gt;alias</th><th>execution-like</th></tr></thead><tbody>",
        alias_rows,
        "</tbody></table>",
        "<h2>Target Classes</h2>",
        "<ul>",
        *[
            f"<li><code>{html.escape(target_class)}</code>: {count}</li>"
            for target_class, count in sorted(summary["aliasToCurrentTargetClassCounts"].items())
        ],
        "</ul>",
        "<h2>After Last Fill Target Classes</h2>",
        "<ul>",
        *[
            f"<li><code>{html.escape(target_class)}</code>: {count}</li>"
            for target_class, count in sorted(summary["aliasToCurrentAfterLastFillTargetClassCounts"].items())
        ],
        "</ul>",
        "<h2>Forward Hits</h2>",
        *forward_sections,
        "<h2>Remaining Proofs</h2>",
        f"<ul>{proofs}</ul>",
    ])


def write_outputs(summary: dict, out_dir: Path = OUT) -> None:
    out_dir.mkdir(parents=True, exist_ok=True)
    (out_dir / "save_selector_target_alias_bridges.json").write_text(
        json.dumps(summary, ensure_ascii=False, indent=2) + "\n",
        encoding="utf-8",
    )
    (out_dir / "save_selector_target_alias_bridges.html").write_text(html_page(summary), encoding="utf-8")


def main() -> None:
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("--exe", type=Path, default=EXE)
    parser.add_argument("--selectors", type=Path, default=OUT / "save_scene_selectors.json")
    parser.add_argument("--mapset-aliases", type=Path, default=OUT / "save_selector_mapset_aliases.json")
    parser.add_argument("--secondary-fill-roots", type=Path, default=OUT / "save_selector_secondary_fill_roots.json")
    parser.add_argument("--leaf-index-space", type=Path, default=OUT / "save_selector_leaf_index_space.json")
    parser.add_argument("--address-predecessor-context", type=Path, default=OUT / "save_selector_address_predecessor_context.json")
    parser.add_argument("--out-dir", type=Path, default=OUT)
    args = parser.parse_args()
    summary = build_summary(
        args.exe.read_bytes(),
        load_json(args.selectors, []),
        load_json(args.mapset_aliases, {}),
        load_json(args.secondary_fill_roots, {}),
        load_json(args.leaf_index_space, {}),
        load_json(args.address_predecessor_context, {}),
    )
    write_outputs(summary, args.out_dir)
    print(f"wrote target alias bridges -> {args.out_dir / 'save_selector_target_alias_bridges.html'}")


if __name__ == "__main__":
    main()
