{
  "ok": true,
  "mode": "JS8",
  "tool": "webftr-js8-timing-boundary-candidate-sweep",
  "tool_version": "step42-direct-primary-bounded-repair",
  "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
  "profile_scan_json": "/decoders/js8_decoder/logs/20260527T055654Z_real_run_profile_scan_output.json",
  "anchor_json": "/decoders/js8_decoder/logs/20260527T055654Z_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": "step42_timing_boundary_syndrome_sweep_no_message_unpack",
  "anchor_selection": {
    "source": "profile_scan_json",
    "path": "/decoders/js8_decoder/logs/20260527T055654Z_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.859,
  "sweep_grid": {
    "start_offsets_s": [
      0.03,
      0.06,
      0.09
    ],
    "base_freq_offsets_hz": [
      2.5,
      2.75,
      3.0,
      3.25,
      3.5
    ],
    "tone_spacing_offsets_hz": [
      0.015,
      0.03,
      0.045
    ],
    "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": 23,
    "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.905,
      "nsps": 6400
    },
    "pipeline_ok": true,
    "fec_input_summary": {
      "soft_bit_count": 174,
      "missing_soft_bits": 0,
      "complete_ldpc_input_candidate": true,
      "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
    },
    "sync_candidate": {
      "start_sample": 58320,
      "start_seconds": 4.86,
      "base_freq_hz": 1028.0,
      "tone_spacing_hz": 1.905,
      "nsps": 6400,
      "candidate_score": null,
      "costas_hits": null,
      "avg_margin_db": null,
      "anchor_source": "step42_timing_boundary_sweep:23"
    },
    "best_row": {
      "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
      "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
      "mapping_meta": {
        "tone_mapping": "lsb_within_each_tone",
        "interleaver": "none",
        "polarity": "inverted"
      },
      "bit_count": 174,
      "hard_weight_174": 140,
      "llr_stats": {
        "count": 174,
        "avg_abs": 1.827784,
        "min_abs": 0.008053,
        "max_abs": 4.126624,
        "positive": 36,
        "negative": 138,
        "zero": 0
      },
      "source_rank_score": 107.311136,
      "syndrome_weight": 22,
      "valid_codeword_hard_decision": false,
      "message91_sha256_16": "67b59638aa8882d6",
      "codeword174_sha256_16": "0228efbd612c9092"
    },
    "top_rows": [
      {
        "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
        "mapping_meta": {
          "tone_mapping": "lsb_within_each_tone",
          "interleaver": "none",
          "polarity": "inverted"
        },
        "bit_count": 174,
        "hard_weight_174": 140,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.827784,
          "min_abs": 0.008053,
          "max_abs": 4.126624,
          "positive": 36,
          "negative": 138,
          "zero": 0
        },
        "source_rank_score": 107.311136,
        "syndrome_weight": 22,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "67b59638aa8882d6",
        "codeword174_sha256_16": "0228efbd612c9092"
      },
      {
        "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+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": 127,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.67241,
          "min_abs": 0.015278,
          "max_abs": 4.092886,
          "positive": 43,
          "negative": 131,
          "zero": 0
        },
        "source_rank_score": 106.68964,
        "syndrome_weight": 25,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "6a76c3f6f4855f72",
        "codeword174_sha256_16": "e94fe0f75c74d230"
      },
      {
        "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
        "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
        "mapping_meta": {
          "tone_mapping": "ft8_gray_primary",
          "gray_direction": "inverse_observed_to_plain",
          "reverse_bits_within_tone_before_gray": false,
          "interleaver": "ft8_bitrev",
          "direction": "deinterleave_rx_to_codeword",
          "order_len": 174
        },
        "bit_count": 174,
        "hard_weight_174": 35,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.591212,
          "min_abs": 0.003661,
          "max_abs": 4.126624,
          "positive": 139,
          "negative": 35,
          "zero": 0
        },
        "source_rank_score": 106.364848,
        "syndrome_weight": 25,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "4f673c96b1f1de5c",
        "codeword174_sha256_16": "90bdd003a67ea079"
      },
      {
        "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
        "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
        "mapping_meta": {
          "tone_mapping": "ft8_gray_primary",
          "gray_direction": "inverse_observed_to_plain",
          "reverse_bits_within_tone_before_gray": false,
          "interleaver": "ft8_bitrev",
          "direction": "deinterleave_rx_to_codeword",
          "order_len": 174
        },
        "bit_count": 174,
        "hard_weight_174": 36,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.64278,
          "min_abs": 0.002394,
          "max_abs": 4.126624,
          "positive": 148,
          "negative": 26,
          "zero": 0
        },
        "source_rank_score": 106.57112,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "4f673c96b1f1de5c",
        "codeword174_sha256_16": "eb17c3d482c6c1fa"
      },
      {
        "variant": "lab_mask_xor_preview",
        "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": 83,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.882468,
          "min_abs": 0.003299,
          "max_abs": 4.126624,
          "positive": 26,
          "negative": 148,
          "zero": 0
        },
        "source_rank_score": 99.529872,
        "syndrome_weight": 29,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "e3f175dd3a2c81b2",
        "codeword174_sha256_16": "d5da07ca10be5a38"
      },
      {
        "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
        "mapping_meta": {
          "tone_mapping": "lsb_within_each_tone",
          "interleaver": "ft8_bitrev",
          "direction": "deinterleave_rx_to_codeword",
          "order_len": 174,
          "polarity": "inverted"
        },
        "bit_count": 174,
        "hard_weight_174": 138,
        "llr_stats": {
          "count": 174,
          "avg_abs": 2.265758,
          "min_abs": 0.020953,
          "max_abs": 4.126624,
          "positive": 35,
          "negative": 139,
          "zero": 0
        },
        "source_rank_score": 109.063032,
        "syndrome_weight": 30,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "d5fd881ddc0d6fa3",
        "codeword174_sha256_16": "524f6b31360d4b54"
      },
      {
        "variant": "reverse_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": 121,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.882468,
          "min_abs": 0.003299,
          "max_abs": 4.126624,
          "positive": 26,
          "negative": 148,
          "zero": 0
        },
        "source_rank_score": 111.529872,
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "b5db807c301847ac",
        "codeword174_sha256_16": "eaf8f2e0f46bfa41"
      },
      {
        "variant": "reverse_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": 123,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.827784,
          "min_abs": 0.008053,
          "max_abs": 4.126624,
          "positive": 36,
          "negative": 138,
          "zero": 0
        },
        "source_rank_score": 111.311136,
        "syndrome_weight": 31,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "b5db807c301847ac",
        "codeword174_sha256_16": "3bc0238a33865be3"
      }
    ],
    "warnings": [
      "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
      "Step 42 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 42 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": 23,
      "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.905,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "sync_candidate": {
        "start_sample": 58320,
        "start_seconds": 4.86,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.905,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step42_timing_boundary_sweep:23"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
        "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
        "mapping_meta": {
          "tone_mapping": "lsb_within_each_tone",
          "interleaver": "none",
          "polarity": "inverted"
        },
        "bit_count": 174,
        "hard_weight_174": 140,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.827784,
          "min_abs": 0.008053,
          "max_abs": 4.126624,
          "positive": 36,
          "negative": 138,
          "zero": 0
        },
        "source_rank_score": 107.311136,
        "syndrome_weight": 22,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "67b59638aa8882d6",
        "codeword174_sha256_16": "0228efbd612c9092"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 140,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.827784,
            "min_abs": 0.008053,
            "max_abs": 4.126624,
            "positive": 36,
            "negative": 138,
            "zero": 0
          },
          "source_rank_score": 107.311136,
          "syndrome_weight": 22,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "67b59638aa8882d6",
          "codeword174_sha256_16": "0228efbd612c9092"
        },
        {
          "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+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": 127,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.67241,
            "min_abs": 0.015278,
            "max_abs": 4.092886,
            "positive": 43,
            "negative": 131,
            "zero": 0
          },
          "source_rank_score": 106.68964,
          "syndrome_weight": 25,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6a76c3f6f4855f72",
          "codeword174_sha256_16": "e94fe0f75c74d230"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 35,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.591212,
            "min_abs": 0.003661,
            "max_abs": 4.126624,
            "positive": 139,
            "negative": 35,
            "zero": 0
          },
          "source_rank_score": 106.364848,
          "syndrome_weight": 25,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4f673c96b1f1de5c",
          "codeword174_sha256_16": "90bdd003a67ea079"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 36,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.64278,
            "min_abs": 0.002394,
            "max_abs": 4.126624,
            "positive": 148,
            "negative": 26,
            "zero": 0
          },
          "source_rank_score": 106.57112,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4f673c96b1f1de5c",
          "codeword174_sha256_16": "eb17c3d482c6c1fa"
        },
        {
          "variant": "lab_mask_xor_preview",
          "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": 83,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.882468,
            "min_abs": 0.003299,
            "max_abs": 4.126624,
            "positive": 26,
            "negative": 148,
            "zero": 0
          },
          "source_rank_score": 99.529872,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e3f175dd3a2c81b2",
          "codeword174_sha256_16": "d5da07ca10be5a38"
        },
        {
          "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 138,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.265758,
            "min_abs": 0.020953,
            "max_abs": 4.126624,
            "positive": 35,
            "negative": 139,
            "zero": 0
          },
          "source_rank_score": 109.063032,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "d5fd881ddc0d6fa3",
          "codeword174_sha256_16": "524f6b31360d4b54"
        },
        {
          "variant": "reverse_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": 121,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.882468,
            "min_abs": 0.003299,
            "max_abs": 4.126624,
            "positive": 26,
            "negative": 148,
            "zero": 0
          },
          "source_rank_score": 111.529872,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b5db807c301847ac",
          "codeword174_sha256_16": "eaf8f2e0f46bfa41"
        },
        {
          "variant": "reverse_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": 123,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.827784,
            "min_abs": 0.008053,
            "max_abs": 4.126624,
            "positive": 36,
            "negative": 138,
            "zero": 0
          },
          "source_rank_score": 111.311136,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b5db807c301847ac",
          "codeword174_sha256_16": "3bc0238a33865be3"
        }
      ],
      "warnings": [
        "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 42 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 42 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": 34,
      "offsets": {
        "start_offset_s": 0.09,
        "base_freq_offset_hz": 2.75,
        "tone_spacing_offset_hz": 0.015
      },
      "anchor_applied": {
        "start_seconds": 4.89,
        "base_freq_hz": 1027.75,
        "tone_spacing_hz": 1.89,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "sync_candidate": {
        "start_sample": 58680,
        "start_seconds": 4.89,
        "base_freq_hz": 1027.75,
        "tone_spacing_hz": 1.89,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step42_timing_boundary_sweep:34"
      },
      "best_row": {
        "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": 122,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.349276,
          "min_abs": 0.000824,
          "max_abs": 3.832662,
          "positive": 48,
          "negative": 126,
          "zero": 0
        },
        "source_rank_score": 105.397104,
        "syndrome_weight": 22,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "f0b9fd8275af36c7",
        "codeword174_sha256_16": "a2df0840cd4835fb"
      },
      "top_rows": [
        {
          "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": 122,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.349276,
            "min_abs": 0.000824,
            "max_abs": 3.832662,
            "positive": 48,
            "negative": 126,
            "zero": 0
          },
          "source_rank_score": 105.397104,
          "syndrome_weight": 22,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "f0b9fd8275af36c7",
          "codeword174_sha256_16": "a2df0840cd4835fb"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 31,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.062752,
            "min_abs": 0.015792,
            "max_abs": 4.062193,
            "positive": 144,
            "negative": 30,
            "zero": 0
          },
          "source_rank_score": 108.251008,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "9ff5d9aede7d6cb9",
          "codeword174_sha256_16": "c5d7db01a6e72868"
        },
        {
          "variant": "mapped_raw_msb+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": 148,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.421507,
            "min_abs": 0.016094,
            "max_abs": 4.062193,
            "positive": 26,
            "negative": 148,
            "zero": 0
          },
          "source_rank_score": 109.686028,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "31e68b38619644e3",
          "codeword174_sha256_16": "56f6e3eee1194db0"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 33,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.004834,
            "min_abs": 0.011334,
            "max_abs": 4.062193,
            "positive": 141,
            "negative": 33,
            "zero": 0
          },
          "source_rank_score": 108.019336,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "9ff5d9aede7d6cb9",
          "codeword174_sha256_16": "f6c9985e3b4f0c3a"
        },
        {
          "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_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": 122,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.349276,
            "min_abs": 0.000824,
            "max_abs": 3.832662,
            "positive": 48,
            "negative": 126,
            "zero": 0
          },
          "source_rank_score": 105.397104,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "473d813dca6fa058",
          "codeword174_sha256_16": "280938c2b2bceff7"
        },
        {
          "variant": "raw_msb_symbol_order",
          "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.004834,
            "min_abs": 0.011334,
            "max_abs": 4.062193,
            "positive": 33,
            "negative": 141,
            "zero": 0
          },
          "source_rank_score": 126.019336,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "39fdca8a564f75d1",
          "codeword174_sha256_16": "c860a66dc39291cd"
        },
        {
          "variant": "lsb_within_each_tone",
          "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.801076,
            "min_abs": 0.011334,
            "max_abs": 3.832662,
            "positive": 41,
            "negative": 133,
            "zero": 0
          },
          "source_rank_score": 117.204304,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "39fdca8a564f75d1",
          "codeword174_sha256_16": "c860a66dc39291cd"
        },
        {
          "variant": "reverse_symbol_order",
          "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 39,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.062752,
            "min_abs": 0.015792,
            "max_abs": 4.062193,
            "positive": 144,
            "negative": 30,
            "zero": 0
          },
          "source_rank_score": 112.251008,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "8fb2d18adf6d12a0",
          "codeword174_sha256_16": "e257f609e418cd23"
        }
      ],
      "warnings": [
        "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 42 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 42 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": 17,
      "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.905,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "sync_candidate": {
        "start_sample": 58320,
        "start_seconds": 4.86,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.905,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step42_timing_boundary_sweep:17"
      },
      "best_row": {
        "variant": "reverse_symbol_order",
        "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": 130,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.889166,
          "min_abs": 0.023337,
          "max_abs": 4.389904,
          "positive": 34,
          "negative": 140,
          "zero": 0
        },
        "source_rank_score": 111.556664,
        "syndrome_weight": 24,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "339b76da8237e87f",
        "codeword174_sha256_16": "89e62c1df19546da"
      },
      "top_rows": [
        {
          "variant": "reverse_symbol_order",
          "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": 130,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.889166,
            "min_abs": 0.023337,
            "max_abs": 4.389904,
            "positive": 34,
            "negative": 140,
            "zero": 0
          },
          "source_rank_score": 111.556664,
          "syndrome_weight": 24,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "339b76da8237e87f",
          "codeword174_sha256_16": "89e62c1df19546da"
        },
        {
          "variant": "reverse_full_bitstream",
          "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.699718,
            "min_abs": 0.023337,
            "max_abs": 3.983109,
            "positive": 45,
            "negative": 129,
            "zero": 0
          },
          "source_rank_score": 109.798872,
          "syndrome_weight": 24,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "339b76da8237e87f",
          "codeword174_sha256_16": "89e62c1df19546da"
        },
        {
          "variant": "reverse_symbol_order",
          "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": 128,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.958645,
            "min_abs": 0.001909,
            "max_abs": 4.389904,
            "positive": 28,
            "negative": 146,
            "zero": 0
          },
          "source_rank_score": 111.83458,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "339b76da8237e87f",
          "codeword174_sha256_16": "7f5e77fbd6502d39"
        },
        {
          "variant": "reverse_full_bitstream",
          "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": 128,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.769196,
            "min_abs": 0.001909,
            "max_abs": 3.983109,
            "positive": 39,
            "negative": 135,
            "zero": 0
          },
          "source_rank_score": 110.076784,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "339b76da8237e87f",
          "codeword174_sha256_16": "7f5e77fbd6502d39"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 139,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.958645,
            "min_abs": 0.001909,
            "max_abs": 4.389904,
            "positive": 28,
            "negative": 146,
            "zero": 0
          },
          "source_rank_score": 107.83458,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "c6a1e6c5b701ae09",
          "codeword174_sha256_16": "a5675f82762f2950"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 35,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.958645,
            "min_abs": 0.001909,
            "max_abs": 4.389904,
            "positive": 146,
            "negative": 28,
            "zero": 0
          },
          "source_rank_score": 107.83458,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "967cb52d8f49fa2f",
          "codeword174_sha256_16": "4e74d4ad99e81b39"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_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": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.889166,
            "min_abs": 0.023337,
            "max_abs": 4.389904,
            "positive": 34,
            "negative": 140,
            "zero": 0
          },
          "source_rank_score": 107.556664,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "75d9cca113318b71",
          "codeword174_sha256_16": "5b3a16c7d8de82d0"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.889166,
            "min_abs": 0.023337,
            "max_abs": 4.389904,
            "positive": 34,
            "negative": 140,
            "zero": 0
          },
          "source_rank_score": 107.556664,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "c6a1e6c5b701ae09",
          "codeword174_sha256_16": "92bf3b362ca2fc1d"
        }
      ],
      "warnings": [
        "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 42 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 42 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": 31,
      "offsets": {
        "start_offset_s": 0.09,
        "base_freq_offset_hz": 2.5,
        "tone_spacing_offset_hz": 0.015
      },
      "anchor_applied": {
        "start_seconds": 4.89,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.89,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "sync_candidate": {
        "start_sample": 58680,
        "start_seconds": 4.89,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.89,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step42_timing_boundary_sweep:31"
      },
      "best_row": {
        "variant": "mapped_raw_msb+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": 26,
        "llr_stats": {
          "count": 174,
          "avg_abs": 2.305805,
          "min_abs": 0.009668,
          "max_abs": 4.051845,
          "positive": 148,
          "negative": 26,
          "zero": 0
        },
        "source_rank_score": 109.22322,
        "syndrome_weight": 24,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "e63e2dff4d094385",
        "codeword174_sha256_16": "111c5c6e6c16fbd1"
      },
      "top_rows": [
        {
          "variant": "mapped_raw_msb+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": 26,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.305805,
            "min_abs": 0.009668,
            "max_abs": 4.051845,
            "positive": 148,
            "negative": 26,
            "zero": 0
          },
          "source_rank_score": 109.22322,
          "syndrome_weight": 24,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e63e2dff4d094385",
          "codeword174_sha256_16": "111c5c6e6c16fbd1"
        },
        {
          "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": 125,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.239198,
            "min_abs": 0.000225,
            "max_abs": 3.772346,
            "positive": 47,
            "negative": 127,
            "zero": 0
          },
          "source_rank_score": 104.956792,
          "syndrome_weight": 25,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "cf4abb6a65fe7e7c",
          "codeword174_sha256_16": "b5adfbc8c1e943cd"
        },
        {
          "variant": "raw_msb_symbol_order",
          "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": 133,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.713292,
            "min_abs": 0.008399,
            "max_abs": 3.772346,
            "positive": 43,
            "negative": 131,
            "zero": 0
          },
          "source_rank_score": 124.853168,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "78045427f8b643b0",
          "codeword174_sha256_16": "937e096a3d463604"
        },
        {
          "variant": "lsb_within_each_tone",
          "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": 133,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.850344,
            "min_abs": 0.008399,
            "max_abs": 4.04042,
            "positive": 31,
            "negative": 143,
            "zero": 0
          },
          "source_rank_score": 117.401376,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "78045427f8b643b0",
          "codeword174_sha256_16": "937e096a3d463604"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 135,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.796418,
            "min_abs": 0.031925,
            "max_abs": 3.772346,
            "positive": 37,
            "negative": 137,
            "zero": 0
          },
          "source_rank_score": 107.185672,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "c0dca813515c5608",
          "codeword174_sha256_16": "dae498783f10cdea"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "raw_msb+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 133,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.713292,
            "min_abs": 0.008399,
            "max_abs": 3.772346,
            "positive": 43,
            "negative": 131,
            "zero": 0
          },
          "source_rank_score": 106.853168,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "78045427f8b643b0",
          "codeword174_sha256_16": "937e096a3d463604"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
          "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.713292,
            "min_abs": 0.008399,
            "max_abs": 3.772346,
            "positive": 43,
            "negative": 131,
            "zero": 0
          },
          "source_rank_score": 106.853168,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "78045427f8b643b0",
          "codeword174_sha256_16": "937e096a3d463604"
        },
        {
          "variant": "mapped_lsb_within_each_tone+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": 133,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.713292,
            "min_abs": 0.008399,
            "max_abs": 3.772346,
            "positive": 43,
            "negative": 131,
            "zero": 0
          },
          "source_rank_score": 106.853168,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "78045427f8b643b0",
          "codeword174_sha256_16": "937e096a3d463604"
        }
      ],
      "warnings": [
        "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 42 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 42 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.09,
        "base_freq_offset_hz": 3.0,
        "tone_spacing_offset_hz": 0.015
      },
      "anchor_applied": {
        "start_seconds": 4.89,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.89,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "sync_candidate": {
        "start_sample": 58680,
        "start_seconds": 4.89,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.89,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step42_timing_boundary_sweep:37"
      },
      "best_row": {
        "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": 84,
        "llr_stats": {
          "count": 174,
          "avg_abs": 2.306334,
          "min_abs": 0.004878,
          "max_abs": 4.045851,
          "positive": 143,
          "negative": 31,
          "zero": 0
        },
        "source_rank_score": 101.225336,
        "syndrome_weight": 24,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "e9bb19c064bcec63",
        "codeword174_sha256_16": "fd5332baa35f631d"
      },
      "top_rows": [
        {
          "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": 84,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.306334,
            "min_abs": 0.004878,
            "max_abs": 4.045851,
            "positive": 143,
            "negative": 31,
            "zero": 0
          },
          "source_rank_score": 101.225336,
          "syndrome_weight": 24,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e9bb19c064bcec63",
          "codeword174_sha256_16": "fd5332baa35f631d"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 42,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.32816,
            "min_abs": 0.00017,
            "max_abs": 4.045851,
            "positive": 131,
            "negative": 43,
            "zero": 0
          },
          "source_rank_score": 105.31264,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "b6d6785c8ae79391",
          "codeword174_sha256_16": "21c35b5525d28e22"
        },
        {
          "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": 36,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.920126,
            "min_abs": 0.00231,
            "max_abs": 4.045851,
            "positive": 137,
            "negative": 37,
            "zero": 0
          },
          "source_rank_score": 107.680504,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "8f597f3674152345",
          "codeword174_sha256_16": "67d95ed18df97bd6"
        },
        {
          "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 42,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.659556,
            "min_abs": 0.003745,
            "max_abs": 4.01432,
            "positive": 127,
            "negative": 47,
            "zero": 0
          },
          "source_rank_score": 106.638224,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "928c192124744709",
          "codeword174_sha256_16": "da3d3dc3f1f60e86"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 53,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.244368,
            "min_abs": 0.00017,
            "max_abs": 4.01432,
            "positive": 122,
            "negative": 52,
            "zero": 0
          },
          "source_rank_score": 104.977472,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "12b95fa147075493",
          "codeword174_sha256_16": "e1bf76aa5d353a0b"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_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": 115,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.194398,
            "min_abs": 0.000191,
            "max_abs": 3.780018,
            "positive": 54,
            "negative": 120,
            "zero": 0
          },
          "source_rank_score": 104.777592,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "6dadc28d307ba7a7",
          "codeword174_sha256_16": "c2f7a65c3a3074c4"
        },
        {
          "variant": "reverse_symbol_order",
          "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": 132,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.920126,
            "min_abs": 0.00231,
            "max_abs": 4.045851,
            "positive": 37,
            "negative": 137,
            "zero": 0
          },
          "source_rank_score": 111.680504,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "574cd6fc6bce0dd7",
          "codeword174_sha256_16": "ad93c86d7bf38473"
        },
        {
          "variant": "reverse_symbol_order",
          "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": 130,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.874215,
            "min_abs": 0.000221,
            "max_abs": 4.045851,
            "positive": 37,
            "negative": 137,
            "zero": 0
          },
          "source_rank_score": 111.49686,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "574cd6fc6bce0dd7",
          "codeword174_sha256_16": "e02bcc851fff16de"
        }
      ],
      "warnings": [
        "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 42 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 42 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.09,
        "base_freq_offset_hz": 3.0,
        "tone_spacing_offset_hz": 0.045
      },
      "anchor_applied": {
        "start_seconds": 4.89,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.92,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "sync_candidate": {
        "start_sample": 58680,
        "start_seconds": 4.89,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.92,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step42_timing_boundary_sweep:39"
      },
      "best_row": {
        "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.260058,
          "min_abs": 0.004711,
          "max_abs": 3.879143,
          "positive": 56,
          "negative": 118,
          "zero": 0
        },
        "source_rank_score": 105.040232,
        "syndrome_weight": 25,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "52864d19425ece47",
        "codeword174_sha256_16": "b7770fab709aa574"
      },
      "top_rows": [
        {
          "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.260058,
            "min_abs": 0.004711,
            "max_abs": 3.879143,
            "positive": 56,
            "negative": 118,
            "zero": 0
          },
          "source_rank_score": 105.040232,
          "syndrome_weight": 25,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "52864d19425ece47",
          "codeword174_sha256_16": "b7770fab709aa574"
        },
        {
          "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": 87,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.363992,
            "min_abs": 0.010306,
            "max_abs": 4.139371,
            "positive": 31,
            "negative": 143,
            "zero": 0
          },
          "source_rank_score": 101.455968,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "8662a06ff0d6dc1d",
          "codeword174_sha256_16": "c824d47b54a64594"
        },
        {
          "variant": "raw_msb_symbol_order",
          "transform": "lsb_within_each_tone+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 32,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.363992,
            "min_abs": 0.010306,
            "max_abs": 4.139371,
            "positive": 143,
            "negative": 31,
            "zero": 0
          },
          "source_rank_score": 127.455968,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4c4a3dd52502f75a",
          "codeword174_sha256_16": "fc709bd42bf70453"
        },
        {
          "variant": "lsb_within_each_tone",
          "transform": "raw_msb+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 32,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.363992,
            "min_abs": 0.010306,
            "max_abs": 4.139371,
            "positive": 143,
            "negative": 31,
            "zero": 0
          },
          "source_rank_score": 119.455968,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4c4a3dd52502f75a",
          "codeword174_sha256_16": "fc709bd42bf70453"
        },
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 32,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.363992,
            "min_abs": 0.010306,
            "max_abs": 4.139371,
            "positive": 143,
            "negative": 31,
            "zero": 0
          },
          "source_rank_score": 109.455968,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4c4a3dd52502f75a",
          "codeword174_sha256_16": "fc709bd42bf70453"
        },
        {
          "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "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": 32,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.363992,
            "min_abs": 0.010306,
            "max_abs": 4.139371,
            "positive": 143,
            "negative": 31,
            "zero": 0
          },
          "source_rank_score": 109.455968,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4c4a3dd52502f75a",
          "codeword174_sha256_16": "fc709bd42bf70453"
        },
        {
          "variant": "mapped_lsb_within_each_tone+no_interleaver",
          "transform": "raw_msb+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 32,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.363992,
            "min_abs": 0.010306,
            "max_abs": 4.139371,
            "positive": 143,
            "negative": 31,
            "zero": 0
          },
          "source_rank_score": 109.455968,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4c4a3dd52502f75a",
          "codeword174_sha256_16": "fc709bd42bf70453"
        },
        {
          "variant": "mapped_raw_msb+no_interleaver",
          "transform": "lsb_within_each_tone+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 32,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.363992,
            "min_abs": 0.010306,
            "max_abs": 4.139371,
            "positive": 143,
            "negative": 31,
            "zero": 0
          },
          "source_rank_score": 109.455968,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4c4a3dd52502f75a",
          "codeword174_sha256_16": "fc709bd42bf70453"
        }
      ],
      "warnings": [
        "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 42 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 42 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 13,
      "offsets": {
        "start_offset_s": 0.03,
        "base_freq_offset_hz": 3.5,
        "tone_spacing_offset_hz": 0.015
      },
      "anchor_applied": {
        "start_seconds": 4.83,
        "base_freq_hz": 1028.5,
        "tone_spacing_hz": 1.89,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "sync_candidate": {
        "start_sample": 57960,
        "start_seconds": 4.83,
        "base_freq_hz": 1028.5,
        "tone_spacing_hz": 1.89,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step42_timing_boundary_sweep:13"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
        "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
        "mapping_meta": {
          "tone_mapping": "ft8_gray_alt_high",
          "gray_direction": "inverse_observed_to_plain",
          "reverse_bits_within_tone_before_gray": true,
          "interleaver": "ft8_bitrev",
          "direction": "interleave_codeword_to_rx_inverse",
          "order_len": 174,
          "polarity": "inverted"
        },
        "bit_count": 174,
        "hard_weight_174": 127,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.189787,
          "min_abs": 0.003369,
          "max_abs": 3.239839,
          "positive": 49,
          "negative": 125,
          "zero": 0
        },
        "source_rank_score": 104.759148,
        "syndrome_weight": 25,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "18e408df8b7088eb",
        "codeword174_sha256_16": "637b60031dda7c15"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 127,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.189787,
            "min_abs": 0.003369,
            "max_abs": 3.239839,
            "positive": 49,
            "negative": 125,
            "zero": 0
          },
          "source_rank_score": 104.759148,
          "syndrome_weight": 25,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "18e408df8b7088eb",
          "codeword174_sha256_16": "637b60031dda7c15"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+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": 127,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.214585,
            "min_abs": 0.005073,
            "max_abs": 3.249783,
            "positive": 47,
            "negative": 127,
            "zero": 0
          },
          "source_rank_score": 104.85834,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "18e408df8b7088eb",
          "codeword174_sha256_16": "159d4394aeba05bd"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "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": 74,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.108029,
            "min_abs": 0.017419,
            "max_abs": 3.914567,
            "positive": 100,
            "negative": 74,
            "zero": 0
          },
          "source_rank_score": 104.432116,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "2599f14030519483",
          "codeword174_sha256_16": "fba3ec8a63d90877"
        },
        {
          "variant": "lab_mask_xor_preview",
          "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": 96,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.929145,
            "min_abs": 0.066005,
            "max_abs": 4.16568,
            "positive": 140,
            "negative": 34,
            "zero": 0
          },
          "source_rank_score": 99.71658,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "ee9a0ed56c63818c",
          "codeword174_sha256_16": "5468a175ee86ed1e"
        },
        {
          "variant": "raw_msb_symbol_order",
          "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": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.929145,
            "min_abs": 0.066005,
            "max_abs": 4.16568,
            "positive": 34,
            "negative": 140,
            "zero": 0
          },
          "source_rank_score": 125.71658,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0ad8753e2726f4fb",
          "codeword174_sha256_16": "c5a59548f6922a4c"
        },
        {
          "variant": "lsb_within_each_tone",
          "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": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.679287,
            "min_abs": 0.066005,
            "max_abs": 3.914567,
            "positive": 49,
            "negative": 125,
            "zero": 0
          },
          "source_rank_score": 116.717148,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0ad8753e2726f4fb",
          "codeword174_sha256_16": "c5a59548f6922a4c"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "raw_msb+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.929145,
            "min_abs": 0.066005,
            "max_abs": 4.16568,
            "positive": 34,
            "negative": 140,
            "zero": 0
          },
          "source_rank_score": 107.71658,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0ad8753e2726f4fb",
          "codeword174_sha256_16": "c5a59548f6922a4c"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174,
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 141,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.929145,
            "min_abs": 0.066005,
            "max_abs": 4.16568,
            "positive": 34,
            "negative": 140,
            "zero": 0
          },
          "source_rank_score": 107.71658,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0ad8753e2726f4fb",
          "codeword174_sha256_16": "c5a59548f6922a4c"
        }
      ],
      "warnings": [
        "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 42 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 42 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": 4,
      "offsets": {
        "start_offset_s": 0.03,
        "base_freq_offset_hz": 2.75,
        "tone_spacing_offset_hz": 0.015
      },
      "anchor_applied": {
        "start_seconds": 4.83,
        "base_freq_hz": 1027.75,
        "tone_spacing_hz": 1.89,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "sync_candidate": {
        "start_sample": 57960,
        "start_seconds": 4.83,
        "base_freq_hz": 1027.75,
        "tone_spacing_hz": 1.89,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step42_timing_boundary_sweep:4"
      },
      "best_row": {
        "variant": "raw_msb_symbol_order",
        "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": 26,
        "llr_stats": {
          "count": 174,
          "avg_abs": 2.288443,
          "min_abs": 0.048119,
          "max_abs": 4.36961,
          "positive": 148,
          "negative": 26,
          "zero": 0
        },
        "source_rank_score": 127.153772,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "921b6c6ee3f73bf7",
        "codeword174_sha256_16": "6fc262e6166da69f"
      },
      "top_rows": [
        {
          "variant": "raw_msb_symbol_order",
          "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": 26,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.288443,
            "min_abs": 0.048119,
            "max_abs": 4.36961,
            "positive": 148,
            "negative": 26,
            "zero": 0
          },
          "source_rank_score": 127.153772,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "921b6c6ee3f73bf7",
          "codeword174_sha256_16": "6fc262e6166da69f"
        },
        {
          "variant": "lsb_within_each_tone",
          "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": 26,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.288443,
            "min_abs": 0.048119,
            "max_abs": 4.36961,
            "positive": 148,
            "negative": 26,
            "zero": 0
          },
          "source_rank_score": 119.153772,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "921b6c6ee3f73bf7",
          "codeword174_sha256_16": "6fc262e6166da69f"
        },
        {
          "variant": "mapped_lsb_within_each_tone+no_interleaver",
          "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 26,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.288443,
            "min_abs": 0.048119,
            "max_abs": 4.36961,
            "positive": 148,
            "negative": 26,
            "zero": 0
          },
          "source_rank_score": 109.153772,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "921b6c6ee3f73bf7",
          "codeword174_sha256_16": "6fc262e6166da69f"
        },
        {
          "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "raw_msb+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 26,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.288443,
            "min_abs": 0.048119,
            "max_abs": 4.36961,
            "positive": 148,
            "negative": 26,
            "zero": 0
          },
          "source_rank_score": 109.153772,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "921b6c6ee3f73bf7",
          "codeword174_sha256_16": "6fc262e6166da69f"
        },
        {
          "variant": "mapped_raw_msb+no_interleaver",
          "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": 26,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.288443,
            "min_abs": 0.048119,
            "max_abs": 4.36961,
            "positive": 148,
            "negative": 26,
            "zero": 0
          },
          "source_rank_score": 109.153772,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "921b6c6ee3f73bf7",
          "codeword174_sha256_16": "6fc262e6166da69f"
        },
        {
          "variant": "lab_mask_xor_preview",
          "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": 86,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.6075,
            "min_abs": 0.018792,
            "max_abs": 4.020367,
            "positive": 41,
            "negative": 133,
            "zero": 0
          },
          "source_rank_score": 98.43,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "4c0b7d9708741dab",
          "codeword174_sha256_16": "5dca1ad45c1f670d"
        },
        {
          "variant": "mapped_raw_msb+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": 137,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.736756,
            "min_abs": 0.012377,
            "max_abs": 4.156154,
            "positive": 37,
            "negative": 137,
            "zero": 0
          },
          "source_rank_score": 106.947024,
          "syndrome_weight": 29,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "f206ff2cb3a94e83",
          "codeword174_sha256_16": "d2cb98189648a53f"
        },
        {
          "variant": "reverse_symbol_order",
          "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": 26,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.288443,
            "min_abs": 0.048119,
            "max_abs": 4.36961,
            "positive": 148,
            "negative": 26,
            "zero": 0
          },
          "source_rank_score": 113.153772,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "67b98c824f4ee038",
          "codeword174_sha256_16": "5306bc6cd2d03406"
        }
      ],
      "warnings": [
        "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 42 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 42 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
        "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
      ]
    },
    {
      "combination_index": 7,
      "offsets": {
        "start_offset_s": 0.03,
        "base_freq_offset_hz": 3.0,
        "tone_spacing_offset_hz": 0.015
      },
      "anchor_applied": {
        "start_seconds": 4.83,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.89,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "sync_candidate": {
        "start_sample": 57960,
        "start_seconds": 4.83,
        "base_freq_hz": 1028.0,
        "tone_spacing_hz": 1.89,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step42_timing_boundary_sweep:7"
      },
      "best_row": {
        "variant": "mapped_raw_msb+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": 36,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.76413,
          "min_abs": 0.00248,
          "max_abs": 4.16203,
          "positive": 137,
          "negative": 37,
          "zero": 0
        },
        "source_rank_score": 107.05652,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "e9cc65e438e4a75e",
        "codeword174_sha256_16": "86d347e4cf309d9a"
      },
      "top_rows": [
        {
          "variant": "mapped_raw_msb+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": 36,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.76413,
            "min_abs": 0.00248,
            "max_abs": 4.16203,
            "positive": 137,
            "negative": 37,
            "zero": 0
          },
          "source_rank_score": 107.05652,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "e9cc65e438e4a75e",
          "codeword174_sha256_16": "86d347e4cf309d9a"
        },
        {
          "variant": "mapped_lsb_within_each_tone+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": 144,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.366842,
            "min_abs": 0.004374,
            "max_abs": 4.48302,
            "positive": 29,
            "negative": 145,
            "zero": 0
          },
          "source_rank_score": 109.467368,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "ba9613f6a417de79",
          "codeword174_sha256_16": "4c6e56ffc0a00a61"
        },
        {
          "variant": "mapped_raw_msb+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": 130,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.797029,
            "min_abs": 0.004156,
            "max_abs": 4.125536,
            "positive": 42,
            "negative": 132,
            "zero": 0
          },
          "source_rank_score": 107.188116,
          "syndrome_weight": 28,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "c33ef1555b97e502",
          "codeword174_sha256_16": "96395eb54b9b5868"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
          "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": 142,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.022316,
            "min_abs": 0.004374,
            "max_abs": 4.48302,
            "positive": 30,
            "negative": 144,
            "zero": 0
          },
          "source_rank_score": 108.089264,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "85eadda5ee933279",
          "codeword174_sha256_16": "dd3e3880c290fb9b"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "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": 144,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.97756,
            "min_abs": 0.001838,
            "max_abs": 4.48302,
            "positive": 31,
            "negative": 143,
            "zero": 0
          },
          "source_rank_score": 107.91024,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "d03b75984bd588cb",
          "codeword174_sha256_16": "016862cef9fa0d75"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_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": 129,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.31118,
            "min_abs": 5.7e-05,
            "max_abs": 4.125536,
            "positive": 44,
            "negative": 130,
            "zero": 0
          },
          "source_rank_score": 105.24472,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "815682423d76ab87",
          "codeword174_sha256_16": "c6400e08eead342e"
        },
        {
          "variant": "mapped_ft8_gray_primary_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": 121,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.242828,
            "min_abs": 0.010817,
            "max_abs": 4.125536,
            "positive": 47,
            "negative": 127,
            "zero": 0
          },
          "source_rank_score": 104.971312,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "7575b94421742271",
          "codeword174_sha256_16": "92b2847209b267f4"
        },
        {
          "variant": "reverse_symbol_order",
          "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": 30,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.366842,
            "min_abs": 0.004374,
            "max_abs": 4.48302,
            "positive": 145,
            "negative": 29,
            "zero": 0
          },
          "source_rank_score": 113.467368,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "43a8d3f963560ac1",
          "codeword174_sha256_16": "971991e76e98db92"
        }
      ],
      "warnings": [
        "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 42 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 42 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": 32,
      "offsets": {
        "start_offset_s": 0.09,
        "base_freq_offset_hz": 2.5,
        "tone_spacing_offset_hz": 0.03
      },
      "anchor_applied": {
        "start_seconds": 4.89,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.905,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "sync_candidate": {
        "start_sample": 58680,
        "start_seconds": 4.89,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.905,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step42_timing_boundary_sweep:32"
      },
      "best_row": {
        "variant": "mapped_raw_msb+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": 42,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.742539,
          "min_abs": 0.000578,
          "max_abs": 4.060392,
          "positive": 130,
          "negative": 44,
          "zero": 0
        },
        "source_rank_score": 106.970156,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "860ce09d9dc2df0d",
        "codeword174_sha256_16": "e5ab101e21fcf648"
      },
      "top_rows": [
        {
          "variant": "mapped_raw_msb+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": 42,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.742539,
            "min_abs": 0.000578,
            "max_abs": 4.060392,
            "positive": 130,
            "negative": 44,
            "zero": 0
          },
          "source_rank_score": 106.970156,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "860ce09d9dc2df0d",
          "codeword174_sha256_16": "e5ab101e21fcf648"
        },
        {
          "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_alt_high",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": true,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 42,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.699652,
            "min_abs": 0.004875,
            "max_abs": 4.060392,
            "positive": 130,
            "negative": 44,
            "zero": 0
          },
          "source_rank_score": 106.798608,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "860ce09d9dc2df0d",
          "codeword174_sha256_16": "e5ab101e21fcf648"
        },
        {
          "variant": "raw_msb_symbol_order",
          "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": 131,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.803172,
            "min_abs": 0.049536,
            "max_abs": 3.834545,
            "positive": 42,
            "negative": 132,
            "zero": 0
          },
          "source_rank_score": 125.212688,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "90d23a0ae7e11e20",
          "codeword174_sha256_16": "61f8634e446972ef"
        },
        {
          "variant": "lsb_within_each_tone",
          "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": 131,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.950249,
            "min_abs": 0.024011,
            "max_abs": 4.065687,
            "positive": 31,
            "negative": 143,
            "zero": 0
          },
          "source_rank_score": 117.800996,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "90d23a0ae7e11e20",
          "codeword174_sha256_16": "61f8634e446972ef"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "raw_msb+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 131,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.803172,
            "min_abs": 0.049536,
            "max_abs": 3.834545,
            "positive": 42,
            "negative": 132,
            "zero": 0
          },
          "source_rank_score": 107.212688,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "90d23a0ae7e11e20",
          "codeword174_sha256_16": "61f8634e446972ef"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver",
          "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": 131,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.803172,
            "min_abs": 0.049536,
            "max_abs": 3.834545,
            "positive": 42,
            "negative": 132,
            "zero": 0
          },
          "source_rank_score": 107.212688,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "90d23a0ae7e11e20",
          "codeword174_sha256_16": "61f8634e446972ef"
        },
        {
          "variant": "mapped_lsb_within_each_tone+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": 131,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.803172,
            "min_abs": 0.049536,
            "max_abs": 3.834545,
            "positive": 42,
            "negative": 132,
            "zero": 0
          },
          "source_rank_score": 107.212688,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "90d23a0ae7e11e20",
          "codeword174_sha256_16": "61f8634e446972ef"
        },
        {
          "variant": "mapped_raw_msb+no_interleaver",
          "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": 131,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.803172,
            "min_abs": 0.049536,
            "max_abs": 3.834545,
            "positive": 42,
            "negative": 132,
            "zero": 0
          },
          "source_rank_score": 107.212688,
          "syndrome_weight": 27,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "90d23a0ae7e11e20",
          "codeword174_sha256_16": "61f8634e446972ef"
        }
      ],
      "warnings": [
        "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 42 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 42 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": 20,
      "offsets": {
        "start_offset_s": 0.06,
        "base_freq_offset_hz": 2.75,
        "tone_spacing_offset_hz": 0.03
      },
      "anchor_applied": {
        "start_seconds": 4.859999999999999,
        "base_freq_hz": 1027.75,
        "tone_spacing_hz": 1.905,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "sync_candidate": {
        "start_sample": 58320,
        "start_seconds": 4.86,
        "base_freq_hz": 1027.75,
        "tone_spacing_hz": 1.905,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step42_timing_boundary_sweep:20"
      },
      "best_row": {
        "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
        "transform": "lsb_within_each_tone+no_interleaver",
        "mapping_meta": {
          "tone_mapping": "lsb_within_each_tone",
          "interleaver": "none"
        },
        "bit_count": 174,
        "hard_weight_174": 40,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.654305,
          "min_abs": 0.021019,
          "max_abs": 3.975782,
          "positive": 134,
          "negative": 40,
          "zero": 0
        },
        "source_rank_score": 106.61722,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "c4d4ee11f559aeb5",
        "codeword174_sha256_16": "11c10d0d45c477e4"
      },
      "top_rows": [
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
          "transform": "lsb_within_each_tone+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 40,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.654305,
            "min_abs": 0.021019,
            "max_abs": 3.975782,
            "positive": 134,
            "negative": 40,
            "zero": 0
          },
          "source_rank_score": 106.61722,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "c4d4ee11f559aeb5",
          "codeword174_sha256_16": "11c10d0d45c477e4"
        },
        {
          "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": 148,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.614129,
            "min_abs": 0.000212,
            "max_abs": 4.060512,
            "positive": 23,
            "negative": 151,
            "zero": 0
          },
          "source_rank_score": 106.456516,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "3bb3d85bf20ab067",
          "codeword174_sha256_16": "bbb9edf43d37b383"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
          "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": 148,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.606431,
            "min_abs": 0.002254,
            "max_abs": 4.060512,
            "positive": 23,
            "negative": 151,
            "zero": 0
          },
          "source_rank_score": 106.425724,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "645ce0057ab189e4",
          "codeword174_sha256_16": "67bb4f055ec3ccd9"
        },
        {
          "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",
          "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": 46,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.392733,
            "min_abs": 0.001535,
            "max_abs": 3.988301,
            "positive": 138,
            "negative": 36,
            "zero": 0
          },
          "source_rank_score": 105.570932,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "9da4ddf486c4cd82",
          "codeword174_sha256_16": "42026394f5f8bf4b"
        },
        {
          "variant": "mapped_ft8_gray_primary_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": 46,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.314552,
            "min_abs": 0.003518,
            "max_abs": 3.988301,
            "positive": 135,
            "negative": 39,
            "zero": 0
          },
          "source_rank_score": 105.258208,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "9da4ddf486c4cd82",
          "codeword174_sha256_16": "42026394f5f8bf4b"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
          "transform": "ft8_gray_primary_demap_msb_input+no_interleaver",
          "mapping_meta": {
            "tone_mapping": "ft8_gray_primary",
            "gray_direction": "inverse_observed_to_plain",
            "reverse_bits_within_tone_before_gray": false,
            "interleaver": "none"
          },
          "bit_count": 174,
          "hard_weight_174": 48,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.20974,
            "min_abs": 0.006552,
            "max_abs": 3.975782,
            "positive": 126,
            "negative": 48,
            "zero": 0
          },
          "source_rank_score": 104.83896,
          "syndrome_weight": 30,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "0f68e23dedbcebcf",
          "codeword174_sha256_16": "28d4156dd8362fdc"
        },
        {
          "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174
          },
          "bit_count": 174,
          "hard_weight_174": 29,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.914595,
            "min_abs": 0.011069,
            "max_abs": 4.060512,
            "positive": 150,
            "negative": 24,
            "zero": 0
          },
          "source_rank_score": 107.65838,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "3e6b223e41b812c4",
          "codeword174_sha256_16": "3a704799b5a17668"
        },
        {
          "variant": "lab_mask_xor_preview",
          "transform": "raw_msb+no_interleaver+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "raw_msb",
            "interleaver": "none",
            "polarity": "inverted"
          },
          "bit_count": 174,
          "hard_weight_174": 95,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.288777,
            "min_abs": 0.028218,
            "max_abs": 4.506179,
            "positive": 26,
            "negative": 148,
            "zero": 0
          },
          "source_rank_score": 101.155108,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "478f4d5f2ea10adb",
          "codeword174_sha256_16": "b0e0b25e5850deb1"
        }
      ],
      "warnings": [
        "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 42 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 42 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.03,
        "base_freq_offset_hz": 2.5,
        "tone_spacing_offset_hz": 0.03
      },
      "anchor_applied": {
        "start_seconds": 4.83,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.905,
        "nsps": 6400
      },
      "pipeline_ok": true,
      "fec_input_summary": {
        "soft_bit_count": 174,
        "missing_soft_bits": 0,
        "complete_ldpc_input_candidate": true,
        "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
      },
      "sync_candidate": {
        "start_sample": 57960,
        "start_seconds": 4.83,
        "base_freq_hz": 1027.5,
        "tone_spacing_hz": 1.905,
        "nsps": 6400,
        "candidate_score": null,
        "costas_hits": null,
        "avg_margin_db": null,
        "anchor_source": "step42_timing_boundary_sweep:2"
      },
      "best_row": {
        "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",
        "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": 38,
        "llr_stats": {
          "count": 174,
          "avg_abs": 1.435602,
          "min_abs": 0.001426,
          "max_abs": 4.091276,
          "positive": 141,
          "negative": 33,
          "zero": 0
        },
        "source_rank_score": 105.742408,
        "syndrome_weight": 26,
        "valid_codeword_hard_decision": false,
        "message91_sha256_16": "5f214ae2f0fb2f36",
        "codeword174_sha256_16": "64ae541c28b71f69"
      },
      "top_rows": [
        {
          "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",
          "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": 38,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.435602,
            "min_abs": 0.001426,
            "max_abs": 4.091276,
            "positive": 141,
            "negative": 33,
            "zero": 0
          },
          "source_rank_score": 105.742408,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "5f214ae2f0fb2f36",
          "codeword174_sha256_16": "64ae541c28b71f69"
        },
        {
          "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",
          "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": 38,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.384195,
            "min_abs": 0.000995,
            "max_abs": 4.091276,
            "positive": 139,
            "negative": 35,
            "zero": 0
          },
          "source_rank_score": 105.53678,
          "syndrome_weight": 26,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "5f214ae2f0fb2f36",
          "codeword174_sha256_16": "64ae541c28b71f69"
        },
        {
          "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_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": 123,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.194786,
            "min_abs": 0.000574,
            "max_abs": 3.71937,
            "positive": 55,
            "negative": 119,
            "zero": 0
          },
          "source_rank_score": 104.779144,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "df9a107315483691",
          "codeword174_sha256_16": "9987222aa18746e4"
        },
        {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+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": 123,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.137638,
            "min_abs": 0.000202,
            "max_abs": 3.575371,
            "positive": 58,
            "negative": 116,
            "zero": 0
          },
          "source_rank_score": 104.550552,
          "syndrome_weight": 31,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "df9a107315483691",
          "codeword174_sha256_16": "9987222aa18746e4"
        },
        {
          "variant": "raw_msb_symbol_order",
          "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": 26,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.971302,
            "min_abs": 0.003869,
            "max_abs": 4.310037,
            "positive": 150,
            "negative": 24,
            "zero": 0
          },
          "source_rank_score": 125.885208,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "7eb8521bc797d417",
          "codeword174_sha256_16": "57e8972b644f146e"
        },
        {
          "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": 26,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.909894,
            "min_abs": 0.003655,
            "max_abs": 4.310037,
            "positive": 146,
            "negative": 28,
            "zero": 0
          },
          "source_rank_score": 125.639576,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "7eb8521bc797d417",
          "codeword174_sha256_16": "57e8972b644f146e"
        },
        {
          "variant": "lsb_within_each_tone",
          "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": 26,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.768455,
            "min_abs": 0.003869,
            "max_abs": 3.884903,
            "positive": 136,
            "negative": 38,
            "zero": 0
          },
          "source_rank_score": 117.07382,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "7eb8521bc797d417",
          "codeword174_sha256_16": "57e8972b644f146e"
        },
        {
          "variant": "lsb_within_each_tone",
          "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": 26,
          "llr_stats": {
            "count": 174,
            "avg_abs": 1.707047,
            "min_abs": 0.003655,
            "max_abs": 3.884903,
            "positive": 132,
            "negative": 42,
            "zero": 0
          },
          "source_rank_score": 116.828188,
          "syndrome_weight": 32,
          "valid_codeword_hard_decision": false,
          "message91_sha256_16": "7eb8521bc797d417",
          "codeword174_sha256_16": "57e8972b644f146e"
        }
      ],
      "warnings": [
        "Step 42 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 42 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
        "Step 42 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 42 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/step42_timing_boundary_sweep.json",
    "timing_best_candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step42_best_timing_fec_candidate.json",
    "checkpoint_json": "/decoders/js8_decoder/logs/20260527T055654Z_real_run_timing_boundary_sweep_output.json"
  },
  "decodes": [],
  "warnings": [
    "Step 42 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."
}