{
  "ok": true,
  "mode": "JS8",
  "tool": "webftr-js8-real-ldpc-matrix-syndrome-probe",
  "tool_version": "step37-timing-best-candidate-softdecode",
  "input_wav": null,
  "candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step37_best_timing_fec_candidate.json",
  "rx_only": true,
  "safety": {
    "tx": false,
    "ptt": false,
    "tune": false,
    "send": false,
    "js8call_runtime_control": false
  },
  "implementation_stage": "step37_bounded_gray_interleaver_matrix_ranking_no_message_unpack",
  "matrix": {
    "code": "(174,91) LDPC generator matrix",
    "generator_rows": 83,
    "generator_cols": 91,
    "message_bits": 91,
    "parity_bits": 83,
    "source_file": "ldpc_174_91_c_generator.f90"
  },
  "bounds": {
    "total_transform_rows_before_limit": 828,
    "max_rows": 72,
    "repair_rows": 10,
    "max_flips": 6,
    "candidate_pool": 12
  },
  "candidate_context": {
    "nsps_used": 6400,
    "nsps_is_js8_realistic": true,
    "selected_profile": null,
    "selected_variant": {
      "name": "raw_msb_symbol_order",
      "rank_score": 126.748644,
      "complete_174bit_candidate": true,
      "hard_bits_sha256_16": "a0f5d6c517051f17",
      "hard_weight_174": 39,
      "llr_stats": {
        "count": 174,
        "avg_abs": 2.187161,
        "min_abs": 0.036806,
        "max_abs": 4.061714,
        "positive": 136,
        "negative": 38,
        "zero": 0
      }
    }
  },
  "variant_probe_count": 72,
  "best_matrix_probe": {
    "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
    "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
    "mapping_meta": {
      "tone_mapping": "lsb_within_each_tone",
      "interleaver": "ft8_bitrev",
      "direction": "interleave_codeword_to_rx_inverse",
      "order_len": 174
    },
    "hard_weight_174": 32,
    "llr_avg_abs": 1.7837172241379295,
    "syndrome": {
      "bits_len": 174,
      "message91": "0010000000001100000000010000010001111000000101000000000010000000100000000001000110100010000",
      "parity83_observed": "00001100000100100001010001000000000001010000011000000001000000000100000000001000000",
      "parity83_expected": "10001100110100100111010011001100000100010000111101010001000100001101100110111001010",
      "syndrome83": "10000000110000000110000010001100000101000000100101010000000100001001100110110001010",
      "syndrome_weight": 24,
      "valid_codeword_hard_decision": false,
      "message91_sha256_16": "400988287db337c2",
      "codeword174_sha256_16": "e737ddc1f2cfd29b"
    },
    "repair": {
      "attempted": true,
      "max_flips": 6,
      "candidate_pool": 12,
      "flip_count": 0,
      "repair_success": false,
      "final_syndrome_weight": 24,
      "trace": [],
      "repaired_message91_sha256_16": "400988287db337c2"
    }
  },
  "all_matrix_probes": [
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
      "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "hard_weight_174": 32,
      "llr_avg_abs": 1.7837172241379295,
      "syndrome": {
        "bits_len": 174,
        "message91": "0010000000001100000000010000010001111000000101000000000010000000100000000001000110100010000",
        "parity83_observed": "00001100000100100001010001000000000001010000011000000001000000000100000000001000000",
        "parity83_expected": "10001100110100100111010011001100000100010000111101010001000100001101100110111001010",
        "syndrome83": "10000000110000000110000010001100000101000000100101010000000100001001100110110001010",
        "syndrome_weight": 24,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "400988287db337c2",
        "codeword174_sha256_16": "e737ddc1f2cfd29b"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 24,
        "trace": [],
        "repaired_message91_sha256_16": "400988287db337c2"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174
      },
      "hard_weight_174": 60,
      "llr_avg_abs": 1.0454926149425285,
      "syndrome": {
        "bits_len": 174,
        "message91": "1000100110111100010000100010001100000000000100100010000000011000000000101000100010100001100",
        "parity83_observed": "10000110010001000011110101001011110101000101110110100110011000000000000010101100101",
        "parity83_expected": "01101101100011010110110101001001100101000110110100010011011000000001100001100110001",
        "syndrome83": "11101011110010010101000000000010010000000011000010110101000000000001100011001010100",
        "syndrome_weight": 28,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "b419e71920db3585",
        "codeword174_sha256_16": "8bccbb10bbbf4d88"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 3,
        "repair_success": false,
        "final_syndrome_weight": 25,
        "trace": [
          {
            "flip_index": 103,
            "llr_abs": 0.008536,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 167,
            "llr_abs": 0.02524,
            "gain": 1,
            "syndrome_weight_after": 26
          },
          {
            "flip_index": 100,
            "llr_abs": 0.036806,
            "gain": 1,
            "syndrome_weight_after": 25
          }
        ],
        "repaired_message91_sha256_16": "b419e71920db3585"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
      "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "hard_weight_174": 50,
      "llr_avg_abs": 1.08062106321839,
      "syndrome": {
        "bits_len": 174,
        "message91": "0010000001001011000000010101110000111100000101000010110000010010100101000000000010001000110",
        "parity83_observed": "00000100110100001000010000000101100000000100001100001100000011010000000100010010011",
        "parity83_expected": "00000011110111001000000100000010011000101110001000000001100000010001000000101000010",
        "syndrome83": "00000111000011000000010100000111111000101010000100001101100011000001000100111010001",
        "syndrome_weight": 30,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "ef548b254868b745",
        "codeword174_sha256_16": "3d5161b1e316b16f"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 4,
        "repair_success": false,
        "final_syndrome_weight": 26,
        "trace": [
          {
            "flip_index": 114,
            "llr_abs": 0.000665,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 143,
            "llr_abs": 0.002608,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 173,
            "llr_abs": 0.025153,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 167,
            "llr_abs": 0.051006,
            "gain": 1,
            "syndrome_weight_after": 26
          }
        ],
        "repaired_message91_sha256_16": "ef548b254868b745"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
      "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "none",
        "polarity": "inverted"
      },
      "hard_weight_174": 125,
      "llr_avg_abs": 1.568964528735632,
      "syndrome": {
        "bits_len": 174,
        "message91": "1111111111111001110101111111111001110101001100110101111000101110101111111000101001001111111",
        "parity83_observed": "11100111100111111111111111111111011100010001010101111111011111100111111111111010100",
        "parity83_expected": "01010000000011101110111110110100011101010111010111111010010100100100111001011111101",
        "syndrome83": "10110111100100010001000001001011000001000110000010000101001011000011000110100101001",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "9a6e72196d49d4ec",
        "codeword174_sha256_16": "5f766d9b3db3fe7a"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 5,
        "repair_success": false,
        "final_syndrome_weight": 26,
        "trace": [
          {
            "flip_index": 128,
            "llr_abs": 0.036806,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 99,
            "llr_abs": 0.065169,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 132,
            "llr_abs": 0.106633,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 139,
            "llr_abs": 0.133856,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 133,
            "llr_abs": 0.147215,
            "gain": 1,
            "syndrome_weight_after": 26
          }
        ],
        "repaired_message91_sha256_16": "9a6e72196d49d4ec"
      }
    },
    {
      "variant": "lab_mask_xor_preview",
      "transform": "raw_msb+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "raw_msb",
        "interleaver": "none"
      },
      "hard_weight_174": 90,
      "llr_avg_abs": 2.187161362068966,
      "syndrome": {
        "bits_len": 174,
        "message91": "1000001100110111001000011110110110001100110000101111010011011110111111111010101111101001011",
        "parity83_observed": "00101100001010001001100010111010010111011001010011010011000111100101000010101000110",
        "parity83_expected": "01100101110111001101010110001000100111001101010011011000101111100100000110010100110",
        "syndrome83": "01001001111101000100110100110010110000010100000000001011101000000001000100111100000",
        "syndrome_weight": 30,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "2d887c7972af6374",
        "codeword174_sha256_16": "e3a96fe6ad757407"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 3,
        "repair_success": false,
        "final_syndrome_weight": 27,
        "trace": [
          {
            "flip_index": 100,
            "llr_abs": 0.075079,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 101,
            "llr_abs": 0.1889,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 104,
            "llr_abs": 0.435761,
            "gain": 1,
            "syndrome_weight_after": 27
          }
        ],
        "repaired_message91_sha256_16": "2d887c7972af6374"
      }
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "none",
        "polarity": "inverted"
      },
      "hard_weight_174": 119,
      "llr_avg_abs": 1.6453519080459769,
      "syndrome": {
        "bits_len": 174,
        "message91": "1101111110010100011111111001111110000011111110011101111111001111001111111110011001001101001",
        "parity83_observed": "11110001111001011110100110111111111110100111101111110000111111100001111111110111100",
        "parity83_expected": "11011110000000111110100110011111110110001110000111010001110011001101001011011111111",
        "syndrome83": "00101111111001100000000000100000001000101001101000100001001100101100110100101000011",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "ad56c1db43052c18",
        "codeword174_sha256_16": "16aeb541b9fcee47"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 2,
        "repair_success": false,
        "final_syndrome_weight": 29,
        "trace": [
          {
            "flip_index": 137,
            "llr_abs": 0.003492,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 97,
            "llr_abs": 0.262041,
            "gain": 1,
            "syndrome_weight_after": 29
          }
        ],
        "repaired_message91_sha256_16": "ad56c1db43052c18"
      }
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "hard_weight_174": 53,
      "llr_avg_abs": 1.6351825689655177,
      "syndrome": {
        "bits_len": 174,
        "message91": "0001000000111000001100001011001100001101001110011100001001100001100000001001101000000100000",
        "parity83_observed": "00100000000000010000000000100000011000000011010011100010001110100000100110100110100",
        "parity83_expected": "01100100000000100111010000100110000000110101011010101101011001100100000100000110110",
        "syndrome83": "01000100000000110111010000000110011000110110001001001111010111000100100010100000010",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "6a8d5bcbf434d857",
        "codeword174_sha256_16": "e5ec524c8f7f0cb9"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 2,
        "repair_success": false,
        "final_syndrome_weight": 29,
        "trace": [
          {
            "flip_index": 106,
            "llr_abs": 0.0695,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 133,
            "llr_abs": 0.096509,
            "gain": 1,
            "syndrome_weight_after": 29
          }
        ],
        "repaired_message91_sha256_16": "6a8d5bcbf434d857"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "hard_weight_174": 34,
      "llr_avg_abs": 1.8142508448275845,
      "syndrome": {
        "bits_len": 174,
        "message91": "1010000000100000100000000000000010100010000100010110000000000000101001000101010100000001001",
        "parity83_observed": "00010000000000000010000000000000010000010010010100001110010010010000000000001000000",
        "parity83_expected": "10010000101110001010101101001000110010000100110000101111010000010000111100111011010",
        "syndrome83": "10000000101110001000101101001000100010010110100100100001000010000000111100110011010",
        "syndrome_weight": 30,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "94f535c19abe8e97",
        "codeword174_sha256_16": "e050196dd1284fb0"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 30,
        "trace": [],
        "repaired_message91_sha256_16": "94f535c19abe8e97"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "lsb_within_each_tone+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "none"
      },
      "hard_weight_174": 49,
      "llr_avg_abs": 1.5689645287356309,
      "syndrome": {
        "bits_len": 174,
        "message91": "0000010100101001000110100001100011100000001000000000101010000110010100001110000011000010000",
        "parity83_observed": "01100000000000000111001001000100000000000000111000010010000101100011001011000100000",
        "parity83_expected": "11000000010001100011111111000101000101111000111001000100101101101010011111001111101",
        "syndrome83": "10100000010001100100110110000001000101111000000001010110101000001001010100001011101",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "53e2d678efaa9275",
        "codeword174_sha256_16": "7bbcf9fb91843ebc"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 30,
        "trace": [
          {
            "flip_index": 27,
            "llr_abs": 0.036806,
            "gain": 1,
            "syndrome_weight_after": 30
          }
        ],
        "repaired_message91_sha256_16": "13c359fe186f84d4"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
      "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174,
        "polarity": "inverted"
      },
      "hard_weight_174": 133,
      "llr_avg_abs": 1.6063374252873568,
      "syndrome": {
        "bits_len": 174,
        "message91": "1100111111111101110011111111111011011111000110011111111101010111111011101111111110111101011",
        "parity83_observed": "10011110011111110001111110101110100101101111111011111111011111110110011111111110101",
        "parity83_expected": "10011100010101111101100010101000010101001100011010011100111010111001101101111100101",
        "syndrome83": "00000010001010001100011100000110110000100011100001100011100101001111110010000010000",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "9c5c8e131830f6a9",
        "codeword174_sha256_16": "a799925e0e4517b4"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "9c5c8e131830f6a9"
      }
    },
    {
      "variant": "lab_mask_xor_preview",
      "transform": "lsb_within_each_tone+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "none"
      },
      "hard_weight_174": 90,
      "llr_avg_abs": 2.187161362068966,
      "syndrome": {
        "bits_len": 174,
        "message91": "0010000111101100010011001111101100000111100000101111011001011111101111111010101110110011010",
        "parity83_observed": "01101001100010100100001010111010010111110100010110010110000111001101000010101000011",
        "parity83_expected": "10100001000010001100100111000100110000110110010110110010010010100100000011101110010",
        "syndrome83": "11001000100000101000101101111110100111000010000000100100010101101001000001000110001",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "601cdb16e6f74276",
        "codeword174_sha256_16": "326d27f1d67791f5"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "601cdb16e6f74276"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "raw_msb+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "raw_msb",
        "interleaver": "none"
      },
      "hard_weight_174": 32,
      "llr_avg_abs": 1.7837172241379298,
      "syndrome": {
        "bits_len": 174,
        "message91": "0111000010001000000010000000010000110000000101000000000011100000100100000000010010000000000",
        "parity83_observed": "00000100001100000001010100000000110000000000001110000000001001000000000000000000100",
        "parity83_expected": "00011001011001100110110110000000011100000000101010100010110011011110000101000110100",
        "syndrome83": "00011101010101100111100010000000101100000000100100100010111010011110000101000110000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "1ef6c5c26dfbc68b",
        "codeword174_sha256_16": "d96e8c7a3ce0490d"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "1ef6c5c26dfbc68b"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
      "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "raw_msb",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "hard_weight_174": 32,
      "llr_avg_abs": 1.7837172241379298,
      "syndrome": {
        "bits_len": 174,
        "message91": "0111000010001000000010000000010000110000000101000000000011100000100100000000010010000000000",
        "parity83_observed": "00000100001100000001010100000000110000000000001110000000001001000000000000000000100",
        "parity83_expected": "00011001011001100110110110000000011100000000101010100010110011011110000101000110100",
        "syndrome83": "00011101010101100111100010000000101100000000100100100010111010011110000101000110000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "1ef6c5c26dfbc68b",
        "codeword174_sha256_16": "d96e8c7a3ce0490d"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "1ef6c5c26dfbc68b"
      }
    },
    {
      "variant": "mapped_lsb_within_each_tone+no_interleaver",
      "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "hard_weight_174": 32,
      "llr_avg_abs": 1.7837172241379298,
      "syndrome": {
        "bits_len": 174,
        "message91": "0111000010001000000010000000010000110000000101000000000011100000100100000000010010000000000",
        "parity83_observed": "00000100001100000001010100000000110000000000001110000000001001000000000000000000100",
        "parity83_expected": "00011001011001100110110110000000011100000000101010100010110011011110000101000110100",
        "syndrome83": "00011101010101100111100010000000101100000000100100100010111010011110000101000110000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "1ef6c5c26dfbc68b",
        "codeword174_sha256_16": "d96e8c7a3ce0490d"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "1ef6c5c26dfbc68b"
      }
    },
    {
      "variant": "mapped_raw_msb+no_interleaver",
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "hard_weight_174": 32,
      "llr_avg_abs": 1.7837172241379298,
      "syndrome": {
        "bits_len": 174,
        "message91": "0111000010001000000010000000010000110000000101000000000011100000100100000000010010000000000",
        "parity83_observed": "00000100001100000001010100000000110000000000001110000000001001000000000000000000100",
        "parity83_expected": "00011001011001100110110110000000011100000000101010100010110011011110000101000110100",
        "syndrome83": "00011101010101100111100010000000101100000000100100100010111010011110000101000110000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "1ef6c5c26dfbc68b",
        "codeword174_sha256_16": "d96e8c7a3ce0490d"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "1ef6c5c26dfbc68b"
      }
    },
    {
      "variant": "raw_msb_symbol_order",
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "hard_weight_174": 32,
      "llr_avg_abs": 1.7837172241379298,
      "syndrome": {
        "bits_len": 174,
        "message91": "0111000010001000000010000000010000110000000101000000000011100000100100000000010010000000000",
        "parity83_observed": "00000100001100000001010100000000110000000000001110000000001001000000000000000000100",
        "parity83_expected": "00011001011001100110110110000000011100000000101010100010110011011110000101000110100",
        "syndrome83": "00011101010101100111100010000000101100000000100100100010111010011110000101000110000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "1ef6c5c26dfbc68b",
        "codeword174_sha256_16": "d96e8c7a3ce0490d"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "1ef6c5c26dfbc68b"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
      "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174,
        "polarity": "inverted"
      },
      "hard_weight_174": 134,
      "llr_avg_abs": 1.5783320287356328,
      "syndrome": {
        "bits_len": 174,
        "message91": "1000111101110111111101111111011111101111111110111111101100001111011110111111101111111111101",
        "parity83_observed": "11111011010011111110101010111110001111101011110001111101110100111111111111110111011",
        "parity83_expected": "00111101001101011010011010110110001111011001101100111001110101111010000001111101010",
        "syndrome83": "11000110011110100100110000001000000000110010011101000100000001000101111110001010001",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "7fcb9ce8ce209d99",
        "codeword174_sha256_16": "fffaa3a9661b23ea"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "7fcb9ce8ce209d99"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
      "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174
      },
      "hard_weight_174": 40,
      "llr_avg_abs": 1.5783320287356315,
      "syndrome": {
        "bits_len": 174,
        "message91": "0001000000000010001100000000000100100000111001100000000010101000000100010000000001000010100",
        "parity83_observed": "01100001100000001110000001010001011010010000000100000000100000001001100000000001010",
        "parity83_expected": "11011011100000001111010110100011011010001100000100000111000000110100010001101001100",
        "syndrome83": "10111010000000000001010111110010000000011100000000000111100000111101110001101000110",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "eeb4d939762c19d7",
        "codeword174_sha256_16": "a064e1b9f911fff9"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "eeb4d939762c19d7"
      }
    },
    {
      "variant": "lsb_within_each_tone",
      "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "hard_weight_174": 32,
      "llr_avg_abs": 1.5689645287356313,
      "syndrome": {
        "bits_len": 174,
        "message91": "0111000010001000000010000000010000110000000101000000000011100000100100000000010010000000000",
        "parity83_observed": "00000100001100000001010100000000110000000000001110000000001001000000000000000000100",
        "parity83_expected": "00011001011001100110110110000000011100000000101010100010110011011110000101000110100",
        "syndrome83": "00011101010101100111100010000000101100000000100100100010111010011110000101000110000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "1ef6c5c26dfbc68b",
        "codeword174_sha256_16": "d96e8c7a3ce0490d"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "1ef6c5c26dfbc68b"
      }
    },
    {
      "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "none",
        "polarity": "inverted"
      },
      "hard_weight_174": 122,
      "llr_avg_abs": 1.5576050229885054,
      "syndrome": {
        "bits_len": 174,
        "message91": "0101100011111101110011111111001110011101111111101110010010111111001111101110011111111110011",
        "parity83_observed": "11111110000110111001100110111001101111111110001101001100001010111111111111111111110",
        "parity83_expected": "11111101000110001011000010011101101111100100010011000000110110010101110111100001011",
        "syndrome83": "00000011000000110010100100100100000000011010011110001100111100101010001000011110101",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "6b1e08b5e23278be",
        "codeword174_sha256_16": "2ebc0e51aa0056a9"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "6b1e08b5e23278be"
      }
    }
  ],
  "decodes": [],
  "outputs": {
    "ldpc_matrix_probe_json": "/decoders/js8_decoder/runtime/ldpc_matrix_probe/step37_ldpc_matrix_probe.json"
  },
  "warnings": [
    "Step 37 keeps the Step 37 Gray/interleaver probe but ranks all mappings first and repairs only the best bounded subset to avoid Raspberry Pi timeouts.",
    "This is still a diagnostic LDPC/FEC probe and does not unpack JS8 text yet.",
    "If best_matrix_probe reaches syndrome_weight 0, the next step can feed message91 into CRC/message unpack. Otherwise continue timing, symbol boundary, deinterleaver/order or LLR tuning using best mapping_meta."
  ],
  "next_action": "Upload Step35 logs. Inspect best_matrix_probe.mapping_meta and final_syndrome_weight; then either unpack message91 on syndrome 0 or continue bounded LDPC/timing tuning."
}
