{
  "ok": true,
  "mode": "JS8",
  "tool": "webftr-js8-real-ldpc-matrix-syndrome-probe",
  "tool_version": "step38-fine-timing-ridge-sweep",
  "input_wav": null,
  "candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step38_best_timing_fec_candidate.json",
  "rx_only": true,
  "safety": {
    "tx": false,
    "ptt": false,
    "tune": false,
    "send": false,
    "js8call_runtime_control": false
  },
  "implementation_stage": "step38_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": 127.063032,
      "complete_174bit_candidate": true,
      "hard_bits_sha256_16": "7bf9bc1895cb1e01",
      "hard_weight_174": 36,
      "llr_stats": {
        "count": 174,
        "avg_abs": 2.265758,
        "min_abs": 0.020953,
        "max_abs": 4.126624,
        "positive": 139,
        "negative": 35,
        "zero": 0
      }
    }
  },
  "variant_probe_count": 72,
  "best_matrix_probe": {
    "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
    "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
    "mapping_meta": {
      "tone_mapping": "lsb_within_each_tone",
      "interleaver": "none",
      "polarity": "inverted"
    },
    "hard_weight_174": 140,
    "llr_avg_abs": 1.8277836149425295,
    "syndrome": {
      "bits_len": 174,
      "message91": "1011100111111101111111111111011111111101110111101011001111101011111010111111111011101111111",
      "parity83_observed": "11001100111111111110111110101111111111111011101111101111101101011001111111110101111",
      "parity83_expected": "11110110111110110111011110100100001110111011100111101100100101011101111111100100101",
      "syndrome83": "00111010000001001001100000001011110001000000001000000011001000000100000000010001010",
      "syndrome_weight": 22,
      "valid_codeword_hard_decision": false,
      "message91_sha256_16": "67b59638aa8882d6",
      "codeword174_sha256_16": "0228efbd612c9092"
    },
    "repair": {
      "attempted": true,
      "max_flips": 6,
      "candidate_pool": 12,
      "flip_count": 2,
      "repair_success": false,
      "final_syndrome_weight": 20,
      "trace": [
        {
          "flip_index": 128,
          "llr_abs": 0.032754,
          "gain": 1,
          "syndrome_weight_after": 21
        },
        {
          "flip_index": 156,
          "llr_abs": 0.081417,
          "gain": 1,
          "syndrome_weight_after": 20
        }
      ],
      "repaired_message91_sha256_16": "67b59638aa8882d6"
    }
  },
  "all_matrix_probes": [
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "none",
        "polarity": "inverted"
      },
      "hard_weight_174": 140,
      "llr_avg_abs": 1.8277836149425295,
      "syndrome": {
        "bits_len": 174,
        "message91": "1011100111111101111111111111011111111101110111101011001111101011111010111111111011101111111",
        "parity83_observed": "11001100111111111110111110101111111111111011101111101111101101011001111111110101111",
        "parity83_expected": "11110110111110110111011110100100001110111011100111101100100101011101111111100100101",
        "syndrome83": "00111010000001001001100000001011110001000000001000000011001000000100000000010001010",
        "syndrome_weight": 22,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "67b59638aa8882d6",
        "codeword174_sha256_16": "0228efbd612c9092"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 2,
        "repair_success": false,
        "final_syndrome_weight": 20,
        "trace": [
          {
            "flip_index": 128,
            "llr_abs": 0.032754,
            "gain": 1,
            "syndrome_weight_after": 21
          },
          {
            "flip_index": 156,
            "llr_abs": 0.081417,
            "gain": 1,
            "syndrome_weight_after": 20
          }
        ],
        "repaired_message91_sha256_16": "67b59638aa8882d6"
      }
    },
    {
      "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": 35,
      "llr_avg_abs": 1.5912117011494256,
      "syndrome": {
        "bits_len": 174,
        "message91": "0011000011000000001110000100000000010000000100010010100010000000100000000000110000000010000",
        "parity83_observed": "00100001110100000001000000000000001000000010001010110000000000000001000001100011000",
        "parity83_expected": "00110001110111100010100000001100011010000011001000110100001101010101011100100011110",
        "syndrome83": "00010000000011100011100000001100010010000001000010000100001101010100011101000000110",
        "syndrome_weight": 25,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "4f673c96b1f1de5c",
        "codeword174_sha256_16": "90bdd003a67ea079"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 3,
        "repair_success": false,
        "final_syndrome_weight": 22,
        "trace": [
          {
            "flip_index": 105,
            "llr_abs": 0.008127,
            "gain": 1,
            "syndrome_weight_after": 24
          },
          {
            "flip_index": 149,
            "llr_abs": 0.012692,
            "gain": 1,
            "syndrome_weight_after": 23
          },
          {
            "flip_index": 139,
            "llr_abs": 0.045014,
            "gain": 1,
            "syndrome_weight_after": 22
          }
        ],
        "repaired_message91_sha256_16": "4f673c96b1f1de5c"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_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": 36,
      "llr_avg_abs": 1.6427796724137933,
      "syndrome": {
        "bits_len": 174,
        "message91": "0011000011000000001110000100000000010000000100010010100010000000100000000000110000000010000",
        "parity83_observed": "00100001110100000001000000000000001000000010001010110000010000000001000001100011000",
        "parity83_expected": "00110001110111100010100000001100011010000011001000110100001101010101011100100011110",
        "syndrome83": "00010000000011100011100000001100010010000001000010000100011101010100011101000000110",
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "4f673c96b1f1de5c",
        "codeword174_sha256_16": "eb17c3d482c6c1fa"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 3,
        "repair_success": false,
        "final_syndrome_weight": 23,
        "trace": [
          {
            "flip_index": 105,
            "llr_abs": 0.003612,
            "gain": 1,
            "syndrome_weight_after": 25
          },
          {
            "flip_index": 149,
            "llr_abs": 0.013947,
            "gain": 1,
            "syndrome_weight_after": 24
          },
          {
            "flip_index": 148,
            "llr_abs": 0.032127,
            "gain": 1,
            "syndrome_weight_after": 23
          }
        ],
        "repaired_message91_sha256_16": "4f673c96b1f1de5c"
      }
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "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": 127,
      "llr_avg_abs": 1.672409804597702,
      "syndrome": {
        "bits_len": 174,
        "message91": "0111101111111111110100111110001110111111010111100011111110111111100110101111101000101111111",
        "parity83_observed": "11111011100110111011001111111001111010001111001111011101111111110001010111111110111",
        "parity83_expected": "01111011100011100001010001101001111010000011001100011101011101100001000101110101100",
        "syndrome83": "10000000000101011010011110010000000000001100000011000000100010010000010010001011011",
        "syndrome_weight": 25,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "6a76c3f6f4855f72",
        "codeword174_sha256_16": "e94fe0f75c74d230"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 24,
        "trace": [
          {
            "flip_index": 104,
            "llr_abs": 0.094637,
            "gain": 1,
            "syndrome_weight_after": 24
          }
        ],
        "repaired_message91_sha256_16": "6a76c3f6f4855f72"
      }
    },
    {
      "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174,
        "polarity": "inverted"
      },
      "hard_weight_174": 138,
      "llr_avg_abs": 2.2657583620689654,
      "syndrome": {
        "bits_len": 174,
        "message91": "1111111010101111101101111100111011001101001111101111101111100111111111111111110011111111110",
        "parity83_observed": "10011110011111111011110111111111111110110100111111111100101111111110111111110110111",
        "parity83_expected": "10000101010110110001001111110001110100111100011111111101101010100100001111100000011",
        "syndrome83": "00011011001001001010111000001110001010001000100000000001000101011010110000010110100",
        "syndrome_weight": 30,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "d5fd881ddc0d6fa3",
        "codeword174_sha256_16": "524f6b31360d4b54"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 3,
        "repair_success": false,
        "final_syndrome_weight": 27,
        "trace": [
          {
            "flip_index": 98,
            "llr_abs": 0.093616,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 155,
            "llr_abs": 0.114756,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 95,
            "llr_abs": 0.157374,
            "gain": 1,
            "syndrome_weight_after": 27
          }
        ],
        "repaired_message91_sha256_16": "d5fd881ddc0d6fa3"
      }
    },
    {
      "variant": "lab_mask_xor_preview",
      "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": 83,
      "llr_avg_abs": 1.8824677988505754,
      "syndrome": {
        "bits_len": 174,
        "message91": "0001110001101100000000011000100010001100000100111011101100100100111000010101001001011011111",
        "parity83_observed": "00000110001010100101101111010111010101101010110111110100010110101001110010111000011",
        "parity83_expected": "00011100100111010101111101000101100000001011110111000100010010101110111011100000011",
        "syndrome83": "00011010101101110000010010010010110101100001000000110000000100000111001001011000000",
        "syndrome_weight": 29,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "e3f175dd3a2c81b2",
        "codeword174_sha256_16": "d5da07ca10be5a38"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 28,
        "trace": [
          {
            "flip_index": 105,
            "llr_abs": 0.056699,
            "gain": 1,
            "syndrome_weight_after": 28
          }
        ],
        "repaired_message91_sha256_16": "e3f175dd3a2c81b2"
      }
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_alt_high_demap_msb_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": false,
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174
      },
      "hard_weight_174": 47,
      "llr_avg_abs": 1.7130608850574711,
      "syndrome": {
        "bits_len": 174,
        "message91": "1011100001010001001001000001000000101010110000000010000110000000001000100000011000100000000",
        "parity83_observed": "01000000000010010110000010000000110001000100011010110000011100011000000101010000100",
        "parity83_expected": "10000010000011010111011000001000001110000100111011101010111000000001010000111001100",
        "syndrome83": "11000010000001000001011010001000111111000000100001011010100100011001010101101001000",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "10bccbb21b243c70",
        "codeword174_sha256_16": "3d241f2dee27cf8a"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 3,
        "repair_success": false,
        "final_syndrome_weight": 28,
        "trace": [
          {
            "flip_index": 164,
            "llr_abs": 0.039513,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 124,
            "llr_abs": 0.054434,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 135,
            "llr_abs": 0.099006,
            "gain": 1,
            "syndrome_weight_after": 28
          }
        ],
        "repaired_message91_sha256_16": "10bccbb21b243c70"
      }
    },
    {
      "variant": "reverse_symbol_order",
      "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "none",
        "polarity": "inverted"
      },
      "hard_weight_174": 121,
      "llr_avg_abs": 1.8824677988505747,
      "syndrome": {
        "bits_len": 174,
        "message91": "1111110011111111111111111111000011110100010100011110101111110010011111101010011111111111111",
        "parity83_observed": "10101111001001111111111001111001010111001111111001100000001111001111111001111111001",
        "parity83_expected": "00001110001100001011010101010000011111000101111001101010000010000011001011001001001",
        "syndrome83": "10100001000101110100101100101001001000001010000000001010001101001100110010110110000",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "b5db807c301847ac",
        "codeword174_sha256_16": "eaf8f2e0f46bfa41"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 30,
        "trace": [
          {
            "flip_index": 145,
            "llr_abs": 0.035267,
            "gain": 1,
            "syndrome_weight_after": 30
          }
        ],
        "repaired_message91_sha256_16": "b5db807c301847ac"
      }
    },
    {
      "variant": "reverse_symbol_order",
      "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": 123,
      "llr_avg_abs": 1.8277836149425288,
      "syndrome": {
        "bits_len": 174,
        "message91": "1111110011111111111111111111000011110100010100011110101111110010011111101010011111111111111",
        "parity83_observed": "10101111001001111111111001111001010111001111111001100011001111001111111001111111001",
        "parity83_expected": "00001110001100001011010101010000011111000101111001101010000010000011001011001001001",
        "syndrome83": "10100001000101110100101100101001001000001010000000001001001101001100110010110110000",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "b5db807c301847ac",
        "codeword174_sha256_16": "3bc0238a33865be3"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 30,
        "trace": [
          {
            "flip_index": 146,
            "llr_abs": 0.032754,
            "gain": 1,
            "syndrome_weight_after": 30
          }
        ],
        "repaired_message91_sha256_16": "b5db807c301847ac"
      }
    },
    {
      "variant": "reverse_full_bitstream",
      "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": 121,
      "llr_avg_abs": 1.7194752988505742,
      "syndrome": {
        "bits_len": 174,
        "message91": "1111110011111111111111111111000011110100010100011110101111110010011111101010011111111111111",
        "parity83_observed": "10101111001001111111111001111001010111001111111001100000001111001111111001111111001",
        "parity83_expected": "00001110001100001011010101010000011111000101111001101010000010000011001011001001001",
        "syndrome83": "10100001000101110100101100101001001000001010000000001010001101001100110010110110000",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "b5db807c301847ac",
        "codeword174_sha256_16": "eaf8f2e0f46bfa41"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 30,
        "trace": [
          {
            "flip_index": 145,
            "llr_abs": 0.051749,
            "gain": 1,
            "syndrome_weight_after": 30
          }
        ],
        "repaired_message91_sha256_16": "b5db807c301847ac"
      }
    },
    {
      "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": 123,
      "llr_avg_abs": 1.6647911149425294,
      "syndrome": {
        "bits_len": 174,
        "message91": "1001111111001111111001111001100011001111111001110101001111001111111111001001111010111111111",
        "parity83_observed": "11111100101011111100100111111010111100010100010111100001111111111111111111100111111",
        "parity83_expected": "11101110101001100110010101111011101101010010100101100111001100101100011111101010011",
        "syndrome83": "00010010000010011010110010000001010001000110110010000110110011010011100000001101100",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "ea3829fd4a89c4a1",
        "codeword174_sha256_16": "8aeb2df4b6f868f0"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "ea3829fd4a89c4a1"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "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": 51,
      "llr_avg_abs": 1.6647911149425283,
      "syndrome": {
        "bits_len": 174,
        "message91": "0000000110100100001100000111100100001000100110100000111010000000000001101100010000000110100",
        "parity83_observed": "00000101010001000110010000000110010010101010101000100110010000001000000000010100000",
        "parity83_expected": "00000100110001000100010000010111111111001001001000101011100100110001110100100110011",
        "syndrome83": "00000001100000000010000000010001101101100011100000001101110100111001110100110010011",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "7289260856bf46ac",
        "codeword174_sha256_16": "52fd9adeb14097f4"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "7289260856bf46ac"
      }
    },
    {
      "variant": "reverse_full_bitstream",
      "transform": "ft8_gray_alt_high_demap_msb_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": false,
        "interleaver": "none",
        "polarity": "inverted"
      },
      "hard_weight_174": 123,
      "llr_avg_abs": 1.664791114942528,
      "syndrome": {
        "bits_len": 174,
        "message91": "1111110011111111111111111111000011110100010100011110101111110010011111101010011111111111111",
        "parity83_observed": "10101111001001111111111001111001010111001111111001100011001111001111111001111111001",
        "parity83_expected": "00001110001100001011010101010000011111000101111001101010000010000011001011001001001",
        "syndrome83": "10100001000101110100101100101001001000001010000000001001001101001100110010110110000",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "b5db807c301847ac",
        "codeword174_sha256_16": "3bc0238a33865be3"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "b5db807c301847ac"
      }
    },
    {
      "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "none"
      },
      "hard_weight_174": 51,
      "llr_avg_abs": 1.613219333333333,
      "syndrome": {
        "bits_len": 174,
        "message91": "1100011100010000001000000000000001100000000111101100111100000000110000000111010010001100000",
        "parity83_observed": "00001110010001000110000000000000110000000011110011010000011000000000000110001101000",
        "parity83_expected": "00011100001101101101100000011010010000001110110001111100011011111001010111011111000",
        "syndrome83": "00010010011100101011100000011010100000001101000010101100000011111001010001010010000",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "6b88dc9388d32ed9",
        "codeword174_sha256_16": "80e4ac873aa43e30"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "6b88dc9388d32ed9"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_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": 61,
      "llr_avg_abs": 1.0715886954022988,
      "syndrome": {
        "bits_len": 174,
        "message91": "0000101000010000000010100010011010001001010110011010001000010100110001101101011100110010100",
        "parity83_observed": "10000101011110000010010010011000111010100100000000100000101000000011010001100000001",
        "parity83_expected": "10000101100000110010010100010000110011100100101101110011110010011110011001001100000",
        "syndrome83": "00000000111110110000000110001000001001000000101101010011011010011101001000101100001",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "8b19ee60d2508d5d",
        "codeword174_sha256_16": "d8393894fe20b24f"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "8b19ee60d2508d5d"
      }
    },
    {
      "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+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174,
        "polarity": "inverted"
      },
      "hard_weight_174": 138,
      "llr_avg_abs": 1.8824677988505751,
      "syndrome": {
        "bits_len": 174,
        "message91": "1011111111110111111111101111101001111110011111111011111111011111110110111111000110110110111",
        "parity83_observed": "10111011110011011101011111101111111100011101111101111111111101111101101111100111111",
        "parity83_expected": "00001011000010010101101111011000011100001000101101111110111000110100001001100010000",
        "syndrome83": "10110000110001001000110000110111100000010101010000000001000101001001100110000101111",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "08a9bfa00a31c778",
        "codeword174_sha256_16": "96c35e2c35fea733"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "08a9bfa00a31c778"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "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": 116,
      "llr_avg_abs": 1.1495715689655168,
      "syndrome": {
        "bits_len": 174,
        "message91": "0100110111111110011101100111101111111110111111111010101111101100001100011101101010110110111",
        "parity83_observed": "11101110011111101010111000111011101111100111101110100111000101110101110011100001011",
        "parity83_expected": "00000100001011010011000010111000000101100101101011100000001011111101110111100000011",
        "syndrome83": "11101010010100111001111010000011101010000010000101000111001110001000000100000001000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "1661d9e1acea61ee",
        "codeword174_sha256_16": "419192bccb8097ba"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "1661d9e1acea61ee"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "ft8_gray_primary_demap_msb_input+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "none"
      },
      "hard_weight_174": 58,
      "llr_avg_abs": 1.1495715689655162,
      "syndrome": {
        "bits_len": 174,
        "message91": "1101000001010110100001000001100110000010000000010011000110110000100010110000001100000011011",
        "parity83_observed": "00011001101001001001100000000011001000000110001010000011011000011000000000011101001",
        "parity83_expected": "01011100010110000000110101000010111110000000011010011101011100111100000101011111001",
        "syndrome83": "01000101111111001001010101000001110110000110010000011110000100100100000101000010000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "caa2056a7c81f96b",
        "codeword174_sha256_16": "67b40f73f62e6c6c"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "caa2056a7c81f96b"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "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": 72,
      "llr_avg_abs": 1.111334712643677,
      "syndrome": {
        "bits_len": 174,
        "message91": "1011001000100011100010111000010100000001010000000101010000010011110011101010010101001011000",
        "parity83_observed": "00010011100000010111000111010100010000011000010001011000111110001110101100011110101",
        "parity83_expected": "10111011100110111110110010011001100000101001000010010000110011001100101000110100101",
        "syndrome83": "10101000000110101001110101001101110000110001010011001000001101000010000100101010000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "d4921afbac24d4a4",
        "codeword174_sha256_16": "79422d22b91abac9"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "d4921afbac24d4a4"
      }
    },
    {
      "variant": "lab_mask_xor_preview",
      "transform": "raw_msb+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "raw_msb",
        "interleaver": "none"
      },
      "hard_weight_174": 89,
      "llr_avg_abs": 2.265758362068966,
      "syndrome": {
        "bits_len": 174,
        "message91": "1010001100100101001100011101000000011010101101101111000001111110001111101010010000111001011",
        "parity83_observed": "00100101110110001000101010111001110111011010010101011001100111101101000010100011111",
        "parity83_expected": "00101010110011010101011010010100110101011100010100111010100101100011100111000001011",
        "syndrome83": "00001111000101011101110000101101000010000110000001100011000010001110100101100010100",
        "syndrome_weight": 33,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "39d180b9ca8fad49",
        "codeword174_sha256_16": "beedf9942d4dbcbb"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 33,
        "trace": [],
        "repaired_message91_sha256_16": "39d180b9ca8fad49"
      }
    }
  ],
  "decodes": [],
  "outputs": {
    "ldpc_matrix_probe_json": "/decoders/js8_decoder/runtime/ldpc_matrix_probe/step38_ldpc_matrix_probe.json"
  },
  "warnings": [
    "Step 38 keeps the Step 38 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."
}
