{
  "ok": true,
  "mode": "JS8",
  "tool": "webftr-js8-soft-ldpc-minsum-probe",
  "tool_version": "step35-bounded-ldpc-ranking-guard",
  "input_wav": null,
  "candidate_json": "/decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.json",
  "rx_only": true,
  "safety": {
    "tx": false,
    "ptt": false,
    "tune": false,
    "send": false,
    "js8call_runtime_control": false
  },
  "implementation_stage": "step35_bounded_gray_interleaver_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": {
      "profile": "js8_near_6400",
      "nsps": 6400,
      "tone_spacing_hz": 1.875,
      "sync": {
        "start_sample": 57600,
        "start_seconds": 4.8,
        "base_freq_hz": 1025.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": 47.4,
        "costas_hits": 2,
        "avg_margin_db": 8.01
      },
      "rank_score": 225.085,
      "fec": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "source_tool": "webftr-js8-auto-ldpc-probe"
    },
    "selected_variant": {
      "name": "raw_msb_symbol_order",
      "rank_score": 127.195892,
      "complete_174bit_candidate": true,
      "hard_bits_sha256_16": "c87312f86dbe74fc",
      "hard_weight_174": 36,
      "llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      }
    }
  },
  "candidate_mapping_rows": 828,
  "probe_count": 24,
  "best_soft_decode": {
    "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
    "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
    "mapping_meta": {
      "tone_mapping": "lsb_within_each_tone",
      "interleaver": "ft8_bitrev",
      "direction": "deinterleave_rx_to_codeword",
      "order_len": 174,
      "polarity": "inverted"
    },
    "decoder_trial": {
      "llr_scale": 1.0,
      "alpha": 0.8
    },
    "source_rank_score": 106.801724,
    "source_llr_stats": {
      "count": 174,
      "avg_abs": 1.700431,
      "min_abs": 0.002971,
      "max_abs": 4.14242,
      "positive": 118,
      "negative": 56,
      "zero": 0
    },
    "success": false,
    "iterations_used": 24,
    "final_syndrome_weight": 24,
    "message91": null,
    "message91_sha256_16": "6a6d742354b7cf6c",
    "codeword174_sha256_16": "a2f020a557f466b6",
    "trace": [
      {
        "iteration": 0,
        "syndrome_weight": 34
      },
      {
        "iteration": 1,
        "syndrome_weight": 34
      },
      {
        "iteration": 2,
        "syndrome_weight": 42
      },
      {
        "iteration": 3,
        "syndrome_weight": 44
      },
      {
        "iteration": 4,
        "syndrome_weight": 43
      },
      {
        "iteration": 5,
        "syndrome_weight": 42
      },
      {
        "iteration": 6,
        "syndrome_weight": 38
      },
      {
        "iteration": 7,
        "syndrome_weight": 50
      },
      {
        "iteration": 8,
        "syndrome_weight": 35
      },
      {
        "iteration": 9,
        "syndrome_weight": 42
      },
      {
        "iteration": 10,
        "syndrome_weight": 27
      },
      {
        "iteration": 15,
        "syndrome_weight": 41
      },
      {
        "iteration": 20,
        "syndrome_weight": 42
      }
    ]
  },
  "soft_decode_results": [
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174,
        "polarity": "inverted"
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 106.801724,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.700431,
        "min_abs": 0.002971,
        "max_abs": 4.14242,
        "positive": 118,
        "negative": 56,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 24,
      "message91": null,
      "message91_sha256_16": "6a6d742354b7cf6c",
      "codeword174_sha256_16": "a2f020a557f466b6",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 34
        },
        {
          "iteration": 1,
          "syndrome_weight": 34
        },
        {
          "iteration": 2,
          "syndrome_weight": 42
        },
        {
          "iteration": 3,
          "syndrome_weight": 44
        },
        {
          "iteration": 4,
          "syndrome_weight": 43
        },
        {
          "iteration": 5,
          "syndrome_weight": 42
        },
        {
          "iteration": 6,
          "syndrome_weight": 38
        },
        {
          "iteration": 7,
          "syndrome_weight": 50
        },
        {
          "iteration": 8,
          "syndrome_weight": 35
        },
        {
          "iteration": 9,
          "syndrome_weight": 42
        },
        {
          "iteration": 10,
          "syndrome_weight": 27
        },
        {
          "iteration": 15,
          "syndrome_weight": 41
        },
        {
          "iteration": 20,
          "syndrome_weight": 42
        }
      ]
    },
    {
      "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 109.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 26,
      "message91": null,
      "message91_sha256_16": "2a0b7b7df8e4ebe3",
      "codeword174_sha256_16": "e4feadf57539b9eb",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 49
        },
        {
          "iteration": 1,
          "syndrome_weight": 34
        },
        {
          "iteration": 2,
          "syndrome_weight": 32
        },
        {
          "iteration": 3,
          "syndrome_weight": 38
        },
        {
          "iteration": 4,
          "syndrome_weight": 38
        },
        {
          "iteration": 5,
          "syndrome_weight": 38
        },
        {
          "iteration": 6,
          "syndrome_weight": 46
        },
        {
          "iteration": 7,
          "syndrome_weight": 48
        },
        {
          "iteration": 8,
          "syndrome_weight": 35
        },
        {
          "iteration": 9,
          "syndrome_weight": 45
        },
        {
          "iteration": 10,
          "syndrome_weight": 40
        },
        {
          "iteration": 15,
          "syndrome_weight": 40
        },
        {
          "iteration": 20,
          "syndrome_weight": 40
        }
      ]
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 109.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 28,
      "message91": null,
      "message91_sha256_16": "cbb1e701ab04aeee",
      "codeword174_sha256_16": "498009a7cbeb4133",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 38
        },
        {
          "iteration": 1,
          "syndrome_weight": 44
        },
        {
          "iteration": 2,
          "syndrome_weight": 47
        },
        {
          "iteration": 3,
          "syndrome_weight": 34
        },
        {
          "iteration": 4,
          "syndrome_weight": 39
        },
        {
          "iteration": 5,
          "syndrome_weight": 41
        },
        {
          "iteration": 6,
          "syndrome_weight": 35
        },
        {
          "iteration": 7,
          "syndrome_weight": 37
        },
        {
          "iteration": 8,
          "syndrome_weight": 36
        },
        {
          "iteration": 9,
          "syndrome_weight": 45
        },
        {
          "iteration": 10,
          "syndrome_weight": 35
        },
        {
          "iteration": 15,
          "syndrome_weight": 52
        },
        {
          "iteration": 20,
          "syndrome_weight": 28
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "raw_msb",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 107.578012,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.894503,
        "min_abs": 0.002971,
        "max_abs": 4.421458,
        "positive": 134,
        "negative": 40,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 29,
      "message91": null,
      "message91_sha256_16": "4efe4505857151c0",
      "codeword174_sha256_16": "c02f6c2e9489a106",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 42
        },
        {
          "iteration": 1,
          "syndrome_weight": 34
        },
        {
          "iteration": 2,
          "syndrome_weight": 43
        },
        {
          "iteration": 3,
          "syndrome_weight": 44
        },
        {
          "iteration": 4,
          "syndrome_weight": 46
        },
        {
          "iteration": 5,
          "syndrome_weight": 42
        },
        {
          "iteration": 6,
          "syndrome_weight": 43
        },
        {
          "iteration": 7,
          "syndrome_weight": 48
        },
        {
          "iteration": 8,
          "syndrome_weight": 34
        },
        {
          "iteration": 9,
          "syndrome_weight": 41
        },
        {
          "iteration": 10,
          "syndrome_weight": 39
        },
        {
          "iteration": 15,
          "syndrome_weight": 49
        },
        {
          "iteration": 20,
          "syndrome_weight": 38
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 106.932388,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.733097,
        "min_abs": 0.001731,
        "max_abs": 4.14242,
        "positive": 121,
        "negative": 53,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 29,
      "message91": null,
      "message91_sha256_16": "8273e7a70823945f",
      "codeword174_sha256_16": "073f6173cf08fd43",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 35
        },
        {
          "iteration": 1,
          "syndrome_weight": 43
        },
        {
          "iteration": 2,
          "syndrome_weight": 29
        },
        {
          "iteration": 3,
          "syndrome_weight": 44
        },
        {
          "iteration": 4,
          "syndrome_weight": 38
        },
        {
          "iteration": 5,
          "syndrome_weight": 35
        },
        {
          "iteration": 6,
          "syndrome_weight": 44
        },
        {
          "iteration": 7,
          "syndrome_weight": 47
        },
        {
          "iteration": 8,
          "syndrome_weight": 31
        },
        {
          "iteration": 9,
          "syndrome_weight": 41
        },
        {
          "iteration": 10,
          "syndrome_weight": 42
        },
        {
          "iteration": 15,
          "syndrome_weight": 36
        },
        {
          "iteration": 20,
          "syndrome_weight": 43
        }
      ]
    },
    {
      "variant": "reverse_symbol_order",
      "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 113.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 30,
      "message91": null,
      "message91_sha256_16": "e2c9a6affe28e3f2",
      "codeword174_sha256_16": "f3dfa6a0c41f9c0e",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 41
        },
        {
          "iteration": 1,
          "syndrome_weight": 42
        },
        {
          "iteration": 2,
          "syndrome_weight": 39
        },
        {
          "iteration": 3,
          "syndrome_weight": 42
        },
        {
          "iteration": 4,
          "syndrome_weight": 43
        },
        {
          "iteration": 5,
          "syndrome_weight": 32
        },
        {
          "iteration": 6,
          "syndrome_weight": 32
        },
        {
          "iteration": 7,
          "syndrome_weight": 41
        },
        {
          "iteration": 8,
          "syndrome_weight": 48
        },
        {
          "iteration": 9,
          "syndrome_weight": 38
        },
        {
          "iteration": 10,
          "syndrome_weight": 41
        },
        {
          "iteration": 15,
          "syndrome_weight": 36
        },
        {
          "iteration": 20,
          "syndrome_weight": 45
        }
      ]
    },
    {
      "variant": "reverse_full_bitstream",
      "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "raw_msb",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 112.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 30,
      "message91": null,
      "message91_sha256_16": "7978ad3fe1d24184",
      "codeword174_sha256_16": "839966c9e07e1714",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 41
        },
        {
          "iteration": 1,
          "syndrome_weight": 30
        },
        {
          "iteration": 2,
          "syndrome_weight": 30
        },
        {
          "iteration": 3,
          "syndrome_weight": 44
        },
        {
          "iteration": 4,
          "syndrome_weight": 43
        },
        {
          "iteration": 5,
          "syndrome_weight": 43
        },
        {
          "iteration": 6,
          "syndrome_weight": 41
        },
        {
          "iteration": 7,
          "syndrome_weight": 39
        },
        {
          "iteration": 8,
          "syndrome_weight": 43
        },
        {
          "iteration": 9,
          "syndrome_weight": 48
        },
        {
          "iteration": 10,
          "syndrome_weight": 43
        },
        {
          "iteration": 15,
          "syndrome_weight": 35
        },
        {
          "iteration": 20,
          "syndrome_weight": 42
        }
      ]
    },
    {
      "variant": "lab_mask_xor_preview",
      "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174,
        "polarity": "inverted"
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 101.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 30,
      "message91": null,
      "message91_sha256_16": "210ed54aa2f6f2f5",
      "codeword174_sha256_16": "2656303585b5b258",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 31
        },
        {
          "iteration": 1,
          "syndrome_weight": 31
        },
        {
          "iteration": 2,
          "syndrome_weight": 30
        },
        {
          "iteration": 3,
          "syndrome_weight": 39
        },
        {
          "iteration": 4,
          "syndrome_weight": 31
        },
        {
          "iteration": 5,
          "syndrome_weight": 31
        },
        {
          "iteration": 6,
          "syndrome_weight": 46
        },
        {
          "iteration": 7,
          "syndrome_weight": 39
        },
        {
          "iteration": 8,
          "syndrome_weight": 45
        },
        {
          "iteration": 9,
          "syndrome_weight": 37
        },
        {
          "iteration": 10,
          "syndrome_weight": 39
        },
        {
          "iteration": 15,
          "syndrome_weight": 48
        },
        {
          "iteration": 20,
          "syndrome_weight": 34
        }
      ]
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "none",
        "polarity": "inverted"
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 109.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 31,
      "message91": null,
      "message91_sha256_16": "a232115d81b2083e",
      "codeword174_sha256_16": "989fdc400af2d00b",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 40
        },
        {
          "iteration": 1,
          "syndrome_weight": 48
        },
        {
          "iteration": 2,
          "syndrome_weight": 40
        },
        {
          "iteration": 3,
          "syndrome_weight": 43
        },
        {
          "iteration": 4,
          "syndrome_weight": 37
        },
        {
          "iteration": 5,
          "syndrome_weight": 37
        },
        {
          "iteration": 6,
          "syndrome_weight": 47
        },
        {
          "iteration": 7,
          "syndrome_weight": 41
        },
        {
          "iteration": 8,
          "syndrome_weight": 45
        },
        {
          "iteration": 9,
          "syndrome_weight": 33
        },
        {
          "iteration": 10,
          "syndrome_weight": 31
        },
        {
          "iteration": 15,
          "syndrome_weight": 34
        },
        {
          "iteration": 20,
          "syndrome_weight": 41
        }
      ]
    },
    {
      "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 109.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 31,
      "message91": null,
      "message91_sha256_16": "05fd73d89b6cac16",
      "codeword174_sha256_16": "a018589817ef1b1e",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 49
        },
        {
          "iteration": 1,
          "syndrome_weight": 50
        },
        {
          "iteration": 2,
          "syndrome_weight": 47
        },
        {
          "iteration": 3,
          "syndrome_weight": 40
        },
        {
          "iteration": 4,
          "syndrome_weight": 40
        },
        {
          "iteration": 5,
          "syndrome_weight": 42
        },
        {
          "iteration": 6,
          "syndrome_weight": 36
        },
        {
          "iteration": 7,
          "syndrome_weight": 34
        },
        {
          "iteration": 8,
          "syndrome_weight": 37
        },
        {
          "iteration": 9,
          "syndrome_weight": 47
        },
        {
          "iteration": 10,
          "syndrome_weight": 46
        },
        {
          "iteration": 15,
          "syndrome_weight": 40
        },
        {
          "iteration": 20,
          "syndrome_weight": 43
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 107.708676,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.927169,
        "min_abs": 0.001731,
        "max_abs": 4.421458,
        "positive": 137,
        "negative": 37,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 31,
      "message91": null,
      "message91_sha256_16": "d41915263de40159",
      "codeword174_sha256_16": "2f18abe7c2266fc5",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 40
        },
        {
          "iteration": 1,
          "syndrome_weight": 38
        },
        {
          "iteration": 2,
          "syndrome_weight": 42
        },
        {
          "iteration": 3,
          "syndrome_weight": 45
        },
        {
          "iteration": 4,
          "syndrome_weight": 53
        },
        {
          "iteration": 5,
          "syndrome_weight": 44
        },
        {
          "iteration": 6,
          "syndrome_weight": 44
        },
        {
          "iteration": 7,
          "syndrome_weight": 45
        },
        {
          "iteration": 8,
          "syndrome_weight": 37
        },
        {
          "iteration": 9,
          "syndrome_weight": 34
        },
        {
          "iteration": 10,
          "syndrome_weight": 36
        },
        {
          "iteration": 15,
          "syndrome_weight": 40
        },
        {
          "iteration": 20,
          "syndrome_weight": 38
        }
      ]
    },
    {
      "variant": "lab_mask_xor_preview",
      "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174,
        "polarity": "inverted"
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 101.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 31,
      "message91": null,
      "message91_sha256_16": "210ed54aa2f6f2f5",
      "codeword174_sha256_16": "ef2bdd6a8b61576d",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 31
        },
        {
          "iteration": 1,
          "syndrome_weight": 31
        },
        {
          "iteration": 2,
          "syndrome_weight": 35
        },
        {
          "iteration": 3,
          "syndrome_weight": 39
        },
        {
          "iteration": 4,
          "syndrome_weight": 40
        },
        {
          "iteration": 5,
          "syndrome_weight": 46
        },
        {
          "iteration": 6,
          "syndrome_weight": 48
        },
        {
          "iteration": 7,
          "syndrome_weight": 48
        },
        {
          "iteration": 8,
          "syndrome_weight": 42
        },
        {
          "iteration": 9,
          "syndrome_weight": 39
        },
        {
          "iteration": 10,
          "syndrome_weight": 41
        },
        {
          "iteration": 15,
          "syndrome_weight": 38
        },
        {
          "iteration": 20,
          "syndrome_weight": 44
        }
      ]
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": true,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 109.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 32,
      "message91": null,
      "message91_sha256_16": "e8668f5cc7a6f478",
      "codeword174_sha256_16": "f1d436ecbef8e088",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 38
        },
        {
          "iteration": 1,
          "syndrome_weight": 38
        },
        {
          "iteration": 2,
          "syndrome_weight": 47
        },
        {
          "iteration": 3,
          "syndrome_weight": 43
        },
        {
          "iteration": 4,
          "syndrome_weight": 51
        },
        {
          "iteration": 5,
          "syndrome_weight": 48
        },
        {
          "iteration": 6,
          "syndrome_weight": 40
        },
        {
          "iteration": 7,
          "syndrome_weight": 39
        },
        {
          "iteration": 8,
          "syndrome_weight": 50
        },
        {
          "iteration": 9,
          "syndrome_weight": 33
        },
        {
          "iteration": 10,
          "syndrome_weight": 37
        },
        {
          "iteration": 15,
          "syndrome_weight": 41
        },
        {
          "iteration": 20,
          "syndrome_weight": 32
        }
      ]
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "none",
        "polarity": "inverted"
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 109.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 32,
      "message91": null,
      "message91_sha256_16": "f7edca62d63c8bf8",
      "codeword174_sha256_16": "77bf404572ba2050",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 42
        },
        {
          "iteration": 1,
          "syndrome_weight": 39
        },
        {
          "iteration": 2,
          "syndrome_weight": 41
        },
        {
          "iteration": 3,
          "syndrome_weight": 47
        },
        {
          "iteration": 4,
          "syndrome_weight": 40
        },
        {
          "iteration": 5,
          "syndrome_weight": 49
        },
        {
          "iteration": 6,
          "syndrome_weight": 34
        },
        {
          "iteration": 7,
          "syndrome_weight": 32
        },
        {
          "iteration": 8,
          "syndrome_weight": 33
        },
        {
          "iteration": 9,
          "syndrome_weight": 37
        },
        {
          "iteration": 10,
          "syndrome_weight": 35
        },
        {
          "iteration": 15,
          "syndrome_weight": 40
        },
        {
          "iteration": 20,
          "syndrome_weight": 40
        }
      ]
    },
    {
      "variant": "reverse_full_bitstream",
      "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "raw_msb",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 112.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 33,
      "message91": null,
      "message91_sha256_16": "348bad2a3c8285da",
      "codeword174_sha256_16": "6b59017b641b4f24",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 41
        },
        {
          "iteration": 1,
          "syndrome_weight": 43
        },
        {
          "iteration": 2,
          "syndrome_weight": 35
        },
        {
          "iteration": 3,
          "syndrome_weight": 33
        },
        {
          "iteration": 4,
          "syndrome_weight": 36
        },
        {
          "iteration": 5,
          "syndrome_weight": 48
        },
        {
          "iteration": 6,
          "syndrome_weight": 43
        },
        {
          "iteration": 7,
          "syndrome_weight": 34
        },
        {
          "iteration": 8,
          "syndrome_weight": 37
        },
        {
          "iteration": 9,
          "syndrome_weight": 40
        },
        {
          "iteration": 10,
          "syndrome_weight": 34
        },
        {
          "iteration": 15,
          "syndrome_weight": 49
        },
        {
          "iteration": 20,
          "syndrome_weight": 46
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_alt_high",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 107.708676,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.927169,
        "min_abs": 0.001731,
        "max_abs": 4.421458,
        "positive": 137,
        "negative": 37,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 33,
      "message91": null,
      "message91_sha256_16": "458df79ba60a9328",
      "codeword174_sha256_16": "6d00dc7e03a960c9",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 40
        },
        {
          "iteration": 1,
          "syndrome_weight": 43
        },
        {
          "iteration": 2,
          "syndrome_weight": 42
        },
        {
          "iteration": 3,
          "syndrome_weight": 36
        },
        {
          "iteration": 4,
          "syndrome_weight": 55
        },
        {
          "iteration": 5,
          "syndrome_weight": 44
        },
        {
          "iteration": 6,
          "syndrome_weight": 33
        },
        {
          "iteration": 7,
          "syndrome_weight": 46
        },
        {
          "iteration": 8,
          "syndrome_weight": 41
        },
        {
          "iteration": 9,
          "syndrome_weight": 44
        },
        {
          "iteration": 10,
          "syndrome_weight": 33
        },
        {
          "iteration": 15,
          "syndrome_weight": 34
        },
        {
          "iteration": 20,
          "syndrome_weight": 43
        }
      ]
    },
    {
      "variant": "reverse_symbol_order",
      "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 113.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 34,
      "message91": null,
      "message91_sha256_16": "90c113192e91f005",
      "codeword174_sha256_16": "41b7858eaf726d78",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 41
        },
        {
          "iteration": 1,
          "syndrome_weight": 45
        },
        {
          "iteration": 2,
          "syndrome_weight": 34
        },
        {
          "iteration": 3,
          "syndrome_weight": 48
        },
        {
          "iteration": 4,
          "syndrome_weight": 38
        },
        {
          "iteration": 5,
          "syndrome_weight": 45
        },
        {
          "iteration": 6,
          "syndrome_weight": 47
        },
        {
          "iteration": 7,
          "syndrome_weight": 39
        },
        {
          "iteration": 8,
          "syndrome_weight": 36
        },
        {
          "iteration": 9,
          "syndrome_weight": 40
        },
        {
          "iteration": 10,
          "syndrome_weight": 43
        },
        {
          "iteration": 15,
          "syndrome_weight": 49
        },
        {
          "iteration": 20,
          "syndrome_weight": 47
        }
      ]
    },
    {
      "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
      "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "ft8_gray_primary",
        "gray_direction": "inverse_observed_to_plain",
        "reverse_bits_within_tone_before_gray": false,
        "interleaver": "none",
        "polarity": "inverted"
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 109.195892,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 2.298973,
        "min_abs": 0.012672,
        "max_abs": 4.421458,
        "positive": 141,
        "negative": 33,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 34,
      "message91": null,
      "message91_sha256_16": "23c3e63ea6054327",
      "codeword174_sha256_16": "37074cdf79522a3e",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 40
        },
        {
          "iteration": 1,
          "syndrome_weight": 48
        },
        {
          "iteration": 2,
          "syndrome_weight": 43
        },
        {
          "iteration": 3,
          "syndrome_weight": 44
        },
        {
          "iteration": 4,
          "syndrome_weight": 47
        },
        {
          "iteration": 5,
          "syndrome_weight": 35
        },
        {
          "iteration": 6,
          "syndrome_weight": 35
        },
        {
          "iteration": 7,
          "syndrome_weight": 39
        },
        {
          "iteration": 8,
          "syndrome_weight": 43
        },
        {
          "iteration": 9,
          "syndrome_weight": 45
        },
        {
          "iteration": 10,
          "syndrome_weight": 34
        },
        {
          "iteration": 15,
          "syndrome_weight": 37
        },
        {
          "iteration": 20,
          "syndrome_weight": 46
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "mapping_meta": {
        "tone_mapping": "raw_msb",
        "interleaver": "ft8_bitrev",
        "direction": "interleave_codeword_to_rx_inverse",
        "order_len": 174
      },
      "decoder_trial": {
        "llr_scale": 1.0,
        "alpha": 0.8
      },
      "source_rank_score": 107.578012,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.894503,
        "min_abs": 0.002971,
        "max_abs": 4.421458,
        "positive": 134,
        "negative": 40,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 34,
      "message91": null,
      "message91_sha256_16": "4c779f16eae4a194",
      "codeword174_sha256_16": "e5695a940150931b",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 42
        },
        {
          "iteration": 1,
          "syndrome_weight": 34
        },
        {
          "iteration": 2,
          "syndrome_weight": 38
        },
        {
          "iteration": 3,
          "syndrome_weight": 44
        },
        {
          "iteration": 4,
          "syndrome_weight": 36
        },
        {
          "iteration": 5,
          "syndrome_weight": 40
        },
        {
          "iteration": 6,
          "syndrome_weight": 39
        },
        {
          "iteration": 7,
          "syndrome_weight": 44
        },
        {
          "iteration": 8,
          "syndrome_weight": 41
        },
        {
          "iteration": 9,
          "syndrome_weight": 42
        },
        {
          "iteration": 10,
          "syndrome_weight": 39
        },
        {
          "iteration": 15,
          "syndrome_weight": 41
        },
        {
          "iteration": 20,
          "syndrome_weight": 44
        }
      ]
    },
    {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "ft8_bitrev",
        "direction": "deinterleave_rx_to_codeword",
        "order_len": 174,
        "polarity": "inverted"
      },
      "decoder_trial": {
        "llr_scale": 0.75,
        "alpha": 0.7
      },
      "source_rank_score": 106.801724,
      "source_llr_stats": {
        "count": 174,
        "avg_abs": 1.700431,
        "min_abs": 0.002971,
        "max_abs": 4.14242,
        "positive": 118,
        "negative": 56,
        "zero": 0
      },
      "success": false,
      "iterations_used": 24,
      "final_syndrome_weight": 34,
      "message91": null,
      "message91_sha256_16": "64a178ece7f87012",
      "codeword174_sha256_16": "377fba097ea68f57",
      "trace": [
        {
          "iteration": 0,
          "syndrome_weight": 34
        },
        {
          "iteration": 1,
          "syndrome_weight": 34
        },
        {
          "iteration": 2,
          "syndrome_weight": 34
        },
        {
          "iteration": 3,
          "syndrome_weight": 36
        },
        {
          "iteration": 4,
          "syndrome_weight": 34
        },
        {
          "iteration": 5,
          "syndrome_weight": 41
        },
        {
          "iteration": 6,
          "syndrome_weight": 39
        },
        {
          "iteration": 7,
          "syndrome_weight": 36
        },
        {
          "iteration": 8,
          "syndrome_weight": 34
        },
        {
          "iteration": 9,
          "syndrome_weight": 34
        },
        {
          "iteration": 10,
          "syndrome_weight": 43
        },
        {
          "iteration": 15,
          "syndrome_weight": 38
        },
        {
          "iteration": 20,
          "syndrome_weight": 35
        }
      ]
    }
  ],
  "decodes": [],
  "outputs": {
    "ldpc_soft_decode_json": "/decoders/js8_decoder/runtime/ldpc_soft_decode/step35_ldpc_soft_decode.json"
  },
  "warnings": [
    "Step 35 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."
}
