{
  "ok": true,
  "mode": "JS8",
  "tool": "webftr-js8-real-ldpc-matrix-syndrome-probe",
  "tool_version": "step35-bounded-ldpc-ranking-guard",
  "input_wav": null,
  "candidate_json": "/decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.json",
  "rx_only": true,
  "safety": {
    "tx": false,
    "ptt": false,
    "tune": false,
    "send": false,
    "js8call_runtime_control": false
  },
  "implementation_stage": "step35_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": {
      "profile": "js8_near_6400",
      "nsps": 6400,
      "tone_spacing_hz": 1.875,
      "sync": {
        "start_sample": 57600,
        "start_seconds": 4.8,
        "base_freq_hz": 1025.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": 47.4,
        "costas_hits": 2,
        "avg_margin_db": 8.01
      },
      "rank_score": 225.085,
      "fec": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "source_tool": "webftr-js8-auto-ldpc-probe"
    },
    "selected_variant": {
      "name": "raw_msb_symbol_order",
      "rank_score": 127.195892,
      "complete_174bit_candidate": true,
      "hard_bits_sha256_16": "c87312f86dbe74fc",
      "hard_weight_174": 36,
      "llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      }
    }
  },
  "variant_probe_count": 72,
  "best_matrix_probe": {
    "variant": "reverse_symbol_order",
    "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": 36,
    "llr_avg_abs": 2.29897311494253,
    "syndrome": {
      "bits_len": 174,
      "message91": "0000011101100000010000000000010100000000000100110000000010000011001100001000000000001000100",
      "parity83_observed": "01010001000010001101000000000000100001000110000000100010000101000100000000000010000",
      "parity83_expected": "00110001010000001001111110010110000100100111101100101000000100010000010100111000000",
      "syndrome83": "01100000010010000100111110010110100101100001101100001010000001010100010100111010000",
      "syndrome_weight": 32,
      "valid_codeword_hard_decision": false,
      "message91_sha256_16": "384c60e60980b42c",
      "codeword174_sha256_16": "d47743b04ac969bf"
    },
    "repair": {
      "attempted": true,
      "max_flips": 6,
      "candidate_pool": 12,
      "flip_count": 2,
      "repair_success": false,
      "final_syndrome_weight": 24,
      "trace": [
        {
          "flip_index": 60,
          "llr_abs": 0.012672,
          "gain": 7,
          "syndrome_weight_after": 25
        },
        {
          "flip_index": 104,
          "llr_abs": 0.300403,
          "gain": 1,
          "syndrome_weight_after": 24
        }
      ],
      "repaired_message91_sha256_16": "b120935d577150cf"
    }
  },
  "all_matrix_probes": [
    {
      "variant": "reverse_symbol_order",
      "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": 36,
      "llr_avg_abs": 2.29897311494253,
      "syndrome": {
        "bits_len": 174,
        "message91": "0000011101100000010000000000010100000000000100110000000010000011001100001000000000001000100",
        "parity83_observed": "01010001000010001101000000000000100001000110000000100010000101000100000000000010000",
        "parity83_expected": "00110001010000001001111110010110000100100111101100101000000100010000010100111000000",
        "syndrome83": "01100000010010000100111110010110100101100001101100001010000001010100010100111010000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "384c60e60980b42c",
        "codeword174_sha256_16": "d47743b04ac969bf"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 2,
        "repair_success": false,
        "final_syndrome_weight": 24,
        "trace": [
          {
            "flip_index": 60,
            "llr_abs": 0.012672,
            "gain": 7,
            "syndrome_weight_after": 25
          },
          {
            "flip_index": 104,
            "llr_abs": 0.300403,
            "gain": 1,
            "syndrome_weight_after": 24
          }
        ],
        "repaired_message91_sha256_16": "b120935d577150cf"
      }
    },
    {
      "variant": "reverse_full_bitstream",
      "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": 36,
      "llr_avg_abs": 2.2989731149425294,
      "syndrome": {
        "bits_len": 174,
        "message91": "0000011101100000010000000000010100000000000100110000000010000011001100001000000000001000100",
        "parity83_observed": "01010001000010001101000000000000100001000110000000100010000101000100000000000010000",
        "parity83_expected": "00110001010000001001111110010110000100100111101100101000000100010000010100111000000",
        "syndrome83": "01100000010010000100111110010110100101100001101100001010000001010100010100111010000",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "384c60e60980b42c",
        "codeword174_sha256_16": "d47743b04ac969bf"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 2,
        "repair_success": false,
        "final_syndrome_weight": 24,
        "trace": [
          {
            "flip_index": 60,
            "llr_abs": 0.012672,
            "gain": 7,
            "syndrome_weight_after": 25
          },
          {
            "flip_index": 104,
            "llr_abs": 0.300403,
            "gain": 1,
            "syndrome_weight_after": 24
          }
        ],
        "repaired_message91_sha256_16": "b120935d577150cf"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174
      },
      "hard_weight_174": 54,
      "llr_avg_abs": 1.7330972528735638,
      "syndrome": {
        "bits_len": 174,
        "message91": "0010000000110001000000000001001000100001100001001010001110000100001010010110001010010100000",
        "parity83_observed": "00001100010010100111100110000010000000101101111110001000110000110000000100001001000",
        "parity83_expected": "11100110110011100011010100100011000110011100101100110001111010100000100100101011000",
        "syndrome83": "11101010100001000100110010100001000110110001010010111001001010010000100000100010000",
        "syndrome_weight": 30,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "8c66b791ab80fa5f",
        "codeword174_sha256_16": "4d990be74fb87bae"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 29,
        "trace": [
          {
            "flip_index": 154,
            "llr_abs": 0.118003,
            "gain": 1,
            "syndrome_weight_after": 29
          }
        ],
        "repaired_message91_sha256_16": "8c66b791ab80fa5f"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "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": 42,
      "llr_avg_abs": 1.894502597701149,
      "syndrome": {
        "bits_len": 174,
        "message91": "0011110000000000110000010100000110000011101001010010000000000100100100100000100100000001110",
        "parity83_observed": "00010000100000000000001100100000100010100011000010000000000000000100010000100010001",
        "parity83_expected": "11000010001001000011011101101100100110101100100010101001100000110100111101000010010",
        "syndrome83": "11010010101001000011010001001100000100001111100000101001100000110000101101100000011",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "e5731e4fede3fb18",
        "codeword174_sha256_16": "1dc701ee46577c18"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 3,
        "repair_success": false,
        "final_syndrome_weight": 29,
        "trace": [
          {
            "flip_index": 110,
            "llr_abs": 0.005053,
            "gain": 1,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 116,
            "llr_abs": 0.07304,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 94,
            "llr_abs": 0.155455,
            "gain": 1,
            "syndrome_weight_after": 29
          }
        ],
        "repaired_message91_sha256_16": "e5731e4fede3fb18"
      }
    },
    {
      "variant": "lab_mask_xor_preview",
      "transform": "ft8_gray_primary_demap_lsb_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": true,
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174,
        "polarity": "inverted"
      },
      "hard_weight_174": 89,
      "llr_avg_abs": 1.7330972528735638,
      "syndrome": {
        "bits_len": 174,
        "message91": "1000001000110100110111110011101111101100011100100100001010111110010001110110111110001001101",
        "parity83_observed": "00010100010001000101011110001001100001111110111110101010010110111100011001000110010",
        "parity83_expected": "11110101110110001101011101001000111001011011011100001100000100001100011101110111110",
        "syndrome83": "11100001100111001000000011000001011000100101100010100110010010110000000100110001100",
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "7880a2f86fd2bcbd",
        "codeword174_sha256_16": "49e0d840cf79204d"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 30,
        "trace": [
          {
            "flip_index": 134,
            "llr_abs": 0.001731,
            "gain": 1,
            "syndrome_weight_after": 30
          }
        ],
        "repaired_message91_sha256_16": "7880a2f86fd2bcbd"
      }
    },
    {
      "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_primary_demap_lsb_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": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "hard_weight_174": 47,
      "llr_avg_abs": 1.7612153735632188,
      "syndrome": {
        "bits_len": 174,
        "message91": "1001010010000000010000000000000001011001100100010010000100000010000011100000100001000101001",
        "parity83_observed": "01101001000001111000001001000101101100000000000110000000000001001000001010101000100",
        "parity83_expected": "01001101010100111000110101000111000100011011000011010101111011000100001111000010101",
        "syndrome83": "00100100010101000000111100000010101000011011000101010101111010001100000101101010001",
        "syndrome_weight": 33,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "dd95757cc3ee25c0",
        "codeword174_sha256_16": "d259414cbfbda6fb"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 3,
        "repair_success": false,
        "final_syndrome_weight": 30,
        "trace": [
          {
            "flip_index": 147,
            "llr_abs": 0.113332,
            "gain": 1,
            "syndrome_weight_after": 32
          },
          {
            "flip_index": 151,
            "llr_abs": 0.145602,
            "gain": 1,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 111,
            "llr_abs": 0.17487,
            "gain": 1,
            "syndrome_weight_after": 30
          }
        ],
        "repaired_message91_sha256_16": "dd95757cc3ee25c0"
      }
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "ft8_gray_primary_demap_lsb_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": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "hard_weight_174": 52,
      "llr_avg_abs": 1.6970454827586203,
      "syndrome": {
        "bits_len": 174,
        "message91": "0111100000101000100010000001011101100000010000010101010000000000100001111100001011001100011",
        "parity83_observed": "10000000001000000000000011110110000001000100010000010000000010010010010000010110001",
        "parity83_expected": "10101100000111000010010111010011000000100011000011110110101011110110010000010101000",
        "syndrome83": "00101100001111000010010100100101000001100111010011100110101001100100000000000011001",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "0758421db7e99eb5",
        "codeword174_sha256_16": "01bbbd5dbf5c2f3d"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [
          {
            "flip_index": 120,
            "llr_abs": 0.095766,
            "gain": 1,
            "syndrome_weight_after": 31
          }
        ],
        "repaired_message91_sha256_16": "0758421db7e99eb5"
      }
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "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": 52,
      "llr_avg_abs": 1.6320086724137932,
      "syndrome": {
        "bits_len": 174,
        "message91": "0111100000101000100010000001011101100000010000010101010000000000100001111100001011001100011",
        "parity83_observed": "10000000001000000000000011110110000001000100010000010000000010010010010000010110001",
        "parity83_expected": "10101100000111000010010111010011000000100011000011110110101011110110010000010101000",
        "syndrome83": "00101100001111000010010100100101000001100111010011100110101001100100000000000011001",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "0758421db7e99eb5",
        "codeword174_sha256_16": "01bbbd5dbf5c2f3d"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 31,
        "trace": [
          {
            "flip_index": 147,
            "llr_abs": 0.169509,
            "gain": 1,
            "syndrome_weight_after": 31
          }
        ],
        "repaired_message91_sha256_16": "0758421db7e99eb5"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+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": 118,
      "llr_avg_abs": 1.7004307701149426,
      "syndrome": {
        "bits_len": 174,
        "message91": "1110111101111011000001111100111111001111110011001110001101001101110010111111110111101111110",
        "parity83_observed": "01000101101111011010111101111001101111101101101000111110111101110101111101101101011",
        "parity83_expected": "11001000101111111000111111110101011000000101010110101100111101101100101011100001010",
        "syndrome83": "10001101000000100010000010001100110111101000111110010010000000011001010110001100001",
        "syndrome_weight": 32,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "64a178ece7f87012",
        "codeword174_sha256_16": "39e7d6bfe9f3caa8"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [],
        "repaired_message91_sha256_16": "64a178ece7f87012"
      }
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "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": 129,
      "llr_avg_abs": 1.7716979770114942,
      "syndrome": {
        "bits_len": 174,
        "message91": "1101110011100011111101111101100011110011110010011111110101100011111111111111110011011111011",
        "parity83_observed": "10111110101111110110111111100111110111110111111111000111111111001001111001110111111",
        "parity83_expected": "00110111101010100011101001110001110100101011001111101111011101101001101101100010001",
        "syndrome83": "10001001000101010101010110010110000011011100110000101000100010100000010100010101110",
        "syndrome_weight": 33,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "e98c05f03d40a834",
        "codeword174_sha256_16": "7bd1199f75d4b915"
      },
      "repair": {
        "attempted": true,
        "max_flips": 6,
        "candidate_pool": 12,
        "flip_count": 1,
        "repair_success": false,
        "final_syndrome_weight": 32,
        "trace": [
          {
            "flip_index": 110,
            "llr_abs": 0.225929,
            "gain": 1,
            "syndrome_weight_after": 32
          }
        ],
        "repaired_message91_sha256_16": "e98c05f03d40a834"
      }
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "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": 131,
      "llr_avg_abs": 1.7170600459770111,
      "syndrome": {
        "bits_len": 174,
        "message91": "1101110011100011111101111101100011110011110010011111110101100011111111111111110011011111011",
        "parity83_observed": "10111110101111110110111111100111110111110111111111011111111111001001111001110111111",
        "parity83_expected": "00110111101010100011101001110001110100101011001111101111011101101001101101100010001",
        "syndrome83": "10001001000101010101010110010110000011011100110000110000100010100000010100010101110",
        "syndrome_weight": 33,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "e98c05f03d40a834",
        "codeword174_sha256_16": "75ae86c1752e51f1"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 33,
        "trace": [],
        "repaired_message91_sha256_16": "e98c05f03d40a834"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+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.3529909827586213,
      "syndrome": {
        "bits_len": 174,
        "message91": "0000001000000000100110100110100100110001011100000100110000110110000010000000101101101000000",
        "parity83_observed": "00000000000000000000010001000010001101111001000001011010000011001011000011011010000",
        "parity83_expected": "00010101101110001000000101011011000000011101100100010110001111010011000001100010101",
        "syndrome83": "00010101101110001000010100011001001101100100100101001100001100011000000010111000101",
        "syndrome_weight": 33,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "d63f1a805e94cd08",
        "codeword174_sha256_16": "0862e4611b7ba452"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 33,
        "trace": [],
        "repaired_message91_sha256_16": "d63f1a805e94cd08"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "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": 53,
      "llr_avg_abs": 1.3529909827586208,
      "syndrome": {
        "bits_len": 174,
        "message91": "0001100000010001100010000010111100011100001100010011100010011100000000110000101100100000100",
        "parity83_observed": "01110001000011000011000000011000111000000000000011110000001000010000000001001001000",
        "parity83_expected": "11111000011010001110010111011010111000000011000101011111101110110110000001000100100",
        "syndrome83": "10001001011001001101010111000010000000000011000110101111100110100110000000001101100",
        "syndrome_weight": 33,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "321223ba015c242f",
        "codeword174_sha256_16": "480df928476c81fc"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 33,
        "trace": [],
        "repaired_message91_sha256_16": "321223ba015c242f"
      }
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "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": 55,
      "llr_avg_abs": 1.3412421264367818,
      "syndrome": {
        "bits_len": 174,
        "message91": "0110110000000010111000011100000110000011101010010011000000000000100000000010100110010101100",
        "parity83_observed": "11010000100000000000011100110000101100000110001010000000000010000110010010110010001",
        "parity83_expected": "01010011111111001100111111110111001010000100111110000100001110100100010011010011100",
        "syndrome83": "10000011011111001100100011000111100110000010110100000100001100100010000001100001101",
        "syndrome_weight": 33,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "fda1bd1bee3ef270",
        "codeword174_sha256_16": "b72ed95eb3537964"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 33,
        "trace": [],
        "repaired_message91_sha256_16": "fda1bd1bee3ef270"
      }
    },
    {
      "variant": "lsb_within_each_tone",
      "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": 120,
      "llr_avg_abs": 1.9271690804597712,
      "syndrome": {
        "bits_len": 174,
        "message91": "1110110111100101110110111100101111110111110110011100110000100111111011111111101011001111011",
        "parity83_observed": "11111111100101110110111111110111010111110110111100000111101111001000111010110110110",
        "parity83_expected": "00010111100001000111100101010011010000100001010101010011110101001101111000010000110",
        "syndrome83": "11101000000100110001011010100100000111010111101001010100011010000101000010100110000",
        "syndrome_weight": 34,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "210ed54aa2f6f2f5",
        "codeword174_sha256_16": "88b752d7f508741d"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 34,
        "trace": [],
        "repaired_message91_sha256_16": "210ed54aa2f6f2f5"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174
      },
      "hard_weight_174": 40,
      "llr_avg_abs": 1.9271690804597712,
      "syndrome": {
        "bits_len": 174,
        "message91": "0001000001001000000010000010000000110000001000110000110010110010000010000000000100101000001",
        "parity83_observed": "01000000001010000001000010000000001001001011001001000000000010010010000011001010000",
        "parity83_expected": "10101001011011100000100001000110100011001111110101010110100011001100000110101010000",
        "syndrome83": "11101001010001100001100011000110101010000100111100010110100001011110000101100000000",
        "syndrome_weight": 34,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "dc6b3b99b0eefa3c",
        "codeword174_sha256_16": "abc3f6bc66ab0d95"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 34,
        "trace": [],
        "repaired_message91_sha256_16": "dc6b3b99b0eefa3c"
      }
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+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": 134,
      "llr_avg_abs": 1.9271690804597712,
      "syndrome": {
        "bits_len": 174,
        "message91": "1110111110110111111101111101111111001111110111001111001101001101111101111111111011010111110",
        "parity83_observed": "10111111110101111110111101111111110110110100110110111111111101101101111100110101111",
        "parity83_expected": "10101101010101110000010100101000110110111101100000100010100001100111010101101001110",
        "syndrome83": "00010010100000001110101001010111000000001001010110011101011100001010101001011100001",
        "syndrome_weight": 34,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "2b641aedbf9f6b1c",
        "codeword174_sha256_16": "70b34a4cd8422396"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 34,
        "trace": [],
        "repaired_message91_sha256_16": "2b641aedbf9f6b1c"
      }
    },
    {
      "variant": "reverse_full_bitstream",
      "transform": "ft8_gray_primary_demap_lsb_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": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "hard_weight_174": 40,
      "llr_avg_abs": 1.927169080459771,
      "syndrome": {
        "bits_len": 174,
        "message91": "0001001000110000000000010000010110101000000100010000010000000110010100001000000000001000100",
        "parity83_observed": "01110010001000000100000001010000000000000011000000110010101110000000100000001010000",
        "parity83_expected": "01111010110100110101000000110110000101101100011010011000111110000111100001100011001",
        "syndrome83": "00001000111100110001000001100110000101101111011010101010010000000111000001101001001",
        "syndrome_weight": 34,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "703de01c7930a681",
        "codeword174_sha256_16": "728f877f162554f0"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 34,
        "trace": [],
        "repaired_message91_sha256_16": "703de01c7930a681"
      }
    },
    {
      "variant": "reverse_full_bitstream",
      "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": 40,
      "llr_avg_abs": 1.927169080459771,
      "syndrome": {
        "bits_len": 174,
        "message91": "0000000010010000110000110010000110110000010110010010110000010000000100000000000000000000000",
        "parity83_observed": "10010010000000001000011011000011010000100101000001000010011000011000000000000000000",
        "parity83_expected": "01010000001100101100100010111110001100000101000110001011100000011010111100010000000",
        "syndrome83": "11000010001100100100111001111101011100100000000111001001111000000010111100010000000",
        "syndrome_weight": 34,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "b9685faa51f2fee3",
        "codeword174_sha256_16": "6034031cb49b149b"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 34,
        "trace": [],
        "repaired_message91_sha256_16": "b9685faa51f2fee3"
      }
    },
    {
      "variant": "reverse_full_bitstream",
      "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": 42,
      "llr_avg_abs": 1.8945025977011496,
      "syndrome": {
        "bits_len": 174,
        "message91": "0001001000110000000000010000010110101000000101010000010000000110010100001000000000001000100",
        "parity83_observed": "01110010001000000100000001010000000000000111000000110010101110000000100000001010000",
        "parity83_expected": "01001011000000100001010110010011110000101011001001100010100010101000010101001011111",
        "syndrome83": "00111001001000100101010111000011110000101100001001010000001100101000110101000001111",
        "syndrome_weight": 34,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "d8aad96deb103b4f",
        "codeword174_sha256_16": "65d7f0c73aa808bc"
      },
      "repair": {
        "attempted": false,
        "flip_count": 0,
        "repair_success": false,
        "final_syndrome_weight": 34,
        "trace": [],
        "repaired_message91_sha256_16": "d8aad96deb103b4f"
      }
    }
  ],
  "decodes": [],
  "outputs": {
    "ldpc_matrix_probe_json": "/decoders/js8_decoder/runtime/ldpc_matrix_probe/step35_ldpc_matrix_probe.json"
  },
  "warnings": [
    "Step 35 keeps the Step 35 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."
}
