{
  "ok": true,
  "mode": "JS8",
  "tool": "webftr-js8-soft-ldpc-minsum-probe",
  "tool_version": "step37-timing-best-candidate-softdecode",
  "input_wav": null,
  "candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step37_best_timing_fec_candidate.json",
  "rx_only": true,
  "safety": {
    "tx": false,
    "ptt": false,
    "tune": false,
    "send": false,
    "js8call_runtime_control": false
  },
  "implementation_stage": "step37_bounded_gray_interleaver_llr_minsum_probe_no_message_unpack",
  "matrix": {
    "code": "(174,91)",
    "message_bits": 91,
    "parity_bits": 83,
    "codeword_bits": 174,
    "check_count": 83
  },
  "decoder": {
    "algorithm": "normalized_min_sum_multi_trial",
    "max_iterations": 24,
    "default_alpha": 0.8,
    "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely",
    "mapping_expansion": "ft8_gray_demap_plus_bitrev_interleaver_candidates",
    "max_decode_rows": 12,
    "fast_trials": true,
    "trial_count": 2
  },
  "candidate_context": {
    "nsps_used": 6400,
    "nsps_is_js8_realistic": true,
    "selected_profile": null,
    "selected_variant": {
      "name": "raw_msb_symbol_order",
      "rank_score": 126.748644,
      "complete_174bit_candidate": true,
      "hard_bits_sha256_16": "a0f5d6c517051f17",
      "hard_weight_174": 39,
      "llr_stats": {
        "count": 174,
        "avg_abs": 2.187161,
        "min_abs": 0.036806,
        "max_abs": 4.061714,
        "positive": 136,
        "negative": 38,
        "zero": 0
      }
    }
  },
  "candidate_mapping_rows": 828,
  "probe_count": 24,
  "best_soft_decode": {
    "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
    "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
    "mapping_meta": {
      "tone_mapping": "lsb_within_each_tone",
      "interleaver": "ft8_bitrev",
      "direction": "interleave_codeword_to_rx_inverse",
      "order_len": 174
    },
    "decoder_trial": {
      "llr_scale": 0.75,
      "alpha": 0.7
    },
    "source_rank_score": 107.134868,
    "source_llr_stats": {
      "count": 174,
      "avg_abs": 1.783717,
      "min_abs": 0.004438,
      "max_abs": 4.061714,
      "positive": 144,
      "negative": 30,
      "zero": 0
    },
    "success": false,
    "iterations_used": 24,
    "final_syndrome_weight": 11,
    "message91": null,
    "message91_sha256_16": "400988287db337c2",
    "codeword174_sha256_16": "c46ba1370eef0d61",
    "trace": [
      {
        "iteration": 0,
        "syndrome_weight": 36
      },
      {
        "iteration": 1,
        "syndrome_weight": 35
      },
      {
        "iteration": 2,
        "syndrome_weight": 43
      },
      {
        "iteration": 3,
        "syndrome_weight": 39
      },
      {
        "iteration": 4,
        "syndrome_weight": 43
      },
      {
        "iteration": 5,
        "syndrome_weight": 42
      },
      {
        "iteration": 6,
        "syndrome_weight": 46
      },
      {
        "iteration": 7,
        "syndrome_weight": 38
      },
      {
        "iteration": 8,
        "syndrome_weight": 40
      },
      {
        "iteration": 9,
        "syndrome_weight": 34
      },
      {
        "iteration": 10,
        "syndrome_weight": 34
      },
      {
        "iteration": 15,
        "syndrome_weight": 36
      },
      {
        "iteration": 20,
        "syndrome_weight": 24
      }
    ]
  },
  "soft_decode_results": [
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
      "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 107.134868,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.783717,
        "min_abs": 0.004438,
        "max_abs": 4.061714,
        "positive": 144,
        "negative": 30,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 11,
      "message91": null,
      "message91_sha256_16": "400988287db337c2",
      "codeword174_sha256_16": "c46ba1370eef0d61",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 36
        },
        {
          "iteration": 1,
          "syndrome_weight": 35
        },
        {
          "iteration": 2,
          "syndrome_weight": 43
        },
        {
          "iteration": 3,
          "syndrome_weight": 39
        },
        {
          "iteration": 4,
          "syndrome_weight": 43
        },
        {
          "iteration": 5,
          "syndrome_weight": 42
        },
        {
          "iteration": 6,
          "syndrome_weight": 46
        },
        {
          "iteration": 7,
          "syndrome_weight": 38
        },
        {
          "iteration": 8,
          "syndrome_weight": 40
        },
        {
          "iteration": 9,
          "syndrome_weight": 34
        },
        {
          "iteration": 10,
          "syndrome_weight": 34
        },
        {
          "iteration": 15,
          "syndrome_weight": 36
        },
        {
          "iteration": 20,
          "syndrome_weight": 24
        }
      ]
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "none",
        "polarity": "inverted"
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 108.748644,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.187161,
        "min_abs": 0.036806,
        "max_abs": 4.061714,
        "positive": 136,
        "negative": 38,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 24,
      "message91": null,
      "message91_sha256_16": "12da459d82631058",
      "codeword174_sha256_16": "960f0cc7237b0dc8",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 51
        },
        {
          "iteration": 1,
          "syndrome_weight": 41
        },
        {
          "iteration": 2,
          "syndrome_weight": 43
        },
        {
          "iteration": 3,
          "syndrome_weight": 49
        },
        {
          "iteration": 4,
          "syndrome_weight": 44
        },
        {
          "iteration": 5,
          "syndrome_weight": 43
        },
        {
          "iteration": 6,
          "syndrome_weight": 43
        },
        {
          "iteration": 7,
          "syndrome_weight": 51
        },
        {
          "iteration": 8,
          "syndrome_weight": 35
        },
        {
          "iteration": 9,
          "syndrome_weight": 37
        },
        {
          "iteration": 10,
          "syndrome_weight": 43
        },
        {
          "iteration": 15,
          "syndrome_weight": 50
        },
        {
          "iteration": 20,
          "syndrome_weight": 44
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 107.257004,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.814251,
        "min_abs": 0.001652,
        "max_abs": 4.061714,
        "positive": 144,
        "negative": 30,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 27,
      "message91": null,
      "message91_sha256_16": "4b731c0dfe5ea20a",
      "codeword174_sha256_16": "c74493b94aa5d55e",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 34
        },
        {
          "iteration": 1,
          "syndrome_weight": 44
        },
        {
          "iteration": 2,
          "syndrome_weight": 36
        },
        {
          "iteration": 3,
          "syndrome_weight": 39
        },
        {
          "iteration": 4,
          "syndrome_weight": 40
        },
        {
          "iteration": 5,
          "syndrome_weight": 36
        },
        {
          "iteration": 6,
          "syndrome_weight": 43
        },
        {
          "iteration": 7,
          "syndrome_weight": 47
        },
        {
          "iteration": 8,
          "syndrome_weight": 46
        },
        {
          "iteration": 9,
          "syndrome_weight": 46
        },
        {
          "iteration": 10,
          "syndrome_weight": 43
        },
        {
          "iteration": 15,
          "syndrome_weight": 42
        },
        {
          "iteration": 20,
          "syndrome_weight": 27
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
      "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174,
        "polarity": "inverted"
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 107.257004,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.814251,
        "min_abs": 0.001652,
        "max_abs": 4.061714,
        "positive": 144,
        "negative": 30,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 29,
      "message91": null,
      "message91_sha256_16": "3b0993ae252f5d59",
      "codeword174_sha256_16": "c58a3a30ef6d3303",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 43
        },
        {
          "iteration": 1,
          "syndrome_weight": 35
        },
        {
          "iteration": 2,
          "syndrome_weight": 41
        },
        {
          "iteration": 3,
          "syndrome_weight": 33
        },
        {
          "iteration": 4,
          "syndrome_weight": 45
        },
        {
          "iteration": 5,
          "syndrome_weight": 46
        },
        {
          "iteration": 6,
          "syndrome_weight": 45
        },
        {
          "iteration": 7,
          "syndrome_weight": 41
        },
        {
          "iteration": 8,
          "syndrome_weight": 41
        },
        {
          "iteration": 9,
          "syndrome_weight": 43
        },
        {
          "iteration": 10,
          "syndrome_weight": 31
        },
        {
          "iteration": 15,
          "syndrome_weight": 43
        },
        {
          "iteration": 20,
          "syndrome_weight": 39
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "lsb_within_each_tone+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "none"
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 106.27586,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.568965,
        "min_abs": 0.004438,
        "max_abs": 3.929378,
        "positive": 127,
        "negative": 47,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 29,
      "message91": null,
      "message91_sha256_16": "700ff27d783dc744",
      "codeword174_sha256_16": "2d62ec563c3489ce",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 45
        },
        {
          "iteration": 1,
          "syndrome_weight": 48
        },
        {
          "iteration": 2,
          "syndrome_weight": 41
        },
        {
          "iteration": 3,
          "syndrome_weight": 43
        },
        {
          "iteration": 4,
          "syndrome_weight": 37
        },
        {
          "iteration": 5,
          "syndrome_weight": 42
        },
        {
          "iteration": 6,
          "syndrome_weight": 39
        },
        {
          "iteration": 7,
          "syndrome_weight": 36
        },
        {
          "iteration": 8,
          "syndrome_weight": 37
        },
        {
          "iteration": 9,
          "syndrome_weight": 41
        },
        {
          "iteration": 10,
          "syndrome_weight": 30
        },
        {
          "iteration": 15,
          "syndrome_weight": 38
        },
        {
          "iteration": 20,
          "syndrome_weight": 40
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
      "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "none",
        "polarity": "inverted"
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 106.27586,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.568965,
        "min_abs": 0.004438,
        "max_abs": 3.929378,
        "positive": 127,
        "negative": 47,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 29,
      "message91": null,
      "message91_sha256_16": "9a6e72196d49d4ec",
      "codeword174_sha256_16": "fe380491be8a1e5a",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 29
        },
        {
          "iteration": 1,
          "syndrome_weight": 42
        },
        {
          "iteration": 2,
          "syndrome_weight": 36
        },
        {
          "iteration": 3,
          "syndrome_weight": 29
        },
        {
          "iteration": 4,
          "syndrome_weight": 29
        },
        {
          "iteration": 5,
          "syndrome_weight": 33
        },
        {
          "iteration": 6,
          "syndrome_weight": 35
        },
        {
          "iteration": 7,
          "syndrome_weight": 32
        },
        {
          "iteration": 8,
          "syndrome_weight": 39
        },
        {
          "iteration": 9,
          "syndrome_weight": 49
        },
        {
          "iteration": 10,
          "syndrome_weight": 44
        },
        {
          "iteration": 15,
          "syndrome_weight": 40
        },
        {
          "iteration": 20,
          "syndrome_weight": 41
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
      "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "none",
        "polarity": "inverted"
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 106.27586,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.568965,
        "min_abs": 0.004438,
        "max_abs": 3.929378,
        "positive": 127,
        "negative": 47,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 29,
      "message91": null,
      "message91_sha256_16": "9a6e72196d49d4ec",
      "codeword174_sha256_16": "fe380491be8a1e5a",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 29
        },
        {
          "iteration": 1,
          "syndrome_weight": 41
        },
        {
          "iteration": 2,
          "syndrome_weight": 42
        },
        {
          "iteration": 3,
          "syndrome_weight": 41
        },
        {
          "iteration": 4,
          "syndrome_weight": 48
        },
        {
          "iteration": 5,
          "syndrome_weight": 36
        },
        {
          "iteration": 6,
          "syndrome_weight": 42
        },
        {
          "iteration": 7,
          "syndrome_weight": 39
        },
        {
          "iteration": 8,
          "syndrome_weight": 44
        },
        {
          "iteration": 9,
          "syndrome_weight": 43
        },
        {
          "iteration": 10,
          "syndrome_weight": 42
        },
        {
          "iteration": 15,
          "syndrome_weight": 34
        },
        {
          "iteration": 20,
          "syndrome_weight": 42
        }
      ]
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 108.748644,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.187161,
        "min_abs": 0.036806,
        "max_abs": 4.061714,
        "positive": 136,
        "negative": 38,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 30,
      "message91": null,
      "message91_sha256_16": "0a6e3d783a753e3d",
      "codeword174_sha256_16": "969bcf80fc357250",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 41
        },
        {
          "iteration": 1,
          "syndrome_weight": 30
        },
        {
          "iteration": 2,
          "syndrome_weight": 30
        },
        {
          "iteration": 3,
          "syndrome_weight": 45
        },
        {
          "iteration": 4,
          "syndrome_weight": 51
        },
        {
          "iteration": 5,
          "syndrome_weight": 32
        },
        {
          "iteration": 6,
          "syndrome_weight": 36
        },
        {
          "iteration": 7,
          "syndrome_weight": 46
        },
        {
          "iteration": 8,
          "syndrome_weight": 41
        },
        {
          "iteration": 9,
          "syndrome_weight": 39
        },
        {
          "iteration": 10,
          "syndrome_weight": 35
        },
        {
          "iteration": 15,
          "syndrome_weight": 39
        },
        {
          "iteration": 20,
          "syndrome_weight": 42
        }
      ]
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 108.748644,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.187161,
        "min_abs": 0.036806,
        "max_abs": 4.061714,
        "positive": 136,
        "negative": 38,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 30,
      "message91": null,
      "message91_sha256_16": "0a6e3d783a753e3d",
      "codeword174_sha256_16": "969bcf80fc357250",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 41
        },
        {
          "iteration": 1,
          "syndrome_weight": 30
        },
        {
          "iteration": 2,
          "syndrome_weight": 31
        },
        {
          "iteration": 3,
          "syndrome_weight": 50
        },
        {
          "iteration": 4,
          "syndrome_weight": 39
        },
        {
          "iteration": 5,
          "syndrome_weight": 43
        },
        {
          "iteration": 6,
          "syndrome_weight": 34
        },
        {
          "iteration": 7,
          "syndrome_weight": 42
        },
        {
          "iteration": 8,
          "syndrome_weight": 40
        },
        {
          "iteration": 9,
          "syndrome_weight": 43
        },
        {
          "iteration": 10,
          "syndrome_weight": 38
        },
        {
          "iteration": 15,
          "syndrome_weight": 42
        },
        {
          "iteration": 20,
          "syndrome_weight": 39
        }
      ]
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "none",
        "polarity": "inverted"
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 108.748644,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.187161,
        "min_abs": 0.036806,
        "max_abs": 4.061714,
        "positive": 136,
        "negative": 38,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 30,
      "message91": null,
      "message91_sha256_16": "87ea223fabb39ea1",
      "codeword174_sha256_16": "f795063279c15de8",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 51
        },
        {
          "iteration": 1,
          "syndrome_weight": 41
        },
        {
          "iteration": 2,
          "syndrome_weight": 43
        },
        {
          "iteration": 3,
          "syndrome_weight": 48
        },
        {
          "iteration": 4,
          "syndrome_weight": 39
        },
        {
          "iteration": 5,
          "syndrome_weight": 39
        },
        {
          "iteration": 6,
          "syndrome_weight": 40
        },
        {
          "iteration": 7,
          "syndrome_weight": 43
        },
        {
          "iteration": 8,
          "syndrome_weight": 43
        },
        {
          "iteration": 9,
          "syndrome_weight": 41
        },
        {
          "iteration": 10,
          "syndrome_weight": 47
        },
        {
          "iteration": 15,
          "syndrome_weight": 32
        },
        {
          "iteration": 20,
          "syndrome_weight": 30
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
      "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 106.27586,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.568965,
        "min_abs": 0.004438,
        "max_abs": 3.929378,
        "positive": 127,
        "negative": 47,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 30,
      "message91": null,
      "message91_sha256_16": "b5c11bb6e06a2d3b",
      "codeword174_sha256_16": "9e5217d20a7d5e34",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 32
        },
        {
          "iteration": 1,
          "syndrome_weight": 40
        },
        {
          "iteration": 2,
          "syndrome_weight": 34
        },
        {
          "iteration": 3,
          "syndrome_weight": 42
        },
        {
          "iteration": 4,
          "syndrome_weight": 41
        },
        {
          "iteration": 5,
          "syndrome_weight": 34
        },
        {
          "iteration": 6,
          "syndrome_weight": 33
        },
        {
          "iteration": 7,
          "syndrome_weight": 34
        },
        {
          "iteration": 8,
          "syndrome_weight": 43
        },
        {
          "iteration": 9,
          "syndrome_weight": 45
        },
        {
          "iteration": 10,
          "syndrome_weight": 45
        },
        {
          "iteration": 15,
          "syndrome_weight": 38
        },
        {
          "iteration": 20,
          "syndrome_weight": 33
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "lsb_within_each_tone+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "none"
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 106.27586,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.568965,
        "min_abs": 0.004438,
        "max_abs": 3.929378,
        "positive": 127,
        "negative": 47,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 30,
      "message91": null,
      "message91_sha256_16": "700ff27d783dc744",
      "codeword174_sha256_16": "03733fdd80fa7c90",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 45
        },
        {
          "iteration": 1,
          "syndrome_weight": 48
        },
        {
          "iteration": 2,
          "syndrome_weight": 41
        },
        {
          "iteration": 3,
          "syndrome_weight": 38
        },
        {
          "iteration": 4,
          "syndrome_weight": 41
        },
        {
          "iteration": 5,
          "syndrome_weight": 45
        },
        {
          "iteration": 6,
          "syndrome_weight": 41
        },
        {
          "iteration": 7,
          "syndrome_weight": 36
        },
        {
          "iteration": 8,
          "syndrome_weight": 35
        },
        {
          "iteration": 9,
          "syndrome_weight": 30
        },
        {
          "iteration": 10,
          "syndrome_weight": 37
        },
        {
          "iteration": 15,
          "syndrome_weight": 36
        },
        {
          "iteration": 20,
          "syndrome_weight": 44
        }
      ]
    },
    {
      "variant": "lsb_within_each_tone",
      "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 118.748644,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.187161,
        "min_abs": 0.036806,
        "max_abs": 4.061714,
        "positive": 136,
        "negative": 38,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 31,
      "message91": null,
      "message91_sha256_16": "8c2dc90a31ba234b",
      "codeword174_sha256_16": "12727e866a14d7b9",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 39
        },
        {
          "iteration": 1,
          "syndrome_weight": 38
        },
        {
          "iteration": 2,
          "syndrome_weight": 50
        },
        {
          "iteration": 3,
          "syndrome_weight": 45
        },
        {
          "iteration": 4,
          "syndrome_weight": 47
        },
        {
          "iteration": 5,
          "syndrome_weight": 36
        },
        {
          "iteration": 6,
          "syndrome_weight": 42
        },
        {
          "iteration": 7,
          "syndrome_weight": 42
        },
        {
          "iteration": 8,
          "syndrome_weight": 43
        },
        {
          "iteration": 9,
          "syndrome_weight": 52
        },
        {
          "iteration": 10,
          "syndrome_weight": 35
        },
        {
          "iteration": 15,
          "syndrome_weight": 38
        },
        {
          "iteration": 20,
          "syndrome_weight": 43
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 106.397992,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.599498,
        "min_abs": 0.001652,
        "max_abs": 3.929378,
        "positive": 127,
        "negative": 47,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 31,
      "message91": null,
      "message91_sha256_16": "decf562057b79be1",
      "codeword174_sha256_16": "de49caa3e03a2faa",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 37
        },
        {
          "iteration": 1,
          "syndrome_weight": 35
        },
        {
          "iteration": 2,
          "syndrome_weight": 34
        },
        {
          "iteration": 3,
          "syndrome_weight": 39
        },
        {
          "iteration": 4,
          "syndrome_weight": 51
        },
        {
          "iteration": 5,
          "syndrome_weight": 40
        },
        {
          "iteration": 6,
          "syndrome_weight": 41
        },
        {
          "iteration": 7,
          "syndrome_weight": 40
        },
        {
          "iteration": 8,
          "syndrome_weight": 39
        },
        {
          "iteration": 9,
          "syndrome_weight": 42
        },
        {
          "iteration": 10,
          "syndrome_weight": 36
        },
        {
          "iteration": 15,
          "syndrome_weight": 41
        },
        {
          "iteration": 20,
          "syndrome_weight": 32
        }
      ]
    },
    {
      "variant": "lab_mask_xor_preview",
      "transform": "raw_msb+no_interleaver",
      "mapping_meta": {
        "tone_mapping": "raw_msb",
        "interleaver": "none"
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 100.748644,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.187161,
        "min_abs": 0.036806,
        "max_abs": 4.061714,
        "positive": 136,
        "negative": 38,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 31,
      "message91": null,
      "message91_sha256_16": "257e8990965e7ac7",
      "codeword174_sha256_16": "ba82cc5d9219f781",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 50
        },
        {
          "iteration": 1,
          "syndrome_weight": 40
        },
        {
          "iteration": 2,
          "syndrome_weight": 39
        },
        {
          "iteration": 3,
          "syndrome_weight": 45
        },
        {
          "iteration": 4,
          "syndrome_weight": 33
        },
        {
          "iteration": 5,
          "syndrome_weight": 41
        },
        {
          "iteration": 6,
          "syndrome_weight": 40
        },
        {
          "iteration": 7,
          "syndrome_weight": 33
        },
        {
          "iteration": 8,
          "syndrome_weight": 32
        },
        {
          "iteration": 9,
          "syndrome_weight": 41
        },
        {
          "iteration": 10,
          "syndrome_weight": 39
        },
        {
          "iteration": 15,
          "syndrome_weight": 32
        },
        {
          "iteration": 20,
          "syndrome_weight": 43
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
      "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 107.134868,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.783717,
        "min_abs": 0.004438,
        "max_abs": 4.061714,
        "positive": 144,
        "negative": 30,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 32,
      "message91": null,
      "message91_sha256_16": "600a6150e235a3dd",
      "codeword174_sha256_16": "68d762d766bea430",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 36
        },
        {
          "iteration": 1,
          "syndrome_weight": 35
        },
        {
          "iteration": 2,
          "syndrome_weight": 38
        },
        {
          "iteration": 3,
          "syndrome_weight": 32
        },
        {
          "iteration": 4,
          "syndrome_weight": 41
        },
        {
          "iteration": 5,
          "syndrome_weight": 41
        },
        {
          "iteration": 6,
          "syndrome_weight": 43
        },
        {
          "iteration": 7,
          "syndrome_weight": 36
        },
        {
          "iteration": 8,
          "syndrome_weight": 47
        },
        {
          "iteration": 9,
          "syndrome_weight": 43
        },
        {
          "iteration": 10,
          "syndrome_weight": 39
        },
        {
          "iteration": 15,
          "syndrome_weight": 38
        },
        {
          "iteration": 20,
          "syndrome_weight": 45
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 106.397992,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.599498,
        "min_abs": 0.001652,
        "max_abs": 3.929378,
        "positive": 127,
        "negative": 47,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 32,
      "message91": null,
      "message91_sha256_16": "65deb427cf8b7eb7",
      "codeword174_sha256_16": "8909c76f3afe3ed9",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 37
        },
        {
          "iteration": 1,
          "syndrome_weight": 35
        },
        {
          "iteration": 2,
          "syndrome_weight": 47
        },
        {
          "iteration": 3,
          "syndrome_weight": 46
        },
        {
          "iteration": 4,
          "syndrome_weight": 44
        },
        {
          "iteration": 5,
          "syndrome_weight": 42
        },
        {
          "iteration": 6,
          "syndrome_weight": 44
        },
        {
          "iteration": 7,
          "syndrome_weight": 40
        },
        {
          "iteration": 8,
          "syndrome_weight": 41
        },
        {
          "iteration": 9,
          "syndrome_weight": 50
        },
        {
          "iteration": 10,
          "syndrome_weight": 46
        },
        {
          "iteration": 15,
          "syndrome_weight": 49
        },
        {
          "iteration": 20,
          "syndrome_weight": 46
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
      "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 106.27586,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.568965,
        "min_abs": 0.004438,
        "max_abs": 3.929378,
        "positive": 127,
        "negative": 47,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 32,
      "message91": null,
      "message91_sha256_16": "6af866dd5526ddc4",
      "codeword174_sha256_16": "0617e26ca1de397c",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 32
        },
        {
          "iteration": 1,
          "syndrome_weight": 40
        },
        {
          "iteration": 2,
          "syndrome_weight": 35
        },
        {
          "iteration": 3,
          "syndrome_weight": 35
        },
        {
          "iteration": 4,
          "syndrome_weight": 36
        },
        {
          "iteration": 5,
          "syndrome_weight": 44
        },
        {
          "iteration": 6,
          "syndrome_weight": 44
        },
        {
          "iteration": 7,
          "syndrome_weight": 44
        },
        {
          "iteration": 8,
          "syndrome_weight": 46
        },
        {
          "iteration": 9,
          "syndrome_weight": 36
        },
        {
          "iteration": 10,
          "syndrome_weight": 44
        },
        {
          "iteration": 15,
          "syndrome_weight": 33
        },
        {
          "iteration": 20,
          "syndrome_weight": 41
        }
      ]
    },
    {
      "variant": "raw_msb_symbol_order",
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 126.748644,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.187161,
        "min_abs": 0.036806,
        "max_abs": 4.061714,
        "positive": 136,
        "negative": 38,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 33,
      "message91": null,
      "message91_sha256_16": "c9336ed25ba7b177",
      "codeword174_sha256_16": "acafc3a93e8d22a4",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 42
        },
        {
          "iteration": 1,
          "syndrome_weight": 35
        },
        {
          "iteration": 2,
          "syndrome_weight": 44
        },
        {
          "iteration": 3,
          "syndrome_weight": 47
        },
        {
          "iteration": 4,
          "syndrome_weight": 50
        },
        {
          "iteration": 5,
          "syndrome_weight": 43
        },
        {
          "iteration": 6,
          "syndrome_weight": 37
        },
        {
          "iteration": 7,
          "syndrome_weight": 43
        },
        {
          "iteration": 8,
          "syndrome_weight": 39
        },
        {
          "iteration": 9,
          "syndrome_weight": 37
        },
        {
          "iteration": 10,
          "syndrome_weight": 38
        },
        {
          "iteration": 15,
          "syndrome_weight": 49
        },
        {
          "iteration": 20,
          "syndrome_weight": 35
        }
      ]
    },
    {
      "variant": "raw_msb_symbol_order",
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 126.748644,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.187161,
        "min_abs": 0.036806,
        "max_abs": 4.061714,
        "positive": 136,
        "negative": 38,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 33,
      "message91": null,
      "message91_sha256_16": "89e5f7f1fec395a3",
      "codeword174_sha256_16": "f775ced5a5f7c68f",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 42
        },
        {
          "iteration": 1,
          "syndrome_weight": 36
        },
        {
          "iteration": 2,
          "syndrome_weight": 44
        },
        {
          "iteration": 3,
          "syndrome_weight": 45
        },
        {
          "iteration": 4,
          "syndrome_weight": 36
        },
        {
          "iteration": 5,
          "syndrome_weight": 34
        },
        {
          "iteration": 6,
          "syndrome_weight": 33
        },
        {
          "iteration": 7,
          "syndrome_weight": 46
        },
        {
          "iteration": 8,
          "syndrome_weight": 41
        },
        {
          "iteration": 9,
          "syndrome_weight": 34
        },
        {
          "iteration": 10,
          "syndrome_weight": 46
        },
        {
          "iteration": 15,
          "syndrome_weight": 45
        },
        {
          "iteration": 20,
          "syndrome_weight": 38
        }
      ]
    }
  ],
  "decodes": [],
  "outputs": {
    "ldpc_soft_decode_json": "/decoders/js8_decoder/runtime/ldpc_soft_decode/step37_ldpc_soft_decode.json"
  },
  "warnings": [
    "Step 37 runs bounded normalized-min-sum soft LDPC over the best-ranked FT8-style Gray/interleaver mapping candidates against the public (174,91) matrix contract.",
    "This still does not unpack JS8 text or validate CRC/message payloads.",
    "If success is true and syndrome_weight is 0, the next step can unpack the 91-bit message. Otherwise more timing, Costas/data-symbol boundary, deinterleaver/order or LLR tuning is required."
  ],
  "next_action": "Upload Step35 logs. If no valid codeword, inspect best mapping_meta/final_syndrome_weight and continue timing/interleaver/LLR tuning; if valid, add JS8 message unpack/CRC."
}
