{
  "ok": true,
  "mode": "JS8",
  "tool": "webftr-js8-timing-boundary-candidate-sweep",
  "tool_version": "step37-timing-best-candidate-softdecode",
  "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
  "profile_scan_json": "/decoders/js8_decoder/logs/20260527T035634Z_real_run_profile_scan_output.json",
  "anchor_json": "/decoders/js8_decoder/logs/20260527T035634Z_real_run_auto_ldpc_probe_output.json",
  "rx_only": true,
  "safety": {
    "tx": false,
    "ptt": false,
    "tune": false,
    "send": false,
    "js8call_runtime_control": false
  },
  "implementation_stage": "step37_timing_boundary_syndrome_sweep_no_message_unpack",
  "anchor_selection": {
    "source": "profile_scan_json",
    "path": "/decoders/js8_decoder/logs/20260527T035634Z_real_run_profile_scan_output.json",
    "selection": "profile_scan_selected_profile",
    "nsps": 6400,
    "start_seconds": 4.8,
    "base_freq_hz": 1025.0,
    "tone_spacing_hz": 1.875
  },
  "sweep_grid": {
    "start_offsets_s": [
      0.24,
      0.36,
      0.48,
      0.6,
      0.72,
      0.84
    ],
    "base_freq_offsets_hz": [
      2.0,
      3.0,
      4.0,
      5.0,
      6.0
    ],
    "tone_spacing_offsets_hz": [
      0.0
    ],
    "max_combinations": 30,
    "actual_combinations": 30
  },
  "decode_found": false,
  "best_final_syndrome_weight": 24,
  "best_candidate": {
    "combination_index": 3,
    "offsets": {
      "start_offset_s": 0.24,
      "base_freq_offset_hz": 4.0,
      "tone_spacing_offset_hz": 0.0
    },
    "anchor_applied": {
      "start_seconds": 5.04,
      "base_freq_hz": 1029.0,
      "tone_spacing_hz": 1.875,
      "nsps": 6400
    },
    "pipeline_ok": true,
    "fec_input_summary": {
      "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"
    },
    "sync_candidate": {
      "start_sample": 60480,
      "start_seconds": 5.04,
      "base_freq_hz": 1029.0,
      "tone_spacing_hz": 1.875,
      "nsps": 6400,
      "candidate_score": null,
      "costas_hits": null,
      "avg_margin_db": null,
      "anchor_source": "step37_timing_boundary_sweep:3"
    },
    "best_row": {
      "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
      },
      "bit_count": 174,
      "hard_weight_174": 32,
      "llr_stats": {
        "count": 174,
        "avg_abs": 1.783717,
        "min_abs": 0.004438,
        "max_abs": 4.061714,
        "positive": 144,
        "negative": 30,
        "zero": 0
      },
      "source_rank_score": 107.134868,
      "syndrome_weight": 24,
      "valid_codeword_hard_decision": false,
      "message91_sha256_16": "400988287db337c2",
      "codeword174_sha256_16": "e737ddc1f2cfd29b"
    },
    "top_rows": [
      {
        "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
        },
        "bit_count": 174,
        "hard_weight_174": 32,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.783717,
          "min_abs": 0.004438,
          "max_abs": 4.061714,
          "positive": 144,
          "negative": 30,
          "zero": 0
        },
        "source_rank_score": 107.134868,
        "syndrome_weight": 24,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "400988287db337c2",
        "codeword174_sha256_16": "e737ddc1f2cfd29b"
      },
      {
        "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
        },
        "bit_count": 174,
        "hard_weight_174": 60,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.045493,
          "min_abs": 0.001144,
          "max_abs": 3.190566,
          "positive": 117,
          "negative": 57,
          "zero": 0
        },
        "source_rank_score": 104.181972,
        "syndrome_weight": 28,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "b419e71920db3585",
        "codeword174_sha256_16": "8bccbb10bbbf4d88"
      },
      {
        "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
        },
        "bit_count": 174,
        "hard_weight_174": 34,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.814251,
          "min_abs": 0.001652,
          "max_abs": 4.061714,
          "positive": 144,
          "negative": 30,
          "zero": 0
        },
        "source_rank_score": 107.257004,
        "syndrome_weight": 30,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "94f535c19abe8e97",
        "codeword174_sha256_16": "e050196dd1284fb0"
      },
      {
        "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
        },
        "bit_count": 174,
        "hard_weight_174": 50,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.080621,
          "min_abs": 2.6e-05,
          "max_abs": 3.170302,
          "positive": 126,
          "negative": 48,
          "zero": 0
        },
        "source_rank_score": 104.322484,
        "syndrome_weight": 30,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "ef548b254868b745",
        "codeword174_sha256_16": "3d5161b1e316b16f"
      },
      {
        "variant": "lab_mask_xor_preview",
        "transform": "raw_msb+no_interleaver",
        "mapping_meta": {
          "tone_mapping": "raw_msb",
          "interleaver": "none"
        },
        "bit_count": 174,
        "hard_weight_174": 90,
        "llr_stats": {
          "count": 174,
          "avg_abs": 2.187161,
          "min_abs": 0.036806,
          "max_abs": 4.061714,
          "positive": 136,
          "negative": 38,
          "zero": 0
        },
        "source_rank_score": 100.748644,
        "syndrome_weight": 30,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "2d887c7972af6374",
        "codeword174_sha256_16": "e3a96fe6ad757407"
      },
      {
        "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"
        },
        "bit_count": 174,
        "hard_weight_174": 119,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.645352,
          "min_abs": 0.003492,
          "max_abs": 3.929378,
          "positive": 51,
          "negative": 123,
          "zero": 0
        },
        "source_rank_score": 106.581408,
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "ad56c1db43052c18",
        "codeword174_sha256_16": "16aeb541b9fcee47"
      },
      {
        "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
        },
        "bit_count": 174,
        "hard_weight_174": 53,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.635183,
          "min_abs": 0.01965,
          "max_abs": 4.061714,
          "positive": 123,
          "negative": 51,
          "zero": 0
        },
        "source_rank_score": 106.540732,
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "6a8d5bcbf434d857",
        "codeword174_sha256_16": "e5ec524c8f7f0cb9"
      },
      {
        "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"
        },
        "bit_count": 174,
        "hard_weight_174": 133,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.606337,
          "min_abs": 0.004599,
          "max_abs": 4.061714,
          "positive": 35,
          "negative": 139,
          "zero": 0
        },
        "source_rank_score": 106.425348,
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "9c5c8e131830f6a9",
        "codeword174_sha256_16": "a799925e0e4517b4"
      }
    ],
    "warnings": [
      "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
      "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
      "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
      "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
      "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
    ]
  },
  "top_candidates": [
    {
      "combination_index": 3,
      "offsets": {
        "start_offset_s": 0.24,
        "base_freq_offset_hz": 4.0,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 5.04,
        "base_freq_hz": 1029.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "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"
      },
      "sync_candidate": {
        "start_sample": 60480,
        "start_seconds": 5.04,
        "base_freq_hz": 1029.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step37_timing_boundary_sweep:3"
      },
      "best_row": {
        "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
        },
        "bit_count": 174,
        "hard_weight_174": 32,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.783717,
          "min_abs": 0.004438,
          "max_abs": 4.061714,
          "positive": 144,
          "negative": 30,
          "zero": 0
        },
        "source_rank_score": 107.134868,
        "syndrome_weight": 24,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "400988287db337c2",
        "codeword174_sha256_16": "e737ddc1f2cfd29b"
      },
      "top_rows": [
        {
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 32,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.783717,
            "min_abs": 0.004438,
            "max_abs": 4.061714,
            "positive": 144,
            "negative": 30,
            "zero": 0
          },
          "source_rank_score": 107.134868,
          "syndrome_weight": 24,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "400988287db337c2",
          "codeword174_sha256_16": "e737ddc1f2cfd29b"
        },
        {
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 60,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.045493,
            "min_abs": 0.001144,
            "max_abs": 3.190566,
            "positive": 117,
            "negative": 57,
            "zero": 0
          },
          "source_rank_score": 104.181972,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b419e71920db3585",
          "codeword174_sha256_16": "8bccbb10bbbf4d88"
        },
        {
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 34,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.814251,
            "min_abs": 0.001652,
            "max_abs": 4.061714,
            "positive": 144,
            "negative": 30,
            "zero": 0
          },
          "source_rank_score": 107.257004,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "94f535c19abe8e97",
          "codeword174_sha256_16": "e050196dd1284fb0"
        },
        {
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 50,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.080621,
            "min_abs": 2.6e-05,
            "max_abs": 3.170302,
            "positive": 126,
            "negative": 48,
            "zero": 0
          },
          "source_rank_score": 104.322484,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "ef548b254868b745",
          "codeword174_sha256_16": "3d5161b1e316b16f"
        },
        {
          "variant": "lab_mask_xor_preview",
          "transform": "raw_msb+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 90,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.187161,
            "min_abs": 0.036806,
            "max_abs": 4.061714,
            "positive": 136,
            "negative": 38,
            "zero": 0
          },
          "source_rank_score": 100.748644,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "2d887c7972af6374",
          "codeword174_sha256_16": "e3a96fe6ad757407"
        },
        {
          "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"
          },
          "bit_count": 174,
          "hard_weight_174": 119,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.645352,
            "min_abs": 0.003492,
            "max_abs": 3.929378,
            "positive": 51,
            "negative": 123,
            "zero": 0
          },
          "source_rank_score": 106.581408,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "ad56c1db43052c18",
          "codeword174_sha256_16": "16aeb541b9fcee47"
        },
        {
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 53,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.635183,
            "min_abs": 0.01965,
            "max_abs": 4.061714,
            "positive": 123,
            "negative": 51,
            "zero": 0
          },
          "source_rank_score": 106.540732,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6a8d5bcbf434d857",
          "codeword174_sha256_16": "e5ec524c8f7f0cb9"
        },
        {
          "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"
          },
          "bit_count": 174,
          "hard_weight_174": 133,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.606337,
            "min_abs": 0.004599,
            "max_abs": 4.061714,
            "positive": 35,
            "negative": 139,
            "zero": 0
          },
          "source_rank_score": 106.425348,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "9c5c8e131830f6a9",
          "codeword174_sha256_16": "a799925e0e4517b4"
        }
      ],
      "warnings": [
        "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
        "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
        "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 6,
      "offsets": {
        "start_offset_s": 0.36,
        "base_freq_offset_hz": 2.0,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 5.16,
        "base_freq_hz": 1027.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "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"
      },
      "sync_candidate": {
        "start_sample": 61920,
        "start_seconds": 5.16,
        "base_freq_hz": 1027.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step37_timing_boundary_sweep:6"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_primary_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
        },
        "bit_count": 174,
        "hard_weight_174": 33,
        "llr_stats": {
          "count": 174,
          "avg_abs": 2.014762,
          "min_abs": 0.107688,
          "max_abs": 4.123238,
          "positive": 140,
          "negative": 34,
          "zero": 0
        },
        "source_rank_score": 108.059048,
        "syndrome_weight": 25,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "b77562fbffe40746",
        "codeword174_sha256_16": "52671d4b53d0963f"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_primary_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
          },
          "bit_count": 174,
          "hard_weight_174": 33,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.014762,
            "min_abs": 0.107688,
            "max_abs": 4.123238,
            "positive": 140,
            "negative": 34,
            "zero": 0
          },
          "source_rank_score": 108.059048,
          "syndrome_weight": 25,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b77562fbffe40746",
          "codeword174_sha256_16": "52671d4b53d0963f"
        },
        {
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 33,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.963551,
            "min_abs": 0.013238,
            "max_abs": 4.123238,
            "positive": 140,
            "negative": 34,
            "zero": 0
          },
          "source_rank_score": 107.854204,
          "syndrome_weight": 25,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b77562fbffe40746",
          "codeword174_sha256_16": "52671d4b53d0963f"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 40,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.514423,
            "min_abs": 0.000556,
            "max_abs": 4.039481,
            "positive": 135,
            "negative": 39,
            "zero": 0
          },
          "source_rank_score": 106.057692,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a4df3b03aa7ea8e7",
          "codeword174_sha256_16": "731f43802ba966c2"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 40,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.476366,
            "min_abs": 0.009537,
            "max_abs": 4.039481,
            "positive": 134,
            "negative": 40,
            "zero": 0
          },
          "source_rank_score": 105.905464,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a4df3b03aa7ea8e7",
          "codeword174_sha256_16": "731f43802ba966c2"
        },
        {
          "variant": "reverse_symbol_order",
          "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"
          },
          "bit_count": 174,
          "hard_weight_174": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.861558,
            "min_abs": 0.094608,
            "max_abs": 4.061809,
            "positive": 42,
            "negative": 132,
            "zero": 0
          },
          "source_rank_score": 111.446232,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "62bb3605b9d593cd",
          "codeword174_sha256_16": "2fa0886d87167654"
        },
        {
          "variant": "reverse_symbol_order",
          "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"
          },
          "bit_count": 174,
          "hard_weight_174": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.810348,
            "min_abs": 0.013238,
            "max_abs": 4.046739,
            "positive": 42,
            "negative": 132,
            "zero": 0
          },
          "source_rank_score": 111.241392,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "62bb3605b9d593cd",
          "codeword174_sha256_16": "2fa0886d87167654"
        },
        {
          "variant": "reverse_full_bitstream",
          "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.014762,
            "min_abs": 0.107688,
            "max_abs": 4.123238,
            "positive": 34,
            "negative": 140,
            "zero": 0
          },
          "source_rank_score": 111.059048,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "62bb3605b9d593cd",
          "codeword174_sha256_16": "2fa0886d87167654"
        },
        {
          "variant": "reverse_full_bitstream",
          "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.963551,
            "min_abs": 0.013238,
            "max_abs": 4.123238,
            "positive": 34,
            "negative": 140,
            "zero": 0
          },
          "source_rank_score": 110.854204,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "62bb3605b9d593cd",
          "codeword174_sha256_16": "2fa0886d87167654"
        }
      ],
      "warnings": [
        "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
        "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
        "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 13,
      "offsets": {
        "start_offset_s": 0.48,
        "base_freq_offset_hz": 4.0,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 5.279999999999999,
        "base_freq_hz": 1029.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "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"
      },
      "sync_candidate": {
        "start_sample": 63360,
        "start_seconds": 5.28,
        "base_freq_hz": 1029.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step37_timing_boundary_sweep:13"
      },
      "best_row": {
        "variant": "raw_msb_symbol_order",
        "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
        "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,
          "polarity": "inverted"
        },
        "bit_count": 174,
        "hard_weight_174": 130,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.337379,
          "min_abs": 0.001091,
          "max_abs": 3.985843,
          "positive": 35,
          "negative": 139,
          "zero": 0
        },
        "source_rank_score": 123.349516,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "6b9d3da0c42ad063",
        "codeword174_sha256_16": "155181154e8e8431"
      },
      "top_rows": [
        {
          "variant": "raw_msb_symbol_order",
          "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "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,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 130,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.337379,
            "min_abs": 0.001091,
            "max_abs": 3.985843,
            "positive": 35,
            "negative": 139,
            "zero": 0
          },
          "source_rank_score": 123.349516,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6b9d3da0c42ad063",
          "codeword174_sha256_16": "155181154e8e8431"
        },
        {
          "variant": "lsb_within_each_tone",
          "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 130,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.643299,
            "min_abs": 0.001091,
            "max_abs": 4.355766,
            "positive": 24,
            "negative": 150,
            "zero": 0
          },
          "source_rank_score": 116.573196,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6b9d3da0c42ad063",
          "codeword174_sha256_16": "155181154e8e8431"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "raw_msb+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 130,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.337379,
            "min_abs": 0.001091,
            "max_abs": 3.985843,
            "positive": 35,
            "negative": 139,
            "zero": 0
          },
          "source_rank_score": 105.349516,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6b9d3da0c42ad063",
          "codeword174_sha256_16": "155181154e8e8431"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
          "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 130,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.337379,
            "min_abs": 0.001091,
            "max_abs": 3.985843,
            "positive": 35,
            "negative": 139,
            "zero": 0
          },
          "source_rank_score": 105.349516,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6b9d3da0c42ad063",
          "codeword174_sha256_16": "155181154e8e8431"
        },
        {
          "variant": "mapped_lsb_within_each_tone+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 130,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.337379,
            "min_abs": 0.001091,
            "max_abs": 3.985843,
            "positive": 35,
            "negative": 139,
            "zero": 0
          },
          "source_rank_score": 105.349516,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6b9d3da0c42ad063",
          "codeword174_sha256_16": "155181154e8e8431"
        },
        {
          "variant": "mapped_raw_msb+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "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,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 130,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.337379,
            "min_abs": 0.001091,
            "max_abs": 3.985843,
            "positive": 35,
            "negative": 139,
            "zero": 0
          },
          "source_rank_score": 105.349516,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6b9d3da0c42ad063",
          "codeword174_sha256_16": "155181154e8e8431"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_msb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 43,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.215547,
            "min_abs": 0.001496,
            "max_abs": 3.843423,
            "positive": 135,
            "negative": 39,
            "zero": 0
          },
          "source_rank_score": 104.862188,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "bf02d9f7f0faffc7",
          "codeword174_sha256_16": "72b3f8a61ed635bd"
        },
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 144,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.982319,
            "min_abs": 0.028012,
            "max_abs": 4.355766,
            "positive": 28,
            "negative": 146,
            "zero": 0
          },
          "source_rank_score": 107.929276,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "9b90b2ba76e1e6df",
          "codeword174_sha256_16": "49224bf9726aa67c"
        }
      ],
      "warnings": [
        "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
        "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
        "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 27,
      "offsets": {
        "start_offset_s": 0.84,
        "base_freq_offset_hz": 3.0,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 5.64,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "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"
      },
      "sync_candidate": {
        "start_sample": 67680,
        "start_seconds": 5.64,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step37_timing_boundary_sweep:27"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "mapping_meta": {
          "tone_mapping": "lsb_within_each_tone",
          "interleaver": "ft8_bitrev",
          "direction": "interleave_codeword_to_rx_inverse",
          "order_len": 174
        },
        "bit_count": 174,
        "hard_weight_174": 52,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.74199,
          "min_abs": 0.019203,
          "max_abs": 4.093505,
          "positive": 125,
          "negative": 49,
          "zero": 0
        },
        "source_rank_score": 106.96796,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "e18e3ca8448db477",
        "codeword174_sha256_16": "77bf49e19e3af101"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 52,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.74199,
            "min_abs": 0.019203,
            "max_abs": 4.093505,
            "positive": 125,
            "negative": 49,
            "zero": 0
          },
          "source_rank_score": 106.96796,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e18e3ca8448db477",
          "codeword174_sha256_16": "77bf49e19e3af101"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 54,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.689704,
            "min_abs": 0.000968,
            "max_abs": 4.093505,
            "positive": 119,
            "negative": 55,
            "zero": 0
          },
          "source_rank_score": 106.758816,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e18e3ca8448db477",
          "codeword174_sha256_16": "4da6436e9fd7eefb"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 114,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.159102,
            "min_abs": 0.000968,
            "max_abs": 4.06647,
            "positive": 61,
            "negative": 113,
            "zero": 0
          },
          "source_rank_score": 104.636408,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "261372a8692ebab6",
          "codeword174_sha256_16": "8fe43878b0c78364"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_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
          },
          "bit_count": 174,
          "hard_weight_174": 33,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.859562,
            "min_abs": 0.000968,
            "max_abs": 3.942365,
            "positive": 140,
            "negative": 34,
            "zero": 0
          },
          "source_rank_score": 107.438248,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6a3e0dde96128128",
          "codeword174_sha256_16": "195e9e5557198399"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "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"
          },
          "bit_count": 174,
          "hard_weight_174": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.859561,
            "min_abs": 0.000968,
            "max_abs": 3.942365,
            "positive": 34,
            "negative": 140,
            "zero": 0
          },
          "source_rank_score": 107.438244,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "ad9dabf0d729237f",
          "codeword174_sha256_16": "0a6a283e2f5a6c55"
        },
        {
          "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_msb_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": false,
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 47,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.646495,
            "min_abs": 0.007705,
            "max_abs": 4.093505,
            "positive": 124,
            "negative": 50,
            "zero": 0
          },
          "source_rank_score": 106.58598,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "c650027902edfed2",
          "codeword174_sha256_16": "70428a6b66c2170b"
        },
        {
          "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "lsb_within_each_tone+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 30,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.272637,
            "min_abs": 0.01281,
            "max_abs": 4.093505,
            "positive": 142,
            "negative": 32,
            "zero": 0
          },
          "source_rank_score": 109.090548,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "86a83de50fbfd87d",
          "codeword174_sha256_16": "a5a957cd80c670ef"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_msb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 60,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.25004,
            "min_abs": 0.002028,
            "max_abs": 3.818918,
            "positive": 114,
            "negative": 60,
            "zero": 0
          },
          "source_rank_score": 105.00016,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "10a16fa04b89b6d8",
          "codeword174_sha256_16": "463b6b9598020284"
        }
      ],
      "warnings": [
        "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
        "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
        "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 21,
      "offsets": {
        "start_offset_s": 0.72,
        "base_freq_offset_hz": 2.0,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 5.52,
        "base_freq_hz": 1027.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "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"
      },
      "sync_candidate": {
        "start_sample": 66240,
        "start_seconds": 5.52,
        "base_freq_hz": 1027.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step37_timing_boundary_sweep:21"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
        "transform": "ft8_gray_alt_high_demap_msb_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": false,
          "interleaver": "ft8_bitrev",
          "direction": "deinterleave_rx_to_codeword",
          "order_len": 174
        },
        "bit_count": 174,
        "hard_weight_174": 36,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.595615,
          "min_abs": 2e-06,
          "max_abs": 4.132977,
          "positive": 139,
          "negative": 35,
          "zero": 0
        },
        "source_rank_score": 106.38246,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "b56247f5d839233c",
        "codeword174_sha256_16": "1b1188bd5d65df53"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_msb_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": false,
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 36,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.595615,
            "min_abs": 2e-06,
            "max_abs": 4.132977,
            "positive": 139,
            "negative": 35,
            "zero": 0
          },
          "source_rank_score": 106.38246,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b56247f5d839233c",
          "codeword174_sha256_16": "1b1188bd5d65df53"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 37,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.703806,
            "min_abs": 0.00085,
            "max_abs": 4.132977,
            "positive": 141,
            "negative": 33,
            "zero": 0
          },
          "source_rank_score": 106.815224,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b56247f5d839233c",
          "codeword174_sha256_16": "952e982908166032"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_msb_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": false,
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 37,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.644979,
            "min_abs": 0.000412,
            "max_abs": 4.132977,
            "positive": 143,
            "negative": 31,
            "zero": 0
          },
          "source_rank_score": 106.579916,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b56247f5d839233c",
          "codeword174_sha256_16": "952e982908166032"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 38,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.628012,
            "min_abs": 0.001176,
            "max_abs": 4.132977,
            "positive": 140,
            "negative": 34,
            "zero": 0
          },
          "source_rank_score": 106.512048,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b56247f5d839233c",
          "codeword174_sha256_16": "4b6a471e3213accb"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 111,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.25811,
            "min_abs": 0.001176,
            "max_abs": 3.154569,
            "positive": 60,
            "negative": 114,
            "zero": 0
          },
          "source_rank_score": 105.03244,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "fc0187310f0afe33",
          "codeword174_sha256_16": "d0ccd1bf812200b9"
        },
        {
          "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
          "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"
          },
          "bit_count": 174,
          "hard_weight_174": 126,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.721357,
            "min_abs": 0.003171,
            "max_abs": 4.132977,
            "positive": 47,
            "negative": 127,
            "zero": 0
          },
          "source_rank_score": 106.885428,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "668bc0fbffbad57a",
          "codeword174_sha256_16": "42592b229a8b3b87"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_primary_demap_msb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 66,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.215703,
            "min_abs": 0.001225,
            "max_abs": 3.717259,
            "positive": 112,
            "negative": 62,
            "zero": 0
          },
          "source_rank_score": 104.862812,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "5c18868bcb455c8d",
          "codeword174_sha256_16": "1af6f5ae7d396f13"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 104,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.117768,
            "min_abs": 0.006264,
            "max_abs": 3.717259,
            "positive": 65,
            "negative": 109,
            "zero": 0
          },
          "source_rank_score": 104.471072,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0abcf67785d0c092",
          "codeword174_sha256_16": "31220aa3360cf1d6"
        }
      ],
      "warnings": [
        "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
        "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
        "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 12,
      "offsets": {
        "start_offset_s": 0.48,
        "base_freq_offset_hz": 3.0,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 5.279999999999999,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "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"
      },
      "sync_candidate": {
        "start_sample": 63360,
        "start_seconds": 5.28,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step37_timing_boundary_sweep:12"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver",
        "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
        },
        "bit_count": 174,
        "hard_weight_174": 40,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.204412,
          "min_abs": 0.000227,
          "max_abs": 3.767671,
          "positive": 137,
          "negative": 37,
          "zero": 0
        },
        "source_rank_score": 104.817648,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "2e5d22cbd1cd718a",
        "codeword174_sha256_16": "f874967d98fa427f"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver",
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 40,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.204412,
            "min_abs": 0.000227,
            "max_abs": 3.767671,
            "positive": 137,
            "negative": 37,
            "zero": 0
          },
          "source_rank_score": 104.817648,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "2e5d22cbd1cd718a",
          "codeword174_sha256_16": "f874967d98fa427f"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 41,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.196453,
            "min_abs": 2e-06,
            "max_abs": 3.767671,
            "positive": 137,
            "negative": 37,
            "zero": 0
          },
          "source_rank_score": 104.785812,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "2e5d22cbd1cd718a",
          "codeword174_sha256_16": "5c793302e646ee17"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 132,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.594482,
            "min_abs": 0.000324,
            "max_abs": 3.767671,
            "positive": 39,
            "negative": 135,
            "zero": 0
          },
          "source_rank_score": 106.377928,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "21f8a0f7fa749a28",
          "codeword174_sha256_16": "207b9da8d3d55952"
        },
        {
          "variant": "reverse_symbol_order",
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 42,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.8392,
            "min_abs": 0.000324,
            "max_abs": 4.150246,
            "positive": 144,
            "negative": 30,
            "zero": 0
          },
          "source_rank_score": 111.3568,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "3a1d11c20f26a49e",
          "codeword174_sha256_16": "73db19d93367172c"
        },
        {
          "variant": "reverse_full_bitstream",
          "transform": "ft8_gray_alt_high_demap_msb_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": false,
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 42,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.594482,
            "min_abs": 0.000324,
            "max_abs": 3.767671,
            "positive": 135,
            "negative": 39,
            "zero": 0
          },
          "source_rank_score": 109.377928,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "3a1d11c20f26a49e",
          "codeword174_sha256_16": "73db19d93367172c"
        },
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 27,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.220369,
            "min_abs": 0.009342,
            "max_abs": 4.150246,
            "positive": 149,
            "negative": 25,
            "zero": 0
          },
          "source_rank_score": 108.881476,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "09546fc886e5ffaf",
          "codeword174_sha256_16": "0c84883d8ca3f350"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 49,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.175159,
            "min_abs": 0.000215,
            "max_abs": 3.993971,
            "positive": 128,
            "negative": 46,
            "zero": 0
          },
          "source_rank_score": 104.700636,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "086db735521feb5b",
          "codeword174_sha256_16": "9f1aa5f2aa243355"
        },
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 36,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.714649,
            "min_abs": 0.015184,
            "max_abs": 3.875722,
            "positive": 144,
            "negative": 30,
            "zero": 0
          },
          "source_rank_score": 106.858596,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "52a6293e44720dde",
          "codeword174_sha256_16": "951c2bf0d6a702b6"
        }
      ],
      "warnings": [
        "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
        "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
        "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 10,
      "offsets": {
        "start_offset_s": 0.36,
        "base_freq_offset_hz": 6.0,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 5.16,
        "base_freq_hz": 1031.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "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"
      },
      "sync_candidate": {
        "start_sample": 61920,
        "start_seconds": 5.16,
        "base_freq_hz": 1031.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step37_timing_boundary_sweep:10"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits",
        "mapping_meta": {
          "tone_mapping": "ft8_gray_alt_high",
          "gray_direction": "inverse_observed_to_plain",
          "reverse_bits_within_tone_before_gray": true,
          "interleaver": "none",
          "polarity": "inverted"
        },
        "bit_count": 174,
        "hard_weight_174": 104,
        "llr_stats": {
          "count": 174,
          "avg_abs": 0.958361,
          "min_abs": 7.1e-05,
          "max_abs": 4.000238,
          "positive": 64,
          "negative": 110,
          "zero": 0
        },
        "source_rank_score": 103.833444,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "dd8d0c1a2fe76800",
        "codeword174_sha256_16": "5c18e421e69e1518"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 104,
          "llr_stats": {
            "count": 174,
            "avg_abs": 0.958361,
            "min_abs": 7.1e-05,
            "max_abs": 4.000238,
            "positive": 64,
            "negative": 110,
            "zero": 0
          },
          "source_rank_score": 103.833444,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "dd8d0c1a2fe76800",
          "codeword174_sha256_16": "5c18e421e69e1518"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 76,
          "llr_stats": {
            "count": 174,
            "avg_abs": 0.877949,
            "min_abs": 1.1e-05,
            "max_abs": 3.774078,
            "positive": 96,
            "negative": 78,
            "zero": 0
          },
          "source_rank_score": 103.511796,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "590cfa08afeff722",
          "codeword174_sha256_16": "9ee9a55b58951fa8"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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"
          },
          "bit_count": 174,
          "hard_weight_174": 101,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.180614,
            "min_abs": 7.9e-05,
            "max_abs": 3.822017,
            "positive": 72,
            "negative": 102,
            "zero": 0
          },
          "source_rank_score": 104.722456,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "d50b3a7b36865068",
          "codeword174_sha256_16": "3a0e5d7f6b979113"
        },
        {
          "variant": "reverse_symbol_order",
          "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 128,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.831041,
            "min_abs": 0.001072,
            "max_abs": 4.000238,
            "positive": 45,
            "negative": 129,
            "zero": 0
          },
          "source_rank_score": 111.324164,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "cd3a5844ecbfb64c",
          "codeword174_sha256_16": "b7569394324444f4"
        },
        {
          "variant": "reverse_symbol_order",
          "transform": "raw_msb+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 46,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.831041,
            "min_abs": 0.001072,
            "max_abs": 4.000238,
            "positive": 129,
            "negative": 45,
            "zero": 0
          },
          "source_rank_score": 111.324164,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "98562575066874e1",
          "codeword174_sha256_16": "9172d9df5194386b"
        },
        {
          "variant": "reverse_full_bitstream",
          "transform": "lsb_within_each_tone+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 46,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.831041,
            "min_abs": 0.001072,
            "max_abs": 4.000238,
            "positive": 129,
            "negative": 45,
            "zero": 0
          },
          "source_rank_score": 110.324164,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "98562575066874e1",
          "codeword174_sha256_16": "9172d9df5194386b"
        },
        {
          "variant": "reverse_full_bitstream",
          "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 128,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.831041,
            "min_abs": 0.001072,
            "max_abs": 4.000238,
            "positive": 45,
            "negative": 129,
            "zero": 0
          },
          "source_rank_score": 110.324164,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "cd3a5844ecbfb64c",
          "codeword174_sha256_16": "b7569394324444f4"
        },
        {
          "variant": "mapped_lsb_within_each_tone+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
          },
          "bit_count": 174,
          "hard_weight_174": 46,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.831041,
            "min_abs": 0.001072,
            "max_abs": 4.000238,
            "positive": 129,
            "negative": 45,
            "zero": 0
          },
          "source_rank_score": 107.324164,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a0085229b6c78ebd",
          "codeword174_sha256_16": "ac267048c2750dfc"
        }
      ],
      "warnings": [
        "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
        "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
        "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 30,
      "offsets": {
        "start_offset_s": 0.84,
        "base_freq_offset_hz": 6.0,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 5.64,
        "base_freq_hz": 1031.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "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"
      },
      "sync_candidate": {
        "start_sample": 67680,
        "start_seconds": 5.64,
        "base_freq_hz": 1031.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step37_timing_boundary_sweep:30"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
        "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
        "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,
          "polarity": "inverted"
        },
        "bit_count": 174,
        "hard_weight_174": 104,
        "llr_stats": {
          "count": 174,
          "avg_abs": 0.777342,
          "min_abs": 0.0,
          "max_abs": 2.968035,
          "positive": 69,
          "negative": 104,
          "zero": 1
        },
        "source_rank_score": 103.109368,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "134d8595552340a3",
        "codeword174_sha256_16": "782cb372442b4b8b"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "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,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 104,
          "llr_stats": {
            "count": 174,
            "avg_abs": 0.777342,
            "min_abs": 0.0,
            "max_abs": 2.968035,
            "positive": 69,
            "negative": 104,
            "zero": 1
          },
          "source_rank_score": 103.109368,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "134d8595552340a3",
          "codeword174_sha256_16": "782cb372442b4b8b"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 74,
          "llr_stats": {
            "count": 174,
            "avg_abs": 0.840869,
            "min_abs": 0.000319,
            "max_abs": 3.13714,
            "positive": 102,
            "negative": 72,
            "zero": 0
          },
          "source_rank_score": 103.363476,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b22fc54578121357",
          "codeword174_sha256_16": "886d45ceede031d5"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 70,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.212245,
            "min_abs": 0.000723,
            "max_abs": 3.984668,
            "positive": 103,
            "negative": 71,
            "zero": 0
          },
          "source_rank_score": 104.84898,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "96409723092f5837",
          "codeword174_sha256_16": "f889e617852040e5"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_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"
          },
          "bit_count": 174,
          "hard_weight_174": 126,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.208223,
            "min_abs": 0.000118,
            "max_abs": 3.928004,
            "positive": 52,
            "negative": 122,
            "zero": 0
          },
          "source_rank_score": 104.832892,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4cb3369c98dae7c2",
          "codeword174_sha256_16": "64b152d54f8f1365"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "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,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 102,
          "llr_stats": {
            "count": 174,
            "avg_abs": 0.891101,
            "min_abs": 0.000126,
            "max_abs": 3.519051,
            "positive": 77,
            "negative": 97,
            "zero": 0
          },
          "source_rank_score": 103.564404,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "23149e565b880b0c",
          "codeword174_sha256_16": "3d67630628b3dfc9"
        },
        {
          "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 111,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.206915,
            "min_abs": 0.000996,
            "max_abs": 3.519051,
            "positive": 62,
            "negative": 112,
            "zero": 0
          },
          "source_rank_score": 104.82766,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4345d3c578d5c90a",
          "codeword174_sha256_16": "541fc940bc96d565"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 75,
          "llr_stats": {
            "count": 174,
            "avg_abs": 0.827523,
            "min_abs": 0.000319,
            "max_abs": 3.984668,
            "positive": 99,
            "negative": 75,
            "zero": 0
          },
          "source_rank_score": 103.310092,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "db225458dfe9219d",
          "codeword174_sha256_16": "ddc2ec2a7ab2dbe3"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 91,
          "llr_stats": {
            "count": 174,
            "avg_abs": 0.721538,
            "min_abs": 0.000124,
            "max_abs": 3.984668,
            "positive": 85,
            "negative": 89,
            "zero": 0
          },
          "source_rank_score": 102.886152,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "24f9543314b22061",
          "codeword174_sha256_16": "92fac9d35bd4e846"
        }
      ],
      "warnings": [
        "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
        "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
        "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 7,
      "offsets": {
        "start_offset_s": 0.36,
        "base_freq_offset_hz": 3.0,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 5.16,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "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"
      },
      "sync_candidate": {
        "start_sample": 61920,
        "start_seconds": 5.16,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step37_timing_boundary_sweep:7"
      },
      "best_row": {
        "variant": "mapped_lsb_within_each_tone+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
        },
        "bit_count": 174,
        "hard_weight_174": 27,
        "llr_stats": {
          "count": 174,
          "avg_abs": 2.135166,
          "min_abs": 0.030716,
          "max_abs": 4.279308,
          "positive": 146,
          "negative": 28,
          "zero": 0
        },
        "source_rank_score": 108.540664,
        "syndrome_weight": 27,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "6af7d27fccf41e78",
        "codeword174_sha256_16": "2a2e6ee5c17fc6a7"
      },
      "top_rows": [
        {
          "variant": "mapped_lsb_within_each_tone+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
          },
          "bit_count": 174,
          "hard_weight_174": 27,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.135166,
            "min_abs": 0.030716,
            "max_abs": 4.279308,
            "positive": 146,
            "negative": 28,
            "zero": 0
          },
          "source_rank_score": 108.540664,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6af7d27fccf41e78",
          "codeword174_sha256_16": "2a2e6ee5c17fc6a7"
        },
        {
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 39,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.561178,
            "min_abs": 0.024407,
            "max_abs": 3.909521,
            "positive": 136,
            "negative": 38,
            "zero": 0
          },
          "source_rank_score": 106.244712,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0d958705ade463a4",
          "codeword174_sha256_16": "32942bf9b5cbd0a8"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_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
          },
          "bit_count": 174,
          "hard_weight_174": 39,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.509122,
            "min_abs": 0.011947,
            "max_abs": 3.909521,
            "positive": 134,
            "negative": 40,
            "zero": 0
          },
          "source_rank_score": 106.036488,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0d958705ade463a4",
          "codeword174_sha256_16": "32942bf9b5cbd0a8"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 135,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.182045,
            "min_abs": 0.00755,
            "max_abs": 3.351448,
            "positive": 31,
            "negative": 143,
            "zero": 0
          },
          "source_rank_score": 104.72818,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e257437bdc688091",
          "codeword174_sha256_16": "f478a3303e1ea104"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 133,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.134429,
            "min_abs": 0.000466,
            "max_abs": 3.112514,
            "positive": 30,
            "negative": 144,
            "zero": 0
          },
          "source_rank_score": 104.537716,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e257437bdc688091",
          "codeword174_sha256_16": "cff144d73d67769b"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 135,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.132122,
            "min_abs": 0.005105,
            "max_abs": 2.993348,
            "positive": 34,
            "negative": 140,
            "zero": 0
          },
          "source_rank_score": 104.528488,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e257437bdc688091",
          "codeword174_sha256_16": "f478a3303e1ea104"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 133,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.100678,
            "min_abs": 0.000291,
            "max_abs": 2.993348,
            "positive": 40,
            "negative": 134,
            "zero": 0
          },
          "source_rank_score": 104.402712,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e257437bdc688091",
          "codeword174_sha256_16": "cff144d73d67769b"
        },
        {
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 37,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.63486,
            "min_abs": 0.006652,
            "max_abs": 4.279308,
            "positive": 137,
            "negative": 37,
            "zero": 0
          },
          "source_rank_score": 106.53944,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "170579202ba4fd01",
          "codeword174_sha256_16": "c51740bbee705cfa"
        }
      ],
      "warnings": [
        "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
        "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
        "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 2,
      "offsets": {
        "start_offset_s": 0.24,
        "base_freq_offset_hz": 3.0,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 5.04,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "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"
      },
      "sync_candidate": {
        "start_sample": 60480,
        "start_seconds": 5.04,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step37_timing_boundary_sweep:2"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
        "transform": "ft8_gray_primary_demap_msb_input+no_interleaver",
        "mapping_meta": {
          "tone_mapping": "ft8_gray_primary",
          "gray_direction": "inverse_observed_to_plain",
          "reverse_bits_within_tone_before_gray": false,
          "interleaver": "none"
        },
        "bit_count": 174,
        "hard_weight_174": 39,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.541222,
          "min_abs": 1.6e-05,
          "max_abs": 4.477513,
          "positive": 143,
          "negative": 31,
          "zero": 0
        },
        "source_rank_score": 106.164888,
        "syndrome_weight": 27,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "0d978b9a72686ac0",
        "codeword174_sha256_16": "519e5469c99fcb70"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_primary_demap_msb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 39,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.541222,
            "min_abs": 1.6e-05,
            "max_abs": 4.477513,
            "positive": 143,
            "negative": 31,
            "zero": 0
          },
          "source_rank_score": 106.164888,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0d978b9a72686ac0",
          "codeword174_sha256_16": "519e5469c99fcb70"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 39,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.491462,
            "min_abs": 0.000227,
            "max_abs": 4.477513,
            "positive": 139,
            "negative": 35,
            "zero": 0
          },
          "source_rank_score": 105.965848,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0d978b9a72686ac0",
          "codeword174_sha256_16": "519e5469c99fcb70"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_primary_demap_msb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 39,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.488726,
            "min_abs": 0.001552,
            "max_abs": 4.477513,
            "positive": 132,
            "negative": 42,
            "zero": 0
          },
          "source_rank_score": 105.954904,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0d978b9a72686ac0",
          "codeword174_sha256_16": "519e5469c99fcb70"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 39,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.458218,
            "min_abs": 4.4e-05,
            "max_abs": 4.477513,
            "positive": 136,
            "negative": 38,
            "zero": 0
          },
          "source_rank_score": 105.832872,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0d978b9a72686ac0",
          "codeword174_sha256_16": "519e5469c99fcb70"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 120,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.365677,
            "min_abs": 0.002808,
            "max_abs": 3.752602,
            "positive": 45,
            "negative": 129,
            "zero": 0
          },
          "source_rank_score": 105.462708,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a7de088c5776ee4c",
          "codeword174_sha256_16": "48e697d4e924baaf"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 120,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.29832,
            "min_abs": 0.001373,
            "max_abs": 3.752602,
            "positive": 52,
            "negative": 122,
            "zero": 0
          },
          "source_rank_score": 105.19328,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a7de088c5776ee4c",
          "codeword174_sha256_16": "48e697d4e924baaf"
        },
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.035905,
            "min_abs": 0.01297,
            "max_abs": 4.477513,
            "positive": 32,
            "negative": 142,
            "zero": 0
          },
          "source_rank_score": 108.14362,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "ca41f125d3d51da3",
          "codeword174_sha256_16": "19a24fdc96d8b86a"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 134,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.726608,
            "min_abs": 0.002808,
            "max_abs": 4.477513,
            "positive": 32,
            "negative": 142,
            "zero": 0
          },
          "source_rank_score": 106.906432,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "ccf98b56e2b7d3b5",
          "codeword174_sha256_16": "a0709a0b831a9951"
        }
      ],
      "warnings": [
        "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
        "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
        "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 24,
      "offsets": {
        "start_offset_s": 0.72,
        "base_freq_offset_hz": 5.0,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 5.52,
        "base_freq_hz": 1030.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "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"
      },
      "sync_candidate": {
        "start_sample": 66240,
        "start_seconds": 5.52,
        "base_freq_hz": 1030.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step37_timing_boundary_sweep:24"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
        "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
        "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
        },
        "bit_count": 174,
        "hard_weight_174": 45,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.285644,
          "min_abs": 0.005783,
          "max_abs": 3.811853,
          "positive": 134,
          "negative": 40,
          "zero": 0
        },
        "source_rank_score": 105.142576,
        "syndrome_weight": 27,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "21fef934b7ea1239",
        "codeword174_sha256_16": "8a5dcc77d2218918"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 45,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.285644,
            "min_abs": 0.005783,
            "max_abs": 3.811853,
            "positive": 134,
            "negative": 40,
            "zero": 0
          },
          "source_rank_score": 105.142576,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "21fef934b7ea1239",
          "codeword174_sha256_16": "8a5dcc77d2218918"
        },
        {
          "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"
          },
          "bit_count": 174,
          "hard_weight_174": 47,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.516479,
            "min_abs": 0.004222,
            "max_abs": 3.954649,
            "positive": 129,
            "negative": 45,
            "zero": 0
          },
          "source_rank_score": 106.065916,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "9f805f54fdc77a1f",
          "codeword174_sha256_16": "15b2d2793da1db6d"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+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": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 133,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.314436,
            "min_abs": 0.015697,
            "max_abs": 3.970707,
            "positive": 38,
            "negative": 136,
            "zero": 0
          },
          "source_rank_score": 105.257744,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4b167f7df5c51509",
          "codeword174_sha256_16": "1772246f7777b51e"
        },
        {
          "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+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 125,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.198175,
            "min_abs": 0.00288,
            "max_abs": 3.811853,
            "positive": 44,
            "negative": 130,
            "zero": 0
          },
          "source_rank_score": 104.7927,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "253deeae1430be52",
          "codeword174_sha256_16": "37660ea01956a6f5"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 52,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.195525,
            "min_abs": 0.005151,
            "max_abs": 3.833579,
            "positive": 129,
            "negative": 45,
            "zero": 0
          },
          "source_rank_score": 104.7821,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "34a759dcdbb7894d",
          "codeword174_sha256_16": "779f7504ec1ebfcb"
        },
        {
          "variant": "mapped_ft8_gray_primary_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
          },
          "bit_count": 174,
          "hard_weight_174": 46,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.078343,
            "min_abs": 0.0001,
            "max_abs": 3.186186,
            "positive": 130,
            "negative": 44,
            "zero": 0
          },
          "source_rank_score": 104.313372,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "ecc3490a020333b2",
          "codeword174_sha256_16": "6bf84c7cd2e6f56c"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_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
          },
          "bit_count": 174,
          "hard_weight_174": 47,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.516479,
            "min_abs": 0.004222,
            "max_abs": 3.954649,
            "positive": 129,
            "negative": 45,
            "zero": 0
          },
          "source_rank_score": 106.065916,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "dbf9d72197977fc8",
          "codeword174_sha256_16": "b49d6a6f890bfbc2"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+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": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 133,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.35069,
            "min_abs": 0.02101,
            "max_abs": 3.970707,
            "positive": 37,
            "negative": 137,
            "zero": 0
          },
          "source_rank_score": 105.40276,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e350ff3245c41ffa",
          "codeword174_sha256_16": "870b18dc46b3200f"
        }
      ],
      "warnings": [
        "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
        "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
        "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 25,
      "offsets": {
        "start_offset_s": 0.72,
        "base_freq_offset_hz": 6.0,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 5.52,
        "base_freq_hz": 1031.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "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"
      },
      "sync_candidate": {
        "start_sample": 66240,
        "start_seconds": 5.52,
        "base_freq_hz": 1031.0,
        "tone_spacing_hz": 1.875,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step37_timing_boundary_sweep:25"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
        "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
        "mapping_meta": {
          "tone_mapping": "lsb_within_each_tone",
          "interleaver": "ft8_bitrev",
          "direction": "interleave_codeword_to_rx_inverse",
          "order_len": 174,
          "polarity": "inverted"
        },
        "bit_count": 174,
        "hard_weight_174": 105,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.263236,
          "min_abs": 0.003396,
          "max_abs": 4.053991,
          "positive": 65,
          "negative": 109,
          "zero": 0
        },
        "source_rank_score": 105.052944,
        "syndrome_weight": 27,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "f76a79414f1b8ddb",
        "codeword174_sha256_16": "224c42865c325d8a"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 105,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.263236,
            "min_abs": 0.003396,
            "max_abs": 4.053991,
            "positive": 65,
            "negative": 109,
            "zero": 0
          },
          "source_rank_score": 105.052944,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "f76a79414f1b8ddb",
          "codeword174_sha256_16": "224c42865c325d8a"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 103,
          "llr_stats": {
            "count": 174,
            "avg_abs": 0.769284,
            "min_abs": 1.9e-05,
            "max_abs": 2.462506,
            "positive": 64,
            "negative": 110,
            "zero": 0
          },
          "source_rank_score": 103.077136,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "ef7eccc2f78c5191",
          "codeword174_sha256_16": "848e7876230a1c0d"
        },
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 128,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.834433,
            "min_abs": 0.003396,
            "max_abs": 4.349393,
            "positive": 41,
            "negative": 133,
            "zero": 0
          },
          "source_rank_score": 107.337732,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a2a946eef87a2491",
          "codeword174_sha256_16": "144f4835b75ffcc3"
        },
        {
          "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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
          },
          "bit_count": 174,
          "hard_weight_174": 56,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.320972,
            "min_abs": 0.001911,
            "max_abs": 4.053991,
            "positive": 126,
            "negative": 48,
            "zero": 0
          },
          "source_rank_score": 105.283888,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0bda7f7b333e2c46",
          "codeword174_sha256_16": "884becb33bd506ac"
        },
        {
          "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+inverted_bits",
          "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,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 111,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.242177,
            "min_abs": 0.002244,
            "max_abs": 4.223276,
            "positive": 60,
            "negative": 114,
            "zero": 0
          },
          "source_rank_score": 104.968708,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b9014d42f0c2c245",
          "codeword174_sha256_16": "08c64c0b4932570a"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 127,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.209123,
            "min_abs": 1.9e-05,
            "max_abs": 4.223276,
            "positive": 40,
            "negative": 134,
            "zero": 0
          },
          "source_rank_score": 104.836492,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "80407faf6d1a1705",
          "codeword174_sha256_16": "38b950708776c704"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_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
          },
          "bit_count": 174,
          "hard_weight_174": 71,
          "llr_stats": {
            "count": 174,
            "avg_abs": 0.769284,
            "min_abs": 1.9e-05,
            "max_abs": 2.462506,
            "positive": 110,
            "negative": 64,
            "zero": 0
          },
          "source_rank_score": 103.077136,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0ac01e0b305b9cfa",
          "codeword174_sha256_16": "99fcb433a8efd133"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_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
          },
          "bit_count": 174,
          "hard_weight_174": 81,
          "llr_stats": {
            "count": 174,
            "avg_abs": 0.760033,
            "min_abs": 2e-06,
            "max_abs": 2.8447,
            "positive": 92,
            "negative": 82,
            "zero": 0
          },
          "source_rank_score": 103.040132,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "bf55efef383656ea",
          "codeword174_sha256_16": "d5276956bc4d4bcc"
        }
      ],
      "warnings": [
        "Step 37 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.",
        "Step 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 37 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.",
        "Step 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    }
  ],
  "outputs": {
    "timing_boundary_sweep_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step37_timing_boundary_sweep.json",
    "timing_best_candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step37_best_timing_fec_candidate.json"
  },
  "decodes": [],
  "warnings": [
    "Step 37 expands the Step36 edge hit and exports the best timing candidate for downstream LDPC soft-decode.",
    "No JS8 text unpack or CRC validation is performed yet.",
    "No valid LDPC codeword found is a diagnostic warning, not a hard command failure."
  ],
  "next_action": "Use outputs.timing_best_candidate_json for LDPC matrix/soft decode. If syndrome is still far from 0, continue interleaver/LLR and symbol-boundary tuning around the best_candidate."
}
