{
  "ok": true,
  "mode": "JS8",
  "tool": "webftr-js8-timing-boundary-candidate-sweep",
  "tool_version": "step51-source-aligned-tone-offset-cli-fix",
  "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
  "profile_scan_json": "/decoders/js8_decoder/logs/20260527T110128Z_real_run_profile_scan_output.json",
  "anchor_json": "/decoders/js8_decoder/logs/20260527T110128Z_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": "step51_source_aligned_timing_boundary_syndrome_sweep_no_message_unpack",
  "anchor_selection": {
    "source": "profile_scan_json",
    "path": "/decoders/js8_decoder/logs/20260527T110128Z_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
  },
  "partial": false,
  "partial_reason": "complete",
  "sweep_elapsed_seconds": 158.007,
  "source_alignment": {
    "source_nsps": 6192,
    "source_tone_spacing_hz": 1.937984496124031,
    "effective_nsps": 6192,
    "effective_tone_spacing_base_hz": 1.937984496124031
  },
  "sweep_grid": {
    "start_offsets_s": [
      0.0,
      0.03,
      0.06,
      0.09,
      0.12
    ],
    "base_freq_offsets_hz": [
      1.5,
      2.0,
      2.5,
      3.0,
      3.5
    ],
    "tone_spacing_offsets_hz": [
      -0.03,
      0.0,
      0.03
    ],
    "max_combinations": 45,
    "actual_combinations": 45,
    "processed_combinations": 45,
    "time_budget_seconds": 210.0
  },
  "decode_found": false,
  "best_final_syndrome_weight": 22,
  "best_candidate": {
    "combination_index": 11,
    "offsets": {
      "start_offset_s": 0.0,
      "base_freq_offset_hz": 3.0,
      "tone_spacing_offset_hz": -0.03
    },
    "anchor_applied": {
      "start_seconds": 4.8,
      "base_freq_hz": 1028.0,
      "tone_spacing_hz": 1.9079844961240309,
      "nsps": 6192
    },
    "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": 57600,
      "start_seconds": 4.8,
      "base_freq_hz": 1028.0,
      "tone_spacing_hz": 1.9079844961240309,
      "nsps": 6192,
      "candidate_score": null,
      "costas_hits": null,
      "avg_margin_db": null,
      "anchor_source": "step51_source_aligned_timing_sweep:11"
    },
    "best_row": {
      "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
      "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": 36,
      "llr_stats": {
        "count": 174,
        "avg_abs": 1.291598,
        "min_abs": 0.001433,
        "max_abs": 3.895705,
        "positive": 129,
        "negative": 45,
        "zero": 0
      },
      "source_rank_score": 105.166392,
      "syndrome_weight": 22,
      "valid_codeword_hard_decision": false,
      "message91_sha256_16": "d4ca2a05f15dd009",
      "codeword174_sha256_16": "95a1e941fbdff6b2"
    },
    "top_rows": [
      {
        "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
        "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": 36,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.291598,
          "min_abs": 0.001433,
          "max_abs": 3.895705,
          "positive": 129,
          "negative": 45,
          "zero": 0
        },
        "source_rank_score": 105.166392,
        "syndrome_weight": 22,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "d4ca2a05f15dd009",
        "codeword174_sha256_16": "95a1e941fbdff6b2"
      },
      {
        "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver",
        "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": 36,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.289323,
          "min_abs": 0.000933,
          "max_abs": 3.895705,
          "positive": 129,
          "negative": 45,
          "zero": 0
        },
        "source_rank_score": 105.157292,
        "syndrome_weight": 22,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "d4ca2a05f15dd009",
        "codeword174_sha256_16": "95a1e941fbdff6b2"
      },
      {
        "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "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": 61,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.11433,
          "min_abs": 0.000187,
          "max_abs": 3.795489,
          "positive": 110,
          "negative": 64,
          "zero": 0
        },
        "source_rank_score": 104.45732,
        "syndrome_weight": 27,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "bab866be6de1cc5a",
        "codeword174_sha256_16": "4b4b446b1e4f7aae"
      },
      {
        "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "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": 61,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.079292,
          "min_abs": 0.000226,
          "max_abs": 3.795489,
          "positive": 110,
          "negative": 64,
          "zero": 0
        },
        "source_rank_score": 104.317168,
        "syndrome_weight": 27,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "bab866be6de1cc5a",
        "codeword174_sha256_16": "4b4b446b1e4f7aae"
      },
      {
        "variant": "lab_mask_xor_preview",
        "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": 93,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.818736,
          "min_abs": 0.003108,
          "max_abs": 4.379379,
          "positive": 34,
          "negative": 140,
          "zero": 0
        },
        "source_rank_score": 99.274944,
        "syndrome_weight": 29,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "4439454e612f6636",
        "codeword174_sha256_16": "953e2bc596e8a67e"
      },
      {
        "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": 45,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.666423,
          "min_abs": 0.002022,
          "max_abs": 3.950111,
          "positive": 124,
          "negative": 50,
          "zero": 0
        },
        "source_rank_score": 106.665692,
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "1bf4f3a7e6e5f651",
        "codeword174_sha256_16": "daeb23bbbdf896b0"
      },
      {
        "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": 45,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.625634,
          "min_abs": 0.003108,
          "max_abs": 3.895705,
          "positive": 124,
          "negative": 50,
          "zero": 0
        },
        "source_rank_score": 106.502536,
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "1bf4f3a7e6e5f651",
        "codeword174_sha256_16": "daeb23bbbdf896b0"
      },
      {
        "variant": "mapped_lsb_within_each_tone+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": 45,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.617209,
          "min_abs": 0.001539,
          "max_abs": 3.944456,
          "positive": 123,
          "negative": 51,
          "zero": 0
        },
        "source_rank_score": 106.468836,
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "202d2650a31499d7",
        "codeword174_sha256_16": "6c43e3bd22022c79"
      }
    ],
    "warnings": [
      "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
      "Step 51 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 51 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": 11,
      "offsets": {
        "start_offset_s": 0.0,
        "base_freq_offset_hz": 3.0,
        "tone_spacing_offset_hz": -0.03
      },
      "anchor_applied": {
        "start_seconds": 4.8,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.9079844961240309,
        "nsps": 6192
      },
      "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": 57600,
        "start_seconds": 4.8,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.9079844961240309,
        "nsps": 6192,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step51_source_aligned_timing_sweep:11"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
        "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": 36,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.291598,
          "min_abs": 0.001433,
          "max_abs": 3.895705,
          "positive": 129,
          "negative": 45,
          "zero": 0
        },
        "source_rank_score": 105.166392,
        "syndrome_weight": 22,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "d4ca2a05f15dd009",
        "codeword174_sha256_16": "95a1e941fbdff6b2"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
          "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": 36,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.291598,
            "min_abs": 0.001433,
            "max_abs": 3.895705,
            "positive": 129,
            "negative": 45,
            "zero": 0
          },
          "source_rank_score": 105.166392,
          "syndrome_weight": 22,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "d4ca2a05f15dd009",
          "codeword174_sha256_16": "95a1e941fbdff6b2"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver",
          "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": 36,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.289323,
            "min_abs": 0.000933,
            "max_abs": 3.895705,
            "positive": 129,
            "negative": 45,
            "zero": 0
          },
          "source_rank_score": 105.157292,
          "syndrome_weight": 22,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "d4ca2a05f15dd009",
          "codeword174_sha256_16": "95a1e941fbdff6b2"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "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": 61,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.11433,
            "min_abs": 0.000187,
            "max_abs": 3.795489,
            "positive": 110,
            "negative": 64,
            "zero": 0
          },
          "source_rank_score": 104.45732,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "bab866be6de1cc5a",
          "codeword174_sha256_16": "4b4b446b1e4f7aae"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "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": 61,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.079292,
            "min_abs": 0.000226,
            "max_abs": 3.795489,
            "positive": 110,
            "negative": 64,
            "zero": 0
          },
          "source_rank_score": 104.317168,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "bab866be6de1cc5a",
          "codeword174_sha256_16": "4b4b446b1e4f7aae"
        },
        {
          "variant": "lab_mask_xor_preview",
          "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": 93,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.818736,
            "min_abs": 0.003108,
            "max_abs": 4.379379,
            "positive": 34,
            "negative": 140,
            "zero": 0
          },
          "source_rank_score": 99.274944,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4439454e612f6636",
          "codeword174_sha256_16": "953e2bc596e8a67e"
        },
        {
          "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": 45,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.666423,
            "min_abs": 0.002022,
            "max_abs": 3.950111,
            "positive": 124,
            "negative": 50,
            "zero": 0
          },
          "source_rank_score": 106.665692,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "1bf4f3a7e6e5f651",
          "codeword174_sha256_16": "daeb23bbbdf896b0"
        },
        {
          "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": 45,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.625634,
            "min_abs": 0.003108,
            "max_abs": 3.895705,
            "positive": 124,
            "negative": 50,
            "zero": 0
          },
          "source_rank_score": 106.502536,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "1bf4f3a7e6e5f651",
          "codeword174_sha256_16": "daeb23bbbdf896b0"
        },
        {
          "variant": "mapped_lsb_within_each_tone+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": 45,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.617209,
            "min_abs": 0.001539,
            "max_abs": 3.944456,
            "positive": 123,
            "negative": 51,
            "zero": 0
          },
          "source_rank_score": 106.468836,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "202d2650a31499d7",
          "codeword174_sha256_16": "6c43e3bd22022c79"
        }
      ],
      "warnings": [
        "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 51 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 51 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.0,
        "base_freq_offset_hz": 1.5,
        "tone_spacing_offset_hz": -0.03
      },
      "anchor_applied": {
        "start_seconds": 4.8,
        "base_freq_hz": 1026.5,
        "tone_spacing_hz": 1.9079844961240309,
        "nsps": 6192
      },
      "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": 57600,
        "start_seconds": 4.8,
        "base_freq_hz": 1026.5,
        "tone_spacing_hz": 1.9079844961240309,
        "nsps": 6192,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step51_source_aligned_timing_sweep:2"
      },
      "best_row": {
        "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "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": 127,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.733511,
          "min_abs": 0.012055,
          "max_abs": 4.121456,
          "positive": 45,
          "negative": 129,
          "zero": 0
        },
        "source_rank_score": 106.934044,
        "syndrome_weight": 23,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "392cab12a34759b9",
        "codeword174_sha256_16": "5e40b5a83c672886"
      },
      "top_rows": [
        {
          "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "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": 127,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.733511,
            "min_abs": 0.012055,
            "max_abs": 4.121456,
            "positive": 45,
            "negative": 129,
            "zero": 0
          },
          "source_rank_score": 106.934044,
          "syndrome_weight": 23,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "392cab12a34759b9",
          "codeword174_sha256_16": "5e40b5a83c672886"
        },
        {
          "variant": "reverse_symbol_order",
          "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": 44,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.881544,
            "min_abs": 0.008612,
            "max_abs": 4.094064,
            "positive": 115,
            "negative": 59,
            "zero": 0
          },
          "source_rank_score": 111.526176,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "128117b042d0d534",
          "codeword174_sha256_16": "b0809bdee52aa2eb"
        },
        {
          "variant": "reverse_full_bitstream",
          "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 44,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.029253,
            "min_abs": 0.008612,
            "max_abs": 4.159387,
            "positive": 134,
            "negative": 40,
            "zero": 0
          },
          "source_rank_score": 111.117012,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "128117b042d0d534",
          "codeword174_sha256_16": "b0809bdee52aa2eb"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 113,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.409152,
            "min_abs": 0.001536,
            "max_abs": 4.121456,
            "positive": 53,
            "negative": 121,
            "zero": 0
          },
          "source_rank_score": 105.636608,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a7ec7573558f6d66",
          "codeword174_sha256_16": "fd238f7999c92f54"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "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": 97,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.258287,
            "min_abs": 0.00739,
            "max_abs": 4.094064,
            "positive": 73,
            "negative": 101,
            "zero": 0
          },
          "source_rank_score": 105.033148,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "10a0624085517fbb",
          "codeword174_sha256_16": "2e36371617234c9c"
        },
        {
          "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.691846,
            "min_abs": 3.9e-05,
            "max_abs": 4.159387,
            "positive": 139,
            "negative": 35,
            "zero": 0
          },
          "source_rank_score": 106.767384,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "fa72b5aad0016ab4",
          "codeword174_sha256_16": "9a4cfc262b798d41"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
          "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": 44,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.342044,
            "min_abs": 3.9e-05,
            "max_abs": 3.408185,
            "positive": 130,
            "negative": 44,
            "zero": 0
          },
          "source_rank_score": 105.368176,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "ff6f9fd31170e8ba",
          "codeword174_sha256_16": "1740cb3878bab5bf"
        },
        {
          "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": 109,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.807528,
            "min_abs": 0.007795,
            "max_abs": 4.094064,
            "positive": 65,
            "negative": 109,
            "zero": 0
          },
          "source_rank_score": 125.230112,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "07b13c8ed6906112",
          "codeword174_sha256_16": "00e44a669eea08bb"
        }
      ],
      "warnings": [
        "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 51 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 51 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": 1,
      "offsets": {
        "start_offset_s": 0.0,
        "base_freq_offset_hz": 1.5,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 4.8,
        "base_freq_hz": 1026.5,
        "tone_spacing_hz": 1.937984496124031,
        "nsps": 6192
      },
      "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": 57600,
        "start_seconds": 4.8,
        "base_freq_hz": 1026.5,
        "tone_spacing_hz": 1.937984496124031,
        "nsps": 6192,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step51_source_aligned_timing_sweep:1"
      },
      "best_row": {
        "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "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": 123,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.615244,
          "min_abs": 0.009081,
          "max_abs": 4.107793,
          "positive": 49,
          "negative": 125,
          "zero": 0
        },
        "source_rank_score": 106.460976,
        "syndrome_weight": 25,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "392cab12a34759b9",
        "codeword174_sha256_16": "5ae8d6b48d414f34"
      },
      "top_rows": [
        {
          "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "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": 123,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.615244,
            "min_abs": 0.009081,
            "max_abs": 4.107793,
            "positive": 49,
            "negative": 125,
            "zero": 0
          },
          "source_rank_score": 106.460976,
          "syndrome_weight": 25,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "392cab12a34759b9",
          "codeword174_sha256_16": "5ae8d6b48d414f34"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "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": 95,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.197035,
            "min_abs": 0.00517,
            "max_abs": 3.968945,
            "positive": 71,
            "negative": 103,
            "zero": 0
          },
          "source_rank_score": 104.78814,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "92b10effeeeb19a8",
          "codeword174_sha256_16": "1c65597835257916"
        },
        {
          "variant": "reverse_symbol_order",
          "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": 43,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.775836,
            "min_abs": 0.021293,
            "max_abs": 4.112074,
            "positive": 117,
            "negative": 57,
            "zero": 0
          },
          "source_rank_score": 111.103344,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "c94e2d2f80c7bd08",
          "codeword174_sha256_16": "746597535b28b3a5"
        },
        {
          "variant": "reverse_full_bitstream",
          "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 43,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.924785,
            "min_abs": 0.021293,
            "max_abs": 4.127648,
            "positive": 135,
            "negative": 39,
            "zero": 0
          },
          "source_rank_score": 110.69914,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "c94e2d2f80c7bd08",
          "codeword174_sha256_16": "746597535b28b3a5"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_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": 43,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.924785,
            "min_abs": 0.021293,
            "max_abs": 4.127648,
            "positive": 135,
            "negative": 39,
            "zero": 0
          },
          "source_rank_score": 107.69914,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "9a11ea1dd34fbb3d",
          "codeword174_sha256_16": "66658ed247b41bb0"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 108,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.69607,
            "min_abs": 0.003643,
            "max_abs": 4.112074,
            "positive": 65,
            "negative": 109,
            "zero": 0
          },
          "source_rank_score": 106.78428,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "842583d1534d7dbc",
          "codeword174_sha256_16": "74a25cd15e35b3d5"
        },
        {
          "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": 108,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.69607,
            "min_abs": 0.003643,
            "max_abs": 4.112074,
            "positive": 65,
            "negative": 109,
            "zero": 0
          },
          "source_rank_score": 106.78428,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "62e51936630c641e",
          "codeword174_sha256_16": "c52150be96d8413f"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_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": 110,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.276774,
            "min_abs": 0.005048,
            "max_abs": 4.107793,
            "positive": 53,
            "negative": 121,
            "zero": 0
          },
          "source_rank_score": 105.107096,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "effdee3cae80cf8e",
          "codeword174_sha256_16": "1bb03d72bab96f47"
        }
      ],
      "warnings": [
        "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 51 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 51 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": 43,
      "offsets": {
        "start_offset_s": 0.06,
        "base_freq_offset_hz": 3.5,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 4.859999999999999,
        "base_freq_hz": 1028.5,
        "tone_spacing_hz": 1.937984496124031,
        "nsps": 6192
      },
      "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": 58320,
        "start_seconds": 4.86,
        "base_freq_hz": 1028.5,
        "tone_spacing_hz": 1.937984496124031,
        "nsps": 6192,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step51_source_aligned_timing_sweep:43"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_alt_high_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": 49,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.230206,
          "min_abs": 0.003136,
          "max_abs": 3.713292,
          "positive": 129,
          "negative": 45,
          "zero": 0
        },
        "source_rank_score": 104.920824,
        "syndrome_weight": 25,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "e20eaf42c9d5a080",
        "codeword174_sha256_16": "670a833d4cd80958"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_alt_high_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": 49,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.230206,
            "min_abs": 0.003136,
            "max_abs": 3.713292,
            "positive": 129,
            "negative": 45,
            "zero": 0
          },
          "source_rank_score": 104.920824,
          "syndrome_weight": 25,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e20eaf42c9d5a080",
          "codeword174_sha256_16": "670a833d4cd80958"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 57,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.180522,
            "min_abs": 7.3e-05,
            "max_abs": 4.114918,
            "positive": 116,
            "negative": 58,
            "zero": 0
          },
          "source_rank_score": 104.722088,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "08c336f0fdbd0b9d",
          "codeword174_sha256_16": "828c7698f0f759d6"
        },
        {
          "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": 113,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.000414,
            "min_abs": 0.000314,
            "max_abs": 3.722453,
            "positive": 61,
            "negative": 113,
            "zero": 0
          },
          "source_rank_score": 104.001656,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e9dab226fae4b28e",
          "codeword174_sha256_16": "6dde07ebf7b5f589"
        },
        {
          "variant": "lab_mask_xor_preview",
          "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": 93,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.092034,
            "min_abs": 0.019209,
            "max_abs": 4.114918,
            "positive": 138,
            "negative": 36,
            "zero": 0
          },
          "source_rank_score": 100.368136,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "2cd135c17dd2b470",
          "codeword174_sha256_16": "fc7ab1ab87744044"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 120,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.221856,
            "min_abs": 1.9e-05,
            "max_abs": 4.114918,
            "positive": 52,
            "negative": 122,
            "zero": 0
          },
          "source_rank_score": 104.887424,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "dccfb96fe1c80677",
          "codeword174_sha256_16": "29a87a46c7d870ae"
        },
        {
          "variant": "reverse_full_bitstream",
          "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": 35,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.753358,
            "min_abs": 0.003136,
            "max_abs": 4.114918,
            "positive": 138,
            "negative": 36,
            "zero": 0
          },
          "source_rank_score": 110.013432,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "510b5025f519b4a7",
          "codeword174_sha256_16": "d5e243f42868b95b"
        },
        {
          "variant": "reverse_symbol_order",
          "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": 35,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.451951,
            "min_abs": 0.003136,
            "max_abs": 3.728632,
            "positive": 120,
            "negative": 54,
            "zero": 0
          },
          "source_rank_score": 109.807804,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "510b5025f519b4a7",
          "codeword174_sha256_16": "d5e243f42868b95b"
        },
        {
          "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": 47,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.057476,
            "min_abs": 2.3e-05,
            "max_abs": 3.114307,
            "positive": 128,
            "negative": 46,
            "zero": 0
          },
          "source_rank_score": 104.229904,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4781b790b251315c",
          "codeword174_sha256_16": "777c0990b801d669"
        }
      ],
      "warnings": [
        "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 51 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 51 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.03,
        "base_freq_offset_hz": 2.0,
        "tone_spacing_offset_hz": 0.03
      },
      "anchor_applied": {
        "start_seconds": 4.83,
        "base_freq_hz": 1027.0,
        "tone_spacing_hz": 1.967984496124031,
        "nsps": 6192
      },
      "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": 57960,
        "start_seconds": 4.83,
        "base_freq_hz": 1027.0,
        "tone_spacing_hz": 1.967984496124031,
        "nsps": 6192,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step51_source_aligned_timing_sweep:21"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_alt_high_demap_lsb_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": 103,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.014755,
          "min_abs": 0.001418,
          "max_abs": 3.82154,
          "positive": 71,
          "negative": 103,
          "zero": 0
        },
        "source_rank_score": 104.05902,
        "syndrome_weight": 25,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "f6f9e2c65d361950",
        "codeword174_sha256_16": "a34f30514f1147be"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_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": 103,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.014755,
            "min_abs": 0.001418,
            "max_abs": 3.82154,
            "positive": 71,
            "negative": 103,
            "zero": 0
          },
          "source_rank_score": 104.05902,
          "syndrome_weight": 25,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "f6f9e2c65d361950",
          "codeword174_sha256_16": "a34f30514f1147be"
        },
        {
          "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+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": 134,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.51667,
            "min_abs": 1.8e-05,
            "max_abs": 4.144111,
            "positive": 40,
            "negative": 134,
            "zero": 0
          },
          "source_rank_score": 106.06668,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "daab820710a9a228",
          "codeword174_sha256_16": "16654f047cae3428"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
          "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": 45,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.128579,
            "min_abs": 1.8e-05,
            "max_abs": 3.363492,
            "positive": 129,
            "negative": 45,
            "zero": 0
          },
          "source_rank_score": 104.514316,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "d40791f46d2a4b11",
          "codeword174_sha256_16": "9dca28554c5a2316"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_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": 58,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.225323,
            "min_abs": 0.002329,
            "max_abs": 3.956982,
            "positive": 126,
            "negative": 48,
            "zero": 0
          },
          "source_rank_score": 104.901292,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a7c653e33db6db7c",
          "codeword174_sha256_16": "04e767b23e20bf0a"
        },
        {
          "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 34,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.163748,
            "min_abs": 0.014686,
            "max_abs": 4.144111,
            "positive": 141,
            "negative": 33,
            "zero": 0
          },
          "source_rank_score": 108.654992,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "cc61e58f86747a77",
          "codeword174_sha256_16": "71bebbfd08ed2f9a"
        },
        {
          "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+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": 122,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.636108,
            "min_abs": 0.015006,
            "max_abs": 3.82154,
            "positive": 49,
            "negative": 125,
            "zero": 0
          },
          "source_rank_score": 106.544432,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "f6de0dff4166858e",
          "codeword174_sha256_16": "a8a90b25176d03db"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "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": 108,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.159192,
            "min_abs": 0.003014,
            "max_abs": 3.956982,
            "positive": 60,
            "negative": 114,
            "zero": 0
          },
          "source_rank_score": 104.636768,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "14fd4623952966b5",
          "codeword174_sha256_16": "fafeccfe3224ee30"
        },
        {
          "variant": "raw_msb_symbol_order",
          "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": 49,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.750816,
            "min_abs": 0.003492,
            "max_abs": 4.144111,
            "positive": 127,
            "negative": 47,
            "zero": 0
          },
          "source_rank_score": 125.003264,
          "syndrome_weight": 33,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "766a43ca41ee0172",
          "codeword174_sha256_16": "7d9bcf61433ea9fd"
        }
      ],
      "warnings": [
        "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 51 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 51 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": 39,
      "offsets": {
        "start_offset_s": 0.06,
        "base_freq_offset_hz": 2.5,
        "tone_spacing_offset_hz": 0.03
      },
      "anchor_applied": {
        "start_seconds": 4.859999999999999,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.967984496124031,
        "nsps": 6192
      },
      "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": 58320,
        "start_seconds": 4.86,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.967984496124031,
        "nsps": 6192,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step51_source_aligned_timing_sweep:39"
      },
      "best_row": {
        "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "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": 126,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.636445,
          "min_abs": 0.04144,
          "max_abs": 4.144109,
          "positive": 48,
          "negative": 126,
          "zero": 0
        },
        "source_rank_score": 106.54578,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "25788c17f810b7d5",
        "codeword174_sha256_16": "87afe3fe5c58aa69"
      },
      "top_rows": [
        {
          "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "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": 126,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.636445,
            "min_abs": 0.04144,
            "max_abs": 4.144109,
            "positive": 48,
            "negative": 126,
            "zero": 0
          },
          "source_rank_score": 106.54578,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "25788c17f810b7d5",
          "codeword174_sha256_16": "87afe3fe5c58aa69"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "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": 43,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.29064,
            "min_abs": 0.002158,
            "max_abs": 4.085972,
            "positive": 136,
            "negative": 38,
            "zero": 0
          },
          "source_rank_score": 105.16256,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "d7fbffc39612c219",
          "codeword174_sha256_16": "b1faca9af1fcf29e"
        },
        {
          "variant": "mapped_lsb_within_each_tone+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": 140,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.221352,
            "min_abs": 0.057726,
            "max_abs": 4.144109,
            "positive": 35,
            "negative": 139,
            "zero": 0
          },
          "source_rank_score": 108.885408,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0329e23109e06988",
          "codeword174_sha256_16": "cb10f2e95870a14d"
        },
        {
          "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_lsb_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": 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.549534,
            "min_abs": 0.04144,
            "max_abs": 4.085972,
            "positive": 48,
            "negative": 126,
            "zero": 0
          },
          "source_rank_score": 106.198136,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "c203e9dd4e290c80",
          "codeword174_sha256_16": "93022f63b6f5a179"
        },
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 45,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.647117,
            "min_abs": 0.014093,
            "max_abs": 4.109742,
            "positive": 133,
            "negative": 41,
            "zero": 0
          },
          "source_rank_score": 106.588468,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "ce0c8b98f36c5477",
          "codeword174_sha256_16": "0686743576218a8e"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 57,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.600836,
            "min_abs": 0.007559,
            "max_abs": 3.884246,
            "positive": 120,
            "negative": 54,
            "zero": 0
          },
          "source_rank_score": 106.403344,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "bccfcf3a9d2d88f9",
          "codeword174_sha256_16": "789a455223ead9d0"
        },
        {
          "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",
          "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": 55,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.201724,
            "min_abs": 4.7e-05,
            "max_abs": 3.041852,
            "positive": 120,
            "negative": 54,
            "zero": 0
          },
          "source_rank_score": 104.806896,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "1ba13df646b9fda8",
          "codeword174_sha256_16": "e6afe9485a3d19c5"
        },
        {
          "variant": "raw_msb_symbol_order",
          "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": 140,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.221352,
            "min_abs": 0.057726,
            "max_abs": 4.144109,
            "positive": 35,
            "negative": 139,
            "zero": 0
          },
          "source_rank_score": 126.885408,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "064d4295f7c48336",
          "codeword174_sha256_16": "4b1f5a7ddad8966d"
        }
      ],
      "warnings": [
        "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 51 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 51 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": 8,
      "offsets": {
        "start_offset_s": 0.0,
        "base_freq_offset_hz": 2.5,
        "tone_spacing_offset_hz": -0.03
      },
      "anchor_applied": {
        "start_seconds": 4.8,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.9079844961240309,
        "nsps": 6192
      },
      "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": 57600,
        "start_seconds": 4.8,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.9079844961240309,
        "nsps": 6192,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step51_source_aligned_timing_sweep:8"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_primary_demap_msb_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": 56,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.265569,
          "min_abs": 0.007883,
          "max_abs": 4.01973,
          "positive": 124,
          "negative": 50,
          "zero": 0
        },
        "source_rank_score": 105.062276,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "6548c013cab69e1e",
        "codeword174_sha256_16": "e4a052902783f611"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_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": 56,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.265569,
            "min_abs": 0.007883,
            "max_abs": 4.01973,
            "positive": 124,
            "negative": 50,
            "zero": 0
          },
          "source_rank_score": 105.062276,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6548c013cab69e1e",
          "codeword174_sha256_16": "e4a052902783f611"
        },
        {
          "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": 135,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.595277,
            "min_abs": 0.001058,
            "max_abs": 4.048874,
            "positive": 36,
            "negative": 138,
            "zero": 0
          },
          "source_rank_score": 106.381108,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "9e57d9fb308e6dee",
          "codeword174_sha256_16": "cc67285942c115ea"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+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": 142,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.609719,
            "min_abs": 0.001956,
            "max_abs": 4.292074,
            "positive": 27,
            "negative": 147,
            "zero": 0
          },
          "source_rank_score": 106.438876,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6b3d67c760fd57be",
          "codeword174_sha256_16": "732f86ed92cad209"
        },
        {
          "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": 135,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.595277,
            "min_abs": 0.001058,
            "max_abs": 4.048874,
            "positive": 36,
            "negative": 138,
            "zero": 0
          },
          "source_rank_score": 106.381108,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "c481def080ab9cb5",
          "codeword174_sha256_16": "47ebcc4bfd1fb637"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 38,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.887501,
            "min_abs": 0.018857,
            "max_abs": 4.292074,
            "positive": 143,
            "negative": 31,
            "zero": 0
          },
          "source_rank_score": 107.550004,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "937823f97ed0847f",
          "codeword174_sha256_16": "9e5b66bac1556b29"
        },
        {
          "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": 138,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.609717,
            "min_abs": 0.003224,
            "max_abs": 4.292074,
            "positive": 31,
            "negative": 143,
            "zero": 0
          },
          "source_rank_score": 106.438868,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "46cc6ddc9712ac68",
          "codeword174_sha256_16": "4235701b167d47ee"
        },
        {
          "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+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": 138,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.585003,
            "min_abs": 8.3e-05,
            "max_abs": 4.292074,
            "positive": 33,
            "negative": 141,
            "zero": 0
          },
          "source_rank_score": 106.340012,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "46cc6ddc9712ac68",
          "codeword174_sha256_16": "4235701b167d47ee"
        },
        {
          "variant": "lab_mask_xor_preview",
          "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": 90,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.644885,
            "min_abs": 0.001088,
            "max_abs": 4.048874,
            "positive": 40,
            "negative": 134,
            "zero": 0
          },
          "source_rank_score": 98.57954,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "2a5e5b0263df5195",
          "codeword174_sha256_16": "4f91b6dc101564e5"
        }
      ],
      "warnings": [
        "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 51 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 51 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": 41,
      "offsets": {
        "start_offset_s": 0.06,
        "base_freq_offset_hz": 3.0,
        "tone_spacing_offset_hz": -0.03
      },
      "anchor_applied": {
        "start_seconds": 4.859999999999999,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.9079844961240309,
        "nsps": 6192
      },
      "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": 58320,
        "start_seconds": 4.86,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.9079844961240309,
        "nsps": 6192,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step51_source_aligned_timing_sweep:41"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
        "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": 54,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.071337,
          "min_abs": 0.008389,
          "max_abs": 4.378399,
          "positive": 115,
          "negative": 59,
          "zero": 0
        },
        "source_rank_score": 104.285348,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "7db4ad98fe1e49ac",
        "codeword174_sha256_16": "7761891a2eaf0907"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 54,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.071337,
            "min_abs": 0.008389,
            "max_abs": 4.378399,
            "positive": 115,
            "negative": 59,
            "zero": 0
          },
          "source_rank_score": 104.285348,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "7db4ad98fe1e49ac",
          "codeword174_sha256_16": "7761891a2eaf0907"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_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": 54,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.152765,
            "min_abs": 0.002806,
            "max_abs": 4.378399,
            "positive": 124,
            "negative": 50,
            "zero": 0
          },
          "source_rank_score": 104.61106,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "7db4ad98fe1e49ac",
          "codeword174_sha256_16": "e0bef0ec308e802c"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_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": 59,
          "llr_stats": {
            "count": 174,
            "avg_abs": 0.944583,
            "min_abs": 0.000269,
            "max_abs": 3.784521,
            "positive": 114,
            "negative": 60,
            "zero": 0
          },
          "source_rank_score": 103.778332,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "9f88e54e8b6a8ee7",
          "codeword174_sha256_16": "d7384dff1531e25f"
        },
        {
          "variant": "lab_mask_xor_preview",
          "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": 85,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.042063,
            "min_abs": 0.027988,
            "max_abs": 4.378399,
            "positive": 41,
            "negative": 133,
            "zero": 0
          },
          "source_rank_score": 100.168252,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b66ebffa64074608",
          "codeword174_sha256_16": "43e29a9a3cd43903"
        },
        {
          "variant": "reverse_symbol_order",
          "transform": "raw_msb+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 42,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.042063,
            "min_abs": 0.027988,
            "max_abs": 4.378399,
            "positive": 133,
            "negative": 41,
            "zero": 0
          },
          "source_rank_score": 112.168252,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "632654c49dc26f7e",
          "codeword174_sha256_16": "35185e117fcf4f1a"
        },
        {
          "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": 42,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.042063,
            "min_abs": 0.027988,
            "max_abs": 4.378399,
            "positive": 133,
            "negative": 41,
            "zero": 0
          },
          "source_rank_score": 111.168252,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "632654c49dc26f7e",
          "codeword174_sha256_16": "35185e117fcf4f1a"
        },
        {
          "variant": "lab_mask_xor_preview",
          "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": 84,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.413691,
            "min_abs": 0.000298,
            "max_abs": 3.784521,
            "positive": 119,
            "negative": 55,
            "zero": 0
          },
          "source_rank_score": 97.654764,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "02e61e7bdafc459a",
          "codeword174_sha256_16": "54ce9719c19c39cc"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+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": 133,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.682332,
            "min_abs": 0.011206,
            "max_abs": 4.378399,
            "positive": 41,
            "negative": 133,
            "zero": 0
          },
          "source_rank_score": 106.729328,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "39a87ca136a11c0a",
          "codeword174_sha256_16": "f1661db6a28115ad"
        }
      ],
      "warnings": [
        "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 51 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 51 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": 14,
      "offsets": {
        "start_offset_s": 0.0,
        "base_freq_offset_hz": 3.5,
        "tone_spacing_offset_hz": -0.03
      },
      "anchor_applied": {
        "start_seconds": 4.8,
        "base_freq_hz": 1028.5,
        "tone_spacing_hz": 1.9079844961240309,
        "nsps": 6192
      },
      "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": 57600,
        "start_seconds": 4.8,
        "base_freq_hz": 1028.5,
        "tone_spacing_hz": 1.9079844961240309,
        "nsps": 6192,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step51_source_aligned_timing_sweep:14"
      },
      "best_row": {
        "variant": "lab_mask_xor_preview",
        "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": 84,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.811424,
          "min_abs": 0.004549,
          "max_abs": 4.160775,
          "positive": 28,
          "negative": 146,
          "zero": 0
        },
        "source_rank_score": 99.245696,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "6d4c90342d0cd9cf",
        "codeword174_sha256_16": "fcc1684905e18849"
      },
      "top_rows": [
        {
          "variant": "lab_mask_xor_preview",
          "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": 84,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.811424,
            "min_abs": 0.004549,
            "max_abs": 4.160775,
            "positive": 28,
            "negative": 146,
            "zero": 0
          },
          "source_rank_score": 99.245696,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6d4c90342d0cd9cf",
          "codeword174_sha256_16": "fcc1684905e18849"
        },
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "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": 46,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.577969,
            "min_abs": 0.032989,
            "max_abs": 4.160775,
            "positive": 132,
            "negative": 42,
            "zero": 0
          },
          "source_rank_score": 106.311876,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0d245b70feba1bf6",
          "codeword174_sha256_16": "f1b0e4aa08c03e19"
        },
        {
          "variant": "raw_msb_symbol_order",
          "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": 129,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.528267,
            "min_abs": 0.00871,
            "max_abs": 3.91927,
            "positive": 45,
            "negative": 129,
            "zero": 0
          },
          "source_rank_score": 124.113068,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a1a97b2eec802f24",
          "codeword174_sha256_16": "5836d586f9603ce6"
        },
        {
          "variant": "raw_msb_symbol_order",
          "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": 129,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.485923,
            "min_abs": 0.004549,
            "max_abs": 3.91927,
            "positive": 44,
            "negative": 130,
            "zero": 0
          },
          "source_rank_score": 123.943692,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a1a97b2eec802f24",
          "codeword174_sha256_16": "5836d586f9603ce6"
        },
        {
          "variant": "lsb_within_each_tone",
          "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": 129,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.853768,
            "min_abs": 0.00871,
            "max_abs": 4.160775,
            "positive": 29,
            "negative": 145,
            "zero": 0
          },
          "source_rank_score": 117.415072,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a1a97b2eec802f24",
          "codeword174_sha256_16": "5836d586f9603ce6"
        },
        {
          "variant": "lsb_within_each_tone",
          "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": 129,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.811424,
            "min_abs": 0.004549,
            "max_abs": 4.160775,
            "positive": 28,
            "negative": 146,
            "zero": 0
          },
          "source_rank_score": 117.245696,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a1a97b2eec802f24",
          "codeword174_sha256_16": "5836d586f9603ce6"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 129,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.528267,
            "min_abs": 0.00871,
            "max_abs": 3.91927,
            "positive": 45,
            "negative": 129,
            "zero": 0
          },
          "source_rank_score": 106.113068,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a1a97b2eec802f24",
          "codeword174_sha256_16": "5836d586f9603ce6"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "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": 129,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.528267,
            "min_abs": 0.00871,
            "max_abs": 3.91927,
            "positive": 45,
            "negative": 129,
            "zero": 0
          },
          "source_rank_score": 106.113068,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "a1a97b2eec802f24",
          "codeword174_sha256_16": "5836d586f9603ce6"
        }
      ],
      "warnings": [
        "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 51 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 51 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": 37,
      "offsets": {
        "start_offset_s": 0.06,
        "base_freq_offset_hz": 2.5,
        "tone_spacing_offset_hz": 0.0
      },
      "anchor_applied": {
        "start_seconds": 4.859999999999999,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.937984496124031,
        "nsps": 6192
      },
      "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": 58320,
        "start_seconds": 4.86,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.937984496124031,
        "nsps": 6192,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step51_source_aligned_timing_sweep:37"
      },
      "best_row": {
        "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
        "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.228872,
          "min_abs": 0.041868,
          "max_abs": 4.18324,
          "positive": 141,
          "negative": 33,
          "zero": 0
        },
        "source_rank_score": 108.915488,
        "syndrome_weight": 27,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "0259bb98617eb22e",
        "codeword174_sha256_16": "6c1338e037549e54"
      },
      "top_rows": [
        {
          "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
          "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.228872,
            "min_abs": 0.041868,
            "max_abs": 4.18324,
            "positive": 141,
            "negative": 33,
            "zero": 0
          },
          "source_rank_score": 108.915488,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0259bb98617eb22e",
          "codeword174_sha256_16": "6c1338e037549e54"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
          "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": 120,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.206909,
            "min_abs": 9.8e-05,
            "max_abs": 3.852127,
            "positive": 54,
            "negative": 120,
            "zero": 0
          },
          "source_rank_score": 104.827636,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "8f42609d6f1fc182",
          "codeword174_sha256_16": "45fb5a75f115763f"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver",
          "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": 120,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.189499,
            "min_abs": 0.000127,
            "max_abs": 3.852127,
            "positive": 50,
            "negative": 124,
            "zero": 0
          },
          "source_rank_score": 104.757996,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "8f42609d6f1fc182",
          "codeword174_sha256_16": "45fb5a75f115763f"
        },
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 45,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.624396,
            "min_abs": 0.028992,
            "max_abs": 4.045437,
            "positive": 129,
            "negative": 45,
            "zero": 0
          },
          "source_rank_score": 106.497584,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6f3b78f2a0789ec1",
          "codeword174_sha256_16": "10fa5f26d7f3c832"
        },
        {
          "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": 125,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.365276,
            "min_abs": 0.001421,
            "max_abs": 4.076297,
            "positive": 44,
            "negative": 130,
            "zero": 0
          },
          "source_rank_score": 105.461104,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "50ee3ebb2853f49e",
          "codeword174_sha256_16": "d12d6e7fd563854d"
        },
        {
          "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": 125,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.324012,
            "min_abs": 0.005023,
            "max_abs": 4.076297,
            "positive": 49,
            "negative": 125,
            "zero": 0
          },
          "source_rank_score": 105.296048,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "50ee3ebb2853f49e",
          "codeword174_sha256_16": "d12d6e7fd563854d"
        },
        {
          "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.718599,
            "min_abs": 0.017042,
            "max_abs": 4.076297,
            "positive": 47,
            "negative": 127,
            "zero": 0
          },
          "source_rank_score": 106.874396,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "765c4ebc3707fdb0",
          "codeword174_sha256_16": "1fe0c66a7e9cf192"
        },
        {
          "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": 48,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.674076,
            "min_abs": 0.017042,
            "max_abs": 4.18324,
            "positive": 127,
            "negative": 47,
            "zero": 0
          },
          "source_rank_score": 106.696304,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6057dbf97536ae1a",
          "codeword174_sha256_16": "0cbeded997791328"
        }
      ],
      "warnings": [
        "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 51 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 51 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.0,
        "base_freq_offset_hz": 2.0,
        "tone_spacing_offset_hz": 0.03
      },
      "anchor_applied": {
        "start_seconds": 4.8,
        "base_freq_hz": 1027.0,
        "tone_spacing_hz": 1.967984496124031,
        "nsps": 6192
      },
      "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": 57600,
        "start_seconds": 4.8,
        "base_freq_hz": 1027.0,
        "tone_spacing_hz": 1.967984496124031,
        "nsps": 6192,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step51_source_aligned_timing_sweep:6"
      },
      "best_row": {
        "variant": "mapped_lsb_within_each_tone+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": 41,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.742956,
          "min_abs": 0.016767,
          "max_abs": 4.307136,
          "positive": 132,
          "negative": 42,
          "zero": 0
        },
        "source_rank_score": 106.971824,
        "syndrome_weight": 27,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "04a04a473d9f4b8a",
        "codeword174_sha256_16": "bb9158f6426e5474"
      },
      "top_rows": [
        {
          "variant": "mapped_lsb_within_each_tone+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": 41,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.742956,
            "min_abs": 0.016767,
            "max_abs": 4.307136,
            "positive": 132,
            "negative": 42,
            "zero": 0
          },
          "source_rank_score": 106.971824,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "04a04a473d9f4b8a",
          "codeword174_sha256_16": "bb9158f6426e5474"
        },
        {
          "variant": "reverse_symbol_order",
          "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": 142,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.244529,
            "min_abs": 0.061415,
            "max_abs": 4.307136,
            "positive": 35,
            "negative": 139,
            "zero": 0
          },
          "source_rank_score": 112.978116,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4f116d0d2d97efad",
          "codeword174_sha256_16": "1ee0e2fbd4d51be6"
        },
        {
          "variant": "reverse_full_bitstream",
          "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": 142,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.244529,
            "min_abs": 0.061415,
            "max_abs": 4.307136,
            "positive": 35,
            "negative": 139,
            "zero": 0
          },
          "source_rank_score": 111.978116,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4f116d0d2d97efad",
          "codeword174_sha256_16": "1ee0e2fbd4d51be6"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 37,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.902489,
            "min_abs": 0.041499,
            "max_abs": 4.063879,
            "positive": 137,
            "negative": 37,
            "zero": 0
          },
          "source_rank_score": 107.609956,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "5e2bcbbdc8cb3e2a",
          "codeword174_sha256_16": "ac458b913c953919"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_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": 137,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.902489,
            "min_abs": 0.041499,
            "max_abs": 4.063879,
            "positive": 37,
            "negative": 137,
            "zero": 0
          },
          "source_rank_score": 107.609956,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "5d363667677b4ebf",
          "codeword174_sha256_16": "5f395d3ae3d410f8"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_msb_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": false,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 117,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.217101,
            "min_abs": 0.010473,
            "max_abs": 4.109301,
            "positive": 55,
            "negative": 119,
            "zero": 0
          },
          "source_rank_score": 104.868404,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "00e0e71440a516c6",
          "codeword174_sha256_16": "6f3fc74324df2743"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 119,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.165809,
            "min_abs": 0.003322,
            "max_abs": 4.109301,
            "positive": 58,
            "negative": 116,
            "zero": 0
          },
          "source_rank_score": 104.663236,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "aca78234d03d9e6e",
          "codeword174_sha256_16": "545b323981ac1f0b"
        },
        {
          "variant": "raw_msb_symbol_order",
          "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": 142,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.244529,
            "min_abs": 0.061415,
            "max_abs": 4.307136,
            "positive": 35,
            "negative": 139,
            "zero": 0
          },
          "source_rank_score": 126.978116,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "56db10214087a30c",
          "codeword174_sha256_16": "04161507fe78a98a"
        }
      ],
      "warnings": [
        "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 51 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 51 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": 26,
      "offsets": {
        "start_offset_s": 0.03,
        "base_freq_offset_hz": 3.0,
        "tone_spacing_offset_hz": -0.03
      },
      "anchor_applied": {
        "start_seconds": 4.83,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.9079844961240309,
        "nsps": 6192
      },
      "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": 57960,
        "start_seconds": 4.83,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.9079844961240309,
        "nsps": 6192,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step51_source_aligned_timing_sweep:26"
      },
      "best_row": {
        "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "mapping_meta": {
          "tone_mapping": "ft8_gray_primary",
          "gray_direction": "inverse_observed_to_plain",
          "reverse_bits_within_tone_before_gray": false,
          "interleaver": "ft8_bitrev",
          "direction": "interleave_codeword_to_rx_inverse",
          "order_len": 174
        },
        "bit_count": 174,
        "hard_weight_174": 37,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.730043,
          "min_abs": 0.021616,
          "max_abs": 4.058353,
          "positive": 138,
          "negative": 36,
          "zero": 0
        },
        "source_rank_score": 106.920172,
        "syndrome_weight": 27,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "b85913e71a6e72e1",
        "codeword174_sha256_16": "e86c99d44140da4f"
      },
      "top_rows": [
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 37,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.730043,
            "min_abs": 0.021616,
            "max_abs": 4.058353,
            "positive": 138,
            "negative": 36,
            "zero": 0
          },
          "source_rank_score": 106.920172,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b85913e71a6e72e1",
          "codeword174_sha256_16": "e86c99d44140da4f"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_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": 109,
          "llr_stats": {
            "count": 174,
            "avg_abs": 0.947826,
            "min_abs": 0.000717,
            "max_abs": 3.411851,
            "positive": 68,
            "negative": 106,
            "zero": 0
          },
          "source_rank_score": 103.791304,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "63d7de999dc28356",
          "codeword174_sha256_16": "2ad9b1a14cd85e5c"
        },
        {
          "variant": "lab_mask_xor_preview",
          "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": 89,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.857069,
            "min_abs": 0.01092,
            "max_abs": 4.006713,
            "positive": 36,
            "negative": 138,
            "zero": 0
          },
          "source_rank_score": 99.428276,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "f3209b00dbbed253",
          "codeword174_sha256_16": "135a8970b67957e7"
        },
        {
          "variant": "lab_mask_xor_preview",
          "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": 81,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.51869,
            "min_abs": 0.01092,
            "max_abs": 3.732172,
            "positive": 123,
            "negative": 51,
            "zero": 0
          },
          "source_rank_score": 98.07476,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4dc8b43767d57817",
          "codeword174_sha256_16": "78617f41a52a8853"
        },
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 130,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.736354,
            "min_abs": 0.024218,
            "max_abs": 4.151228,
            "positive": 45,
            "negative": 129,
            "zero": 0
          },
          "source_rank_score": 106.945416,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b514dccc3f8f2f30",
          "codeword174_sha256_16": "e7b301d31e50e275"
        },
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 130,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.686625,
            "min_abs": 0.011664,
            "max_abs": 4.151228,
            "positive": 46,
            "negative": 128,
            "zero": 0
          },
          "source_rank_score": 106.7465,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b514dccc3f8f2f30",
          "codeword174_sha256_16": "e7b301d31e50e275"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 126,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.567434,
            "min_abs": 0.000989,
            "max_abs": 3.732172,
            "positive": 51,
            "negative": 123,
            "zero": 0
          },
          "source_rank_score": 106.269736,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "810a0472f0698b8d",
          "codeword174_sha256_16": "4316a723d47fd8eb"
        },
        {
          "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": 129,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.34105,
            "min_abs": 0.01092,
            "max_abs": 4.006713,
            "positive": 42,
            "negative": 132,
            "zero": 0
          },
          "source_rank_score": 105.3642,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "9b97c830c0ad11f6",
          "codeword174_sha256_16": "06400af302ea8869"
        }
      ],
      "warnings": [
        "Step 51 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 51 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 51 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 51 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/step51_source_aligned_timing_boundary_sweep.json",
    "timing_best_candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step51_source_aligned_best_timing_fec_candidate.json",
    "checkpoint_json": "/decoders/js8_decoder/logs/20260527T110128Z_real_run_timing_boundary_sweep_output.json"
  },
  "decodes": [],
  "warnings": [
    "Step 51 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."
}