{
  "ok": true,
  "tool": "webftr-js8-post-ldpc-info87-runtime-export-probe",
  "tool_version": "step63-source-exact-interleaver-whitening-index-extract",
  "rx_only_guard": {
    "tx": false,
    "ptt": false,
    "tune": false,
    "send": false,
    "js8call_runtime_control": false
  },
  "no_gui_runtime_started": true,
  "input_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0000_0015.wav",
  "log_dir": "/decoders/js8_decoder/logs",
  "output_dir": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window0",
  "candidate_json": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window0/js8_step85_window_00_0000_0015_fec_candidate_step17.json",
  "matrix_error": null,
  "soft_error": null,
  "matrix_ok": true,
  "soft_ok": true,
  "runtime_info87_rows_count": 48,
  "zero_distance_candidate_count": 0,
  "best_distance": 4,
  "best_runtime_info87_row": {
    "source": "matrix_probe.all_matrix_probes",
    "row_name": "matrix_probe_16",
    "info87_bits": [
      0,
      1,
      0,
      1,
      1,
      1,
      1,
      1,
      1,
      0,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      0,
      1,
      1,
      0,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      0,
      1,
      1,
      1,
      1,
      0,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      0,
      1,
      1,
      1,
      1,
      1,
      0,
      1,
      1,
      1,
      0,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      0,
      1,
      1,
      1,
      1
    ],
    "info87_bitstring": "010111111011111111111101101111111111111011110111111111111101111101110111111111111101111",
    "info87_llr": [
      3.903775,
      -0.0,
      3.728239,
      -0.0,
      -0.0,
      -0.0,
      -4.067559,
      -0.0,
      -0.0,
      1.244573,
      -0.0,
      -0.0,
      -0.0,
      -3.475137,
      -0.0,
      -3.314887,
      -0.0,
      -0.0,
      -0.0,
      -0.0,
      -2.049638,
      -0.0,
      1.917489,
      -0.0,
      -0.0,
      1.113849,
      -0.0,
      -1.735293,
      -0.0,
      -0.0,
      -0.0,
      -0.0,
      -0.0,
      -0.0,
      -0.0,
      -0.0,
      -0.0,
      -4.040302,
      -0.0,
      2.039762,
      -0.0,
      -0.0,
      -0.0,
      -0.0,
      3.492025,
      -0.0,
      -0.072644,
      -0.0,
      -0.0,
      -0.544065,
      -0.0,
      -3.081186,
      -0.0,
      -0.0,
      -0.0,
      -1.520683,
      -3.370789,
      -0.0,
      3.84703,
      -0.0,
      -0.0,
      -0.0,
      -0.0,
      -2.896537,
      -0.371962,
      -0.0,
      -0.0,
      -0.0,
      2.072304,
      -0.0,
      -3.055165,
      -0.0,
      -0.0,
      -4.024359,
      -0.0,
      -3.522097,
      -0.0,
      -0.0,
      -0.0,
      -0.0,
      -2.144982,
      -0.0,
      2.747906,
      -0.0,
      -0.0,
      -0.0,
      -0.0
    ],
    "info87_llr_count": 87,
    "least_reliable_info87_indices": [
      1,
      3,
      4,
      5,
      7,
      8,
      10,
      11,
      12,
      14,
      16,
      17,
      18,
      19,
      21,
      23,
      24,
      26
    ],
    "message174_crc12": {
      "ok": true,
      "distance": 4,
      "crc_match": false,
      "received_crc12": 4079,
      "computed_crc12": 2766,
      "message_preview_12chars": "Nx+zl+xt+zzt",
      "message_words_6bit": [
        23,
        59,
        63,
        61,
        47,
        63,
        59,
        55,
        63,
        61,
        61,
        55
      ]
    },
    "source_index_context": {
      "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
      "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
      "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
      "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
    },
    "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
    "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword"
  },
  "runtime_info87_rows_preview": [
    {
      "source": "matrix_probe.all_matrix_probes",
      "row_name": "matrix_probe_16",
      "info87_bits": [
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1
      ],
      "info87_bitstring": "010111111011111111111101101111111111111011110111111111111101111101110111111111111101111",
      "info87_llr": [
        3.903775,
        -0.0,
        3.728239,
        -0.0,
        -0.0,
        -0.0,
        -4.067559,
        -0.0,
        -0.0,
        1.244573,
        -0.0,
        -0.0,
        -0.0,
        -3.475137,
        -0.0,
        -3.314887,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -2.049638,
        -0.0,
        1.917489,
        -0.0,
        -0.0,
        1.113849,
        -0.0,
        -1.735293,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -4.040302,
        -0.0,
        2.039762,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        3.492025,
        -0.0,
        -0.072644,
        -0.0,
        -0.0,
        -0.544065,
        -0.0,
        -3.081186,
        -0.0,
        -0.0,
        -0.0,
        -1.520683,
        -3.370789,
        -0.0,
        3.84703,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -2.896537,
        -0.371962,
        -0.0,
        -0.0,
        -0.0,
        2.072304,
        -0.0,
        -3.055165,
        -0.0,
        -0.0,
        -4.024359,
        -0.0,
        -3.522097,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -2.144982,
        -0.0,
        2.747906,
        -0.0,
        -0.0,
        -0.0,
        -0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        1,
        3,
        4,
        5,
        7,
        8,
        10,
        11,
        12,
        14,
        16,
        17,
        18,
        19,
        21,
        23,
        24,
        26
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 4,
        "crc_match": false,
        "received_crc12": 4079,
        "computed_crc12": 2766,
        "message_preview_12chars": "Nx+zl+xt+zzt",
        "message_words_6bit": [
          23,
          59,
          63,
          61,
          47,
          63,
          59,
          55,
          63,
          61,
          61,
          55
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
      "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword"
    },
    {
      "source": "matrix_probe.all_matrix_probes",
      "row_name": "matrix_probe_2",
      "info87_bits": [
        1,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "101000000000110110010010010000010101101110100101110000000000000000000000000000000000000",
      "info87_llr": [
        -3.84703,
        4.070281,
        0.0,
        0.0,
        0.994676,
        0.356328,
        0.072644,
        3.522097,
        0.0,
        0.0,
        1.053028,
        1.059526,
        -1.217068,
        -1.917489,
        0.0,
        -0.0,
        -1.113849,
        2.103109,
        0.0,
        0.0,
        1.066436,
        1.020508,
        -3.550132,
        3.475137,
        0.0,
        0.0,
        0.981988,
        0.731089,
        3.370789,
        4.024359,
        0.951884,
        -0.943953,
        4.116626,
        -0.866097,
        0.0,
        -0.0,
        -0.843506,
        0.963577,
        -3.728239,
        -2.005133,
        0.0,
        0.0,
        0.184387,
        0.458686,
        4.61604,
        -1.650458,
        0.0,
        0.0,
        -0.223834,
        -1.244573,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        2,
        3,
        8,
        9,
        14,
        15,
        18,
        19,
        24,
        25,
        34,
        35,
        40,
        41,
        46,
        47,
        50,
        51
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 4,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 2194,
        "message_preview_12chars": "e0sIGLkbm000",
        "message_words_6bit": [
          40,
          0,
          54,
          18,
          16,
          21,
          46,
          37,
          48,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse"
    },
    {
      "source": "matrix_probe.all_matrix_probes",
      "row_name": "matrix_probe_4",
      "info87_bits": [
        1,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "101000000000110110010010010000010101101110100101110000000000000000000000000000000000000",
      "info87_llr": [
        -3.84703,
        4.070281,
        0.0,
        0.0,
        0.0,
        0.0,
        0.072644,
        3.522097,
        0.0,
        0.0,
        0.0,
        0.0,
        -1.217068,
        -1.917489,
        0.0,
        -0.0,
        -1.113849,
        2.103109,
        0.0,
        0.0,
        0.0,
        0.0,
        -3.550132,
        3.475137,
        0.0,
        0.0,
        0.0,
        0.0,
        3.370789,
        4.024359,
        0.0,
        0.0,
        4.116626,
        -0.866097,
        0.0,
        -0.0,
        0.0,
        0.0,
        -3.728239,
        -2.005133,
        0.0,
        0.0,
        0.0,
        0.0,
        4.61604,
        -1.650458,
        0.0,
        0.0,
        -0.223834,
        -1.244573,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        2,
        3,
        4,
        5,
        8,
        9,
        10,
        11,
        14,
        15,
        18,
        19,
        20,
        21,
        24,
        25,
        26,
        27
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 4,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 2194,
        "message_preview_12chars": "e0sIGLkbm000",
        "message_words_6bit": [
          40,
          0,
          54,
          18,
          16,
          21,
          46,
          37,
          48,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse"
    },
    {
      "source": "matrix_probe.post_ldpc_info87_llr_rows",
      "row_name": "matrix_export_16",
      "info87_bits": [
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1
      ],
      "info87_bitstring": "010111111011111111111101101111111111111011110111111111111101111101110111111111111101111",
      "info87_llr": [
        3.903775,
        -0.0,
        3.728239,
        -0.0,
        -0.0,
        -0.0,
        -4.067559,
        -0.0,
        -0.0,
        1.244573,
        -0.0,
        -0.0,
        -0.0,
        -3.475137,
        -0.0,
        -3.314887,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -2.049638,
        -0.0,
        1.917489,
        -0.0,
        -0.0,
        1.113849,
        -0.0,
        -1.735293,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -4.040302,
        -0.0,
        2.039762,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        3.492025,
        -0.0,
        -0.072644,
        -0.0,
        -0.0,
        -0.544065,
        -0.0,
        -3.081186,
        -0.0,
        -0.0,
        -0.0,
        -1.520683,
        -3.370789,
        -0.0,
        3.84703,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -2.896537,
        -0.371962,
        -0.0,
        -0.0,
        -0.0,
        2.072304,
        -0.0,
        -3.055165,
        -0.0,
        -0.0,
        -4.024359,
        -0.0,
        -3.522097,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -2.144982,
        -0.0,
        2.747906,
        -0.0,
        -0.0,
        -0.0,
        -0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        1,
        3,
        4,
        5,
        7,
        8,
        10,
        11,
        12,
        14,
        16,
        17,
        18,
        19,
        21,
        23,
        24,
        26
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 4,
        "crc_match": false,
        "received_crc12": 4079,
        "computed_crc12": 2766,
        "message_preview_12chars": "Nx+zl+xt+zzt",
        "message_words_6bit": [
          23,
          59,
          63,
          61,
          47,
          63,
          59,
          55,
          63,
          61,
          61,
          55
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "matrix_meta": {}
    },
    {
      "source": "matrix_probe.post_ldpc_info87_llr_rows",
      "row_name": "matrix_export_2",
      "info87_bits": [
        1,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "101000000000110110010010010000010101101110100101110000000000000000000000000000000000000",
      "info87_llr": [
        -3.84703,
        4.070281,
        0.0,
        0.0,
        0.994676,
        0.356328,
        0.072644,
        3.522097,
        0.0,
        0.0,
        1.053028,
        1.059526,
        -1.217068,
        -1.917489,
        0.0,
        -0.0,
        -1.113849,
        2.103109,
        0.0,
        0.0,
        1.066436,
        1.020508,
        -3.550132,
        3.475137,
        0.0,
        0.0,
        0.981988,
        0.731089,
        3.370789,
        4.024359,
        0.951884,
        -0.943953,
        4.116626,
        -0.866097,
        0.0,
        -0.0,
        -0.843506,
        0.963577,
        -3.728239,
        -2.005133,
        0.0,
        0.0,
        0.184387,
        0.458686,
        4.61604,
        -1.650458,
        0.0,
        0.0,
        -0.223834,
        -1.244573,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        2,
        3,
        8,
        9,
        14,
        15,
        18,
        19,
        24,
        25,
        34,
        35,
        40,
        41,
        46,
        47,
        50,
        51
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 4,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 2194,
        "message_preview_12chars": "e0sIGLkbm000",
        "message_words_6bit": [
          40,
          0,
          54,
          18,
          16,
          21,
          46,
          37,
          48,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "matrix_meta": {}
    },
    {
      "source": "matrix_probe.post_ldpc_info87_llr_rows",
      "row_name": "matrix_export_4",
      "info87_bits": [
        1,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "101000000000110110010010010000010101101110100101110000000000000000000000000000000000000",
      "info87_llr": [
        -3.84703,
        4.070281,
        0.0,
        0.0,
        0.0,
        0.0,
        0.072644,
        3.522097,
        0.0,
        0.0,
        0.0,
        0.0,
        -1.217068,
        -1.917489,
        0.0,
        -0.0,
        -1.113849,
        2.103109,
        0.0,
        0.0,
        0.0,
        0.0,
        -3.550132,
        3.475137,
        0.0,
        0.0,
        0.0,
        0.0,
        3.370789,
        4.024359,
        0.0,
        0.0,
        4.116626,
        -0.866097,
        0.0,
        -0.0,
        0.0,
        0.0,
        -3.728239,
        -2.005133,
        0.0,
        0.0,
        0.0,
        0.0,
        4.61604,
        -1.650458,
        0.0,
        0.0,
        -0.223834,
        -1.244573,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        2,
        3,
        4,
        5,
        8,
        9,
        10,
        11,
        14,
        15,
        18,
        19,
        20,
        21,
        24,
        25,
        26,
        27
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 4,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 2194,
        "message_preview_12chars": "e0sIGLkbm000",
        "message_words_6bit": [
          40,
          0,
          54,
          18,
          16,
          21,
          46,
          37,
          48,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "matrix_meta": {}
    },
    {
      "source": "soft_decode.post_ldpc_info87_llr_rows",
      "row_name": "soft_export_0",
      "info87_bits": [
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "100000000000110010000010000000000100001100000100110000000000000000000000000000000000000",
      "info87_llr": [
        -3.84703,
        4.070281,
        0.0,
        0.0,
        0.0,
        0.0,
        0.072644,
        3.522097,
        0.0,
        0.0,
        0.0,
        0.0,
        -1.217068,
        -1.917489,
        0.0,
        -0.0,
        -1.113849,
        2.103109,
        0.0,
        0.0,
        0.0,
        0.0,
        -3.550132,
        3.475137,
        0.0,
        0.0,
        0.0,
        0.0,
        3.370789,
        4.024359,
        0.0,
        0.0,
        4.116626,
        -0.866097,
        0.0,
        -0.0,
        0.0,
        0.0,
        -3.728239,
        -2.005133,
        0.0,
        0.0,
        0.0,
        0.0,
        4.61604,
        -1.650458,
        0.0,
        0.0,
        -0.223834,
        -1.244573,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        2,
        3,
        4,
        5,
        8,
        9,
        10,
        11,
        14,
        15,
        18,
        19,
        20,
        21,
        24,
        25,
        26,
        27
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 4,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 2098,
        "message_preview_12chars": "W0o204C4m000",
        "message_words_6bit": [
          32,
          0,
          50,
          2,
          0,
          4,
          12,
          4,
          48,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "soft_meta": {}
    },
    {
      "source": "soft_decode.post_ldpc_info87_llr_rows",
      "row_name": "soft_export_1",
      "info87_bits": [
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "100000000000110010000010000000000100001100000100110000000000000000000000000000000000000",
      "info87_llr": [
        -3.84703,
        4.070281,
        0.0,
        0.0,
        0.0,
        0.0,
        0.072644,
        3.522097,
        0.0,
        0.0,
        0.0,
        0.0,
        -1.217068,
        -1.917489,
        0.0,
        -0.0,
        -1.113849,
        2.103109,
        0.0,
        0.0,
        0.0,
        0.0,
        -3.550132,
        3.475137,
        0.0,
        0.0,
        0.0,
        0.0,
        3.370789,
        4.024359,
        0.0,
        0.0,
        4.116626,
        -0.866097,
        0.0,
        -0.0,
        0.0,
        0.0,
        -3.728239,
        -2.005133,
        0.0,
        0.0,
        0.0,
        0.0,
        4.61604,
        -1.650458,
        0.0,
        0.0,
        -0.223834,
        -1.244573,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        2,
        3,
        4,
        5,
        8,
        9,
        10,
        11,
        14,
        15,
        18,
        19,
        20,
        21,
        24,
        25,
        26,
        27
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 4,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 2098,
        "message_preview_12chars": "W0o204C4m000",
        "message_words_6bit": [
          32,
          0,
          50,
          2,
          0,
          4,
          12,
          4,
          48,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "soft_meta": {}
    },
    {
      "source": "soft_decode.soft_decode_results",
      "row_name": "soft_result_0",
      "info87_bits": [
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "100000000000110010000010000000000100001100000100110000000000000000000000000000000000000",
      "info87_llr": [
        -3.84703,
        4.070281,
        0.0,
        0.0,
        0.0,
        0.0,
        0.072644,
        3.522097,
        0.0,
        0.0,
        0.0,
        0.0,
        -1.217068,
        -1.917489,
        0.0,
        -0.0,
        -1.113849,
        2.103109,
        0.0,
        0.0,
        0.0,
        0.0,
        -3.550132,
        3.475137,
        0.0,
        0.0,
        0.0,
        0.0,
        3.370789,
        4.024359,
        0.0,
        0.0,
        4.116626,
        -0.866097,
        0.0,
        -0.0,
        0.0,
        0.0,
        -3.728239,
        -2.005133,
        0.0,
        0.0,
        0.0,
        0.0,
        4.61604,
        -1.650458,
        0.0,
        0.0,
        -0.223834,
        -1.244573,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        2,
        3,
        4,
        5,
        8,
        9,
        10,
        11,
        14,
        15,
        18,
        19,
        20,
        21,
        24,
        25,
        26,
        27
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 4,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 2098,
        "message_preview_12chars": "W0o204C4m000",
        "message_words_6bit": [
          32,
          0,
          50,
          2,
          0,
          4,
          12,
          4,
          48,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse"
    },
    {
      "source": "soft_decode.soft_decode_results",
      "row_name": "soft_result_1",
      "info87_bits": [
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "100000000000110010000010000000000100001100000100110000000000000000000000000000000000000",
      "info87_llr": [
        -3.84703,
        4.070281,
        0.0,
        0.0,
        0.0,
        0.0,
        0.072644,
        3.522097,
        0.0,
        0.0,
        0.0,
        0.0,
        -1.217068,
        -1.917489,
        0.0,
        -0.0,
        -1.113849,
        2.103109,
        0.0,
        0.0,
        0.0,
        0.0,
        -3.550132,
        3.475137,
        0.0,
        0.0,
        0.0,
        0.0,
        3.370789,
        4.024359,
        0.0,
        0.0,
        4.116626,
        -0.866097,
        0.0,
        -0.0,
        0.0,
        0.0,
        -3.728239,
        -2.005133,
        0.0,
        0.0,
        0.0,
        0.0,
        4.61604,
        -1.650458,
        0.0,
        0.0,
        -0.223834,
        -1.244573,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        2,
        3,
        4,
        5,
        8,
        9,
        10,
        11,
        14,
        15,
        18,
        19,
        20,
        21,
        24,
        25,
        26,
        27
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 4,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 2098,
        "message_preview_12chars": "W0o204C4m000",
        "message_words_6bit": [
          32,
          0,
          50,
          2,
          0,
          4,
          12,
          4,
          48,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse"
    },
    {
      "source": "matrix_probe.all_matrix_probes",
      "row_name": "matrix_probe_13",
      "info87_bits": [
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        1,
        1,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "100000000000101101011011011000011100100101110100101000000000000000000000000000000000000",
      "info87_llr": [
        -3.84703,
        3.302363,
        0.0,
        0.0,
        0.471575,
        0.55713,
        0.072644,
        0.132996,
        0.0,
        0.0,
        0.807216,
        1.019938,
        -1.217068,
        0.587027,
        0.0,
        -0.0,
        0.607786,
        -1.081058,
        0.0,
        0.0,
        -0.468384,
        1.020508,
        -2.838815,
        -2.835727,
        0.0,
        0.0,
        -0.918831,
        0.731089,
        1.580571,
        3.005957,
        0.951884,
        -0.824667,
        -2.534017,
        -0.866097,
        0.0,
        0.0,
        -0.843506,
        0.916839,
        1.805753,
        -2.005133,
        0.0,
        -0.0,
        0.184387,
        0.086546,
        0.95835,
        -1.650458,
        0.0,
        0.0,
        -0.223834,
        -0.097243,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        2,
        3,
        8,
        9,
        14,
        15,
        18,
        19,
        24,
        25,
        34,
        35,
        40,
        41,
        46,
        47,
        50,
        51
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 5,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 3334,
        "message_preview_12chars": "W0jROSbqe000",
        "message_words_6bit": [
          32,
          0,
          45,
          27,
          24,
          28,
          37,
          52,
          40,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse"
    },
    {
      "source": "matrix_probe.all_matrix_probes",
      "row_name": "matrix_probe_14",
      "info87_bits": [
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        1,
        1,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "100000000000101101011011011000011100100101110100101000000000000000000000000000000000000",
      "info87_llr": [
        -3.84703,
        3.302363,
        0.0,
        0.0,
        0.0,
        0.0,
        0.072644,
        0.132996,
        0.0,
        0.0,
        0.0,
        0.0,
        -1.217068,
        0.587027,
        0.0,
        -0.0,
        0.607786,
        -1.081058,
        0.0,
        0.0,
        0.0,
        0.0,
        -2.838815,
        -2.835727,
        0.0,
        0.0,
        0.0,
        0.0,
        1.580571,
        3.005957,
        0.0,
        0.0,
        -2.534017,
        -0.866097,
        0.0,
        0.0,
        0.0,
        0.0,
        1.805753,
        -2.005133,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.95835,
        -1.650458,
        0.0,
        0.0,
        -0.223834,
        -0.097243,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        2,
        3,
        4,
        5,
        8,
        9,
        10,
        11,
        14,
        15,
        18,
        19,
        20,
        21,
        24,
        25,
        26,
        27
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 5,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 3334,
        "message_preview_12chars": "W0jROSbqe000",
        "message_words_6bit": [
          32,
          0,
          45,
          27,
          24,
          28,
          37,
          52,
          40,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse"
    },
    {
      "source": "matrix_probe.all_matrix_probes",
      "row_name": "matrix_probe_3",
      "info87_bits": [
        0,
        0,
        1,
        1,
        0,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        0,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        0,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1
      ],
      "info87_bitstring": "001100111111001111001111001100111111001100110111111100110111001111111111111111111111111",
      "info87_llr": [
        3.84703,
        -0.0,
        -0.0,
        -0.0,
        0.956242,
        0.956242,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        0.866097,
        -0.0,
        -0.0,
        -0.0,
        -0.03631,
        -0.03631,
        1.006402,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        1.081058,
        -0.0,
        -0.0,
        -0.0,
        0.803242,
        0.803242,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.737256,
        -0.737256,
        2.733105,
        -0.0,
        -0.0,
        -0.0,
        0.740724,
        0.740724,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -2.144982,
        -0.0,
        -0.0,
        -0.0,
        0.824667,
        0.824667,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.371962,
        -0.0,
        -0.0,
        -0.0,
        -1.00331,
        -1.00331,
        -1.747553,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.587027,
        -0.0,
        -0.0,
        -0.0,
        -0.390189,
        -0.390189,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -2.805792,
        -0.0,
        -0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        1,
        2,
        3,
        6,
        7,
        8,
        9,
        10,
        11,
        13,
        14,
        15,
        19,
        20,
        21,
        22,
        23,
        25
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 5,
        "crc_match": false,
        "received_crc12": 4095,
        "computed_crc12": 988,
        "message_preview_12chars": "C+FFC+CtytF+",
        "message_words_6bit": [
          12,
          63,
          15,
          15,
          12,
          63,
          12,
          55,
          60,
          55,
          15,
          63
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
      "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword"
    },
    {
      "source": "matrix_probe.post_ldpc_info87_llr_rows",
      "row_name": "matrix_export_13",
      "info87_bits": [
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        1,
        1,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "100000000000101101011011011000011100100101110100101000000000000000000000000000000000000",
      "info87_llr": [
        -3.84703,
        3.302363,
        0.0,
        0.0,
        0.471575,
        0.55713,
        0.072644,
        0.132996,
        0.0,
        0.0,
        0.807216,
        1.019938,
        -1.217068,
        0.587027,
        0.0,
        -0.0,
        0.607786,
        -1.081058,
        0.0,
        0.0,
        -0.468384,
        1.020508,
        -2.838815,
        -2.835727,
        0.0,
        0.0,
        -0.918831,
        0.731089,
        1.580571,
        3.005957,
        0.951884,
        -0.824667,
        -2.534017,
        -0.866097,
        0.0,
        0.0,
        -0.843506,
        0.916839,
        1.805753,
        -2.005133,
        0.0,
        -0.0,
        0.184387,
        0.086546,
        0.95835,
        -1.650458,
        0.0,
        0.0,
        -0.223834,
        -0.097243,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        2,
        3,
        8,
        9,
        14,
        15,
        18,
        19,
        24,
        25,
        34,
        35,
        40,
        41,
        46,
        47,
        50,
        51
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 5,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 3334,
        "message_preview_12chars": "W0jROSbqe000",
        "message_words_6bit": [
          32,
          0,
          45,
          27,
          24,
          28,
          37,
          52,
          40,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "matrix_meta": {}
    },
    {
      "source": "matrix_probe.post_ldpc_info87_llr_rows",
      "row_name": "matrix_export_14",
      "info87_bits": [
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        1,
        1,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "100000000000101101011011011000011100100101110100101000000000000000000000000000000000000",
      "info87_llr": [
        -3.84703,
        3.302363,
        0.0,
        0.0,
        0.0,
        0.0,
        0.072644,
        0.132996,
        0.0,
        0.0,
        0.0,
        0.0,
        -1.217068,
        0.587027,
        0.0,
        -0.0,
        0.607786,
        -1.081058,
        0.0,
        0.0,
        0.0,
        0.0,
        -2.838815,
        -2.835727,
        0.0,
        0.0,
        0.0,
        0.0,
        1.580571,
        3.005957,
        0.0,
        0.0,
        -2.534017,
        -0.866097,
        0.0,
        0.0,
        0.0,
        0.0,
        1.805753,
        -2.005133,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.95835,
        -1.650458,
        0.0,
        0.0,
        -0.223834,
        -0.097243,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        -0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        2,
        3,
        4,
        5,
        8,
        9,
        10,
        11,
        14,
        15,
        18,
        19,
        20,
        21,
        24,
        25,
        26,
        27
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 5,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 3334,
        "message_preview_12chars": "W0jROSbqe000",
        "message_words_6bit": [
          32,
          0,
          45,
          27,
          24,
          28,
          37,
          52,
          40,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "matrix_meta": {}
    },
    {
      "source": "matrix_probe.post_ldpc_info87_llr_rows",
      "row_name": "matrix_export_3",
      "info87_bits": [
        0,
        0,
        1,
        1,
        0,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        0,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        0,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1
      ],
      "info87_bitstring": "001100111111001111001111001100111111001100110111111100110111001111111111111111111111111",
      "info87_llr": [
        3.84703,
        -0.0,
        -0.0,
        -0.0,
        0.956242,
        0.956242,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        0.866097,
        -0.0,
        -0.0,
        -0.0,
        -0.03631,
        -0.03631,
        1.006402,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        1.081058,
        -0.0,
        -0.0,
        -0.0,
        0.803242,
        0.803242,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.737256,
        -0.737256,
        2.733105,
        -0.0,
        -0.0,
        -0.0,
        0.740724,
        0.740724,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -2.144982,
        -0.0,
        -0.0,
        -0.0,
        0.824667,
        0.824667,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.371962,
        -0.0,
        -0.0,
        -0.0,
        -1.00331,
        -1.00331,
        -1.747553,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.587027,
        -0.0,
        -0.0,
        -0.0,
        -0.390189,
        -0.390189,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        -2.805792,
        -0.0,
        -0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        1,
        2,
        3,
        6,
        7,
        8,
        9,
        10,
        11,
        13,
        14,
        15,
        19,
        20,
        21,
        22,
        23,
        25
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 5,
        "crc_match": false,
        "received_crc12": 4095,
        "computed_crc12": 988,
        "message_preview_12chars": "C+FFC+CtytF+",
        "message_words_6bit": [
          12,
          63,
          15,
          15,
          12,
          63,
          12,
          55,
          60,
          55,
          15,
          63
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "matrix_meta": {}
    },
    {
      "source": "matrix_probe.all_matrix_probes",
      "row_name": "matrix_probe_10",
      "info87_bits": [
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        0,
        0,
        0,
        1,
        0,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        0,
        0,
        0,
        1,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "001000000000011011101101101000101001001011110001011000000000000000000000000000000000000",
      "info87_llr": [
        3.302363,
        2.594768,
        -2.845718,
        1.002312,
        0.514013,
        0.387826,
        0.132996,
        0.120732,
        2.467688,
        2.02146,
        1.815203,
        3.07884,
        0.587027,
        -0.410081,
        -1.272161,
        0.607786,
        -0.293051,
        -0.814257,
        -0.458664,
        0.208113,
        -0.96643,
        -2.838815,
        2.147549,
        -2.413842,
        -2.733105,
        1.965755,
        -2.100455,
        1.580571,
        1.375261,
        2.698495,
        -2.095367,
        1.607397,
        -2.348466,
        2.757916,
        0.70672,
        -0.768541,
        2.568328,
        1.43542,
        -1.673206,
        0.925458,
        -0.671741,
        -1.319132,
        0.173418,
        0.077117,
        0.936672,
        1.747553,
        1.088577,
        -1.037263,
        -0.097243,
        0.045154,
        -0.614553,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        51,
        52,
        53,
        54,
        55,
        56,
        57,
        58,
        59,
        60,
        61,
        62,
        63,
        64,
        65,
        66,
        67,
        68
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 6,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 1148,
        "message_preview_12chars": "80RjefBnO000",
        "message_words_6bit": [
          8,
          0,
          27,
          45,
          40,
          41,
          11,
          49,
          24,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver",
      "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver"
    },
    {
      "source": "matrix_probe.all_matrix_probes",
      "row_name": "matrix_probe_12",
      "info87_bits": [
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0
      ],
      "info87_bitstring": "100000000000100000100000100000000000000010001000000000001000100000001000100000000000100",
      "info87_llr": [
        -3.259655,
        0.0,
        0.927954,
        0.0,
        2.131585,
        0.0,
        0.0,
        0.0,
        3.044819,
        0.0,
        0.0,
        0.0,
        -0.781632,
        0.0,
        0.0,
        0.0,
        0.068472,
        0.0,
        -0.462678,
        0.0,
        1.351633,
        0.0,
        0.0,
        0.0,
        -0.640133,
        0.0,
        0.0,
        0.0,
        1.34651,
        0.0,
        0.0,
        0.0,
        0.498652,
        0.0,
        0.946898,
        0.0,
        1.942077,
        0.0,
        0.0,
        0.0,
        -1.015452,
        0.0,
        0.0,
        0.0,
        -1.788252,
        0.0,
        0.0,
        0.0,
        2.007042,
        0.0,
        0.0,
        0.0,
        1.597987,
        0.0,
        0.0,
        0.0,
        -0.959131,
        0.0,
        0.0,
        0.0,
        0.166158,
        0.0,
        0.0,
        0.0,
        2.858617,
        0.0,
        0.913998,
        0.0,
        -2.707497,
        0.0,
        0.0,
        0.0,
        -0.486017,
        0.0,
        0.0,
        0.0,
        2.343998,
        0.0,
        0.0,
        0.0,
        2.276317,
        0.0,
        0.0,
        0.0,
        -2.087149,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        1,
        3,
        5,
        6,
        7,
        9,
        10,
        11,
        13,
        14,
        15,
        17,
        19,
        21,
        22,
        23,
        25,
        26
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 6,
        "crc_match": false,
        "received_crc12": 4,
        "computed_crc12": 3720,
        "message_preview_12chars": "W0WWW02808W8",
        "message_words_6bit": [
          32,
          0,
          32,
          32,
          32,
          0,
          2,
          8,
          0,
          8,
          32,
          8
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver"
    },
    {
      "source": "matrix_probe.all_matrix_probes",
      "row_name": "matrix_probe_15",
      "info87_bits": [
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        0,
        1,
        1,
        1
      ],
      "info87_bitstring": "010110111111110111101101111101101110111111110010111111111001101011111010111110111010111",
      "info87_llr": [
        -0.371962,
        -0.0,
        3.84703,
        -0.0,
        -3.1786,
        1.244573,
        -3.304358,
        -0.0,
        -0.0,
        -0.0,
        -4.040302,
        -0.0,
        -2.16115,
        -0.0,
        1.217068,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        1.016056,
        -0.0,
        -0.0,
        3.550132,
        -0.0,
        -4.067559,
        -0.0,
        -1.520683,
        -4.024359,
        0.223834,
        -1.735293,
        -0.0,
        2.747906,
        -0.0,
        -0.0,
        -0.0,
        0.866097,
        -0.0,
        -2.896537,
        -0.0,
        -2.049638,
        -0.0,
        -0.0,
        -0.0,
        -0.971433,
        3.903775,
        1.641699,
        -3.055165,
        1.650458,
        -3.314887,
        -0.544065,
        -3.370789,
        -3.522097,
        -0.0,
        -4.198216,
        -2.805792,
        -0.0,
        -3.081186,
        1.917489,
        3.728239,
        -2.103109,
        -0.0,
        2.072304,
        -0.0,
        2.005133,
        -0.0,
        -3.475137,
        -2.144982,
        -3.481024,
        -0.0,
        3.492025,
        -0.0,
        1.113849,
        -0.0,
        -4.397118,
        -4.116626,
        -1.032513,
        -0.0,
        3.683064,
        -0.0,
        -0.072644,
        -0.0,
        2.179638,
        -0.736832,
        2.039762,
        -0.0,
        -4.61604,
        -4.070281
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        1,
        3,
        7,
        8,
        9,
        11,
        13,
        15,
        16,
        17,
        18,
        20,
        21,
        23,
        25,
        30,
        32,
        33
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 6,
        "crc_match": false,
        "received_crc12": 3543,
        "computed_crc12": 3890,
        "message_preview_12chars": "M+tjzk+o+vhw",
        "message_words_6bit": [
          22,
          63,
          55,
          45,
          61,
          46,
          63,
          50,
          63,
          57,
          43,
          58
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
      "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword"
    },
    {
      "source": "matrix_probe.all_matrix_probes",
      "row_name": "matrix_probe_9",
      "info87_bits": [
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        0,
        0,
        0,
        1,
        0,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        0,
        0,
        0,
        1,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "001000000000011011101101101000101001001011110001011000000000000000000000000000000000000",
      "info87_llr": [
        3.302363,
        3.25263,
        -2.348985,
        1.002312,
        0.721564,
        0.588251,
        0.132996,
        0.181135,
        2.697169,
        2.02146,
        1.828782,
        3.118228,
        0.587027,
        -0.520486,
        -1.432345,
        0.607786,
        -0.370865,
        -0.90483,
        -0.458664,
        0.194261,
        -0.983668,
        -2.838815,
        1.902866,
        -2.80789,
        -2.733105,
        1.664597,
        -2.545159,
        1.580571,
        1.392205,
        2.745399,
        -2.095367,
        1.52224,
        -2.512216,
        2.757916,
        0.809921,
        -0.666809,
        2.568328,
        1.795894,
        -1.337623,
        0.925458,
        -0.78217,
        -1.471544,
        0.173418,
        0.085104,
        0.946548,
        1.747553,
        1.627368,
        -0.621794,
        -0.097243,
        -0.129806,
        -0.812639,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        51,
        52,
        53,
        54,
        55,
        56,
        57,
        58,
        59,
        60,
        61,
        62,
        63,
        64,
        65,
        66,
        67,
        68
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 6,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 1148,
        "message_preview_12chars": "80RjefBnO000",
        "message_words_6bit": [
          8,
          0,
          27,
          45,
          40,
          41,
          11,
          49,
          24,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver",
      "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver"
    },
    {
      "source": "matrix_probe.post_ldpc_info87_llr_rows",
      "row_name": "matrix_export_10",
      "info87_bits": [
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        0,
        0,
        0,
        1,
        0,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        0,
        0,
        0,
        1,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "001000000000011011101101101000101001001011110001011000000000000000000000000000000000000",
      "info87_llr": [
        3.302363,
        2.594768,
        -2.845718,
        1.002312,
        0.514013,
        0.387826,
        0.132996,
        0.120732,
        2.467688,
        2.02146,
        1.815203,
        3.07884,
        0.587027,
        -0.410081,
        -1.272161,
        0.607786,
        -0.293051,
        -0.814257,
        -0.458664,
        0.208113,
        -0.96643,
        -2.838815,
        2.147549,
        -2.413842,
        -2.733105,
        1.965755,
        -2.100455,
        1.580571,
        1.375261,
        2.698495,
        -2.095367,
        1.607397,
        -2.348466,
        2.757916,
        0.70672,
        -0.768541,
        2.568328,
        1.43542,
        -1.673206,
        0.925458,
        -0.671741,
        -1.319132,
        0.173418,
        0.077117,
        0.936672,
        1.747553,
        1.088577,
        -1.037263,
        -0.097243,
        0.045154,
        -0.614553,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        51,
        52,
        53,
        54,
        55,
        56,
        57,
        58,
        59,
        60,
        61,
        62,
        63,
        64,
        65,
        66,
        67,
        68
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 6,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 1148,
        "message_preview_12chars": "80RjefBnO000",
        "message_words_6bit": [
          8,
          0,
          27,
          45,
          40,
          41,
          11,
          49,
          24,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "matrix_meta": {}
    },
    {
      "source": "matrix_probe.post_ldpc_info87_llr_rows",
      "row_name": "matrix_export_12",
      "info87_bits": [
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        0,
        0
      ],
      "info87_bitstring": "100000000000100000100000100000000000000010001000000000001000100000001000100000000000100",
      "info87_llr": [
        -3.259655,
        0.0,
        0.927954,
        0.0,
        2.131585,
        0.0,
        0.0,
        0.0,
        3.044819,
        0.0,
        0.0,
        0.0,
        -0.781632,
        0.0,
        0.0,
        0.0,
        0.068472,
        0.0,
        -0.462678,
        0.0,
        1.351633,
        0.0,
        0.0,
        0.0,
        -0.640133,
        0.0,
        0.0,
        0.0,
        1.34651,
        0.0,
        0.0,
        0.0,
        0.498652,
        0.0,
        0.946898,
        0.0,
        1.942077,
        0.0,
        0.0,
        0.0,
        -1.015452,
        0.0,
        0.0,
        0.0,
        -1.788252,
        0.0,
        0.0,
        0.0,
        2.007042,
        0.0,
        0.0,
        0.0,
        1.597987,
        0.0,
        0.0,
        0.0,
        -0.959131,
        0.0,
        0.0,
        0.0,
        0.166158,
        0.0,
        0.0,
        0.0,
        2.858617,
        0.0,
        0.913998,
        0.0,
        -2.707497,
        0.0,
        0.0,
        0.0,
        -0.486017,
        0.0,
        0.0,
        0.0,
        2.343998,
        0.0,
        0.0,
        0.0,
        2.276317,
        0.0,
        0.0,
        0.0,
        -2.087149,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        1,
        3,
        5,
        6,
        7,
        9,
        10,
        11,
        13,
        14,
        15,
        17,
        19,
        21,
        22,
        23,
        25,
        26
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 6,
        "crc_match": false,
        "received_crc12": 4,
        "computed_crc12": 3720,
        "message_preview_12chars": "W0WWW02808W8",
        "message_words_6bit": [
          32,
          0,
          32,
          32,
          32,
          0,
          2,
          8,
          0,
          8,
          32,
          8
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "matrix_meta": {}
    },
    {
      "source": "matrix_probe.post_ldpc_info87_llr_rows",
      "row_name": "matrix_export_15",
      "info87_bits": [
        0,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        1,
        0,
        0,
        1,
        1,
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        0,
        1,
        1,
        1
      ],
      "info87_bitstring": "010110111111110111101101111101101110111111110010111111111001101011111010111110111010111",
      "info87_llr": [
        -0.371962,
        -0.0,
        3.84703,
        -0.0,
        -3.1786,
        1.244573,
        -3.304358,
        -0.0,
        -0.0,
        -0.0,
        -4.040302,
        -0.0,
        -2.16115,
        -0.0,
        1.217068,
        -0.0,
        -0.0,
        -0.0,
        -0.0,
        1.016056,
        -0.0,
        -0.0,
        3.550132,
        -0.0,
        -4.067559,
        -0.0,
        -1.520683,
        -4.024359,
        0.223834,
        -1.735293,
        -0.0,
        2.747906,
        -0.0,
        -0.0,
        -0.0,
        0.866097,
        -0.0,
        -2.896537,
        -0.0,
        -2.049638,
        -0.0,
        -0.0,
        -0.0,
        -0.971433,
        3.903775,
        1.641699,
        -3.055165,
        1.650458,
        -3.314887,
        -0.544065,
        -3.370789,
        -3.522097,
        -0.0,
        -4.198216,
        -2.805792,
        -0.0,
        -3.081186,
        1.917489,
        3.728239,
        -2.103109,
        -0.0,
        2.072304,
        -0.0,
        2.005133,
        -0.0,
        -3.475137,
        -2.144982,
        -3.481024,
        -0.0,
        3.492025,
        -0.0,
        1.113849,
        -0.0,
        -4.397118,
        -4.116626,
        -1.032513,
        -0.0,
        3.683064,
        -0.0,
        -0.072644,
        -0.0,
        2.179638,
        -0.736832,
        2.039762,
        -0.0,
        -4.61604,
        -4.070281
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        1,
        3,
        7,
        8,
        9,
        11,
        13,
        15,
        16,
        17,
        18,
        20,
        21,
        23,
        25,
        30,
        32,
        33
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 6,
        "crc_match": false,
        "received_crc12": 3543,
        "computed_crc12": 3890,
        "message_preview_12chars": "M+tjzk+o+vhw",
        "message_words_6bit": [
          22,
          63,
          55,
          45,
          61,
          46,
          63,
          50,
          63,
          57,
          43,
          58
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "matrix_meta": {}
    },
    {
      "source": "matrix_probe.post_ldpc_info87_llr_rows",
      "row_name": "matrix_export_9",
      "info87_bits": [
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        0,
        1,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        1,
        0,
        1,
        0,
        0,
        0,
        1,
        0,
        1,
        0,
        0,
        1,
        0,
        0,
        1,
        0,
        1,
        1,
        1,
        1,
        0,
        0,
        0,
        1,
        0,
        1,
        1,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "info87_bitstring": "001000000000011011101101101000101001001011110001011000000000000000000000000000000000000",
      "info87_llr": [
        3.302363,
        3.25263,
        -2.348985,
        1.002312,
        0.721564,
        0.588251,
        0.132996,
        0.181135,
        2.697169,
        2.02146,
        1.828782,
        3.118228,
        0.587027,
        -0.520486,
        -1.432345,
        0.607786,
        -0.370865,
        -0.90483,
        -0.458664,
        0.194261,
        -0.983668,
        -2.838815,
        1.902866,
        -2.80789,
        -2.733105,
        1.664597,
        -2.545159,
        1.580571,
        1.392205,
        2.745399,
        -2.095367,
        1.52224,
        -2.512216,
        2.757916,
        0.809921,
        -0.666809,
        2.568328,
        1.795894,
        -1.337623,
        0.925458,
        -0.78217,
        -1.471544,
        0.173418,
        0.085104,
        0.946548,
        1.747553,
        1.627368,
        -0.621794,
        -0.097243,
        -0.129806,
        -0.812639,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      "info87_llr_count": 87,
      "least_reliable_info87_indices": [
        51,
        52,
        53,
        54,
        55,
        56,
        57,
        58,
        59,
        60,
        61,
        62,
        63,
        64,
        65,
        66,
        67,
        68
      ],
      "message174_crc12": {
        "ok": true,
        "distance": 6,
        "crc_match": false,
        "received_crc12": 0,
        "computed_crc12": 1148,
        "message_preview_12chars": "80RjefBnO000",
        "message_words_6bit": [
          8,
          0,
          27,
          45,
          40,
          41,
          11,
          49,
          24,
          0,
          0,
          0
        ]
      },
      "source_index_context": {
        "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract",
        "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()",
        "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing",
        "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows"
      },
      "matrix_meta": {}
    }
  ],
  "outputs": {
    "post_ldpc_info87_runtime_export_json": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window0/step61_post_ldpc_info87_runtime_export.json"
  },
  "warnings": [
    "This is still a diagnostic runtime export, not a final JS8 text decoder.",
    "Step61 patches the runtime LDPC probes to expose post-LDPC info87 rows and source-index context for the next reorder/whitening alignment step."
  ],
  "next_action": "If best_distance is 0, implement source-confirmed message174 text unpack. If best_distance remains >0, build Step62 to test source-derived deinterleaver/whitening index maps against these exact runtime rows."
}
