{
  "ok": true,
  "mode": "JS8",
  "tool": "webftr-js8-real-ldpc-matrix-syndrome-probe",
  "tool_version": "step32-anchored-candidate-fast-export-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": "step19_real_ldpc_generator_matrix_syndrome_probe_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"
  },
  "candidate_context": {
    "nsps_used": 6192,
    "nsps_is_js8_realistic": true,
    "selected_profile": {},
    "selected_variant": {
      "name": "raw_msb_symbol_order",
      "rank_score": 127.389188,
      "complete_174bit_candidate": true,
      "hard_bits_sha256_16": "aa237514554a5da8",
      "hard_weight_174": 42,
      "llr_stats": {
        "count": 174,
        "avg_abs": 2.347297,
        "min_abs": 0.029594,
        "max_abs": 4.31172,
        "positive": 133,
        "negative": 41,
        "zero": 0
      }
    }
  },
  "variant_probe_count": 20,
  "best_matrix_probe": {
    "variant": "raw_msb_symbol_order",
    "transform": "reverse_codeword",
    "hard_weight_174": 42,
    "llr_avg_abs": 2.3472972758620685,
    "syndrome": {
      "bits_len": 174,
      "message91": "1010100010100001001010100001000100000101000000000000000000101000000000101000100000101011000",
      "parity83_observed": "00100100010010110110000010010010000000000000000000000000100101000000000000101101101",
      "parity83_expected": "11001001001010110100001110001011111110011011010011011100111011000101101111100101001",
      "syndrome83": "11101101011000000010001100011001111110011011010011011100011110000101101111001000100",
      "syndrome_weight": 42,
      "valid_codeword_hard_decision": false,
      "message91_sha256_16": "5886f6ba6ff97dcc",
      "codeword174_sha256_16": "586874e4d556ff00"
    },
    "repair": {
      "attempted": true,
      "flip_count": 7,
      "repair_success": false,
      "final_syndrome_weight": 21,
      "trace": [
        {
          "flip_index": 34,
          "llr_abs": 0.830568,
          "gain": 15,
          "syndrome_weight_after": 27
        },
        {
          "flip_index": 151,
          "llr_abs": 0.04658,
          "gain": 1,
          "syndrome_weight_after": 26
        },
        {
          "flip_index": 96,
          "llr_abs": 0.100571,
          "gain": 1,
          "syndrome_weight_after": 25
        },
        {
          "flip_index": 106,
          "llr_abs": 0.643602,
          "gain": 1,
          "syndrome_weight_after": 24
        },
        {
          "flip_index": 125,
          "llr_abs": 0.96535,
          "gain": 1,
          "syndrome_weight_after": 23
        },
        {
          "flip_index": 108,
          "llr_abs": 1.11363,
          "gain": 1,
          "syndrome_weight_after": 22
        },
        {
          "flip_index": 162,
          "llr_abs": 1.164758,
          "gain": 1,
          "syndrome_weight_after": 21
        }
      ],
      "repaired_message91_sha256_16": "ec0dca697e9b6b75"
    }
  },
  "all_matrix_probes": [
    {
      "variant": "raw_msb_symbol_order",
      "transform": "reverse_codeword",
      "hard_weight_174": 42,
      "llr_avg_abs": 2.3472972758620685,
      "syndrome": {
        "bits_len": 174,
        "message91": "1010100010100001001010100001000100000101000000000000000000101000000000101000100000101011000",
        "parity83_observed": "00100100010010110110000010010010000000000000000000000000100101000000000000101101101",
        "parity83_expected": "11001001001010110100001110001011111110011011010011011100111011000101101111100101001",
        "syndrome83": "11101101011000000010001100011001111110011011010011011100011110000101101111001000100",
        "syndrome_weight": 42,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "5886f6ba6ff97dcc",
        "codeword174_sha256_16": "586874e4d556ff00"
      },
      "repair": {
        "attempted": true,
        "flip_count": 7,
        "repair_success": false,
        "final_syndrome_weight": 21,
        "trace": [
          {
            "flip_index": 34,
            "llr_abs": 0.830568,
            "gain": 15,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 151,
            "llr_abs": 0.04658,
            "gain": 1,
            "syndrome_weight_after": 26
          },
          {
            "flip_index": 96,
            "llr_abs": 0.100571,
            "gain": 1,
            "syndrome_weight_after": 25
          },
          {
            "flip_index": 106,
            "llr_abs": 0.643602,
            "gain": 1,
            "syndrome_weight_after": 24
          },
          {
            "flip_index": 125,
            "llr_abs": 0.96535,
            "gain": 1,
            "syndrome_weight_after": 23
          },
          {
            "flip_index": 108,
            "llr_abs": 1.11363,
            "gain": 1,
            "syndrome_weight_after": 22
          },
          {
            "flip_index": 162,
            "llr_abs": 1.164758,
            "gain": 1,
            "syndrome_weight_after": 21
          }
        ],
        "repaired_message91_sha256_16": "ec0dca697e9b6b75"
      }
    },
    {
      "variant": "reverse_full_bitstream",
      "transform": "as_exported",
      "hard_weight_174": 42,
      "llr_avg_abs": 2.3472972758620685,
      "syndrome": {
        "bits_len": 174,
        "message91": "1010100010100001001010100001000100000101000000000000000000101000000000101000100000101011000",
        "parity83_observed": "00100100010010110110000010010010000000000000000000000000100101000000000000101101101",
        "parity83_expected": "11001001001010110100001110001011111110011011010011011100111011000101101111100101001",
        "syndrome83": "11101101011000000010001100011001111110011011010011011100011110000101101111001000100",
        "syndrome_weight": 42,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "5886f6ba6ff97dcc",
        "codeword174_sha256_16": "586874e4d556ff00"
      },
      "repair": {
        "attempted": true,
        "flip_count": 7,
        "repair_success": false,
        "final_syndrome_weight": 21,
        "trace": [
          {
            "flip_index": 34,
            "llr_abs": 0.830568,
            "gain": 15,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 151,
            "llr_abs": 0.04658,
            "gain": 1,
            "syndrome_weight_after": 26
          },
          {
            "flip_index": 96,
            "llr_abs": 0.100571,
            "gain": 1,
            "syndrome_weight_after": 25
          },
          {
            "flip_index": 106,
            "llr_abs": 0.643602,
            "gain": 1,
            "syndrome_weight_after": 24
          },
          {
            "flip_index": 125,
            "llr_abs": 0.96535,
            "gain": 1,
            "syndrome_weight_after": 23
          },
          {
            "flip_index": 108,
            "llr_abs": 1.11363,
            "gain": 1,
            "syndrome_weight_after": 22
          },
          {
            "flip_index": 162,
            "llr_abs": 1.164758,
            "gain": 1,
            "syndrome_weight_after": 21
          }
        ],
        "repaired_message91_sha256_16": "ec0dca697e9b6b75"
      }
    },
    {
      "variant": "raw_msb_symbol_order",
      "transform": "as_exported",
      "hard_weight_174": 42,
      "llr_avg_abs": 2.3472972758620694,
      "syndrome": {
        "bits_len": 174,
        "message91": "1011011010000000000001010010000000000000000000000000100100100000110110100100010010000011010",
        "parity83_observed": "10000010001010000000001010000000000000000001010000010001000010101001000010100010101",
        "parity83_expected": "00011111010111011100010011000111011010110110011110110100101101001010100011101101011",
        "syndrome83": "10011101011101011100011001000111011010110111001110100101101111100011100001001111110",
        "syndrome_weight": 48,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "7be631281b81e799",
        "codeword174_sha256_16": "aa237514554a5da8"
      },
      "repair": {
        "attempted": true,
        "flip_count": 7,
        "repair_success": false,
        "final_syndrome_weight": 21,
        "trace": [
          {
            "flip_index": 77,
            "llr_abs": 0.100571,
            "gain": 21,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 136,
            "llr_abs": 0.198239,
            "gain": 1,
            "syndrome_weight_after": 26
          },
          {
            "flip_index": 166,
            "llr_abs": 0.513912,
            "gain": 1,
            "syndrome_weight_after": 25
          },
          {
            "flip_index": 155,
            "llr_abs": 0.525517,
            "gain": 1,
            "syndrome_weight_after": 24
          },
          {
            "flip_index": 148,
            "llr_abs": 0.629658,
            "gain": 1,
            "syndrome_weight_after": 23
          },
          {
            "flip_index": 134,
            "llr_abs": 1.080448,
            "gain": 1,
            "syndrome_weight_after": 22
          },
          {
            "flip_index": 132,
            "llr_abs": 1.184399,
            "gain": 1,
            "syndrome_weight_after": 21
          }
        ],
        "repaired_message91_sha256_16": "bfdfff2107db5207"
      }
    },
    {
      "variant": "reverse_full_bitstream",
      "transform": "reverse_codeword",
      "hard_weight_174": 42,
      "llr_avg_abs": 2.3472972758620694,
      "syndrome": {
        "bits_len": 174,
        "message91": "1011011010000000000001010010000000000000000000000000100100100000110110100100010010000011010",
        "parity83_observed": "10000010001010000000001010000000000000000001010000010001000010101001000010100010101",
        "parity83_expected": "00011111010111011100010011000111011010110110011110110100101101001010100011101101011",
        "syndrome83": "10011101011101011100011001000111011010110111001110100101101111100011100001001111110",
        "syndrome_weight": 48,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "7be631281b81e799",
        "codeword174_sha256_16": "aa237514554a5da8"
      },
      "repair": {
        "attempted": true,
        "flip_count": 7,
        "repair_success": false,
        "final_syndrome_weight": 21,
        "trace": [
          {
            "flip_index": 77,
            "llr_abs": 0.100571,
            "gain": 21,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 136,
            "llr_abs": 0.198239,
            "gain": 1,
            "syndrome_weight_after": 26
          },
          {
            "flip_index": 166,
            "llr_abs": 0.513912,
            "gain": 1,
            "syndrome_weight_after": 25
          },
          {
            "flip_index": 155,
            "llr_abs": 0.525517,
            "gain": 1,
            "syndrome_weight_after": 24
          },
          {
            "flip_index": 148,
            "llr_abs": 0.629658,
            "gain": 1,
            "syndrome_weight_after": 23
          },
          {
            "flip_index": 134,
            "llr_abs": 1.080448,
            "gain": 1,
            "syndrome_weight_after": 22
          },
          {
            "flip_index": 132,
            "llr_abs": 1.184399,
            "gain": 1,
            "syndrome_weight_after": 21
          }
        ],
        "repaired_message91_sha256_16": "bfdfff2107db5207"
      }
    },
    {
      "variant": "lsb_within_each_tone",
      "transform": "inverted_bits",
      "hard_weight_174": 132,
      "llr_avg_abs": 2.3472972758620694,
      "syndrome": {
        "bits_len": 174,
        "message91": "0100100101111111111110100111111111111111111111111111011011011110010011011010110111110110101",
        "parity83_observed": "01111101011101111111011101111111111111111011101111101011111101010011111101110101010",
        "parity83_expected": "01010101111101100101111101010110101000110000001010110111011010101101111100000101110",
        "syndrome83": "00101000100000011010100000101001010111001011100101011100100111111110000001110000100",
        "syndrome_weight": 36,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "0b3495d4dcb58729",
        "codeword174_sha256_16": "512dbb8b5d661851"
      },
      "repair": {
        "attempted": true,
        "flip_count": 10,
        "repair_success": false,
        "final_syndrome_weight": 22,
        "trace": [
          {
            "flip_index": 80,
            "llr_abs": 0.186626,
            "gain": 1,
            "syndrome_weight_after": 35
          },
          {
            "flip_index": 23,
            "llr_abs": 0.368908,
            "gain": 5,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 149,
            "llr_abs": 0.203427,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 167,
            "llr_abs": 0.447295,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 153,
            "llr_abs": 0.45403,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 155,
            "llr_abs": 0.525517,
            "gain": 1,
            "syndrome_weight_after": 26
          },
          {
            "flip_index": 141,
            "llr_abs": 0.580772,
            "gain": 1,
            "syndrome_weight_after": 25
          },
          {
            "flip_index": 148,
            "llr_abs": 0.629658,
            "gain": 1,
            "syndrome_weight_after": 24
          },
          {
            "flip_index": 146,
            "llr_abs": 0.690814,
            "gain": 1,
            "syndrome_weight_after": 23
          },
          {
            "flip_index": 134,
            "llr_abs": 1.080448,
            "gain": 1,
            "syndrome_weight_after": 22
          }
        ],
        "repaired_message91_sha256_16": "1e0f0b3594694a28"
      }
    },
    {
      "variant": "reverse_symbol_order",
      "transform": "reverse_inverted_codeword",
      "hard_weight_174": 132,
      "llr_avg_abs": 2.3472972758620694,
      "syndrome": {
        "bits_len": 174,
        "message91": "0100100101111111111110100111111111111111111111111111011011011110010011011010110111110110101",
        "parity83_observed": "01111101011101111111011101111111111111111011101111101011111101010011111101110101010",
        "parity83_expected": "01010101111101100101111101010110101000110000001010110111011010101101111100000101110",
        "syndrome83": "00101000100000011010100000101001010111001011100101011100100111111110000001110000100",
        "syndrome_weight": 36,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "0b3495d4dcb58729",
        "codeword174_sha256_16": "512dbb8b5d661851"
      },
      "repair": {
        "attempted": true,
        "flip_count": 10,
        "repair_success": false,
        "final_syndrome_weight": 22,
        "trace": [
          {
            "flip_index": 80,
            "llr_abs": 0.186626,
            "gain": 1,
            "syndrome_weight_after": 35
          },
          {
            "flip_index": 23,
            "llr_abs": 0.368908,
            "gain": 5,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 149,
            "llr_abs": 0.203427,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 167,
            "llr_abs": 0.447295,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 153,
            "llr_abs": 0.45403,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 155,
            "llr_abs": 0.525517,
            "gain": 1,
            "syndrome_weight_after": 26
          },
          {
            "flip_index": 141,
            "llr_abs": 0.580772,
            "gain": 1,
            "syndrome_weight_after": 25
          },
          {
            "flip_index": 148,
            "llr_abs": 0.629658,
            "gain": 1,
            "syndrome_weight_after": 24
          },
          {
            "flip_index": 146,
            "llr_abs": 0.690814,
            "gain": 1,
            "syndrome_weight_after": 23
          },
          {
            "flip_index": 134,
            "llr_abs": 1.080448,
            "gain": 1,
            "syndrome_weight_after": 22
          }
        ],
        "repaired_message91_sha256_16": "1e0f0b3594694a28"
      }
    },
    {
      "variant": "lab_mask_xor_preview",
      "transform": "inverted_bits",
      "hard_weight_174": 93,
      "llr_avg_abs": 2.3472972758620694,
      "syndrome": {
        "bits_len": 174,
        "message91": "1100101001001010110000110011001011110101010000010110001010110001000110100011110000000101110",
        "parity83_observed": "01011001110111110110010111000101001001111101100010111101011010111011111111110110101",
        "parity83_expected": "10010001011000110111001100011000101000001101010110010011001111011000010001010100100",
        "syndrome83": "11001000101111000001011011011101100001110000110100101110010101100011101110100010001",
        "syndrome_weight": 41,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "1aad5d6d63b42d8b",
        "codeword174_sha256_16": "054a46b20bbe2b17"
      },
      "repair": {
        "attempted": true,
        "flip_count": 9,
        "repair_success": false,
        "final_syndrome_weight": 24,
        "trace": [
          {
            "flip_index": 46,
            "llr_abs": 0.652631,
            "gain": 7,
            "syndrome_weight_after": 34
          },
          {
            "flip_index": 47,
            "llr_abs": 0.838993,
            "gain": 3,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 165,
            "llr_abs": 0.394664,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 167,
            "llr_abs": 0.447295,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 141,
            "llr_abs": 0.580772,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 148,
            "llr_abs": 0.629658,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 146,
            "llr_abs": 0.690814,
            "gain": 1,
            "syndrome_weight_after": 26
          },
          {
            "flip_index": 139,
            "llr_abs": 0.830568,
            "gain": 1,
            "syndrome_weight_after": 25
          },
          {
            "flip_index": 107,
            "llr_abs": 1.052726,
            "gain": 1,
            "syndrome_weight_after": 24
          }
        ],
        "repaired_message91_sha256_16": "8e3b236f4e98152d"
      }
    },
    {
      "variant": "raw_msb_symbol_order",
      "transform": "inverted_bits",
      "hard_weight_174": 132,
      "llr_avg_abs": 2.3472972758620694,
      "syndrome": {
        "bits_len": 174,
        "message91": "0100100101111111111110101101111111111111111111111111011011011111001001011011101101111100101",
        "parity83_observed": "01111101110101111111110101111111111111111110101111101110111101010110111101011101010",
        "parity83_expected": "00011011011001001100100110101001001111000100001011000000101111100001110000101110101",
        "syndrome83": "01100110101100110011010011010110110000111010100100101110010010110111001101110011111",
        "syndrome_weight": 46,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "086185897eaaa973",
        "codeword174_sha256_16": "803233917e711d93"
      },
      "repair": {
        "attempted": true,
        "flip_count": 8,
        "repair_success": false,
        "final_syndrome_weight": 24,
        "trace": [
          {
            "flip_index": 46,
            "llr_abs": 0.652631,
            "gain": 13,
            "syndrome_weight_after": 33
          },
          {
            "flip_index": 65,
            "llr_abs": 1.11363,
            "gain": 3,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 167,
            "llr_abs": 0.447295,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 155,
            "llr_abs": 0.525517,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 139,
            "llr_abs": 0.830568,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 107,
            "llr_abs": 1.052726,
            "gain": 1,
            "syndrome_weight_after": 26
          },
          {
            "flip_index": 134,
            "llr_abs": 1.080448,
            "gain": 1,
            "syndrome_weight_after": 25
          },
          {
            "flip_index": 132,
            "llr_abs": 1.184399,
            "gain": 1,
            "syndrome_weight_after": 24
          }
        ],
        "repaired_message91_sha256_16": "3ea5a73cab31524f"
      }
    },
    {
      "variant": "reverse_full_bitstream",
      "transform": "reverse_inverted_codeword",
      "hard_weight_174": 132,
      "llr_avg_abs": 2.3472972758620694,
      "syndrome": {
        "bits_len": 174,
        "message91": "0100100101111111111110101101111111111111111111111111011011011111001001011011101101111100101",
        "parity83_observed": "01111101110101111111110101111111111111111110101111101110111101010110111101011101010",
        "parity83_expected": "00011011011001001100100110101001001111000100001011000000101111100001110000101110101",
        "syndrome83": "01100110101100110011010011010110110000111010100100101110010010110111001101110011111",
        "syndrome_weight": 46,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "086185897eaaa973",
        "codeword174_sha256_16": "803233917e711d93"
      },
      "repair": {
        "attempted": true,
        "flip_count": 8,
        "repair_success": false,
        "final_syndrome_weight": 24,
        "trace": [
          {
            "flip_index": 46,
            "llr_abs": 0.652631,
            "gain": 13,
            "syndrome_weight_after": 33
          },
          {
            "flip_index": 65,
            "llr_abs": 1.11363,
            "gain": 3,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 167,
            "llr_abs": 0.447295,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 155,
            "llr_abs": 0.525517,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 139,
            "llr_abs": 0.830568,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 107,
            "llr_abs": 1.052726,
            "gain": 1,
            "syndrome_weight_after": 26
          },
          {
            "flip_index": 134,
            "llr_abs": 1.080448,
            "gain": 1,
            "syndrome_weight_after": 25
          },
          {
            "flip_index": 132,
            "llr_abs": 1.184399,
            "gain": 1,
            "syndrome_weight_after": 24
          }
        ],
        "repaired_message91_sha256_16": "3ea5a73cab31524f"
      }
    },
    {
      "variant": "raw_msb_symbol_order",
      "transform": "reverse_inverted_codeword",
      "hard_weight_174": 132,
      "llr_avg_abs": 2.3472972758620685,
      "syndrome": {
        "bits_len": 174,
        "message91": "0101011101011110110101011110111011111010111111111111111111010111111111010111011111010100111",
        "parity83_observed": "11011011101101001001111101101101111111111111111111111111011010111111111111010010010",
        "parity83_expected": "11001101000100100100111011100101101011101001000110101000111001101110111100100110111",
        "syndrome83": "00010110101001101101000110001000010100010110111001010111100011010001000011110100101",
        "syndrome_weight": 38,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "962a747fc020f616",
        "codeword174_sha256_16": "acf36ad6bb9a74a2"
      },
      "repair": {
        "attempted": true,
        "flip_count": 8,
        "repair_success": false,
        "final_syndrome_weight": 26,
        "trace": [
          {
            "flip_index": 8,
            "llr_abs": 0.394664,
            "gain": 3,
            "syndrome_weight_after": 35
          },
          {
            "flip_index": 24,
            "llr_abs": 0.203427,
            "gain": 3,
            "syndrome_weight_after": 32
          },
          {
            "flip_index": 167,
            "llr_abs": 0.029594,
            "gain": 1,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 163,
            "llr_abs": 0.061966,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 152,
            "llr_abs": 0.383479,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 106,
            "llr_abs": 0.643602,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 166,
            "llr_abs": 0.699307,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 126,
            "llr_abs": 0.838993,
            "gain": 1,
            "syndrome_weight_after": 26
          }
        ],
        "repaired_message91_sha256_16": "847658d5e222e04b"
      }
    },
    {
      "variant": "reverse_full_bitstream",
      "transform": "inverted_bits",
      "hard_weight_174": 132,
      "llr_avg_abs": 2.3472972758620685,
      "syndrome": {
        "bits_len": 174,
        "message91": "0101011101011110110101011110111011111010111111111111111111010111111111010111011111010100111",
        "parity83_observed": "11011011101101001001111101101101111111111111111111111111011010111111111111010010010",
        "parity83_expected": "11001101000100100100111011100101101011101001000110101000111001101110111100100110111",
        "syndrome83": "00010110101001101101000110001000010100010110111001010111100011010001000011110100101",
        "syndrome_weight": 38,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "962a747fc020f616",
        "codeword174_sha256_16": "acf36ad6bb9a74a2"
      },
      "repair": {
        "attempted": true,
        "flip_count": 8,
        "repair_success": false,
        "final_syndrome_weight": 26,
        "trace": [
          {
            "flip_index": 8,
            "llr_abs": 0.394664,
            "gain": 3,
            "syndrome_weight_after": 35
          },
          {
            "flip_index": 24,
            "llr_abs": 0.203427,
            "gain": 3,
            "syndrome_weight_after": 32
          },
          {
            "flip_index": 167,
            "llr_abs": 0.029594,
            "gain": 1,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 163,
            "llr_abs": 0.061966,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 152,
            "llr_abs": 0.383479,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 106,
            "llr_abs": 0.643602,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 166,
            "llr_abs": 0.699307,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 126,
            "llr_abs": 0.838993,
            "gain": 1,
            "syndrome_weight_after": 26
          }
        ],
        "repaired_message91_sha256_16": "847658d5e222e04b"
      }
    },
    {
      "variant": "lsb_within_each_tone",
      "transform": "reverse_codeword",
      "hard_weight_174": 42,
      "llr_avg_abs": 2.3472972758620685,
      "syndrome": {
        "bits_len": 174,
        "message91": "1010101000100000011010100000010100000100010000000000000000100010000000100010100000101010010",
        "parity83_observed": "00001001010010011011000010010010000000000000000000000000001101000000000000101101101",
        "parity83_expected": "00010100010100010111101000101110101100110001011010101101000111011010011101000101010",
        "syndrome83": "00011101000110001100101010111100101100110001011010101101001010011010011101101000111",
        "syndrome_weight": 42,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "108d67968226618d",
        "codeword174_sha256_16": "e0aaca7eeb47fb42"
      },
      "repair": {
        "attempted": true,
        "flip_count": 10,
        "repair_success": false,
        "final_syndrome_weight": 26,
        "trace": [
          {
            "flip_index": 41,
            "llr_abs": 1.184399,
            "gain": 7,
            "syndrome_weight_after": 35
          },
          {
            "flip_index": 167,
            "llr_abs": 0.029594,
            "gain": 1,
            "syndrome_weight_after": 34
          },
          {
            "flip_index": 96,
            "llr_abs": 0.100571,
            "gain": 1,
            "syndrome_weight_after": 33
          },
          {
            "flip_index": 170,
            "llr_abs": 0.360653,
            "gain": 1,
            "syndrome_weight_after": 32
          },
          {
            "flip_index": 150,
            "llr_abs": 0.368908,
            "gain": 1,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 152,
            "llr_abs": 0.383479,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 127,
            "llr_abs": 0.652631,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 166,
            "llr_abs": 0.699307,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 125,
            "llr_abs": 0.96535,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 162,
            "llr_abs": 1.164758,
            "gain": 1,
            "syndrome_weight_after": 26
          }
        ],
        "repaired_message91_sha256_16": "c56bffb67c82f3ae"
      }
    },
    {
      "variant": "reverse_symbol_order",
      "transform": "as_exported",
      "hard_weight_174": 42,
      "llr_avg_abs": 2.3472972758620685,
      "syndrome": {
        "bits_len": 174,
        "message91": "1010101000100000011010100000010100000100010000000000000000100010000000100010100000101010010",
        "parity83_observed": "00001001010010011011000010010010000000000000000000000000001101000000000000101101101",
        "parity83_expected": "00010100010100010111101000101110101100110001011010101101000111011010011101000101010",
        "syndrome83": "00011101000110001100101010111100101100110001011010101101001010011010011101101000111",
        "syndrome_weight": 42,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "108d67968226618d",
        "codeword174_sha256_16": "e0aaca7eeb47fb42"
      },
      "repair": {
        "attempted": true,
        "flip_count": 10,
        "repair_success": false,
        "final_syndrome_weight": 26,
        "trace": [
          {
            "flip_index": 41,
            "llr_abs": 1.184399,
            "gain": 7,
            "syndrome_weight_after": 35
          },
          {
            "flip_index": 167,
            "llr_abs": 0.029594,
            "gain": 1,
            "syndrome_weight_after": 34
          },
          {
            "flip_index": 96,
            "llr_abs": 0.100571,
            "gain": 1,
            "syndrome_weight_after": 33
          },
          {
            "flip_index": 170,
            "llr_abs": 0.360653,
            "gain": 1,
            "syndrome_weight_after": 32
          },
          {
            "flip_index": 150,
            "llr_abs": 0.368908,
            "gain": 1,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 152,
            "llr_abs": 0.383479,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 127,
            "llr_abs": 0.652631,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 166,
            "llr_abs": 0.699307,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 125,
            "llr_abs": 0.96535,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 162,
            "llr_abs": 1.164758,
            "gain": 1,
            "syndrome_weight_after": 26
          }
        ],
        "repaired_message91_sha256_16": "c56bffb67c82f3ae"
      }
    },
    {
      "variant": "lab_mask_xor_preview",
      "transform": "as_exported",
      "hard_weight_174": 81,
      "llr_avg_abs": 2.3472972758620694,
      "syndrome": {
        "bits_len": 174,
        "message91": "0011010110110101001111001100110100001010101111101001110101001110111001011100001111111010001",
        "parity83_observed": "10100110001000001001101000111010110110000010011101000010100101000100000000001001010",
        "parity83_expected": "10010101010110100111111001110110111101111111000011100111001101110011000010010111010",
        "syndrome83": "00110011011110101110010001001100001011111101011110100101101000110111000010011110000",
        "syndrome_weight": 43,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "a7a485e3eb4e4d1f",
        "codeword174_sha256_16": "8760e03bd72092c3"
      },
      "repair": {
        "attempted": true,
        "flip_count": 5,
        "repair_success": false,
        "final_syndrome_weight": 26,
        "trace": [
          {
            "flip_index": 77,
            "llr_abs": 0.100571,
            "gain": 13,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 155,
            "llr_abs": 0.525517,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 148,
            "llr_abs": 0.629658,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 134,
            "llr_abs": 1.080448,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 132,
            "llr_abs": 1.184399,
            "gain": 1,
            "syndrome_weight_after": 26
          }
        ],
        "repaired_message91_sha256_16": "65bdfe8aac0da563"
      }
    },
    {
      "variant": "lsb_within_each_tone",
      "transform": "reverse_inverted_codeword",
      "hard_weight_174": 132,
      "llr_avg_abs": 2.3472972758620685,
      "syndrome": {
        "bits_len": 174,
        "message91": "0101010111011111100101011111101011111011101111111111111111011101111111011101011111010101101",
        "parity83_observed": "11110110101101100100111101101101111111111111111111111111110010111111111111010010010",
        "parity83_expected": "00010000011010000111011101000000111001000011001111011001000101110001001110000110100",
        "syndrome83": "11100110110111100011100000101101000110111100110000100110110111001110110001010100110",
        "syndrome_weight": 44,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "3ebff23a7a34d22c",
        "codeword174_sha256_16": "7b4ef0e51dd6fda1"
      },
      "repair": {
        "attempted": true,
        "flip_count": 6,
        "repair_success": false,
        "final_syndrome_weight": 26,
        "trace": [
          {
            "flip_index": 36,
            "llr_abs": 0.246935,
            "gain": 13,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 167,
            "llr_abs": 0.029594,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 151,
            "llr_abs": 0.04658,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 106,
            "llr_abs": 0.643602,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 126,
            "llr_abs": 0.838993,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 125,
            "llr_abs": 0.96535,
            "gain": 1,
            "syndrome_weight_after": 26
          }
        ],
        "repaired_message91_sha256_16": "66772c5492e1b0c6"
      }
    },
    {
      "variant": "reverse_symbol_order",
      "transform": "inverted_bits",
      "hard_weight_174": 132,
      "llr_avg_abs": 2.3472972758620685,
      "syndrome": {
        "bits_len": 174,
        "message91": "0101010111011111100101011111101011111011101111111111111111011101111111011101011111010101101",
        "parity83_observed": "11110110101101100100111101101101111111111111111111111111110010111111111111010010010",
        "parity83_expected": "00010000011010000111011101000000111001000011001111011001000101110001001110000110100",
        "syndrome83": "11100110110111100011100000101101000110111100110000100110110111001110110001010100110",
        "syndrome_weight": 44,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "3ebff23a7a34d22c",
        "codeword174_sha256_16": "7b4ef0e51dd6fda1"
      },
      "repair": {
        "attempted": true,
        "flip_count": 6,
        "repair_success": false,
        "final_syndrome_weight": 26,
        "trace": [
          {
            "flip_index": 36,
            "llr_abs": 0.246935,
            "gain": 13,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 167,
            "llr_abs": 0.029594,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 151,
            "llr_abs": 0.04658,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 106,
            "llr_abs": 0.643602,
            "gain": 1,
            "syndrome_weight_after": 28
          },
          {
            "flip_index": 126,
            "llr_abs": 0.838993,
            "gain": 1,
            "syndrome_weight_after": 27
          },
          {
            "flip_index": 125,
            "llr_abs": 0.96535,
            "gain": 1,
            "syndrome_weight_after": 26
          }
        ],
        "repaired_message91_sha256_16": "66772c5492e1b0c6"
      }
    },
    {
      "variant": "lab_mask_xor_preview",
      "transform": "reverse_inverted_codeword",
      "hard_weight_174": 93,
      "llr_avg_abs": 2.3472972758620685,
      "syndrome": {
        "bits_len": 174,
        "message91": "1010110111111111101110101101011110100011011111001001010001110100110111110111001101001110100",
        "parity83_observed": "00000111100010110001000110101000110100000101010111101001100110000110101001001010011",
        "parity83_expected": "01001111101000111001101111100110001110101011010101110111001011011110011010001001100",
        "syndrome83": "01001000001010001000101001001110111010101110000010011110101101011000110011000011111",
        "syndrome_weight": 39,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "166a79d9abfb4e53",
        "codeword174_sha256_16": "c0f0181e32499067"
      },
      "repair": {
        "attempted": true,
        "flip_count": 7,
        "repair_success": false,
        "final_syndrome_weight": 28,
        "trace": [
          {
            "flip_index": 8,
            "llr_abs": 0.394664,
            "gain": 5,
            "syndrome_weight_after": 34
          },
          {
            "flip_index": 167,
            "llr_abs": 0.029594,
            "gain": 1,
            "syndrome_weight_after": 33
          },
          {
            "flip_index": 151,
            "llr_abs": 0.04658,
            "gain": 1,
            "syndrome_weight_after": 32
          },
          {
            "flip_index": 165,
            "llr_abs": 0.217716,
            "gain": 1,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 126,
            "llr_abs": 0.838993,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 125,
            "llr_abs": 0.96535,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 108,
            "llr_abs": 1.11363,
            "gain": 1,
            "syndrome_weight_after": 28
          }
        ],
        "repaired_message91_sha256_16": "3ac3a1896f063d5c"
      }
    },
    {
      "variant": "lsb_within_each_tone",
      "transform": "as_exported",
      "hard_weight_174": 42,
      "llr_avg_abs": 2.3472972758620694,
      "syndrome": {
        "bits_len": 174,
        "message91": "1011011010000000000001011000000000000000000000000000100100100001101100100101001000001001010",
        "parity83_observed": "10000010100010000000100010000000000000000100010000010100000010101100000010001010101",
        "parity83_expected": "01010001110011110101001000111000111101000010011111000011011000000110101111000110000",
        "syndrome83": "11010011010001110101101010111000111101000110001111010111011010101010101101001100101",
        "syndrome_weight": 46,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "955c77d80df1fcb9",
        "codeword174_sha256_16": "c9eebc015cbfc7d5"
      },
      "repair": {
        "attempted": true,
        "flip_count": 8,
        "repair_success": false,
        "final_syndrome_weight": 28,
        "trace": [
          {
            "flip_index": 6,
            "llr_abs": 0.029594,
            "gain": 11,
            "syndrome_weight_after": 35
          },
          {
            "flip_index": 137,
            "llr_abs": 0.246935,
            "gain": 1,
            "syndrome_weight_after": 34
          },
          {
            "flip_index": 143,
            "llr_abs": 0.288153,
            "gain": 1,
            "syndrome_weight_after": 33
          },
          {
            "flip_index": 153,
            "llr_abs": 0.45403,
            "gain": 1,
            "syndrome_weight_after": 32
          },
          {
            "flip_index": 142,
            "llr_abs": 0.496341,
            "gain": 1,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 148,
            "llr_abs": 0.629658,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 134,
            "llr_abs": 1.080448,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 132,
            "llr_abs": 1.184399,
            "gain": 1,
            "syndrome_weight_after": 28
          }
        ],
        "repaired_message91_sha256_16": "74cab80ed66254c9"
      }
    },
    {
      "variant": "reverse_symbol_order",
      "transform": "reverse_codeword",
      "hard_weight_174": 42,
      "llr_avg_abs": 2.3472972758620694,
      "syndrome": {
        "bits_len": 174,
        "message91": "1011011010000000000001011000000000000000000000000000100100100001101100100101001000001001010",
        "parity83_observed": "10000010100010000000100010000000000000000100010000010100000010101100000010001010101",
        "parity83_expected": "01010001110011110101001000111000111101000010011111000011011000000110101111000110000",
        "syndrome83": "11010011010001110101101010111000111101000110001111010111011010101010101101001100101",
        "syndrome_weight": 46,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "955c77d80df1fcb9",
        "codeword174_sha256_16": "c9eebc015cbfc7d5"
      },
      "repair": {
        "attempted": true,
        "flip_count": 8,
        "repair_success": false,
        "final_syndrome_weight": 28,
        "trace": [
          {
            "flip_index": 6,
            "llr_abs": 0.029594,
            "gain": 11,
            "syndrome_weight_after": 35
          },
          {
            "flip_index": 137,
            "llr_abs": 0.246935,
            "gain": 1,
            "syndrome_weight_after": 34
          },
          {
            "flip_index": 143,
            "llr_abs": 0.288153,
            "gain": 1,
            "syndrome_weight_after": 33
          },
          {
            "flip_index": 153,
            "llr_abs": 0.45403,
            "gain": 1,
            "syndrome_weight_after": 32
          },
          {
            "flip_index": 142,
            "llr_abs": 0.496341,
            "gain": 1,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 148,
            "llr_abs": 0.629658,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 134,
            "llr_abs": 1.080448,
            "gain": 1,
            "syndrome_weight_after": 29
          },
          {
            "flip_index": 132,
            "llr_abs": 1.184399,
            "gain": 1,
            "syndrome_weight_after": 28
          }
        ],
        "repaired_message91_sha256_16": "74cab80ed66254c9"
      }
    },
    {
      "variant": "lab_mask_xor_preview",
      "transform": "reverse_codeword",
      "hard_weight_174": 81,
      "llr_avg_abs": 2.3472972758620685,
      "syndrome": {
        "bits_len": 174,
        "message91": "0101001000000000010001010010100001011100100000110110101110001011001000001000110010110001011",
        "parity83_observed": "11111000011101001110111001010111001011111010101000010110011001111001010110110101100",
        "parity83_expected": "01001011100110101001011010001000011011011001000000000011001001110101001001001010010",
        "syndrome83": "10110011111011100111100011011111010000100011101000010101010000001100011111111111110",
        "syndrome_weight": 47,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "3767412c437ee071",
        "codeword174_sha256_16": "2dbdc32b125cc762"
      },
      "repair": {
        "attempted": true,
        "flip_count": 8,
        "repair_success": false,
        "final_syndrome_weight": 29,
        "trace": [
          {
            "flip_index": 20,
            "llr_abs": 0.45403,
            "gain": 11,
            "syndrome_weight_after": 36
          },
          {
            "flip_index": 167,
            "llr_abs": 0.029594,
            "gain": 1,
            "syndrome_weight_after": 35
          },
          {
            "flip_index": 96,
            "llr_abs": 0.100571,
            "gain": 1,
            "syndrome_weight_after": 34
          },
          {
            "flip_index": 150,
            "llr_abs": 0.368908,
            "gain": 1,
            "syndrome_weight_after": 33
          },
          {
            "flip_index": 152,
            "llr_abs": 0.383479,
            "gain": 1,
            "syndrome_weight_after": 32
          },
          {
            "flip_index": 127,
            "llr_abs": 0.652631,
            "gain": 1,
            "syndrome_weight_after": 31
          },
          {
            "flip_index": 166,
            "llr_abs": 0.699307,
            "gain": 1,
            "syndrome_weight_after": 30
          },
          {
            "flip_index": 125,
            "llr_abs": 0.96535,
            "gain": 1,
            "syndrome_weight_after": 29
          }
        ],
        "repaired_message91_sha256_16": "d1606d6c8a9256ef"
      }
    }
  ],
  "decodes": [],
  "outputs": {
    "ldpc_matrix_probe_json": "/decoders/js8_decoder/runtime/ldpc_matrix_probe/step19_ldpc_matrix_probe.json"
  },
  "warnings": [
    "Step 32 uses the real public FT8/JS8-style (174,91) generator matrix for a hard-decision syndrome probe.",
    "This is not yet a complete soft LDPC belief-propagation decoder and does not unpack JS8 messages.",
    "If best_matrix_probe reaches syndrome_weight 0, the next step can feed message91 into CRC/message unpack. Otherwise Step 32 should add real soft LDPC iterations."
  ],
  "next_action": "Upload logs. Next step: soft LDPC belief-propagation/min-sum decoder using this matrix contract, then JS8 message unpacking."
}
