{
  "ok": true,
  "mode": "JS8",
  "tool": "webftr-js8-real-ldpc-matrix-syndrome-probe",
  "tool_version": "step51-source-aligned-tone-offset-cli-fix",
  "input_wav": null,
  "candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step51_source_aligned_best_timing_fec_candidate.json",
  "rx_only": true,
  "safety": {
    "tx": false,
    "ptt": false,
    "tune": false,
    "send": false,
    "js8call_runtime_control": false
  },
  "implementation_stage": "step43_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": 865,
    "max_rows": 72,
    "repair_rows": 10,
    "max_flips": 6,
    "candidate_pool": 12
  },
  "candidate_context": {
    "nsps_used": 6192,
    "nsps_is_js8_realistic": true,
    "selected_profile": null,
    "selected_variant": {
      "name": "step43_timing_sweep_best_syndrome_row",
      "rank_score": 1105.166392,
      "complete_174bit_candidate": true,
      "hard_bits_sha256_16": "95a1e941fbdff6b2",
      "hard_weight_174": 36,
      "llr_stats": {
        "count": 174,
        "avg_abs": 1.291598,
        "min_abs": 0.001433,
        "max_abs": 3.895705,
        "positive": 129,
        "negative": 45,
        "zero": 0
      }
    }
  },
  "variant_probe_count": 72,
  "best_matrix_probe": {
    "variant": "step43_timing_sweep_best_syndrome_row",
    "transform": "direct_timing_sweep_primary",
    "mapping_meta": {
      "direct_timing_sweep_primary": true,
      "source_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
      },
      "source_transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "source_variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver"
    },
    "hard_weight_174": 36,
    "llr_avg_abs": 1001.2915982873564,
    "syndrome": {
      "bits_len": 174,
      "message91": "0000000100000001000001000100000000000010001000000000010000000000000001100000000101000100110",
      "parity83_observed": "00101000000010010001000000010000110101000000000011100101101000000000001001001000110",
      "parity83_expected": "10110000000000110101000000000011101111100000111011110101101001100000101001001100100",
      "syndrome83": "10011000000010100100000000010011011010100000111000010000000001100000100000000100010",
      "syndrome_weight": 22,
      "valid_codeword_hard_decision": false,
      "message91_sha256_16": "d4ca2a05f15dd009",
      "codeword174_sha256_16": "95a1e941fbdff6b2"
    },
    "repair": {
      "attempted": true,
      "max_flips": 6,
      "candidate_pool": 12,
      "flip_count": 0,
      "repair_success": false,
      "final_syndrome_weight": 22,
      "trace": [],
      "repaired_message91_sha256_16": "d4ca2a05f15dd009"
    }
  },
  "all_matrix_probes": [
    {
      "variant": "step43_timing_sweep_best_syndrome_row",
      "transform": "direct_timing_sweep_primary",
      "mapping_meta": {
        "direct_timing_sweep_primary": true,
        "source_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
        },
        "source_transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "source_variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver"
      },
      "hard_weight_174": 36,
      "llr_avg_abs": 1001.2915982873564,
      "syndrome": {
        "bits_len": 174,
        "message91": "0000000100000001000001000100000000000010001000000000010000000000000001100000000101000100110",
        "parity83_observed": "00101000000010010001000000010000110101000000000011100101101000000000001001001000110",
        "parity83_expected": "10110000000000110101000000000011101111100000111011110101101001100000101001001100100",
        "syndrome83": "10011000000010100100000000010011011010100000111000010000000001100000100000000100010",
        "syndrome_weight": 22,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "d4ca2a05f15dd009",
        "codeword174_sha256_16": "95a1e941fbdff6b2"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 22,
        "trace": [],
        "repaired_message91_sha256_16": "d4ca2a05f15dd009"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
      "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "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
      },
      "hard_weight_174": 36,
      "llr_avg_abs": 1.2915982873563212,
      "syndrome": {
        "bits_len": 174,
        "message91": "0000000100000001000001000100000000000010001000000000010000000000000001100000000101000100110",
        "parity83_observed": "00101000000010010001000000010000110101000000000011100101101000000000001001001000110",
        "parity83_expected": "10110000000000110101000000000011101111100000111011110101101001100000101001001100100",
        "syndrome83": "10011000000010100100000000010011011010100000111000010000000001100000100000000100010",
        "syndrome_weight": 22,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "d4ca2a05f15dd009",
        "codeword174_sha256_16": "95a1e941fbdff6b2"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 22,
        "trace": [],
        "repaired_message91_sha256_16": "d4ca2a05f15dd009"
      }
    },
    {
      "variant": "step43_timing_sweep_best_syndrome_row",
      "transform": "raw_msb+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "raw_msb",
        "interleaver": "none"
      },
      "hard_weight_174": 36,
      "llr_avg_abs": 1.2915982873563212,
      "syndrome": {
        "bits_len": 174,
        "message91": "0000000100000001000001000100000000000010001000000000010000000000000001100000000101000100110",
        "parity83_observed": "00101000000010010001000000010000110101000000000011100101101000000000001001001000110",
        "parity83_expected": "10110000000000110101000000000011101111100000111011110101101001100000101001001100100",
        "syndrome83": "10011000000010100100000000010011011010100000111000010000000001100000100000000100010",
        "syndrome_weight": 22,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "d4ca2a05f15dd009",
        "codeword174_sha256_16": "95a1e941fbdff6b2"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 22,
        "trace": [],
        "repaired_message91_sha256_16": "d4ca2a05f15dd009"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver",
      "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "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
      },
      "hard_weight_174": 36,
      "llr_avg_abs": 1.2893225114942535,
      "syndrome": {
        "bits_len": 174,
        "message91": "0000000100000001000001000100000000000010001000000000010000000000000001100000000101000100110",
        "parity83_observed": "00101000000010010001000000010000110101000000000011100101101000000000001001001000110",
        "parity83_expected": "10110000000000110101000000000011101111100000111011110101101001100000101001001100100",
        "syndrome83": "10011000000010100100000000010011011010100000111000010000000001100000100000000100010",
        "syndrome_weight": 22,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "d4ca2a05f15dd009",
        "codeword174_sha256_16": "95a1e941fbdff6b2"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 22,
        "trace": [],
        "repaired_message91_sha256_16": "d4ca2a05f15dd009"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "none"
      },
      "hard_weight_174": 61,
      "llr_avg_abs": 1.1143301551724138,
      "syndrome": {
        "bits_len": 174,
        "message91": "1100001110000000010110010110001010001010000010000001110001100011100110110000001010000010110",
        "parity83_observed": "00110000000011000110011000000110100100001001000110001100110000000011110110000000011",
        "parity83_expected": "00111100101110110000011000110111100101001001000110100101100101001111011111100010011",
        "syndrome83": "00001100101101110110000000110001000001000000000000101001010101001100101001100010000",
        "syndrome_weight": 27,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "bab866be6de1cc5a",
        "codeword174_sha256_16": "4b4b446b1e4f7aae"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 26,
        "trace": [
          {
            "flip_index": 165,
            "llr_abs": 0.041242,
            "gain": 1,
            "syndrome_weight_after": 26
          }
        ],
        "repaired_message91_sha256_16": "bab866be6de1cc5a"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "none"
      },
      "hard_weight_174": 61,
      "llr_avg_abs": 1.0792917931034485,
      "syndrome": {
        "bits_len": 174,
        "message91": "1100001110000000010110010110001010001010000010000001110001100011100110110000001010000010110",
        "parity83_observed": "00110000000011000110011000000110100100001001000110001100110000000011110110000000011",
        "parity83_expected": "00111100101110110000011000110111100101001001000110100101100101001111011111100010011",
        "syndrome83": "00001100101101110110000000110001000001000000000000101001010101001100101001100010000",
        "syndrome_weight": 27,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "bab866be6de1cc5a",
        "codeword174_sha256_16": "4b4b446b1e4f7aae"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 26,
        "trace": [
          {
            "flip_index": 165,
            "llr_abs": 0.003629,
            "gain": 1,
            "syndrome_weight_after": 26
          }
        ],
        "repaired_message91_sha256_16": "bab866be6de1cc5a"
      }
    },
    {
      "variant": "lab_mask_xor_preview",
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
      "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,
        "polarity": "inverted"
      },
      "hard_weight_174": 93,
      "llr_avg_abs": 1.818736224137931,
      "syndrome": {
        "bits_len": 174,
        "message91": "0011110111101100001011010010101110101000011100011010011111110101111100100101100100001011111",
        "parity83_observed": "00000111101100000100100110100110110100001011111101100100011010101010110111110010101",
        "parity83_expected": "00000011100100100100000110110101101100101111110011100101110010110000011100100111000",
        "syndrome83": "00000100001000100000100000010011011000100100001110000001101000011010101011010101101",
        "syndrome_weight": 29,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "4439454e612f6636",
        "codeword174_sha256_16": "953e2bc596e8a67e"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 3,
        "repair_success": false,
        "final_syndrome_weight": 26,
        "trace": [
          {
            "flip_index": 155,
            "llr_abs": 0.01702,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 149,
            "llr_abs": 0.031568,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 170,
            "llr_abs": 0.066433,
            "gain": 1,
            "syndrome_weight_after": 26
          }
        ],
        "repaired_message91_sha256_16": "4439454e612f6636"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_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": 45,
      "llr_avg_abs": 1.6256335402298847,
      "syndrome": {
        "bits_len": 174,
        "message91": "1100000100110000000101000100000100001110000000001001000010000000001110000010000100100110000",
        "parity83_observed": "00100000000001001000010000010000000011010110001101000000000001100001100000110011010",
        "parity83_expected": "11010000101000001010101011011001000100110100011000010001100001000101110001110011000",
        "syndrome83": "11110000101001000010111011001001000111100010010101010001100000100100010001000000010",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "1bf4f3a7e6e5f651",
        "codeword174_sha256_16": "daeb23bbbdf896b0"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 3,
        "repair_success": false,
        "final_syndrome_weight": 28,
        "trace": [
          {
            "flip_index": 113,
            "llr_abs": 0.003629,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 112,
            "llr_abs": 0.100589,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 160,
            "llr_abs": 0.101553,
            "gain": 1,
            "syndrome_weight_after": 28
          }
        ],
        "repaired_message91_sha256_16": "1bf4f3a7e6e5f651"
      }
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "none"
      },
      "hard_weight_174": 45,
      "llr_avg_abs": 1.6172086091954023,
      "syndrome": {
        "bits_len": 174,
        "message91": "0000000110000001100001100110000000010010001101100000010000000000000000110000000110000000110",
        "parity83_observed": "00010000000101000111000000000000110111000000000001110111001000000000001001011000011",
        "parity83_expected": "01001010101000000111001100000110100111100010000101110001101101110110111011100000011",
        "syndrome83": "01011010101101000000001100000110010000100010000100000110100101110110110010111000000",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "202d2650a31499d7",
        "codeword174_sha256_16": "6c43e3bd22022c79"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 3,
        "repair_success": false,
        "final_syndrome_weight": 28,
        "trace": [
          {
            "flip_index": 167,
            "llr_abs": 0.001539,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 166,
            "llr_abs": 0.029448,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 124,
            "llr_abs": 0.064735,
            "gain": 1,
            "syndrome_weight_after": 28
          }
        ],
        "repaired_message91_sha256_16": "202d2650a31499d7"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_lsb_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": 45,
      "llr_avg_abs": 1.6664229885057469,
      "syndrome": {
        "bits_len": 174,
        "message91": "1100000100110000000101000100000100001110000000001001000010000000001110000010000100100110000",
        "parity83_observed": "00100000000001001000010000010000000011010110001101000000000001100001100000110011010",
        "parity83_expected": "11010000101000001010101011011001000100110100011000010001100001000101110001110011000",
        "syndrome83": "11110000101001000010111011001001000111100010010101010001100000100100010001000000010",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "1bf4f3a7e6e5f651",
        "codeword174_sha256_16": "daeb23bbbdf896b0"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 2,
        "repair_success": false,
        "final_syndrome_weight": 29,
        "trace": [
          {
            "flip_index": 113,
            "llr_abs": 0.041242,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 112,
            "llr_abs": 0.103273,
            "gain": 1,
            "syndrome_weight_after": 29
          }
        ],
        "repaired_message91_sha256_16": "1bf4f3a7e6e5f651"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "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": 127,
      "llr_avg_abs": 1.3337297126436785,
      "syndrome": {
        "bits_len": 174,
        "message91": "1111111001111111110011101101111000101111111000010011111111101110011001111111111011101111111",
        "parity83_observed": "11111001100111111110111111100001001100111100110111110111001111100001111110111111111",
        "parity83_expected": "10110001101001101110011110000001101010111101010101010001110111000111101100101000101",
        "syndrome83": "01001000001110010000100001100000100110000001100010100110111000100110010010010111010",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "332fb0dabe874c89",
        "codeword174_sha256_16": "b69cc7a7a2c9cfc9"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "332fb0dabe874c89"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "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": 127,
      "llr_avg_abs": 1.2983798793103447,
      "syndrome": {
        "bits_len": 174,
        "message91": "1111111001111111110011101101111000101111111000010011111111101110011001111111111011101111111",
        "parity83_observed": "11111001100111111110111111100001001100111100110111110111001111100001111110111111111",
        "parity83_expected": "10110001101001101110011110000001101010111101010101010001110111000111101100101000101",
        "syndrome83": "01001000001110010000100001100000100110000001100010100110111000100110010010010111010",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "332fb0dabe874c89",
        "codeword174_sha256_16": "b69cc7a7a2c9cfc9"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "332fb0dabe874c89"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "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": 127,
      "llr_avg_abs": 1.2560504137931032,
      "syndrome": {
        "bits_len": 174,
        "message91": "1111111001111111110011101101111000101111111000010011111111101110011001111111111011101111111",
        "parity83_observed": "11111001100111111110111111100001001100111100110111110111001111100001111110111111111",
        "parity83_expected": "10110001101001101110011110000001101010111101010101010001110111000111101100101000101",
        "syndrome83": "01001000001110010000100001100000100110000001100010100110111000100110010010010111010",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "332fb0dabe874c89",
        "codeword174_sha256_16": "b69cc7a7a2c9cfc9"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "332fb0dabe874c89"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "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": 37,
      "llr_avg_abs": 1.2423823563218392,
      "syndrome": {
        "bits_len": 174,
        "message91": "0100010011001000000000000111000000100000000000010001110000000010000000100000000000011000010",
        "parity83_observed": "01000000000010010010000000100010000110100011000011001010000000000001000000011000001",
        "parity83_expected": "01001001001001100010101001101110001000001011100010111111100001000101001010000000000",
        "syndrome83": "00001001001011110000101001001100001110101000100001110101100001000100001010011000001",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "24f38de55dffa50e",
        "codeword174_sha256_16": "a5cef5b3b7fef29e"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "24f38de55dffa50e"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "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": 127,
      "llr_avg_abs": 1.217521729885057,
      "syndrome": {
        "bits_len": 174,
        "message91": "1111111001111111110011101101111000101111111000010011111111101110011001111111111011101111111",
        "parity83_observed": "11111001100111111110111111100001001100111100110111110111001111100001111110111111111",
        "parity83_expected": "10110001101001101110011110000001101010111101010101010001110111000111101100101000101",
        "syndrome83": "01001000001110010000100001100000100110000001100010100110111000100110010010010111010",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "332fb0dabe874c89",
        "codeword174_sha256_16": "b69cc7a7a2c9cfc9"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "332fb0dabe874c89"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "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
      },
      "hard_weight_174": 57,
      "llr_avg_abs": 1.208058896551724,
      "syndrome": {
        "bits_len": 174,
        "message91": "0010100010100001100000001000010000001000000010100010100000001111110000001001001011100101100",
        "parity83_observed": "00110000000100110100000010000100010000101101001010000101100110001000000100110111110",
        "parity83_expected": "01110111010100110100100110000000011111000100011001001110001010001011101100110010100",
        "syndrome83": "01000111010000000000100100000100001111101001010011001011101100000011101000000101010",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "678915ad8b5b531e",
        "codeword174_sha256_16": "0bfb984669bc190f"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "678915ad8b5b531e"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "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": 37,
      "llr_avg_abs": 1.2055921379310346,
      "syndrome": {
        "bits_len": 174,
        "message91": "0100010011001000000000000111000000100000000000010001110000000010000000100000000000011000010",
        "parity83_observed": "01000000000010010010000000100010000110100011000011001010000000000001000000011000001",
        "parity83_expected": "01001001001001100010101001101110001000001011100010111111100001000101001010000000000",
        "syndrome83": "00001001001011110000101001001100001110101000100001110101100001000100001010011000001",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "24f38de55dffa50e",
        "codeword174_sha256_16": "a5cef5b3b7fef29e"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "24f38de55dffa50e"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "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
      },
      "hard_weight_174": 57,
      "llr_avg_abs": 1.1703414942528743,
      "syndrome": {
        "bits_len": 174,
        "message91": "0010100010100001100000001000010000001000000010100010100000001111110000001001001011100101100",
        "parity83_observed": "00110000000100110100000010000100010000101101001010000101100110001000000100110111110",
        "parity83_expected": "01110111010100110100100110000000011111000100011001001110001010001011101100110010100",
        "syndrome83": "01000111010000000000100100000100001111101001010011001011101100000011101000000101010",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "678915ad8b5b531e",
        "codeword174_sha256_16": "0bfb984669bc190f"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [],
        "repaired_message91_sha256_16": "678915ad8b5b531e"
      }
    },
    {
      "variant": "lsb_within_each_tone",
      "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
      "mapping_meta": {
        "tone_mapping": "raw_msb",
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174
      },
      "hard_weight_174": 30,
      "llr_avg_abs": 2.2186752701149435,
      "syndrome": {
        "bits_len": 174,
        "message91": "0100000000000100011001000000000100000000000110000000001000000100000100010001001100000000001",
        "parity83_observed": "00001000000000010001100000010010001000010000000000110001010000100000000000000100000",
        "parity83_expected": "11010100100010100010111000111011101010000001011001100001100100010000100000001101000",
        "syndrome83": "11011100100010110011011000101001100010010001011001010000110100110000100000001001000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "770633de1c822554",
        "codeword174_sha256_16": "3605fe147cc4f9f8"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "770633de1c822554"
      }
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "raw_msb+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "raw_msb",
        "interleaver": "none"
      },
      "hard_weight_174": 30,
      "llr_avg_abs": 2.2186752701149435,
      "syndrome": {
        "bits_len": 174,
        "message91": "0100000000000100011001000000000100000000000110000000001000000100000100010001001100000000001",
        "parity83_observed": "00001000000000010001100000010010001000010000000000110001010000100000000000000100000",
        "parity83_expected": "11010100100010100010111000111011101010000001011001100001100100010000100000001101000",
        "syndrome83": "11011100100010110011011000101001100010010001011001010000110100110000100000001001000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "770633de1c822554",
        "codeword174_sha256_16": "3605fe147cc4f9f8"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "770633de1c822554"
      }
    }
  ],
  "decodes": [],
  "outputs": {
    "ldpc_matrix_probe_json": "/decoders/js8_decoder/runtime/ldpc_matrix_probe/step43_ldpc_matrix_probe.json"
  },
  "warnings": [
    "Step 51 preserves the exact timing-sweep primary row in matrix ranking, then repairs only a 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."
}
