...les(blocks_root: Path):
    # Expected: blocks_raw\CONV_00XX__*\CONV_00XX_BLOCK_YY.txt
    return sorted(blocks_root.rglob("CONV_*_BLOCK_*.txt"))


def add_line_numbers(text: str) -> str:
    # L0001 ...
    lines = text.splitlines()
    out = []
    for i, line in enumerate(lines, start=1):
        out.append(f"L{i:04d} {line}")
    return "\n".join(out)


def strip_to_json(text: str) -> str:
    ""...