{
  "schema": "webftr-js8-decoder-lab-browser-report-v1",
  "version": "step38-fine-timing-ridge-sweep",
  "created_utc": "2026-05-27T04:28:36Z",
  "project": "WebFTR JS8 Decoder Lab",
  "root": "/decoders/js8_decoder",
  "expected_root": "/decoders/js8_decoder",
  "logs_dir": "/decoders/js8_decoder/logs",
  "runtime_dir": "/decoders/js8_decoder/runtime",
  "daemon_status": {
    "schema": "webftr-js8lab-daemon-status-v2",
    "version": "step38-fine-timing-ridge-sweep",
    "created_utc": "2026-05-26T07:46:12Z",
    "updated_utc": "2026-05-27T04:28:03Z",
    "state": "diagnostics_ok",
    "detail": "Diagnose fertig",
    "exit_code": 0,
    "root": "/decoders/js8_decoder",
    "expected_root": "/decoders/js8_decoder",
    "wav": "/decoders/js8_test.wav",
    "mode": "server-deep-run",
    "start_guard": {
      "start_stops_existing_instance": true,
      "stale_pid_cleanup": true,
      "root_orphan_cleanup": true,
      "port_guard": true,
      "foreign_port_owner_not_killed": true
    },
    "server": {
      "host": "0.0.0.0",
      "port": 8000,
      "pid": 595102,
      "running": true,
      "log": "/decoders/js8_decoder/logs/js8_browser_server.log"
    },
    "diagnostics": {
      "pid": 595118,
      "running": false,
      "log": "/decoders/js8_decoder/logs/js8_start_diagnostics_latest.log",
      "last_command": "./run_js8_decoder_lab.sh server-deep-run /decoders/js8_test.wav"
    },
    "links": {
      "home": "/",
      "api_report": "/api/report",
      "api_status": "/api/status",
      "logs": "/logs/",
      "latest_log": "/logs/latest.log",
      "start_diagnostics_log": "/logs/js8_start_diagnostics_latest.log",
      "server_log": "/logs/js8_browser_server.log"
    },
    "rx_only_guard": {
      "tx": false,
      "ptt": false,
      "tune": false,
      "send": false,
      "js8call_runtime_control": false
    },
    "history": [
      {
        "utc": "2026-05-27T03:35:13Z",
        "state": "server_starting",
        "detail": "Browser-Logserver startet auf 0.0.0.0:8000",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:35:14Z",
        "state": "server_running",
        "detail": "Browser-Logserver läuft auf 0.0.0.0:8000",
        "exit_code": 0
      },
      {
        "utc": "2026-05-27T03:35:14Z",
        "state": "diagnostics_running",
        "detail": "Diagnose läuft: server-deep-run /decoders/js8_test.wav",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:35:14Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 1/9: INPUT CHECK",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:35:15Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 2/9A: QUICK WINDOW PREFILTER",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:35:15Z",
        "state": "diagnostics_running",
        "detail": "Diagnosejob im Hintergrund gestartet",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:35:29Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 2/9B: BOUNDED DIRTY WINDOW SCAN",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:36:29Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 3/9: PROFILE SCAN",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:38:02Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 4/9: FRAME RECOVER",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:40:31Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 5/9: AUTO LDPC PROBE",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:42:16Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 6/9: CANDIDATE EXPORT",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:42:18Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 7/10: TIMING / BOUNDARY SWEEP",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:43:31Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 8/10: LDPC MATRIX PROBE",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:43:34Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 9/10: LDPC SOFT DECODE",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:44:19Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 10/10: JS8LAB LOG BUNDLE",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:44:21Z",
        "state": "diagnostics_ok",
        "detail": "Diagnose fertig",
        "exit_code": 0
      },
      {
        "utc": "2026-05-27T03:56:32Z",
        "state": "restarting",
        "detail": "Start-Guard: bestehende JS8Lab-Instanz wird geprüft und beendet",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:56:33Z",
        "state": "server_starting",
        "detail": "Browser-Logserver startet auf 0.0.0.0:8000",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:56:34Z",
        "state": "server_running",
        "detail": "Browser-Logserver läuft auf 0.0.0.0:8000",
        "exit_code": 0
      },
      {
        "utc": "2026-05-27T03:56:34Z",
        "state": "diagnostics_running",
        "detail": "Diagnose läuft: server-deep-run /decoders/js8_test.wav",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:56:34Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 1/9: INPUT CHECK",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:56:35Z",
        "state": "diagnostics_running",
        "detail": "Diagnosejob im Hintergrund gestartet",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:56:35Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 2/9A: QUICK WINDOW PREFILTER",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:56:48Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 2/9B: BOUNDED DIRTY WINDOW SCAN",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:57:49Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 3/9: PROFILE SCAN",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T03:59:13Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 4/9: FRAME RECOVER",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:01:44Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 5/9: AUTO LDPC PROBE",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:03:31Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 6/9: CANDIDATE EXPORT",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:03:33Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 7/10: TIMING / BOUNDARY SWEEP",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:05:19Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 8/10: LDPC MATRIX PROBE",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:05:22Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 9/10: LDPC SOFT DECODE",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:06:07Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 10/10: JS8LAB LOG BUNDLE",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:06:09Z",
        "state": "diagnostics_ok",
        "detail": "Diagnose fertig",
        "exit_code": 0
      },
      {
        "utc": "2026-05-27T04:18:21Z",
        "state": "restarting",
        "detail": "Start-Guard: bestehende JS8Lab-Instanz wird geprüft und beendet",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:18:21Z",
        "state": "server_starting",
        "detail": "Browser-Logserver startet auf 0.0.0.0:8000",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:18:23Z",
        "state": "server_running",
        "detail": "Browser-Logserver läuft auf 0.0.0.0:8000",
        "exit_code": 0
      },
      {
        "utc": "2026-05-27T04:18:23Z",
        "state": "diagnostics_running",
        "detail": "Diagnose läuft: server-deep-run /decoders/js8_test.wav",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:18:23Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 1/9: INPUT CHECK",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:18:24Z",
        "state": "diagnostics_running",
        "detail": "Diagnosejob im Hintergrund gestartet",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:18:24Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 2/9A: QUICK WINDOW PREFILTER",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:18:37Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 2/9B: BOUNDED DIRTY WINDOW SCAN",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:19:37Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 3/9: PROFILE SCAN",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:21:01Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 4/9: FRAME RECOVER",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:23:39Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 5/9: AUTO LDPC PROBE",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:25:24Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 6/9: CANDIDATE EXPORT",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:25:26Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 7/10: TIMING / BOUNDARY SWEEP",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:27:12Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 8/10: LDPC MATRIX PROBE",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:27:15Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 9/10: LDPC SOFT DECODE",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:28:01Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 10/10: JS8LAB LOG BUNDLE",
        "exit_code": null
      },
      {
        "utc": "2026-05-27T04:28:03Z",
        "state": "diagnostics_ok",
        "detail": "Diagnose fertig",
        "exit_code": 0
      }
    ],
    "status_file": "/decoders/js8_decoder/runtime/js8lab_status.json"
  },
  "wav_candidates": [
    {
      "path": "/decoders/js8_test.wav",
      "exists": true,
      "is_file": true,
      "is_dir": false,
      "size": 4608442,
      "mtime_utc": "2026-05-26T06:05:27Z"
    },
    {
      "path": "/home/webftr/decoders/js8_test.wav",
      "exists": false,
      "error": "[Errno 2] No such file or directory: '/home/webftr/decoders/js8_test.wav'"
    },
    {
      "path": "/decoders/js8_decoder/decoders/js8_test.wav",
      "exists": false,
      "error": "[Errno 2] No such file or directory: '/decoders/js8_decoder/decoders/js8_test.wav'"
    }
  ],
  "selected_wav_hint": {
    "path": "/decoders/js8_test.wav",
    "exists": true,
    "is_file": true,
    "is_dir": false,
    "size": 4608442,
    "mtime_utc": "2026-05-26T06:05:27Z"
  },
  "rx_only_guard": {
    "tx": false,
    "ptt": false,
    "tune": false,
    "send": false,
    "js8call_runtime_control": false,
    "webftr_productive_integration": false
  },
  "latest_manifest": {
    "name": "20260527T041823Z_server-deep-run_manifest.json",
    "url": "/logs/20260527T041823Z_server-deep-run_manifest.json",
    "stat": {
      "exists": true,
      "is_file": true,
      "is_dir": false,
      "size": 1042,
      "mtime_utc": "2026-05-27T04:28:03Z"
    },
    "json": {
      "schema": "webftr-js8-decoder-lab-log-manifest-v2",
      "project": "WebFTR JS8 Decoder Lab",
      "version": "step38-fine-timing-ridge-sweep",
      "status": "ok",
      "exit_code": 0,
      "command": "server-deep-run",
      "timestamp_utc": "2026-05-27T04:28:03Z",
      "root": "/decoders/js8_decoder",
      "log_file": "/decoders/js8_decoder/logs/20260527T041823Z_server-deep-run.log",
      "python": "3.11.2",
      "platform": "Linux-6.12.75+rpt-rpi-v8-aarch64-with-glibc2.36",
      "rx_only_guard": {
        "tx": false,
        "ptt": false,
        "tune": false,
        "send": false,
        "note": "This lab wrapper performs RX-only WAV/source inspection and never starts JS8Call runtime TX actions."
      },
      "server_deep_run": {
        "requested_path": "/decoders/js8_test.wav",
        "resolved_wav": "/decoders/js8_test.wav",
        "real_run_exit_code": 0
      },
      "outputs": {
        "browser_report_json": "/decoders/js8_decoder/logs/js8_browser_report_latest.json"
      },
      "next_links": {
        "api_report": "/api/report",
        "logs": "/logs/",
        "latest_log": "/logs/latest.log"
      }
    }
  },
  "latest_log": {
    "url": "/logs/latest.log",
    "stat": {
      "exists": true,
      "is_file": true,
      "is_dir": false,
      "size": 406732,
      "mtime_utc": "2026-05-27T04:28:03Z"
    },
    "tail": " {\n          \"iteration\": 10,\n          \"syndrome_weight\": 52\n        },\n        {\n          \"iteration\": 15,\n          \"syndrome_weight\": 42\n        },\n        {\n          \"iteration\": 20,\n          \"syndrome_weight\": 42\n        }\n      ]\n    },\n    {\n      \"variant\": \"reverse_symbol_order\",\n      \"transform\": \"ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits\",\n      \"mapping_meta\": {\n        \"tone_mapping\": \"ft8_gray_alt_high\",\n        \"gray_direction\": \"inverse_observed_to_plain\",\n        \"reverse_bits_within_tone_before_gray\": true,\n        \"interleaver\": \"none\",\n        \"polarity\": \"inverted\"\n      },\n      \"decoder_trial\": {\n        \"llr_scale\": 0.75,\n        \"alpha\": 0.7\n      },\n      \"source_rank_score\": 113.063032,\n      \"source_llr_stats\": {\n        \"count\": 174,\n        \"avg_abs\": 2.265758,\n        \"min_abs\": 0.020953,\n        \"max_abs\": 4.126624,\n        \"positive\": 139,\n        \"negative\": 35,\n        \"zero\": 0\n      },\n      \"success\": false,\n      \"iterations_used\": 24,\n      \"final_syndrome_weight\": 33,\n      \"message91\": null,\n      \"message91_sha256_16\": \"b6c4dd4168505fc5\",\n      \"codeword174_sha256_16\": \"3a2d94c7a15abf2f\",\n      \"trace\": [\n        {\n          \"iteration\": 0,\n          \"syndrome_weight\": 50\n        },\n        {\n          \"iteration\": 1,\n          \"syndrome_weight\": 50\n        },\n        {\n          \"iteration\": 2,\n          \"syndrome_weight\": 41\n        },\n        {\n          \"iteration\": 3,\n          \"syndrome_weight\": 33\n        },\n        {\n          \"iteration\": 4,\n          \"syndrome_weight\": 44\n        },\n        {\n          \"iteration\": 5,\n          \"syndrome_weight\": 40\n        },\n        {\n          \"iteration\": 6,\n          \"syndrome_weight\": 44\n        },\n        {\n          \"iteration\": 7,\n          \"syndrome_weight\": 42\n        },\n        {\n          \"iteration\": 8,\n          \"syndrome_weight\": 39\n        },\n        {\n          \"iteration\": 9,\n          \"syndrome_weight\": 42\n        },\n        {\n          \"iteration\": 10,\n          \"syndrome_weight\": 39\n        },\n        {\n          \"iteration\": 15,\n          \"syndrome_weight\": 42\n        },\n        {\n          \"iteration\": 20,\n          \"syndrome_weight\": 48\n        }\n      ]\n    },\n    {\n      \"variant\": \"reverse_full_bitstream\",\n      \"transform\": \"ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits\",\n      \"mapping_meta\": {\n        \"tone_mapping\": \"ft8_gray_alt_high\",\n        \"gray_direction\": \"inverse_observed_to_plain\",\n        \"reverse_bits_within_tone_before_gray\": false,\n        \"interleaver\": \"none\",\n        \"polarity\": \"inverted\"\n      },\n      \"decoder_trial\": {\n        \"llr_scale\": 0.75,\n        \"alpha\": 0.7\n      },\n      \"source_rank_score\": 112.063032,\n      \"source_llr_stats\": {\n        \"count\": 174,\n        \"avg_abs\": 2.265758,\n        \"min_abs\": 0.020953,\n        \"max_abs\": 4.126624,\n        \"positive\": 139,\n        \"negative\": 35,\n        \"zero\": 0\n      },\n      \"success\": false,\n      \"iterations_used\": 24,\n      \"final_syndrome_weight\": 33,\n      \"message91\": null,\n      \"message91_sha256_16\": \"f87044aee1fbf433\",\n      \"codeword174_sha256_16\": \"5d5c54391eb1cbfd\",\n      \"trace\": [\n        {\n          \"iteration\": 0,\n          \"syndrome_weight\": 43\n        },\n        {\n          \"iteration\": 1,\n          \"syndrome_weight\": 47\n        },\n        {\n          \"iteration\": 2,\n          \"syndrome_weight\": 42\n        },\n        {\n          \"iteration\": 3,\n          \"syndrome_weight\": 39\n        },\n        {\n          \"iteration\": 4,\n          \"syndrome_weight\": 37\n        },\n        {\n          \"iteration\": 5,\n          \"syndrome_weight\": 40\n        },\n        {\n          \"iteration\": 6,\n          \"syndrome_weight\": 33\n        },\n        {\n          \"iteration\": 7,\n          \"syndrome_weight\": 46\n        },\n        {\n          \"iteration\": 8,\n          \"syndrome_weight\": 44\n        },\n        {\n          \"iteration\": 9,\n          \"syndrome_weight\": 43\n        },\n        {\n          \"iteration\": 10,\n          \"syndrome_weight\": 44\n        },\n        {\n          \"iteration\": 15,\n          \"syndrome_weight\": 49\n        },\n        {\n          \"iteration\": 20,\n          \"syndrome_weight\": 44\n        }\n      ]\n    },\n    {\n      \"variant\": \"mapped_ft8_gray_primary_demap_msb_input+no_interleaver\",\n      \"transform\": \"ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword\",\n      \"mapping_meta\": {\n        \"tone_mapping\": \"ft8_gray_primary\",\n        \"gray_direction\": \"inverse_observed_to_plain\",\n        \"reverse_bits_within_tone_before_gray\": false,\n        \"interleaver\": \"ft8_bitrev\",\n        \"direction\": \"deinterleave_rx_to_codeword\",\n        \"order_len\": 174\n      },\n      \"decoder_trial\": {\n        \"llr_scale\": 1.0,\n        \"alpha\": 0.8\n      },\n      \"source_rank_score\": 107.529872,\n      \"source_llr_stats\": {\n        \"count\": 174,\n        \"avg_abs\": 1.882468,\n        \"min_abs\": 0.003299,\n        \"max_abs\": 4.126624,\n        \"positive\": 148,\n        \"negative\": 26,\n        \"zero\": 0\n      },\n      \"success\": false,\n      \"iterations_used\": 24,\n      \"final_syndrome_weight\": 33,\n      \"message91\": null,\n      \"message91_sha256_16\": \"1512a470c93c7bb5\",\n      \"codeword174_sha256_16\": \"6d04c779ce0fc894\",\n      \"trace\": [\n        {\n          \"iteration\": 0,\n          \"syndrome_weight\": 48\n        },\n        {\n          \"iteration\": 1,\n          \"syndrome_weight\": 38\n        },\n        {\n          \"iteration\": 2,\n          \"syndrome_weight\": 47\n        },\n        {\n          \"iteration\": 3,\n          \"syndrome_weight\": 43\n        },\n        {\n          \"iteration\": 4,\n          \"syndrome_weight\": 49\n        },\n        {\n          \"iteration\": 5,\n          \"syndrome_weight\": 46\n        },\n        {\n          \"iteration\": 6,\n          \"syndrome_weight\": 36\n        },\n        {\n          \"iteration\": 7,\n          \"syndrome_weight\": 35\n        },\n        {\n          \"iteration\": 8,\n          \"syndrome_weight\": 39\n        },\n        {\n          \"iteration\": 9,\n          \"syndrome_weight\": 47\n        },\n        {\n          \"iteration\": 10,\n          \"syndrome_weight\": 45\n        },\n        {\n          \"iteration\": 15,\n          \"syndrome_weight\": 41\n        },\n        {\n          \"iteration\": 20,\n          \"syndrome_weight\": 40\n        }\n      ]\n    },\n    {\n      \"variant\": \"reverse_symbol_order\",\n      \"transform\": \"ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits\",\n      \"mapping_meta\": {\n        \"tone_mapping\": \"ft8_gray_primary\",\n        \"gray_direction\": \"inverse_observed_to_plain\",\n        \"reverse_bits_within_tone_before_gray\": true,\n        \"interleaver\": \"none\",\n        \"polarity\": \"inverted\"\n      },\n      \"decoder_trial\": {\n        \"llr_scale\": 0.75,\n        \"alpha\": 0.7\n      },\n      \"source_rank_score\": 113.063032,\n      \"source_llr_stats\": {\n        \"count\": 174,\n        \"avg_abs\": 2.265758,\n        \"min_abs\": 0.020953,\n        \"max_abs\": 4.126624,\n        \"positive\": 139,\n        \"negative\": 35,\n        \"zero\": 0\n      },\n      \"success\": false,\n      \"iterations_used\": 24,\n      \"final_syndrome_weight\": 34,\n      \"message91\": null,\n      \"message91_sha256_16\": \"9840b53bd4cff7c6\",\n      \"codeword174_sha256_16\": \"0f3fddb5ca7ce9c3\",\n      \"trace\": [\n        {\n          \"iteration\": 0,\n          \"syndrome_weight\": 42\n        },\n        {\n          \"iteration\": 1,\n          \"syndrome_weight\": 42\n        },\n        {\n          \"iteration\": 2,\n          \"syndrome_weight\": 42\n        },\n        {\n          \"iteration\": 3,\n          \"syndrome_weight\": 45\n        },\n        {\n          \"iteration\": 4,\n          \"syndrome_weight\": 37\n        },\n        {\n          \"iteration\": 5,\n          \"syndrome_weight\": 45\n        },\n        {\n          \"iteration\": 6,\n          \"syndrome_weight\": 43\n        },\n        {\n          \"iteration\": 7,\n          \"syndrome_weight\": 43\n        },\n        {\n          \"iteration\": 8,\n          \"syndrome_weight\": 35\n        },\n        {\n          \"iteration\": 9,\n          \"syndrome_weight\": 40\n        },\n        {\n          \"iteration\": 10,\n          \"syndrome_weight\": 39\n        },\n        {\n          \"iteration\": 15,\n          \"syndrome_weight\": 42\n        },\n        {\n          \"iteration\": 20,\n          \"syndrome_weight\": 39\n        }\n      ]\n    },\n    {\n      \"variant\": \"mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword\",\n      \"transform\": \"ft8_gray_alt_high_demap_lsb_input+no_interleaver\",\n      \"mapping_meta\": {\n        \"tone_mapping\": \"ft8_gray_alt_high\",\n        \"gray_direction\": \"inverse_observed_to_plain\",\n        \"reverse_bits_within_tone_before_gray\": true,\n        \"interleaver\": \"none\"\n      },\n      \"decoder_trial\": {\n        \"llr_scale\": 1.0,\n        \"alpha\": 0.8\n      },\n      \"source_rank_score\": 109.063032,\n      \"source_llr_stats\": {\n        \"count\": 174,\n        \"avg_abs\": 2.265758,\n        \"min_abs\": 0.020953,\n        \"max_abs\": 4.126624,\n        \"positive\": 139,\n        \"negative\": 35,\n        \"zero\": 0\n      },\n      \"success\": false,\n      \"iterations_used\": 24,\n      \"final_syndrome_weight\": 34,\n      \"message91\": null,\n      \"message91_sha256_16\": \"07985c5b49461190\",\n      \"codeword174_sha256_16\": \"c148a530d15360d5\",\n      \"trace\": [\n        {\n          \"iteration\": 0,\n          \"syndrome_weight\": 42\n        },\n        {\n          \"iteration\": 1,\n          \"syndrome_weight\": 39\n        },\n        {\n          \"iteration\": 2,\n          \"syndrome_weight\": 35\n        },\n        {\n          \"iteration\": 3,\n          \"syndrome_weight\": 43\n        },\n        {\n          \"iteration\": 4,\n          \"syndrome_weight\": 38\n        },\n        {\n          \"iteration\": 5,\n          \"syndrome_weight\": 37\n        },\n        {\n          \"iteration\": 6,\n          \"syndrome_weight\": 41\n        },\n        {\n          \"iteration\": 7,\n          \"syndrome_weight\": 43\n        },\n        {\n          \"iteration\": 8,\n          \"syndrome_weight\": 46\n        },\n        {\n          \"iteration\": 9,\n          \"syndrome_weight\": 38\n        },\n        {\n          \"iteration\": 10,\n          \"syndrome_weight\": 34\n        },\n        {\n          \"iteration\": 15,\n          \"syndrome_weight\": 36\n        },\n        {\n          \"iteration\": 20,\n          \"syndrome_weight\": 40\n        }\n      ]\n    }\n  ],\n  \"decodes\": [],\n  \"outputs\": {\n    \"ldpc_soft_decode_json\": \"/decoders/js8_decoder/runtime/ldpc_soft_decode/step38_ldpc_soft_decode.json\"\n  },\n  \"warnings\": [\n    \"Step 38 runs bounded normalized-min-sum soft LDPC over the best-ranked FT8-style Gray/interleaver mapping candidates against the public (174,91) matrix contract.\",\n    \"This still does not unpack JS8 text or validate CRC/message payloads.\",\n    \"If success is true and syndrome_weight is 0, the next step can unpack the 91-bit message. Otherwise more timing, Costas/data-symbol boundary, deinterleaver/order or LLR tuning is required.\"\n  ],\n  \"next_action\": \"Upload Step35 logs. If no valid codeword, inspect best mapping_meta/final_syndrome_weight and continue timing/interleaver/LLR tuning; if valid, add JS8 message unpack/CRC.\"\n}\n\n[webftr-js8-lab] OK\n[webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260527T042715Z_ldpc-soft-decode.log\n[webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T042715Z_ldpc-soft-decode_manifest.json\n[webftr-js8-lab] ldpc-soft-decode exit_code=0\n\n========== REAL-RUN STEP 10/10: JS8LAB LOG BUNDLE ==========\n[webftr-js8-lab] collecting JS8Lab logs from /decoders/js8_decoder/logs\n[webftr-js8-lab] upload this JS8Lab bundle: /decoders/js8_decoder/logs/js8_decoder_lab_real_run_20260527T041823Z.zip\n\n[webftr-js8-lab] OK\n[webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260527T041823Z_real-run.log\n[webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T041823Z_real-run_manifest.json\n\n[webftr-js8-lab] OK\n[webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260527T041823Z_server-deep-run.log\n[webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T041823Z_server-deep-run_manifest.json\n"
  },
  "output_refs": {
    "input_check": {
      "name": "20260527T041823Z_input_check_output.json",
      "path": "/decoders/js8_decoder/logs/20260527T041823Z_input_check_output.json",
      "url": "/logs/20260527T041823Z_input_check_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 673,
        "mtime_utc": "2026-05-27T04:18:23Z"
      },
      "json_preview": {
        "ok": true,
        "mode": "JS8",
        "tool": "webftr-js8-input-check",
        "tool_version": "step38-fine-timing-ridge-sweep",
        "input_wav": "/decoders/js8_test.wav",
        "rx_only": true,
        "safety": {
          "tx": false,
          "ptt": false,
          "tune": false,
          "send": false,
          "js8call_runtime_control": false
        },
        "decodes": [],
        "warnings": [],
        "wav": {
          "path": "/decoders/js8_test.wav",
          "channels": 1,
          "sample_rate": 12000,
          "sample_width_bytes": 2,
          "frames": 2304199,
          "duration_seconds": 192.016583,
          "rms_dbfs": -9.14,
          "peak_dbfs": -0.72,
          "clipped": false
        },
        "next_action": "Run profile-scan, then auto-ldpc-probe on this WAV."
      }
    },
    "real_run_quick_prefilter": {
      "name": "20260527T041823Z_real_run_quick_prefilter_output.json",
      "path": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_quick_prefilter_output.json",
      "url": "/logs/20260527T041823Z_real_run_quick_prefilter_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 8804,
        "mtime_utc": "2026-05-27T04:18:37Z"
      },
      "json_preview": {
        "ok": true,
        "mode": "JS8",
        "tool": "webftr-js8-quick-window-scan",
        "tool_version": "step38-fine-timing-ridge-sweep",
        "input_wav": "/decoders/js8_test.wav",
        "rx_only": true,
        "safety": {
          "tx": false,
          "ptt": false,
          "tune": false,
          "send": false,
          "js8call_runtime_control": false
        },
        "wav": {
          "sample_rate": 12000,
          "duration_seconds": 192.016583,
          "frames": 2304199,
          "rms_dbfs": -9.164808449038551,
          "peak_dbfs": -0.7246929351669301,
          "clipped": false
        },
        "scan_params": {
          "window_seconds": 60.0,
          "hop_seconds": 12.0,
          "max_seconds": 180.0,
          "output_dir": "/decoders/js8_decoder/runtime/quick_prefilter_windows"
        },
        "selected_window": {
          "start_seconds": 24.0,
          "end_seconds": 84.0,
          "duration_seconds": 60.0,
          "avg_activity_score": -6.2272,
          "active_chunks": 5,
          "chunk_count": 5,
          "selection_score": 11.2728,
          "window_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
          "tone_candidates": [
            {
              "freq_hz": 1025.0,
              "relative_db": 0.0,
              "power": 7.98385996
            },
            {
              "freq_hz": 1000.0,
              "relative_db": -0.38,
              "power": 7.31762699
            },
            {
              "freq_hz": 2025.0,
              "relative_db": -9.29,
              "power": 0.93974646
            },
            {
              "freq_hz": 975.0,
              "relative_db": -13.3,
              "power": 0.37314359
            },
            {
              "freq_hz": 1050.0,
              "relative_db": -25.6,
              "power": 0.02199227
            },
            {
              "freq_hz": 1775.0,
              "relative_db": -27.4,
              "power": 0.01453049
            },
            {
              "freq_hz": 1150.0,
              "relative_db": -27.44,
              "power": 0.01439727
            },
            {
              "freq_hz": 1425.0,
              "relative_db": -28.11,
              "power": 0.01233556
            },
            {
              "freq_hz": 1250.0,
              "relative_db": -29.08,
              "power": 0.00987629
            },
            {
              "freq_hz": 1825.0,
              "relative_db": -29.2,
              "power": 0.00959995
            },
            {
              "freq_hz": 1950.0,
              "relative_db": -29.78,
              "power": 0.00840634
            },
            {
              "freq_hz": 950.0,
              "relative_db": -29.91,
              "power": 0.00814511
            }
          ]
        },
        "selected_window_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
        "top_windows": [
          {
            "start_seconds": 24.0,
            "end_seconds": 84.0,
            "duration_seconds": 60.0,
            "avg_activity_score": -6.2272,
            "active_chunks": 5,
            "chunk_count": 5,
            "selection_score": 11.2728,
            "window_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
            "tone_candidates": [
              {
                "freq_hz": 1025.0,
                "relative_db": 0.0,
                "power": 7.98385996
              },
              {
                "freq_hz": 1000.0,
                "relative_db": -0.38,
                "power": 7.31762699
              },
              {
                "freq_hz": 2025.0,
                "relative_db": -9.29,
                "power": 0.93974646
              },
              {
                "freq_hz": 975.0,
                "relative_db": -13.3,
                "power": 0.37314359
              },
              {
                "freq_hz": 1050.0,
                "relative_db": -25.6,
                "power": 0.02199227
              },
              {
                "freq_hz": 1775.0,
                "relative_db": -27.4,
                "power": 0.01453049
              },
              {
                "freq_hz": 1150.0,
                "relative_db": -27.44,
                "power": 0.01439727
              },
              {
                "freq_hz": 1425.0,
                "relative_db": -28.11,
                "power": 0.01233556
              },
              {
                "freq_hz": 1250.0,
                "relative_db": -29.08,
                "power": 0.00987629
              },
              {
                "freq_hz": 1825.0,
                "relative_db": -29.2,
                "power": 0.00959995
              },
              {
                "freq_hz": 1950.0,
                "relative_db": -29.78,
                "power": 0.00840634
              },
              {
                "freq_hz": 950.0,
                "relative_db": -29.91,
                "power": 0.00814511
              }
            ]
          },
          {
            "start_seconds": 12.0,
            "end_seconds": 72.0,
            "duration_seconds": 60.0,
            "avg_activity_score": -6.2278,
            "active_chunks": 5,
            "chunk_count": 5,
            "selection_score": 11.2722
          },
          {
            "start_seconds": 36.0,
            "end_seconds": 96.0,
            "duration_seconds": 60.0,
            "avg_activity_score": -6.2346,
            "active_chunks": 5,
            "chunk_count": 5,
            "selection_score": 11.2654
          },
          {
            "start_seconds": 48.0,
            "end_seconds": 108.0,
            "duration_seconds": 60.0,
            "avg_activity_score": -6.2483,
            "active_chunks": 5,
            "chunk_count": 5,
            "selection_score": 11.2517
          },
          {
            "start_seconds": 0.0,
            "end_seconds": 60.0,
            "duration_seconds": 60.0,
            "avg_activity_score": -6.2606,
            "active_chunks": 5,
            "chunk_count": 5,
            "selection_score": 11.2394
          },
          {
            "start_seconds": 60.0,
            "end_seconds": 120.0,
            "duration_seconds": 60.0,
            "avg_activity_score": -6.2619,
            "active_chunks": 5,
            "chunk_count": 5,
            "selection_score": 11.2381
          },
          {
            "start_seconds": 108.0,
            "end_seconds": 168.0,
            "duration_seconds": 60.0,
            "avg_activity_score": -6.2716,
            "active_chunks": 5,
            "chunk_count": 5,
            "selection_score": 11.2284
          },
          {
            "start_seconds": 72.0,
            "end_seconds": 132.0,
            "duration_seconds": 60.0,
            "avg_activity_score": -6.2752,
            "active_chunks": 5,
            "chunk_count": 5,
            "selection_score": 11.2248
          }
        ],
        "chunk_preview": [
          {
            "chunk_index": 0,
            "start_seconds": 0.0,
            "end_seconds": 12.0,
            "rms_dbfs": -9.07,
            "peak_dbfs": -3.22,
            "activity_score": -6.2351
          },
          {
            "chunk_index": 1,
            "start_seconds": 12.0,
            "end_seconds": 24.0,
            "rms_dbfs": -9.27,
            "peak_dbfs": -3.01,
            "activity_score": -6.4225
          },
          {
            "chunk_index": 2,
            "start_seconds": 24.0,
            "end_seconds": 36.0,
            "rms_dbfs": -9.24,
            "peak_dbfs": -2.73,
            "activity_score": -6.3769
          },
          {
            "chunk_index": 3,
            "start_seconds": 36.0,
            "end_seconds": 48.0,
            "rms_dbfs": -9.24,
            "peak_dbfs": -2.39,
            "activity_score": -6.3632
          },
          {
            "chunk_index": 4,
            "start_seconds": 48.0,
            "end_seconds": 60.0,
            "rms_dbfs": -8.87,
            "peak_dbfs": -0.72,
            "activity_score": -5.9054
          },
          {
            "chunk_index": 5,
            "start_seconds": 60.0,
            "end_seconds": 72.0,
            "rms_dbfs": -9.03,
            "peak_dbfs": -0.72,
            "activity_score": -6.0711
          },
          {
            "chunk_index": 6,
            "start_seconds": 72.0,
            "end_seconds": 84.0,
            "rms_dbfs": -9.26,
            "peak_dbfs": -3.1,
            "activity_score": -6.4194
          },
          {
            "chunk_index": 7,
            "start_seconds": 84.0,
            "end_seconds": 96.0,
            "rms_dbfs": -9.29,
            "peak_dbfs": -2.42,
            "activity_score": -6.4141
          }
        ],
        "chunk_tail_preview": [
          {
            "chunk_index": 7,
            "start_seconds": 84.0,
            "end_seconds": 96.0,
            "rms_dbfs": -9.29,
            "peak_dbfs": -2.42,
            "activity_score": -6.4141
          },
          {
            "chunk_index": 8,
            "start_seconds": 96.0,
            "end_seconds": 108.0,
            "rms_dbfs": -9.3,
            "peak_dbfs": -2.65,
            "activity_score": -6.4314
          },
          {
            "chunk_index": 9,
            "start_seconds": 108.0,
            "end_seconds": 120.0,
            "rms_dbfs": -8.87,
            "peak_dbfs": -2.1,
            "activity_score": -5.9734
          },
          {
            "chunk_index": 10,
            "start_seconds": 120.0,
            "end_seconds": 132.0,
            "rms_dbfs": -9.02,
            "peak_dbfs": -2.36,
            "activity_score": -6.1378
          },
          {
            "chunk_index": 11,
            "start_seconds": 132.0,
            "end_seconds": 144.0,
            "rms_dbfs": -9.41,
            "peak_dbfs": -0.72,
            "activity_score": -6.4474
          },
          {
            "chunk_index": 12,
            "start_seconds": 144.0,
            "end_seconds": 156.0,
            "rms_dbfs": -9.3,
            "peak_dbfs": -2.31,
            "activity_score": -6.4185
          },
          {
            "chunk_index": 13,
            "start_seconds": 156.0,
            "end_seconds": 168.0,
            "rms_dbfs": -9.34,
            "peak_dbfs": -0.89,
            "activity_score": -6.3807
          },
          {
            "chunk_index": 14,
            "start_seconds": 168.0,
            "end_seconds": 180.0,
            "rms_dbfs": -8.99,
            "peak_dbfs": -3.03,
            "activity_score": -6.1457
          }
        ],
        "decodes": [],
        "warnings": [
          "Quick-window-scan only selects a likely analysis window; it is not a JS8 text decoder."
        ],
        "next_action": "Run sync/soft-symbol/FEC probes on selected_window_wav. Message unpack is not implemented in Step 38."
      }
    },
    "real_run_dirty_window_scan": {
      "name": "20260527T041823Z_real_run_dirty_window_scan_output.json",
      "path": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_dirty_window_scan_output.json",
      "url": "/logs/20260527T041823Z_real_run_dirty_window_scan_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 1223,
        "mtime_utc": "2026-05-27T04:19:37Z"
      },
      "json_preview": {
        "ok": false,
        "error": "json_command_timeout_guard",
        "timeout_seconds": 60,
        "exit_code": 143,
        "command": [
          "python3",
          "-m",
          "webftr_js8_lab.js8_dirty_window_scan",
          "--input",
          "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
          "--pretty",
          "--window-seconds",
          "54",
          "--hop-seconds",
          "30",
          "--max-seconds",
          "75",
          "--max-windows",
          "1",
          "--max-starts",
          "3",
          "--max-base-candidates",
          "2",
          "--output-dir",
          "/decoders/js8_decoder/runtime/dirty_windows",
          "--prefer-js8"
        ],
        "stderr_log": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_dirty_window_scan_output.stderr.log",
        "stderr_tail": "/decoders/js8_decoder/src/webftr_js8_lab/js8_dirty_window_scan.py:4: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13\n  import audioop\n",
        "rx_only": true,
        "safety": {
          "tx": false,
          "ptt": false,
          "tune": false,
          "send": false,
          "js8call_runtime_control": false
        },
        "next_action": "Step 38 timeout guard stopped this expensive probe. The real-run now continues with quick-window fallback when available; otherwise inspect stderr/log bundle."
      }
    },
    "dirty_window_scan": {
      "name": "20260527T041823Z_real_run_dirty_window_scan_output.json",
      "path": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_dirty_window_scan_output.json",
      "url": "/logs/20260527T041823Z_real_run_dirty_window_scan_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 1223,
        "mtime_utc": "2026-05-27T04:19:37Z"
      },
      "json_preview": {
        "ok": false,
        "error": "json_command_timeout_guard",
        "timeout_seconds": 60,
        "exit_code": 143,
        "command": [
          "python3",
          "-m",
          "webftr_js8_lab.js8_dirty_window_scan",
          "--input",
          "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
          "--pretty",
          "--window-seconds",
          "54",
          "--hop-seconds",
          "30",
          "--max-seconds",
          "75",
          "--max-windows",
          "1",
          "--max-starts",
          "3",
          "--max-base-candidates",
          "2",
          "--output-dir",
          "/decoders/js8_decoder/runtime/dirty_windows",
          "--prefer-js8"
        ],
        "stderr_log": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_dirty_window_scan_output.stderr.log",
        "stderr_tail": "/decoders/js8_decoder/src/webftr_js8_lab/js8_dirty_window_scan.py:4: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13\n  import audioop\n",
        "rx_only": true,
        "safety": {
          "tx": false,
          "ptt": false,
          "tune": false,
          "send": false,
          "js8call_runtime_control": false
        },
        "next_action": "Step 38 timeout guard stopped this expensive probe. The real-run now continues with quick-window fallback when available; otherwise inspect stderr/log bundle."
      }
    },
    "ldpc_soft_decode": {
      "name": "20260527T042715Z_ldpc_soft_decode_output.json",
      "path": "/decoders/js8_decoder/logs/20260527T042715Z_ldpc_soft_decode_output.json",
      "url": "/logs/20260527T042715Z_ldpc_soft_decode_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 45112,
        "mtime_utc": "2026-05-27T04:28:00Z"
      },
      "json_preview": {
        "ok": true,
        "mode": "JS8",
        "tool": "webftr-js8-soft-ldpc-minsum-probe",
        "tool_version": "step38-fine-timing-ridge-sweep",
        "input_wav": null,
        "candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step38_best_timing_fec_candidate.json",
        "rx_only": true,
        "safety": {
          "tx": false,
          "ptt": false,
          "tune": false,
          "send": false,
          "js8call_runtime_control": false
        },
        "implementation_stage": "step38_bounded_gray_interleaver_llr_minsum_probe_no_message_unpack",
        "matrix": {
          "code": "(174,91)",
          "message_bits": 91,
          "parity_bits": 83,
          "codeword_bits": 174,
          "check_count": 83
        },
        "decoder": {
          "algorithm": "normalized_min_sum_multi_trial",
          "max_iterations": 24,
          "default_alpha": 0.8,
          "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely",
          "mapping_expansion": "ft8_gray_demap_plus_bitrev_interleaver_candidates",
          "max_decode_rows": 12,
          "fast_trials": true,
          "trial_count": 2
        },
        "candidate_context": {
          "nsps_used": 6400,
          "nsps_is_js8_realistic": true,
          "selected_profile": null,
          "selected_variant": {
            "name": "raw_msb_symbol_order",
            "rank_score": 127.063032,
            "complete_174bit_candidate": true,
            "hard_bits_sha256_16": "7bf9bc1895cb1e01",
            "hard_weight_174": 36,
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            }
          }
        },
        "candidate_mapping_rows": 828,
        "probe_count": 24,
        "best_soft_decode": {
          "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"
          },
          "decoder_trial": {
            "llr_scale": 1.0,
            "alpha": 0.8
          },
          "source_rank_score": 109.063032,
          "source_llr_stats": {
            "count": 174,
            "avg_abs": 2.265758,
            "min_abs": 0.020953,
            "max_abs": 4.126624,
            "positive": 139,
            "negative": 35,
            "zero": 0
          },
          "success": false,
          "iterations_used": 24,
          "final_syndrome_weight": 22,
          "message91": null,
          "message91_sha256_16": "eb0331f827dab374",
          "codeword174_sha256_16": "89003bf74303e48c",
          "trace": [
            {
              "iteration": 0,
              "syndrome_weight": 37
            },
            {
              "iteration": 1,
              "syndrome_weight": 32
            },
            {
              "iteration": 2,
              "syndrome_weight": 30
            },
            {
              "iteration": 3,
              "syndrome_weight": 22
            },
            {
              "iteration": 4,
              "syndrome_weight": 37
            },
            {
              "iteration": 5,
              "syndrome_weight": 51
            },
            {
              "iteration": 6,
              "syndrome_weight": 54
            },
            {
              "iteration": 7,
              "syndrome_weight": 33
            },
            {
              "iteration": 8,
              "syndrome_weight": 49
            },
            {
              "iteration": 9,
              "syndrome_weight": 41
            },
            {
              "iteration": 10,
              "syndrome_weight": 43
            },
            {
              "iteration": 15,
              "syndrome_weight": 41
            },
            {
              "iteration": 20,
              "syndrome_weight": 50
            }
          ]
        },
        "soft_decode_results": [
          {
            "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"
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 109.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 22,
            "message91": null,
            "message91_sha256_16": "eb0331f827dab374",
            "codeword174_sha256_16": "89003bf74303e48c",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 37
              },
              {
                "iteration": 1,
                "syndrome_weight": 32
              },
              {
                "iteration": 2,
                "syndrome_weight": 30
              },
              {
                "iteration": 3,
                "syndrome_weight": 22
              },
              {
                "iteration": 4,
                "syndrome_weight": 37
              },
              {
                "iteration": 5,
                "syndrome_weight": 51
              },
              {
                "iteration": 6,
                "syndrome_weight": 54
              },
              {
                "iteration": 7,
                "syndrome_weight": 33
              },
              {
                "iteration": 8,
                "syndrome_weight": 49
              },
              {
                "iteration": 9,
                "syndrome_weight": 41
              },
              {
                "iteration": 10,
                "syndrome_weight": 43
              },
              {
                "iteration": 15,
                "syndrome_weight": 41
              },
              {
                "iteration": 20,
                "syndrome_weight": 50
              }
            ]
          },
          {
            "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
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 107.311136,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 1.827784,
              "min_abs": 0.008053,
              "max_abs": 4.126624,
              "positive": 138,
              "negative": 36,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 27,
            "message91": null,
            "message91_sha256_16": "3909d0efb8b5d4f7",
            "codeword174_sha256_16": "6ab6ae69c2669651",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 33
              },
              {
                "iteration": 1,
                "syndrome_weight": 32
              },
              {
                "iteration": 2,
                "syndrome_weight": 39
              },
              {
                "iteration": 3,
                "syndrome_weight": 43
              },
              {
                "iteration": 4,
                "syndrome_weight": 39
              },
              {
                "iteration": 5,
                "syndrome_weight": 49
              },
              {
                "iteration": 6,
                "syndrome_weight": 41
              },
              {
                "iteration": 7,
                "syndrome_weight": 44
              },
              {
                "iteration": 8,
                "syndrome_weight": 42
              },
              {
                "iteration": 9,
                "syndrome_weight": 40
              },
              {
                "iteration": 10,
                "syndrome_weight": 41
              },
              {
                "iteration": 15,
                "syndrome_weight": 29
              },
              {
                "iteration": 20,
                "syndrome_weight": 33
              }
            ]
          },
          {
            "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"
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 109.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 28,
            "message91": null,
            "message91_sha256_16": "d573664e1265e80c",
            "codeword174_sha256_16": "2597dbff96349713",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 41
              },
              {
                "iteration": 1,
                "syndrome_weight": 37
              },
              {
                "iteration": 2,
                "syndrome_weight": 30
              },
              {
                "iteration": 3,
                "syndrome_weight": 44
              },
              {
                "iteration": 4,
                "syndrome_weight": 40
              },
              {
                "iteration": 5,
                "syndrome_weight": 36
              },
              {
                "iteration": 6,
                "syndrome_weight": 46
              },
              {
                "iteration": 7,
                "syndrome_weight": 39
              },
              {
                "iteration": 8,
                "syndrome_weight": 35
              },
              {
                "iteration": 9,
                "syndrome_weight": 49
              },
              {
                "iteration": 10,
                "syndrome_weight": 28
              },
              {
                "iteration": 15,
                "syndrome_weight": 43
              },
              {
                "iteration": 20,
                "syndrome_weight": 34
              }
            ]
          },
          {
            "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"
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 101.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 29,
            "message91": null,
            "message91_sha256_16": "86c9ebbe97a4cee4",
            "codeword174_sha256_16": "666fc2db0f867336",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 40
              },
              {
                "iteration": 1,
                "syndrome_weight": 34
              },
              {
                "iteration": 2,
                "syndrome_weight": 45
              },
              {
                "iteration": 3,
                "syndrome_weight": 42
              },
              {
                "iteration": 4,
                "syndrome_weight": 34
              },
              {
                "iteration": 5,
                "syndrome_weight": 38
              },
              {
                "iteration": 6,
                "syndrome_weight": 40
              },
              {
                "iteration": 7,
                "syndrome_weight": 36
              },
              {
                "iteration": 8,
                "syndrome_weight": 44
              },
              {
                "iteration": 9,
                "syndrome_weight": 41
              },
              {
                "iteration": 10,
                "syndrome_weight": 31
              },
              {
                "iteration": 15,
                "syndrome_weight": 43
              },
              {
                "iteration": 20,
                "syndrome_weight": 53
              }
            ]
          },
          {
            "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"
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 113.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 30,
            "message91": null,
            "message91_sha256_16": "c5beab46f597fb50",
            "codeword174_sha256_16": "e28a20814ba9c142",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 42
              },
              {
                "iteration": 1,
                "syndrome_weight": 42
              },
              {
                "iteration": 2,
                "syndrome_weight": 40
              },
              {
                "iteration": 3,
                "syndrome_weight": 51
              },
              {
                "iteration": 4,
                "syndrome_weight": 44
              },
              {
                "iteration": 5,
                "syndrome_weight": 41
              },
              {
                "iteration": 6,
                "syndrome_weight": 46
              },
              {
                "iteration": 7,
                "syndrome_weight": 42
              },
              {
                "iteration": 8,
                "syndrome_weight": 50
              },
              {
                "iteration": 9,
                "syndrome_weight": 45
              },
              {
                "iteration": 10,
                "syndrome_weight": 42
              },
              {
                "iteration": 15,
                "syndrome_weight": 51
              },
              {
                "iteration": 20,
                "syndrome_weight": 30
              }
            ]
          },
          {
            "variant": "reverse_full_bitstream",
            "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "none",
              "polarity": "inverted"
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 112.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 30,
            "message91": null,
            "message91_sha256_16": "95da80269df20c0b",
            "codeword174_sha256_16": "d8add1acd64ea0cd",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 43
              },
              {
                "iteration": 1,
                "syndrome_weight": 47
              },
              {
                "iteration": 2,
                "syndrome_weight": 45
              },
              {
                "iteration": 3,
                "syndrome_weight": 33
              },
              {
                "iteration": 4,
                "syndrome_weight": 33
              },
              {
                "iteration": 5,
                "syndrome_weight": 30
              },
              {
                "iteration": 6,
                "syndrome_weight": 35
              },
              {
                "iteration": 7,
                "syndrome_weight": 41
              },
              {
                "iteration": 8,
                "syndrome_weight": 40
              },
              {
                "iteration": 9,
                "syndrome_weight": 43
              },
              {
                "iteration": 10,
                "syndrome_weight": 38
              },
              {
                "iteration": 15,
                "syndrome_weight": 40
              },
              {
                "iteration": 20,
                "syndrome_weight": 35
              }
            ]
          },
          {
            "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"
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 109.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 30,
            "message91": null,
            "message91_sha256_16": "eb0331f827dab374",
            "codeword174_sha256_16": "362c1c2091c2628f",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 37
              },
              {
                "iteration": 1,
                "syndrome_weight": 32
              },
              {
                "iteration": 2,
                "syndrome_weight": 30
              },
              {
                "iteration": 3,
                "syndrome_weight": 34
              },
              {
                "iteration": 4,
                "syndrome_weight": 41
              },
              {
                "iteration": 5,
                "syndrome_weight": 33
              },
              {
                "iteration": 6,
                "syndrome_weight": 43
              },
              {
                "iteration": 7,
                "syndrome_weight": 47
              },
              {
                "iteration": 8,
                "syndrome_weight": 41
              },
              {
                "iteration": 9,
                "syndrome_weight": 47
              },
              {
                "iteration": 10,
                "syndrome_weight": 47
              },
              {
                "iteration": 15,
                "syndrome_weight": 40
              },
              {
                "iteration": 20,
                "syndrome_weight": 41
              }
            ]
          },
          {
            "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"
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 109.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 30,
            "message91": null,
            "message91_sha256_16": "d5fd881ddc0d6fa3",
            "codeword174_sha256_16": "fb9a728c30e39a50",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 41
              },
              {
                "iteration": 1,
                "syndrome_weight": 37
              },
              {
                "iteration": 2,
                "syndrome_weight": 30
              },
              {
                "iteration": 3,
                "syndrome_weight": 44
              },
              {
                "iteration": 4,
                "syndrome_weight": 50
              },
              {
                "iteration": 5,
                "syndrome_weight": 48
              },
              {
                "iteration": 6,
                "syndrome_weight": 44
              },
              {
                "iteration": 7,
                "syndrome_weight": 39
              },
              {
                "iteration": 8,
                "syndrome_weight": 41
              },
              {
                "iteration": 9,
                "syndrome_weight": 37
              },
              {
                "iteration": 10,
                "syndrome_weight": 35
              },
              {
                "iteration": 15,
                "syndrome_weight": 45
              },
              {
                "iteration": 20,
                "syndrome_weight": 37
              }
            ]
          },
          {
            "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"
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 107.311136,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 1.827784,
              "min_abs": 0.008053,
              "max_abs": 4.126624,
              "positive": 138,
              "negative": 36,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 30,
            "message91": null,
            "message91_sha256_16": "95cb11678c7a80df",
            "codeword174_sha256_16": "57946ed9075f03b0",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 42
              },
              {
                "iteration": 1,
                "syndrome_weight": 39
              },
              {
                "iteration": 2,
                "syndrome_weight": 43
              },
              {
                "iteration": 3,
                "syndrome_weight": 41
              },
              {
                "iteration": 4,
                "syndrome_weight": 38
              },
              {
                "iteration": 5,
                "syndrome_weight": 45
              },
              {
                "iteration": 6,
                "syndrome_weight": 39
              },
              {
                "iteration": 7,
                "syndrome_weight": 46
              },
              {
                "iteration": 8,
                "syndrome_weight": 45
              },
              {
                "iteration": 9,
                "syndrome_weight": 40
              },
              {
                "iteration": 10,
                "syndrome_weight": 42
              },
              {
                "iteration": 15,
                "syndrome_weight": 44
              },
              {
                "iteration": 20,
                "syndrome_weight": 50
              }
            ]
          },
          {
            "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"
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 113.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 31,
            "message91": null,
            "message91_sha256_16": "1bacbd0793b9041a",
            "codeword174_sha256_16": "05a4517e00218153",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 50
              },
              {
                "iteration": 1,
                "syndrome_weight": 50
              },
              {
                "iteration": 2,
                "syndrome_weight": 32
              },
              {
                "iteration": 3,
                "syndrome_weight": 41
              },
              {
                "iteration": 4,
                "syndrome_weight": 36
              },
              {
                "iteration": 5,
                "syndrome_weight": 40
              },
              {
                "iteration": 6,
                "syndrome_weight": 48
              },
              {
                "iteration": 7,
                "syndrome_weight": 44
              },
              {
                "iteration": 8,
                "syndrome_weight": 42
              },
              {
                "iteration": 9,
                "syndrome_weight": 44
              },
              {
                "iteration": 10,
                "syndrome_weight": 42
              },
              {
                "iteration": 15,
                "syndrome_weight": 40
              },
              {
                "iteration": 20,
                "syndrome_weight": 31
              }
            ]
          },
          {
            "variant": "reverse_full_bitstream",
            "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "none",
              "polarity": "inverted"
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 112.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 31,
            "message91": null,
            "message91_sha256_16": "17a702c7403bd1b2",
            "codeword174_sha256_16": "76bf63b1ec27f58a",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 43
              },
              {
                "iteration": 1,
                "syndrome_weight": 37
              },
              {
                "iteration": 2,
                "syndrome_weight": 36
              },
              {
                "iteration": 3,
                "syndrome_weight": 38
              },
              {
                "iteration": 4,
                "syndrome_weight": 39
              },
              {
                "iteration": 5,
                "syndrome_weight": 38
              },
              {
                "iteration": 6,
                "syndrome_weight": 31
              },
              {
                "iteration": 7,
                "syndrome_weight": 47
              },
              {
                "iteration": 8,
                "syndrome_weight": 47
              },
              {
                "iteration": 9,
                "syndrome_weight": 42
              },
              {
                "iteration": 10,
                "syndrome_weight": 40
              },
              {
                "iteration": 15,
                "syndrome_weight": 42
              },
              {
                "iteration": 20,
                "syndrome_weight": 40
              }
            ]
          },
          {
            "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "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
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 109.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 31,
            "message91": null,
            "message91_sha256_16": "2b0d7a31ba899628",
            "codeword174_sha256_16": "ea9c003e9c197128",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 45
              },
              {
                "iteration": 1,
                "syndrome_weight": 37
              },
              {
                "iteration": 2,
                "syndrome_weight": 39
              },
              {
                "iteration": 3,
                "syndrome_weight": 46
              },
              {
                "iteration": 4,
                "syndrome_weight": 49
              },
              {
                "iteration": 5,
                "syndrome_weight": 44
              },
              {
                "iteration": 6,
                "syndrome_weight": 36
              },
              {
                "iteration": 7,
                "syndrome_weight": 36
              },
              {
                "iteration": 8,
                "syndrome_weight": 46
              },
              {
                "iteration": 9,
                "syndrome_weight": 40
              },
              {
                "iteration": 10,
                "syndrome_weight": 48
              },
              {
                "iteration": 15,
                "syndrome_weight": 37
              },
              {
                "iteration": 20,
                "syndrome_weight": 45
              }
            ]
          },
          {
            "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"
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 101.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 31,
            "message91": null,
            "message91_sha256_16": "3edce333bba194c6",
            "codeword174_sha256_16": "569ccbfacc1349c4",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 40
              },
              {
                "iteration": 1,
                "syndrome_weight": 34
              },
              {
                "iteration": 2,
                "syndrome_weight": 45
              },
              {
                "iteration": 3,
                "syndrome_weight": 31
              },
              {
                "iteration": 4,
                "syndrome_weight": 38
              },
              {
                "iteration": 5,
                "syndrome_weight": 44
              },
              {
                "iteration": 6,
                "syndrome_weight": 37
              },
              {
                "iteration": 7,
                "syndrome_weight": 37
              },
              {
                "iteration": 8,
                "syndrome_weight": 45
              },
              {
                "iteration": 9,
                "syndrome_weight": 39
              },
              {
                "iteration": 10,
                "syndrome_weight": 32
              },
              {
                "iteration": 15,
                "syndrome_weight": 41
              },
              {
                "iteration": 20,
                "syndrome_weight": 47
              }
            ]
          },
          {
            "variant": "reverse_full_bitstream",
            "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "none",
              "polarity": "inverted"
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 112.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 32,
            "message91": null,
            "message91_sha256_16": "e8e90fd8b41ed29c",
            "codeword174_sha256_16": "9b2d7269d656d4af",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 43
              },
              {
                "iteration": 1,
                "syndrome_weight": 37
              },
              {
                "iteration": 2,
                "syndrome_weight": 40
              },
              {
                "iteration": 3,
                "syndrome_weight": 49
              },
              {
                "iteration": 4,
                "syndrome_weight": 43
              },
              {
                "iteration": 5,
                "syndrome_weight": 38
              },
              {
                "iteration": 6,
                "syndrome_weight": 37
              },
              {
                "iteration": 7,
                "syndrome_weight": 46
              },
              {
                "iteration": 8,
                "syndrome_weight": 37
              },
              {
                "iteration": 9,
                "syndrome_weight": 47
              },
              {
                "iteration": 10,
                "syndrome_weight": 32
              },
              {
                "iteration": 15,
                "syndrome_weight": 45
              },
              {
                "iteration": 20,
                "syndrome_weight": 43
              }
            ]
          },
          {
            "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
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 107.311136,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 1.827784,
              "min_abs": 0.008053,
              "max_abs": 4.126624,
              "positive": 138,
              "negative": 36,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 32,
            "message91": null,
            "message91_sha256_16": "f4b199ca6ce68c20",
            "codeword174_sha256_16": "eabdaf7834f3b582",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 33
              },
              {
                "iteration": 1,
                "syndrome_weight": 32
              },
              {
                "iteration": 2,
                "syndrome_weight": 39
              },
              {
                "iteration": 3,
                "syndrome_weight": 36
              },
              {
                "iteration": 4,
                "syndrome_weight": 50
              },
              {
                "iteration": 5,
                "syndrome_weight": 48
              },
              {
                "iteration": 6,
                "syndrome_weight": 39
              },
              {
                "iteration": 7,
                "syndrome_weight": 38
              },
              {
                "iteration": 8,
                "syndrome_weight": 48
              },
              {
                "iteration": 9,
                "syndrome_weight": 43
              },
              {
                "iteration": 10,
                "syndrome_weight": 52
              },
              {
                "iteration": 15,
                "syndrome_weight": 42
              },
              {
                "iteration": 20,
                "syndrome_weight": 42
              }
            ]
          },
          {
            "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"
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 113.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 33,
            "message91": null,
            "message91_sha256_16": "b6c4dd4168505fc5",
            "codeword174_sha256_16": "3a2d94c7a15abf2f",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 50
              },
              {
                "iteration": 1,
                "syndrome_weight": 50
              },
              {
                "iteration": 2,
                "syndrome_weight": 41
              },
              {
                "iteration": 3,
                "syndrome_weight": 33
              },
              {
                "iteration": 4,
                "syndrome_weight": 44
              },
              {
                "iteration": 5,
                "syndrome_weight": 40
              },
              {
                "iteration": 6,
                "syndrome_weight": 44
              },
              {
                "iteration": 7,
                "syndrome_weight": 42
              },
              {
                "iteration": 8,
                "syndrome_weight": 39
              },
              {
                "iteration": 9,
                "syndrome_weight": 42
              },
              {
                "iteration": 10,
                "syndrome_weight": 39
              },
              {
                "iteration": 15,
                "syndrome_weight": 42
              },
              {
                "iteration": 20,
                "syndrome_weight": 48
              }
            ]
          },
          {
            "variant": "reverse_full_bitstream",
            "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "none",
              "polarity": "inverted"
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 112.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 33,
            "message91": null,
            "message91_sha256_16": "f87044aee1fbf433",
            "codeword174_sha256_16": "5d5c54391eb1cbfd",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 43
              },
              {
                "iteration": 1,
                "syndrome_weight": 47
              },
              {
                "iteration": 2,
                "syndrome_weight": 42
              },
              {
                "iteration": 3,
                "syndrome_weight": 39
              },
              {
                "iteration": 4,
                "syndrome_weight": 37
              },
              {
                "iteration": 5,
                "syndrome_weight": 40
              },
              {
                "iteration": 6,
                "syndrome_weight": 33
              },
              {
                "iteration": 7,
                "syndrome_weight": 46
              },
              {
                "iteration": 8,
                "syndrome_weight": 44
              },
              {
                "iteration": 9,
                "syndrome_weight": 43
              },
              {
                "iteration": 10,
                "syndrome_weight": 44
              },
              {
                "iteration": 15,
                "syndrome_weight": 49
              },
              {
                "iteration": 20,
                "syndrome_weight": 44
              }
            ]
          },
          {
            "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
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 107.529872,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 1.882468,
              "min_abs": 0.003299,
              "max_abs": 4.126624,
              "positive": 148,
              "negative": 26,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 33,
            "message91": null,
            "message91_sha256_16": "1512a470c93c7bb5",
            "codeword174_sha256_16": "6d04c779ce0fc894",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 48
              },
              {
                "iteration": 1,
                "syndrome_weight": 38
              },
              {
                "iteration": 2,
                "syndrome_weight": 47
              },
              {
                "iteration": 3,
                "syndrome_weight": 43
              },
              {
                "iteration": 4,
                "syndrome_weight": 49
              },
              {
                "iteration": 5,
                "syndrome_weight": 46
              },
              {
                "iteration": 6,
                "syndrome_weight": 36
              },
              {
                "iteration": 7,
                "syndrome_weight": 35
              },
              {
                "iteration": 8,
                "syndrome_weight": 39
              },
              {
                "iteration": 9,
                "syndrome_weight": 47
              },
              {
                "iteration": 10,
                "syndrome_weight": 45
              },
              {
                "iteration": 15,
                "syndrome_weight": 41
              },
              {
                "iteration": 20,
                "syndrome_weight": 40
              }
            ]
          },
          {
            "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"
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 113.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 34,
            "message91": null,
            "message91_sha256_16": "9840b53bd4cff7c6",
            "codeword174_sha256_16": "0f3fddb5ca7ce9c3",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 42
              },
              {
                "iteration": 1,
                "syndrome_weight": 42
              },
              {
                "iteration": 2,
                "syndrome_weight": 42
              },
              {
                "iteration": 3,
                "syndrome_weight": 45
              },
              {
                "iteration": 4,
                "syndrome_weight": 37
              },
              {
                "iteration": 5,
                "syndrome_weight": 45
              },
              {
                "iteration": 6,
                "syndrome_weight": 43
              },
              {
                "iteration": 7,
                "syndrome_weight": 43
              },
              {
                "iteration": 8,
                "syndrome_weight": 35
              },
              {
                "iteration": 9,
                "syndrome_weight": 40
              },
              {
                "iteration": 10,
                "syndrome_weight": 39
              },
              {
                "iteration": 15,
                "syndrome_weight": 42
              },
              {
                "iteration": 20,
                "syndrome_weight": 39
              }
            ]
          },
          {
            "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "none"
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 109.063032,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 34,
            "message91": null,
            "message91_sha256_16": "07985c5b49461190",
            "codeword174_sha256_16": "c148a530d15360d5",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 42
              },
              {
                "iteration": 1,
                "syndrome_weight": 39
              },
              {
                "iteration": 2,
                "syndrome_weight": 35
              },
              {
                "iteration": 3,
                "syndrome_weight": 43
              },
              {
                "iteration": 4,
                "syndrome_weight": 38
              },
              {
                "iteration": 5,
                "syndrome_weight": 37
              },
              {
                "iteration": 6,
                "syndrome_weight": 41
              },
              {
                "iteration": 7,
                "syndrome_weight": 43
              },
              {
                "iteration": 8,
                "syndrome_weight": 46
              },
              {
                "iteration": 9,
                "syndrome_weight": 38
              },
              {
                "iteration": 10,
                "syndrome_weight": 34
              },
              {
                "iteration": 15,
                "syndrome_weight": 36
              },
              {
                "iteration": 20,
                "syndrome_weight": 40
              }
            ]
          }
        ],
        "decodes": [],
        "outputs": {
          "ldpc_soft_decode_json": "/decoders/js8_decoder/runtime/ldpc_soft_decode/step38_ldpc_soft_decode.json"
        },
        "warnings": [
          "Step 38 runs bounded normalized-min-sum soft LDPC over the best-ranked FT8-style Gray/interleaver mapping candidates against the public (174,91) matrix contract.",
          "This still does not unpack JS8 text or validate CRC/message payloads.",
          "If success is true and syndrome_weight is 0, the next step can unpack the 91-bit message. Otherwise more timing, Costas/data-symbol boundary, deinterleaver/order or LLR tuning is required."
        ],
        "next_action": "Upload Step35 logs. If no valid codeword, inspect best mapping_meta/final_syndrome_weight and continue timing/interleaver/LLR tuning; if valid, add JS8 message unpack/CRC."
      }
    },
    "ldpc_matrix_probe": {
      "name": "20260527T042712Z_ldpc_matrix_probe_output.json",
      "path": "/decoders/js8_decoder/logs/20260527T042712Z_ldpc_matrix_probe_output.json",
      "url": "/logs/20260527T042712Z_ldpc_matrix_probe_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 35797,
        "mtime_utc": "2026-05-27T04:27:14Z"
      },
      "json_preview": {
        "ok": true,
        "mode": "JS8",
        "tool": "webftr-js8-real-ldpc-matrix-syndrome-probe",
        "tool_version": "step38-fine-timing-ridge-sweep",
        "input_wav": null,
        "candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step38_best_timing_fec_candidate.json",
        "rx_only": true,
        "safety": {
          "tx": false,
          "ptt": false,
          "tune": false,
          "send": false,
          "js8call_runtime_control": false
        },
        "implementation_stage": "step38_bounded_gray_interleaver_matrix_ranking_no_message_unpack",
        "matrix": {
          "code": "(174,91) LDPC generator matrix",
          "generator_rows": 83,
          "generator_cols": 91,
          "message_bits": 91,
          "parity_bits": 83,
          "source_file": "ldpc_174_91_c_generator.f90"
        },
        "bounds": {
          "total_transform_rows_before_limit": 828,
          "max_rows": 72,
          "repair_rows": 10,
          "max_flips": 6,
          "candidate_pool": 12
        },
        "candidate_context": {
          "nsps_used": 6400,
          "nsps_is_js8_realistic": true,
          "selected_profile": null,
          "selected_variant": {
            "name": "raw_msb_symbol_order",
            "rank_score": 127.063032,
            "complete_174bit_candidate": true,
            "hard_bits_sha256_16": "7bf9bc1895cb1e01",
            "hard_weight_174": 36,
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.265758,
              "min_abs": 0.020953,
              "max_abs": 4.126624,
              "positive": 139,
              "negative": 35,
              "zero": 0
            }
          }
        },
        "variant_probe_count": 72,
        "best_matrix_probe": {
          "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"
          },
          "hard_weight_174": 140,
          "llr_avg_abs": 1.8277836149425295,
          "syndrome": {
            "bits_len": 174,
            "message91": "1011100111111101111111111111011111111101110111101011001111101011111010111111111011101111111",
            "parity83_observed": "11001100111111111110111110101111111111111011101111101111101101011001111111110101111",
            "parity83_expected": "11110110111110110111011110100100001110111011100111101100100101011101111111100100101",
            "syndrome83": "00111010000001001001100000001011110001000000001000000011001000000100000000010001010",
            "syndrome_weight": 22,
            "valid_codeword_hard_decision": false,
            "message91_sha256_16": "67b59638aa8882d6",
            "codeword174_sha256_16": "0228efbd612c9092"
          },
          "repair": {
            "attempted": true,
            "max_flips": 6,
            "candidate_pool": 12,
            "flip_count": 2,
            "repair_success": false,
            "final_syndrome_weight": 20,
            "trace": [
              {
                "flip_index": 128,
                "llr_abs": 0.032754,
                "gain": 1,
                "syndrome_weight_after": 21
              },
              {
                "flip_index": 156,
                "llr_abs": 0.081417,
                "gain": 1,
                "syndrome_weight_after": 20
              }
            ],
            "repaired_message91_sha256_16": "67b59638aa8882d6"
          }
        },
        "all_matrix_probes": [
          {
            "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"
            },
            "hard_weight_174": 140,
            "llr_avg_abs": 1.8277836149425295,
            "syndrome": {
              "bits_len": 174,
              "message91": "1011100111111101111111111111011111111101110111101011001111101011111010111111111011101111111",
              "parity83_observed": "11001100111111111110111110101111111111111011101111101111101101011001111111110101111",
              "parity83_expected": "11110110111110110111011110100100001110111011100111101100100101011101111111100100101",
              "syndrome83": "00111010000001001001100000001011110001000000001000000011001000000100000000010001010",
              "syndrome_weight": 22,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "67b59638aa8882d6",
              "codeword174_sha256_16": "0228efbd612c9092"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 2,
              "repair_success": false,
              "final_syndrome_weight": 20,
              "trace": [
                {
                  "flip_index": 128,
                  "llr_abs": 0.032754,
                  "gain": 1,
                  "syndrome_weight_after": 21
                },
                {
                  "flip_index": 156,
                  "llr_abs": 0.081417,
                  "gain": 1,
                  "syndrome_weight_after": 20
                }
              ],
              "repaired_message91_sha256_16": "67b59638aa8882d6"
            }
          },
          {
            "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
            },
            "hard_weight_174": 35,
            "llr_avg_abs": 1.5912117011494256,
            "syndrome": {
              "bits_len": 174,
              "message91": "0011000011000000001110000100000000010000000100010010100010000000100000000000110000000010000",
              "parity83_observed": "00100001110100000001000000000000001000000010001010110000000000000001000001100011000",
              "parity83_expected": "00110001110111100010100000001100011010000011001000110100001101010101011100100011110",
              "syndrome83": "00010000000011100011100000001100010010000001000010000100001101010100011101000000110",
              "syndrome_weight": 25,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "4f673c96b1f1de5c",
              "codeword174_sha256_16": "90bdd003a67ea079"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 3,
              "repair_success": false,
              "final_syndrome_weight": 22,
              "trace": [
                {
                  "flip_index": 105,
                  "llr_abs": 0.008127,
                  "gain": 1,
                  "syndrome_weight_after": 24
                },
                {
                  "flip_index": 149,
                  "llr_abs": 0.012692,
                  "gain": 1,
                  "syndrome_weight_after": 23
                },
                {
                  "flip_index": 139,
                  "llr_abs": 0.045014,
                  "gain": 1,
                  "syndrome_weight_after": 22
                }
              ],
              "repaired_message91_sha256_16": "4f673c96b1f1de5c"
            }
          },
          {
            "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
            },
            "hard_weight_174": 36,
            "llr_avg_abs": 1.6427796724137933,
            "syndrome": {
              "bits_len": 174,
              "message91": "0011000011000000001110000100000000010000000100010010100010000000100000000000110000000010000",
              "parity83_observed": "00100001110100000001000000000000001000000010001010110000010000000001000001100011000",
              "parity83_expected": "00110001110111100010100000001100011010000011001000110100001101010101011100100011110",
              "syndrome83": "00010000000011100011100000001100010010000001000010000100011101010100011101000000110",
              "syndrome_weight": 26,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "4f673c96b1f1de5c",
              "codeword174_sha256_16": "eb17c3d482c6c1fa"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 3,
              "repair_success": false,
              "final_syndrome_weight": 23,
              "trace": [
                {
                  "flip_index": 105,
                  "llr_abs": 0.003612,
                  "gain": 1,
                  "syndrome_weight_after": 25
                },
                {
                  "flip_index": 149,
                  "llr_abs": 0.013947,
                  "gain": 1,
                  "syndrome_weight_after": 24
                },
                {
                  "flip_index": 148,
                  "llr_abs": 0.032127,
                  "gain": 1,
                  "syndrome_weight_after": 23
                }
              ],
              "repaired_message91_sha256_16": "4f673c96b1f1de5c"
            }
          },
          {
            "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"
            },
            "hard_weight_174": 127,
            "llr_avg_abs": 1.672409804597702,
            "syndrome": {
              "bits_len": 174,
              "message91": "0111101111111111110100111110001110111111010111100011111110111111100110101111101000101111111",
              "parity83_observed": "11111011100110111011001111111001111010001111001111011101111111110001010111111110111",
              "parity83_expected": "01111011100011100001010001101001111010000011001100011101011101100001000101110101100",
              "syndrome83": "10000000000101011010011110010000000000001100000011000000100010010000010010001011011",
              "syndrome_weight": 25,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "6a76c3f6f4855f72",
              "codeword174_sha256_16": "e94fe0f75c74d230"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 1,
              "repair_success": false,
              "final_syndrome_weight": 24,
              "trace": [
                {
                  "flip_index": 104,
                  "llr_abs": 0.094637,
                  "gain": 1,
                  "syndrome_weight_after": 24
                }
              ],
              "repaired_message91_sha256_16": "6a76c3f6f4855f72"
            }
          },
          {
            "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"
            },
            "hard_weight_174": 138,
            "llr_avg_abs": 2.2657583620689654,
            "syndrome": {
              "bits_len": 174,
              "message91": "1111111010101111101101111100111011001101001111101111101111100111111111111111110011111111110",
              "parity83_observed": "10011110011111111011110111111111111110110100111111111100101111111110111111110110111",
              "parity83_expected": "10000101010110110001001111110001110100111100011111111101101010100100001111100000011",
              "syndrome83": "00011011001001001010111000001110001010001000100000000001000101011010110000010110100",
              "syndrome_weight": 30,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "d5fd881ddc0d6fa3",
              "codeword174_sha256_16": "524f6b31360d4b54"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 3,
              "repair_success": false,
              "final_syndrome_weight": 27,
              "trace": [
                {
                  "flip_index": 98,
                  "llr_abs": 0.093616,
                  "gain": 1,
                  "syndrome_weight_after": 29
                },
                {
                  "flip_index": 155,
                  "llr_abs": 0.114756,
                  "gain": 1,
                  "syndrome_weight_after": 28
                },
                {
                  "flip_index": 95,
                  "llr_abs": 0.157374,
                  "gain": 1,
                  "syndrome_weight_after": 27
                }
              ],
              "repaired_message91_sha256_16": "d5fd881ddc0d6fa3"
            }
          },
          {
            "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"
            },
            "hard_weight_174": 83,
            "llr_avg_abs": 1.8824677988505754,
            "syndrome": {
              "bits_len": 174,
              "message91": "0001110001101100000000011000100010001100000100111011101100100100111000010101001001011011111",
              "parity83_observed": "00000110001010100101101111010111010101101010110111110100010110101001110010111000011",
              "parity83_expected": "00011100100111010101111101000101100000001011110111000100010010101110111011100000011",
              "syndrome83": "00011010101101110000010010010010110101100001000000110000000100000111001001011000000",
              "syndrome_weight": 29,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "e3f175dd3a2c81b2",
              "codeword174_sha256_16": "d5da07ca10be5a38"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 1,
              "repair_success": false,
              "final_syndrome_weight": 28,
              "trace": [
                {
                  "flip_index": 105,
                  "llr_abs": 0.056699,
                  "gain": 1,
                  "syndrome_weight_after": 28
                }
              ],
              "repaired_message91_sha256_16": "e3f175dd3a2c81b2"
            }
          },
          {
            "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "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
            },
            "hard_weight_174": 47,
            "llr_avg_abs": 1.7130608850574711,
            "syndrome": {
              "bits_len": 174,
              "message91": "1011100001010001001001000001000000101010110000000010000110000000001000100000011000100000000",
              "parity83_observed": "01000000000010010110000010000000110001000100011010110000011100011000000101010000100",
              "parity83_expected": "10000010000011010111011000001000001110000100111011101010111000000001010000111001100",
              "syndrome83": "11000010000001000001011010001000111111000000100001011010100100011001010101101001000",
              "syndrome_weight": 31,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "10bccbb21b243c70",
              "codeword174_sha256_16": "3d241f2dee27cf8a"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 3,
              "repair_success": false,
              "final_syndrome_weight": 28,
              "trace": [
                {
                  "flip_index": 164,
                  "llr_abs": 0.039513,
                  "gain": 1,
                  "syndrome_weight_after": 30
                },
                {
                  "flip_index": 124,
                  "llr_abs": 0.054434,
                  "gain": 1,
                  "syndrome_weight_after": 29
                },
                {
                  "flip_index": 135,
                  "llr_abs": 0.099006,
                  "gain": 1,
                  "syndrome_weight_after": 28
                }
              ],
              "repaired_message91_sha256_16": "10bccbb21b243c70"
            }
          },
          {
            "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"
            },
            "hard_weight_174": 121,
            "llr_avg_abs": 1.8824677988505747,
            "syndrome": {
              "bits_len": 174,
              "message91": "1111110011111111111111111111000011110100010100011110101111110010011111101010011111111111111",
              "parity83_observed": "10101111001001111111111001111001010111001111111001100000001111001111111001111111001",
              "parity83_expected": "00001110001100001011010101010000011111000101111001101010000010000011001011001001001",
              "syndrome83": "10100001000101110100101100101001001000001010000000001010001101001100110010110110000",
              "syndrome_weight": 31,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "b5db807c301847ac",
              "codeword174_sha256_16": "eaf8f2e0f46bfa41"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 1,
              "repair_success": false,
              "final_syndrome_weight": 30,
              "trace": [
                {
                  "flip_index": 145,
                  "llr_abs": 0.035267,
                  "gain": 1,
                  "syndrome_weight_after": 30
                }
              ],
              "repaired_message91_sha256_16": "b5db807c301847ac"
            }
          },
          {
            "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"
            },
            "hard_weight_174": 123,
            "llr_avg_abs": 1.8277836149425288,
            "syndrome": {
              "bits_len": 174,
              "message91": "1111110011111111111111111111000011110100010100011110101111110010011111101010011111111111111",
              "parity83_observed": "10101111001001111111111001111001010111001111111001100011001111001111111001111111001",
              "parity83_expected": "00001110001100001011010101010000011111000101111001101010000010000011001011001001001",
              "syndrome83": "10100001000101110100101100101001001000001010000000001001001101001100110010110110000",
              "syndrome_weight": 31,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "b5db807c301847ac",
              "codeword174_sha256_16": "3bc0238a33865be3"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 1,
              "repair_success": false,
              "final_syndrome_weight": 30,
              "trace": [
                {
                  "flip_index": 146,
                  "llr_abs": 0.032754,
                  "gain": 1,
                  "syndrome_weight_after": 30
                }
              ],
              "repaired_message91_sha256_16": "b5db807c301847ac"
            }
          },
          {
            "variant": "reverse_full_bitstream",
            "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"
            },
            "hard_weight_174": 121,
            "llr_avg_abs": 1.7194752988505742,
            "syndrome": {
              "bits_len": 174,
              "message91": "1111110011111111111111111111000011110100010100011110101111110010011111101010011111111111111",
              "parity83_observed": "10101111001001111111111001111001010111001111111001100000001111001111111001111111001",
              "parity83_expected": "00001110001100001011010101010000011111000101111001101010000010000011001011001001001",
              "syndrome83": "10100001000101110100101100101001001000001010000000001010001101001100110010110110000",
              "syndrome_weight": 31,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "b5db807c301847ac",
              "codeword174_sha256_16": "eaf8f2e0f46bfa41"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 1,
              "repair_success": false,
              "final_syndrome_weight": 30,
              "trace": [
                {
                  "flip_index": 145,
                  "llr_abs": 0.051749,
                  "gain": 1,
                  "syndrome_weight_after": 30
                }
              ],
              "repaired_message91_sha256_16": "b5db807c301847ac"
            }
          },
          {
            "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
            "transform": "lsb_within_each_tone+no_interleaver+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "none",
              "polarity": "inverted"
            },
            "hard_weight_174": 123,
            "llr_avg_abs": 1.6647911149425294,
            "syndrome": {
              "bits_len": 174,
              "message91": "1001111111001111111001111001100011001111111001110101001111001111111111001001111010111111111",
              "parity83_observed": "11111100101011111100100111111010111100010100010111100001111111111111111111100111111",
              "parity83_expected": "11101110101001100110010101111011101101010010100101100111001100101100011111101010011",
              "syndrome83": "00010010000010011010110010000001010001000110110010000110110011010011100000001101100",
              "syndrome_weight": 31,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "ea3829fd4a89c4a1",
              "codeword174_sha256_16": "8aeb2df4b6f868f0"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 31,
              "trace": [],
              "repaired_message91_sha256_16": "ea3829fd4a89c4a1"
            }
          },
          {
            "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "hard_weight_174": 51,
            "llr_avg_abs": 1.6647911149425283,
            "syndrome": {
              "bits_len": 174,
              "message91": "0000000110100100001100000111100100001000100110100000111010000000000001101100010000000110100",
              "parity83_observed": "00000101010001000110010000000110010010101010101000100110010000001000000000010100000",
              "parity83_expected": "00000100110001000100010000010111111111001001001000101011100100110001110100100110011",
              "syndrome83": "00000001100000000010000000010001101101100011100000001101110100111001110100110010011",
              "syndrome_weight": 31,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "7289260856bf46ac",
              "codeword174_sha256_16": "52fd9adeb14097f4"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 31,
              "trace": [],
              "repaired_message91_sha256_16": "7289260856bf46ac"
            }
          },
          {
            "variant": "reverse_full_bitstream",
            "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"
            },
            "hard_weight_174": 123,
            "llr_avg_abs": 1.664791114942528,
            "syndrome": {
              "bits_len": 174,
              "message91": "1111110011111111111111111111000011110100010100011110101111110010011111101010011111111111111",
              "parity83_observed": "10101111001001111111111001111001010111001111111001100011001111001111111001111111001",
              "parity83_expected": "00001110001100001011010101010000011111000101111001101010000010000011001011001001001",
              "syndrome83": "10100001000101110100101100101001001000001010000000001001001101001100110010110110000",
              "syndrome_weight": 31,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "b5db807c301847ac",
              "codeword174_sha256_16": "3bc0238a33865be3"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 31,
              "trace": [],
              "repaired_message91_sha256_16": "b5db807c301847ac"
            }
          },
          {
            "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "none"
            },
            "hard_weight_174": 51,
            "llr_avg_abs": 1.613219333333333,
            "syndrome": {
              "bits_len": 174,
              "message91": "1100011100010000001000000000000001100000000111101100111100000000110000000111010010001100000",
              "parity83_observed": "00001110010001000110000000000000110000000011110011010000011000000000000110001101000",
              "parity83_expected": "00011100001101101101100000011010010000001110110001111100011011111001010111011111000",
              "syndrome83": "00010010011100101011100000011010100000001101000010101100000011111001010001010010000",
              "syndrome_weight": 31,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "6b88dc9388d32ed9",
              "codeword174_sha256_16": "80e4ac873aa43e30"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 31,
              "trace": [],
              "repaired_message91_sha256_16": "6b88dc9388d32ed9"
            }
          },
          {
            "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "ft8_bitrev",
              "direction": "deinterleave_rx_to_codeword",
              "order_len": 174
            },
            "hard_weight_174": 61,
            "llr_avg_abs": 1.0715886954022988,
            "syndrome": {
              "bits_len": 174,
              "message91": "0000101000010000000010100010011010001001010110011010001000010100110001101101011100110010100",
              "parity83_observed": "10000101011110000010010010011000111010100100000000100000101000000011010001100000001",
              "parity83_expected": "10000101100000110010010100010000110011100100101101110011110010011110011001001100000",
              "syndrome83": "00000000111110110000000110001000001001000000101101010011011010011101001000101100001",
              "syndrome_weight": 31,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "8b19ee60d2508d5d",
              "codeword174_sha256_16": "d8393894fe20b24f"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 31,
              "trace": [],
              "repaired_message91_sha256_16": "8b19ee60d2508d5d"
            }
          },
          {
            "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174,
              "polarity": "inverted"
            },
            "hard_weight_174": 138,
            "llr_avg_abs": 1.8824677988505751,
            "syndrome": {
              "bits_len": 174,
              "message91": "1011111111110111111111101111101001111110011111111011111111011111110110111111000110110110111",
              "parity83_observed": "10111011110011011101011111101111111100011101111101111111111101111101101111100111111",
              "parity83_expected": "00001011000010010101101111011000011100001000101101111110111000110100001001100010000",
              "syndrome83": "10110000110001001000110000110111100000010101010000000001000101001001100110000101111",
              "syndrome_weight": 32,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "08a9bfa00a31c778",
              "codeword174_sha256_16": "96c35e2c35fea733"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 32,
              "trace": [],
              "repaired_message91_sha256_16": "08a9bfa00a31c778"
            }
          },
          {
            "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"
            },
            "hard_weight_174": 116,
            "llr_avg_abs": 1.1495715689655168,
            "syndrome": {
              "bits_len": 174,
              "message91": "0100110111111110011101100111101111111110111111111010101111101100001100011101101010110110111",
              "parity83_observed": "11101110011111101010111000111011101111100111101110100111000101110101110011100001011",
              "parity83_expected": "00000100001011010011000010111000000101100101101011100000001011111101110111100000011",
              "syndrome83": "11101010010100111001111010000011101010000010000101000111001110001000000100000001000",
              "syndrome_weight": 32,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "1661d9e1acea61ee",
              "codeword174_sha256_16": "419192bccb8097ba"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 32,
              "trace": [],
              "repaired_message91_sha256_16": "1661d9e1acea61ee"
            }
          },
          {
            "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "ft8_gray_primary_demap_msb_input+no_interleaver",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "none"
            },
            "hard_weight_174": 58,
            "llr_avg_abs": 1.1495715689655162,
            "syndrome": {
              "bits_len": 174,
              "message91": "1101000001010110100001000001100110000010000000010011000110110000100010110000001100000011011",
              "parity83_observed": "00011001101001001001100000000011001000000110001010000011011000011000000000011101001",
              "parity83_expected": "01011100010110000000110101000010111110000000011010011101011100111100000101011111001",
              "syndrome83": "01000101111111001001010101000001110110000110010000011110000100100100000101000010000",
              "syndrome_weight": 32,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "caa2056a7c81f96b",
              "codeword174_sha256_16": "67b40f73f62e6c6c"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 32,
              "trace": [],
              "repaired_message91_sha256_16": "caa2056a7c81f96b"
            }
          },
          {
            "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "hard_weight_174": 72,
            "llr_avg_abs": 1.111334712643677,
            "syndrome": {
              "bits_len": 174,
              "message91": "1011001000100011100010111000010100000001010000000101010000010011110011101010010101001011000",
              "parity83_observed": "00010011100000010111000111010100010000011000010001011000111110001110101100011110101",
              "parity83_expected": "10111011100110111110110010011001100000101001000010010000110011001100101000110100101",
              "syndrome83": "10101000000110101001110101001101110000110001010011001000001101000010000100101010000",
              "syndrome_weight": 32,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "d4921afbac24d4a4",
              "codeword174_sha256_16": "79422d22b91abac9"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 32,
              "trace": [],
              "repaired_message91_sha256_16": "d4921afbac24d4a4"
            }
          },
          {
            "variant": "lab_mask_xor_preview",
            "transform": "raw_msb+no_interleaver",
            "mapping_meta": {
              "tone_mapping": "raw_msb",
              "interleaver": "none"
            },
            "hard_weight_174": 89,
            "llr_avg_abs": 2.265758362068966,
            "syndrome": {
              "bits_len": 174,
              "message91": "1010001100100101001100011101000000011010101101101111000001111110001111101010010000111001011",
              "parity83_observed": "00100101110110001000101010111001110111011010010101011001100111101101000010100011111",
              "parity83_expected": "00101010110011010101011010010100110101011100010100111010100101100011100111000001011",
              "syndrome83": "00001111000101011101110000101101000010000110000001100011000010001110100101100010100",
              "syndrome_weight": 33,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "39d180b9ca8fad49",
              "codeword174_sha256_16": "beedf9942d4dbcbb"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 33,
              "trace": [],
              "repaired_message91_sha256_16": "39d180b9ca8fad49"
            }
          }
        ],
        "decodes": [],
        "outputs": {
          "ldpc_matrix_probe_json": "/decoders/js8_decoder/runtime/ldpc_matrix_probe/step38_ldpc_matrix_probe.json"
        },
        "warnings": [
          "Step 38 keeps the Step 38 Gray/interleaver probe but ranks all mappings first and repairs only the best bounded subset to avoid Raspberry Pi timeouts.",
          "This is still a diagnostic LDPC/FEC probe and does not unpack JS8 text yet.",
          "If best_matrix_probe reaches syndrome_weight 0, the next step can feed message91 into CRC/message unpack. Otherwise continue timing, symbol boundary, deinterleaver/order or LLR tuning using best mapping_meta."
        ],
        "next_action": "Upload Step35 logs. Inspect best_matrix_probe.mapping_meta and final_syndrome_weight; then either unpack message91 on syndrome 0 or continue bounded LDPC/timing tuning."
      }
    },
    "candidate_export": {
      "name": "20260527T041823Z_real_run_candidate_export_output.json",
      "path": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_candidate_export_output.json",
      "url": "/logs/20260527T041823Z_real_run_candidate_export_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 99102,
        "mtime_utc": "2026-05-27T04:25:26Z"
      },
      "json_preview": {
        "ok": true,
        "mode": "JS8",
        "tool": "webftr-js8-fec-candidate-export",
        "tool_version": "step38-fine-timing-ridge-sweep",
        "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
        "rx_only": true,
        "safety": {
          "tx": false,
          "ptt": false,
          "tune": false,
          "send": false,
          "js8call_runtime_control": false
        },
        "implementation_stage": "step38_profile_anchor_candidate_export_no_message_unpack",
        "selected_profile": {
          "profile": "js8_near_6400",
          "nsps": 6400,
          "symbol_duration_seconds": 0.533333,
          "tone_spacing_hz": 1.875,
          "note": "0.533 s timing guard candidate",
          "ok": true,
          "sync": {
            "start_seconds": 4.8,
            "base_freq_hz": 1025.0,
            "candidate_score": 47.4,
            "costas_hits": 2,
            "avg_margin_db": 8.01,
            "candidate_count": 12
          },
          "frame": {
            "symbols_available_after_start": 103,
            "data_symbol_count_estimate": 58,
            "expected_data_symbols_candidate": 58
          },
          "fec": {
            "soft_bit_count_estimate": 174,
            "missing_soft_bits_estimate": 0,
            "complete_ldpc_input_candidate_estimate": true
          },
          "rank_score": 225.085
        },
        "profile_selection_source": "profile_scan_json_anchor",
        "profile_scan_json": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_profile_scan_output.json",
        "anchor_json": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_auto_ldpc_probe_output.json",
        "anchor_selection": {
          "source": "profile_scan_json",
          "path": "/decoders/js8_decoder/logs/20260527T041823Z_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
        },
        "anchor_attempts": [
          {
            "source": "profile_scan_json",
            "path": "/decoders/js8_decoder/logs/20260527T041823Z_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
          }
        ],
        "anchor_expected_enabled": true,
        "prefer_js8_realistic_profile": true,
        "nsps_used": 6400,
        "nsps_is_js8_realistic": true,
        "wav": {
          "path": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
          "channels": 1,
          "sample_rate": 12000,
          "sample_width_bytes": 2,
          "frames": 720000,
          "duration_seconds": 60.0,
          "rms_dbfs": -9.13,
          "peak_dbfs": -0.72,
          "clipped": false
        },
        "sync_candidate": {
          "start_sample": 57600,
          "start_seconds": 4.8,
          "base_freq_hz": 1025.0,
          "tone_spacing_hz": 1.875,
          "nsps": 6400,
          "candidate_score": null,
          "costas_hits": null,
          "avg_margin_db": null,
          "anchor_source": "profile_scan_json"
        },
        "frame_candidate": {
          "input_symbol_count": 96,
          "excluded_costas_symbol_count": 0,
          "detected_costas_blocks": [],
          "data_symbol_count_available": 96,
          "data_symbol_count_used": 58,
          "expected_data_symbols_candidate": 58,
          "costas_policy": "js8_leading_only"
        },
        "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"
        },
        "anchor_context": {
          "enabled": true,
          "source": "profile_scan_json",
          "start_seconds": 4.8,
          "base_freq_hz": 1025.0,
          "tone_spacing_hz": 1.875,
          "nsps": 6400,
          "symbol_count_extracted": 96
        },
        "variant_count": 23,
        "selected_variant": {
          "name": "raw_msb_symbol_order",
          "rank_score": 127.195892,
          "complete_174bit_candidate": true,
          "hard_bits_sha256_16": "c87312f86dbe74fc",
          "hard_weight_174": 36,
          "llr_stats": {
            "count": 174,
            "avg_abs": 2.298973,
            "min_abs": 0.012672,
            "max_abs": 4.421458,
            "positive": 141,
            "negative": 33,
            "zero": 0
          }
        },
        "variants": [
          {
            "name": "raw_msb_symbol_order",
            "description": "Current FEC bridge: Costas-stripped symbols, MSB-first tone bits.",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000000000000000010000010011000001000110101000011010000010010000001000000011011011000000000000000000000011000000001000010001001010001000010010000001010000010000001001000000",
            "hard_bits_sha256_16": "c87312f86dbe74fc",
            "hard_weight_174": 36,
            "llr_full_174": [
              4.145349,
              4.116374,
              3.511245,
              4.180269,
              4.169674,
              4.14242,
              4.168008,
              4.153984,
              4.12139,
              4.168076,
              4.135428,
              4.11961,
              4.07648,
              4.076237,
              4.08862,
              2.756476,
              2.742424,
              3.003457,
              2.955568,
              -1.875523,
              1.978199,
              2.658519,
              0.652185,
              1.080854,
              3.045159,
              -2.198749,
              1.333744,
              0.789541,
              0.471669,
              -0.473047,
              2.454295,
              1.837215,
              1.942431,
              3.352145,
              2.163158,
              -2.926977,
              3.300296,
              1.818615,
              2.678266,
              0.27805,
              -1.765651,
              0.507303,
              0.384955,
              0.866369,
              -0.118003,
              3.200765,
              2.063815,
              1.87262,
              1.0381,
              -1.355162,
              -1.599648,
              3.332469,
              -2.249717,
              1.748972,
              3.56793,
              3.262649,
              3.617447,
              2.319559,
              -1.211827,
              1.719706,
              3.019019,
              -3.210486,
              3.575036,
              2.726546,
              0.281133,
              1.361861,
              0.844266,
              0.012672,
              -0.477879,
              2.427052,
              0.927501,
              2.023583,
              1.640172,
              0.441842,
              1.473774,
              0.724531,
              -1.103418,
              -1.264035,
              0.966046,
              -0.916188,
              -0.820746,
              2.920695,
              -1.395798,
              -1.732909,
              4.123045,
              3.154533,
              1.694026,
              4.167475,
              4.14333,
              4.094062,
              4.166411,
              4.137106,
              4.073255,
              4.16641,
              4.1509,
              4.091336,
              4.16914,
              4.045318,
              3.8423,
              4.098287,
              3.599922,
              1.677122,
              3.447718,
              0.044719,
              2.01941,
              3.666068,
              -1.085865,
              -1.807547,
              2.689748,
              0.585744,
              2.065345,
              3.083072,
              2.617179,
              1.346997,
              2.548193,
              2.264806,
              -0.571842,
              2.351419,
              1.247615,
              1.499097,
              3.383096,
              -3.47555,
              3.593033,
              0.355702,
              2.45095,
              -3.635826,
              2.165497,
              2.132701,
              -2.226011,
              2.192378,
              -1.921746,
              1.999342,
              3.137893,
              2.980057,
              -2.621792,
              3.666644,
              0.533081,
              1.582817,
              3.285701,
              -3.283029,
              3.223063,
              2.568732,
              -0.251398,
              0.268492,
              1.534973,
              1.692448,
              1.48451,
              3.152828,
              0.300403,
              -0.280146,
              1.052121,
              -0.948727,
              1.008293,
              0.777135,
              0.891886,
              0.17487,
              2.402306,
              -2.356355,
              2.750596,
              1.575325,
              0.833633,
              2.006609,
              1.914037,
              2.633553,
              -1.988459,
              1.730599,
              1.570304,
              -1.598288,
              4.421458,
              0.617935,
              1.642426,
              3.964669,
              3.566732,
              3.449224
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "rank_score": 127.195892
          },
          {
            "name": "lsb_within_each_tone",
            "description": "Same symbols, but each 3-bit tone value reversed for bit-order comparison.",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000000000000000010000010110000100000011101000110010000010010000100000000110110110000000000000000000000110000000100000010100100010100000010010000100010000010000100100000000",
            "hard_bits_sha256_16": "1caf67e82a3cc0f1",
            "hard_weight_174": 36,
            "llr_full_174": [
              4.145349,
              4.116374,
              3.511245,
              4.180269,
              4.169674,
              4.14242,
              4.168008,
              4.153984,
              4.12139,
              4.168076,
              4.135428,
              4.11961,
              4.07648,
              4.076237,
              4.08862,
              2.756476,
              2.742424,
              3.003457,
              2.955568,
              -1.875523,
              1.978199,
              2.658519,
              0.652185,
              1.080854,
              3.045159,
              -2.198749,
              1.333744,
              0.789541,
              0.471669,
              -0.473047,
              2.454295,
              1.837215,
              1.942431,
              3.352145,
              2.163158,
              -2.926977,
              3.300296,
              1.818615,
              2.678266,
              0.27805,
              -1.765651,
              0.507303,
              0.384955,
              0.866369,
              -0.118003,
              3.200765,
              2.063815,
              1.87262,
              1.0381,
              -1.355162,
              -1.599648,
              3.332469,
              -2.249717,
              1.748972,
              3.56793,
              3.262649,
              3.617447,
              2.319559,
              -1.211827,
              1.719706,
              3.019019,
              -3.210486,
              3.575036,
              2.726546,
              0.281133,
              1.361861,
              0.844266,
              0.012672,
              -0.477879,
              2.427052,
              0.927501,
              2.023583,
              1.640172,
              0.441842,
              1.473774,
              0.724531,
              -1.103418,
              -1.264035,
              0.966046,
              -0.916188,
              -0.820746,
              2.920695,
              -1.395798,
              -1.732909,
              4.123045,
              3.154533,
              1.694026,
              4.167475,
              4.14333,
              4.094062,
              4.166411,
              4.137106,
              4.073255,
              4.16641,
              4.1509,
              4.091336,
              4.16914,
              4.045318,
              3.8423,
              4.098287,
              3.599922,
              1.677122,
              3.447718,
              0.044719,
              2.01941,
              3.666068,
              -1.085865,
              -1.807547,
              2.689748,
              0.585744,
              2.065345,
              3.083072,
              2.617179,
              1.346997,
              2.548193,
              2.264806,
              -0.571842,
              2.351419,
              1.247615,
              1.499097,
              3.383096,
              -3.47555,
              3.593033,
              0.355702,
              2.45095,
              -3.635826,
              2.165497,
              2.132701,
              -2.226011,
              2.192378,
              -1.921746,
              1.999342,
              3.137893,
              2.980057,
              -2.621792,
              3.666644,
              0.533081,
              1.582817,
              3.285701,
              -3.283029,
              3.223063,
              2.568732,
              -0.251398,
              0.268492,
              1.534973,
              1.692448,
              1.48451,
              3.152828,
              0.300403,
              -0.280146,
              1.052121,
              -0.948727,
              1.008293,
              0.777135,
              0.891886,
              0.17487,
              2.402306,
              -2.356355,
              2.750596,
              1.575325,
              0.833633,
              2.006609,
              1.914037,
              2.633553,
              -1.988459,
              1.730599,
              1.570304,
              -1.598288,
              4.421458,
              0.617935,
              1.642426,
              3.964669,
              3.566732,
              3.449224
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "rank_score": 119.195892
          },
          {
            "name": "reverse_symbol_order",
            "description": "Same 3-bit symbols in reverse order; diagnostic only.",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000001001000010000010001000010010000001010001001010000001000000011000000000000000000000011011011000000001000010010000010011000101110000001000011010000010000000000000000000",
            "hard_bits_sha256_16": "1c72d827ce8d55e5",
            "hard_weight_174": 36,
            "llr_full_174": [
              3.449224,
              3.566732,
              3.964669,
              1.642426,
              0.617935,
              4.421458,
              -1.598288,
              1.570304,
              1.730599,
              -1.988459,
              2.633553,
              1.914037,
              2.006609,
              0.833633,
              1.575325,
              2.750596,
              -2.356355,
              2.402306,
              0.17487,
              0.891886,
              0.777135,
              1.008293,
              -0.948727,
              1.052121,
              -0.280146,
              0.300403,
              3.152828,
              1.48451,
              1.692448,
              1.534973,
              0.268492,
              -0.251398,
              2.568732,
              3.223063,
              -3.283029,
              3.285701,
              1.582817,
              0.533081,
              3.666644,
              -2.621792,
              2.980057,
              3.137893,
              1.999342,
              -1.921746,
              2.192378,
              -2.226011,
              2.132701,
              2.165497,
              -3.635826,
              2.45095,
              0.355702,
              3.593033,
              -3.47555,
              3.383096,
              1.499097,
              1.247615,
              2.351419,
              -0.571842,
              2.264806,
              2.548193,
              1.346997,
              2.617179,
              3.083072,
              2.065345,
              0.585744,
              2.689748,
              -1.807547,
              -1.085865,
              3.666068,
              2.01941,
              0.044719,
              3.447718,
              1.677122,
              3.599922,
              4.098287,
              3.8423,
              4.045318,
              4.16914,
              4.091336,
              4.1509,
              4.16641,
              4.073255,
              4.137106,
              4.166411,
              4.094062,
              4.14333,
              4.167475,
              1.694026,
              3.154533,
              4.123045,
              -1.732909,
              -1.395798,
              2.920695,
              -0.820746,
              -0.916188,
              0.966046,
              -1.264035,
              -1.103418,
              0.724531,
              1.473774,
              0.441842,
              1.640172,
              2.023583,
              0.927501,
              2.427052,
              -0.477879,
              0.012672,
              0.844266,
              1.361861,
              0.281133,
              2.726546,
              3.575036,
              -3.210486,
              3.019019,
              1.719706,
              -1.211827,
              2.319559,
              3.617447,
              3.262649,
              3.56793,
              1.748972,
              -2.249717,
              3.332469,
              -1.599648,
              -1.355162,
              1.0381,
              1.87262,
              2.063815,
              3.200765,
              -0.118003,
              0.866369,
              0.384955,
              0.507303,
              -1.765651,
              0.27805,
              2.678266,
              1.818615,
              3.300296,
              -2.926977,
              2.163158,
              3.352145,
              1.942431,
              1.837215,
              2.454295,
              -0.473047,
              0.471669,
              0.789541,
              1.333744,
              -2.198749,
              3.045159,
              1.080854,
              0.652185,
              2.658519,
              1.978199,
              -1.875523,
              2.955568,
              3.003457,
              2.742424,
              2.756476,
              4.08862,
              4.076237,
              4.07648,
              4.11961,
              4.135428,
              4.168076,
              4.12139,
              4.153984,
              4.168008,
              4.14242,
              4.169674,
              4.180269,
              3.511245,
              4.116374,
              4.145349
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "rank_score": 113.195892
          },
          {
            "name": "reverse_full_bitstream",
            "description": "Full hard-bit stream reversed; diagnostic only.",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000100100000010000010100000010010000100010100100010000100000000110000000000000000000000110110110000000100000010010000010110000101011000100000110010000010000000000000000000",
            "hard_bits_sha256_16": "99d197b705881255",
            "hard_weight_174": 36,
            "llr_full_174": [
              3.449224,
              3.566732,
              3.964669,
              1.642426,
              0.617935,
              4.421458,
              -1.598288,
              1.570304,
              1.730599,
              -1.988459,
              2.633553,
              1.914037,
              2.006609,
              0.833633,
              1.575325,
              2.750596,
              -2.356355,
              2.402306,
              0.17487,
              0.891886,
              0.777135,
              1.008293,
              -0.948727,
              1.052121,
              -0.280146,
              0.300403,
              3.152828,
              1.48451,
              1.692448,
              1.534973,
              0.268492,
              -0.251398,
              2.568732,
              3.223063,
              -3.283029,
              3.285701,
              1.582817,
              0.533081,
              3.666644,
              -2.621792,
              2.980057,
              3.137893,
              1.999342,
              -1.921746,
              2.192378,
              -2.226011,
              2.132701,
              2.165497,
              -3.635826,
              2.45095,
              0.355702,
              3.593033,
              -3.47555,
              3.383096,
              1.499097,
              1.247615,
              2.351419,
              -0.571842,
              2.264806,
              2.548193,
              1.346997,
              2.617179,
              3.083072,
              2.065345,
              0.585744,
              2.689748,
              -1.807547,
              -1.085865,
              3.666068,
              2.01941,
              0.044719,
              3.447718,
              1.677122,
              3.599922,
              4.098287,
              3.8423,
              4.045318,
              4.16914,
              4.091336,
              4.1509,
              4.16641,
              4.073255,
              4.137106,
              4.166411,
              4.094062,
              4.14333,
              4.167475,
              1.694026,
              3.154533,
              4.123045,
              -1.732909,
              -1.395798,
              2.920695,
              -0.820746,
              -0.916188,
              0.966046,
              -1.264035,
              -1.103418,
              0.724531,
              1.473774,
              0.441842,
              1.640172,
              2.023583,
              0.927501,
              2.427052,
              -0.477879,
              0.012672,
              0.844266,
              1.361861,
              0.281133,
              2.726546,
              3.575036,
              -3.210486,
              3.019019,
              1.719706,
              -1.211827,
              2.319559,
              3.617447,
              3.262649,
              3.56793,
              1.748972,
              -2.249717,
              3.332469,
              -1.599648,
              -1.355162,
              1.0381,
              1.87262,
              2.063815,
              3.200765,
              -0.118003,
              0.866369,
              0.384955,
              0.507303,
              -1.765651,
              0.27805,
              2.678266,
              1.818615,
              3.300296,
              -2.926977,
              2.163158,
              3.352145,
              1.942431,
              1.837215,
              2.454295,
              -0.473047,
              0.471669,
              0.789541,
              1.333744,
              -2.198749,
              3.045159,
              1.080854,
              0.652185,
              2.658519,
              1.978199,
              -1.875523,
              2.955568,
              3.003457,
              2.742424,
              2.756476,
              4.08862,
              4.076237,
              4.07648,
              4.11961,
              4.135428,
              4.168076,
              4.12139,
              4.153984,
              4.168008,
              4.14242,
              4.169674,
              4.180269,
              3.511245,
              4.116374,
              4.145349
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "rank_score": 112.195892
          },
          {
            "name": "mapped_raw_msb+no_interleaver",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'none'}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000000000000000010000010011000001000110101000011010000010010000001000000011011011000000000000000000000011000000001000010001001010001000010010000001010000010000001001000000",
            "hard_bits_sha256_16": "c87312f86dbe74fc",
            "hard_weight_174": 36,
            "llr_full_174": [
              4.145349,
              4.116374,
              3.511245,
              4.180269,
              4.169674,
              4.14242,
              4.168008,
              4.153984,
              4.12139,
              4.168076,
              4.135428,
              4.11961,
              4.07648,
              4.076237,
              4.08862,
              2.756476,
              2.742424,
              3.003457,
              2.955568,
              -1.875523,
              1.978199,
              2.658519,
              0.652185,
              1.080854,
              3.045159,
              -2.198749,
              1.333744,
              0.789541,
              0.471669,
              -0.473047,
              2.454295,
              1.837215,
              1.942431,
              3.352145,
              2.163158,
              -2.926977,
              3.300296,
              1.818615,
              2.678266,
              0.27805,
              -1.765651,
              0.507303,
              0.384955,
              0.866369,
              -0.118003,
              3.200765,
              2.063815,
              1.87262,
              1.0381,
              -1.355162,
              -1.599648,
              3.332469,
              -2.249717,
              1.748972,
              3.56793,
              3.262649,
              3.617447,
              2.319559,
              -1.211827,
              1.719706,
              3.019019,
              -3.210486,
              3.575036,
              2.726546,
              0.281133,
              1.361861,
              0.844266,
              0.012672,
              -0.477879,
              2.427052,
              0.927501,
              2.023583,
              1.640172,
              0.441842,
              1.473774,
              0.724531,
              -1.103418,
              -1.264035,
              0.966046,
              -0.916188,
              -0.820746,
              2.920695,
              -1.395798,
              -1.732909,
              4.123045,
              3.154533,
              1.694026,
              4.167475,
              4.14333,
              4.094062,
              4.166411,
              4.137106,
              4.073255,
              4.16641,
              4.1509,
              4.091336,
              4.16914,
              4.045318,
              3.8423,
              4.098287,
              3.599922,
              1.677122,
              3.447718,
              0.044719,
              2.01941,
              3.666068,
              -1.085865,
              -1.807547,
              2.689748,
              0.585744,
              2.065345,
              3.083072,
              2.617179,
              1.346997,
              2.548193,
              2.264806,
              -0.571842,
              2.351419,
              1.247615,
              1.499097,
              3.383096,
              -3.47555,
              3.593033,
              0.355702,
              2.45095,
              -3.635826,
              2.165497,
              2.132701,
              -2.226011,
              2.192378,
              -1.921746,
              1.999342,
              3.137893,
              2.980057,
              -2.621792,
              3.666644,
              0.533081,
              1.582817,
              3.285701,
              -3.283029,
              3.223063,
              2.568732,
              -0.251398,
              0.268492,
              1.534973,
              1.692448,
              1.48451,
              3.152828,
              0.300403,
              -0.280146,
              1.052121,
              -0.948727,
              1.008293,
              0.777135,
              0.891886,
              0.17487,
              2.402306,
              -2.356355,
              2.750596,
              1.575325,
              0.833633,
              2.006609,
              1.914037,
              2.633553,
              -1.988459,
              1.730599,
              1.570304,
              -1.598288,
              4.421458,
              0.617935,
              1.642426,
              3.964669,
              3.566732,
              3.449224
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "rank_score": 109.195892
          },
          {
            "name": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "001000000001001100101000001010100001100000100011000000000101100000000010000010100011000011000100001000000000010000000010000001000000000000000100000011000001101000000001000000",
            "hard_bits_sha256_16": "3c11aac3c214ac9f",
            "hard_weight_174": 36,
            "llr_full_174": [
              4.145349,
              4.167475,
              -0.118003,
              1.999342,
              0.652185,
              0.585744,
              0.844266,
              0.777135,
              4.11961,
              3.8423,
              3.262649,
              -0.251398,
              3.352145,
              3.383096,
              -1.264035,
              -1.988459,
              4.168008,
              4.16641,
              -1.599648,
              1.582817,
              0.471669,
              2.264806,
              1.640172,
              1.575325,
              3.003457,
              2.01941,
              -3.210486,
              0.300403,
              0.27805,
              2.165497,
              -1.395798,
              0.617935,
              4.180269,
              4.166411,
              1.87262,
              -2.621792,
              -2.198749,
              2.617179,
              2.427052,
              2.402306,
              4.08862,
              1.677122,
              -1.211827,
              1.692448,
              3.300296,
              0.355702,
              -0.820746,
              -1.598288,
              4.168076,
              4.16914,
              1.748972,
              3.223063,
              1.837215,
              1.247615,
              0.724531,
              1.914037,
              1.978199,
              -1.807547,
              0.281133,
              -0.948727,
              0.384955,
              2.192378,
              3.154533,
              3.566732,
              3.511245,
              4.094062,
              2.063815,
              2.980057,
              3.045159,
              3.083072,
              -0.477879,
              0.17487,
              4.076237,
              3.599922,
              2.319559,
              1.534973,
              -2.926977,
              3.593033,
              -0.916188,
              1.570304,
              4.12139,
              4.091336,
              -2.249717,
              -3.283029,
              2.454295,
              2.351419,
              1.473774,
              2.006609,
              -1.875523,
              -1.085865,
              2.726546,
              1.052121,
              0.507303,
              -2.226011,
              4.123045,
              3.964669,
              4.14242,
              4.073255,
              -1.355162,
              0.533081,
              0.789541,
              2.548193,
              2.023583,
              2.750596,
              2.742424,
              0.044719,
              3.019019,
              3.152828,
              2.678266,
              -3.635826,
              2.920695,
              4.421458,
              4.135428,
              4.045318,
              3.56793,
              2.568732,
              1.942431,
              1.499097,
              -1.103418,
              2.633553,
              2.658519,
              2.689748,
              1.361861,
              1.008293,
              0.866369,
              -1.921746,
              1.694026,
              3.449224,
              4.116374,
              4.14333,
              3.200765,
              3.137893,
              1.080854,
              2.065345,
              0.012672,
              0.891886,
              4.07648,
              4.098287,
              3.617447,
              0.268492,
              2.163158,
              -3.47555,
              0.966046,
              1.730599,
              4.153984,
              4.1509,
              3.332469,
              3.285701,
              -0.473047,
              -0.571842,
              0.441842,
              0.833633,
              2.955568,
              3.666068,
              3.575036,
              -0.280146,
              -1.765651,
              2.132701,
              -1.732909,
              1.642426,
              4.169674,
              4.137106,
              1.0381,
              3.666644,
              1.333744,
              1.346997,
              0.927501,
              -2.356355,
              2.756476,
              3.447718,
              1.719706,
              1.48451,
              1.818615,
              2.45095
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "rank_score": 109.195892
          },
          {
            "name": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "010000001000001000000000101000011001100100000100000011000010100010010000000000100000000000000000100000001000100000001000001000110110001001010001000100000000110010000010000000",
            "hard_bits_sha256_16": "3eca32111a82bfa5",
            "hard_weight_174": 36,
            "llr_full_174": [
              4.145349,
              -2.226011,
              0.281133,
              1.942431,
              0.833633,
              4.16914,
              2.742424,
              1.534973,
              -0.820746,
              1.0381,
              2.617179,
              4.12139,
              0.533081,
              1.640172,
              -1.765651,
              4.421458,
              2.01941,
              3.045159,
              1.008293,
              4.14333,
              3.617447,
              3.383096,
              4.169674,
              3.137893,
              -0.477879,
              3.300296,
              -1.988459,
              3.599922,
              1.978199,
              0.300403,
              4.123045,
              -2.249717,
              -0.571842,
              4.07648,
              3.223063,
              -1.103418,
              -0.118003,
              3.566732,
              2.689748,
              0.471669,
              2.402306,
              4.073255,
              3.019019,
              2.45095,
              3.511245,
              -1.921746,
              0.844266,
              2.163158,
              1.914037,
              3.8423,
              2.955568,
              1.48451,
              -1.395798,
              -1.599648,
              2.548193,
              4.135428,
              3.285701,
              1.473774,
              0.384955,
              1.642426,
              -1.085865,
              1.333744,
              0.891886,
              4.166411,
              -1.211827,
              3.593033,
              4.168008,
              -2.621792,
              0.927501,
              2.678266,
              1.570304,
              3.447718,
              0.652185,
              1.052121,
              1.694026,
              3.56793,
              1.247615,
              4.08862,
              -0.251398,
              0.966046,
              2.063815,
              2.065345,
              2.454295,
              2.750596,
              4.1509,
              3.575036,
              2.165497,
              4.116374,
              2.192378,
              1.361861,
              3.352145,
              2.006609,
              4.045318,
              3.003457,
              1.692448,
              2.920695,
              -1.355162,
              1.346997,
              4.168076,
              1.582817,
              0.441842,
              0.507303,
              0.617935,
              3.666068,
              -2.198749,
              0.777135,
              4.094062,
              2.319559,
              -3.47555,
              4.14242,
              2.980057,
              2.427052,
              1.818615,
              1.730599,
              1.677122,
              2.658519,
              -0.280146,
              3.154533,
              1.748972,
              2.351419,
              4.076237,
              2.568732,
              -1.264035,
              3.200765,
              3.449224,
              0.585744,
              -0.473047,
              -2.356355,
              4.16641,
              -3.210486,
              -3.635826,
              4.180269,
              1.999342,
              0.012672,
              -2.926977,
              2.633553,
              4.098287,
              -1.875523,
              3.152828,
              -1.732909,
              3.332469,
              2.264806,
              4.11961,
              -3.283029,
              0.724531,
              0.866369,
              3.964669,
              -1.807547,
              0.789541,
              0.17487,
              4.137106,
              1.719706,
              0.355702,
              4.153984,
              3.666644,
              2.023583,
              0.27805,
              -1.598288,
              0.044719,
              1.080854,
              -0.948727,
              4.167475,
              3.262649,
              1.499097,
              2.756476,
              0.268492,
              -0.916188,
              1.87262,
              3.083072,
              1.837215,
              1.575325,
              4.091336,
              2.726546,
              2.132701
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "rank_score": 109.195892
          },
          {
            "name": "mapped_lsb_within_each_tone+no_interleaver",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'none'}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000000000000000010000010110000100000011101000110010000010010000100000000110110110000000000000000000000110000000100000010100100010100000010010000100010000010000100100000000",
            "hard_bits_sha256_16": "1caf67e82a3cc0f1",
            "hard_weight_174": 36,
            "llr_full_174": [
              3.511245,
              4.116374,
              4.145349,
              4.14242,
              4.169674,
              4.180269,
              4.12139,
              4.153984,
              4.168008,
              4.11961,
              4.135428,
              4.168076,
              4.08862,
              4.076237,
              4.07648,
              3.003457,
              2.742424,
              2.756476,
              1.978199,
              -1.875523,
              2.955568,
              1.080854,
              0.652185,
              2.658519,
              1.333744,
              -2.198749,
              3.045159,
              -0.473047,
              0.471669,
              0.789541,
              1.942431,
              1.837215,
              2.454295,
              -2.926977,
              2.163158,
              3.352145,
              2.678266,
              1.818615,
              3.300296,
              0.507303,
              -1.765651,
              0.27805,
              -0.118003,
              0.866369,
              0.384955,
              1.87262,
              2.063815,
              3.200765,
              -1.599648,
              -1.355162,
              1.0381,
              1.748972,
              -2.249717,
              3.332469,
              3.617447,
              3.262649,
              3.56793,
              1.719706,
              -1.211827,
              2.319559,
              3.575036,
              -3.210486,
              3.019019,
              1.361861,
              0.281133,
              2.726546,
              -0.477879,
              0.012672,
              0.844266,
              2.023583,
              0.927501,
              2.427052,
              1.473774,
              0.441842,
              1.640172,
              -1.264035,
              -1.103418,
              0.724531,
              -0.820746,
              -0.916188,
              0.966046,
              -1.732909,
              -1.395798,
              2.920695,
              1.694026,
              3.154533,
              4.123045,
              4.094062,
              4.14333,
              4.167475,
              4.073255,
              4.137106,
              4.166411,
              4.091336,
              4.1509,
              4.16641,
              3.8423,
              4.045318,
              4.16914,
              1.677122,
              3.599922,
              4.098287,
              2.01941,
              0.044719,
              3.447718,
              -1.807547,
              -1.085865,
              3.666068,
              2.065345,
              0.585744,
              2.689748,
              1.346997,
              2.617179,
              3.083072,
              -0.571842,
              2.264806,
              2.548193,
              1.499097,
              1.247615,
              2.351419,
              3.593033,
              -3.47555,
              3.383096,
              -3.635826,
              2.45095,
              0.355702,
              -2.226011,
              2.132701,
              2.165497,
              1.999342,
              -1.921746,
              2.192378,
              -2.621792,
              2.980057,
              3.137893,
              1.582817,
              0.533081,
              3.666644,
              3.223063,
              -3.283029,
              3.285701,
              0.268492,
              -0.251398,
              2.568732,
              1.48451,
              1.692448,
              1.534973,
              -0.280146,
              0.300403,
              3.152828,
              1.008293,
              -0.948727,
              1.052121,
              0.17487,
              0.891886,
              0.777135,
              2.750596,
              -2.356355,
              2.402306,
              2.006609,
              0.833633,
              1.575325,
              -1.988459,
              2.633553,
              1.914037,
              -1.598288,
              1.570304,
              1.730599,
              1.642426,
              0.617935,
              4.421458,
              3.449224,
              3.566732,
              3.964669
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "rank_score": 109.195892
          },
          {
            "name": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "001000100001100000001000001001100000100000100100000000110001100000000000000000100011000011001000001011000001001000000010000001000001000000000111000000000100100000100001000000",
            "hard_bits_sha256_16": "c16db5c46eb49777",
            "hard_weight_174": 36,
            "llr_full_174": [
              3.511245,
              4.094062,
              0.384955,
              2.192378,
              0.652185,
              0.585744,
              -0.477879,
              0.17487,
              4.168076,
              4.16914,
              3.262649,
              -0.251398,
              -2.926977,
              3.593033,
              0.724531,
              1.914037,
              4.12139,
              4.091336,
              1.0381,
              3.666644,
              0.471669,
              2.264806,
              1.473774,
              2.006609,
              2.756476,
              3.447718,
              -3.210486,
              0.300403,
              0.507303,
              -2.226011,
              -1.395798,
              0.617935,
              4.14242,
              4.073255,
              3.200765,
              3.137893,
              -2.198749,
              2.617179,
              2.023583,
              2.750596,
              4.07648,
              4.098287,
              -1.211827,
              1.692448,
              2.678266,
              -3.635826,
              0.966046,
              1.730599,
              4.11961,
              3.8423,
              3.332469,
              3.285701,
              1.837215,
              1.247615,
              -1.264035,
              -1.988459,
              2.955568,
              3.666068,
              0.281133,
              -0.948727,
              -0.118003,
              1.999342,
              3.154533,
              3.566732,
              4.145349,
              4.167475,
              2.063815,
              2.980057,
              1.333744,
              1.346997,
              0.844266,
              0.777135,
              4.076237,
              3.599922,
              1.719706,
              1.48451,
              3.352145,
              3.383096,
              -0.916188,
              1.570304,
              4.168008,
              4.16641,
              -2.249717,
              -3.283029,
              1.942431,
              1.499097,
              1.640172,
              1.575325,
              -1.875523,
              -1.085865,
              1.361861,
              1.008293,
              0.27805,
              2.165497,
              1.694026,
              3.449224,
              4.180269,
              4.166411,
              -1.355162,
              0.533081,
              -0.473047,
              -0.571842,
              2.427052,
              2.402306,
              2.742424,
              0.044719,
              3.575036,
              -0.280146,
              3.300296,
              0.355702,
              -1.732909,
              1.642426,
              4.135428,
              4.045318,
              3.617447,
              0.268492,
              2.454295,
              2.351419,
              -1.103418,
              2.633553,
              1.080854,
              2.065345,
              2.726546,
              1.052121,
              0.866369,
              -1.921746,
              4.123045,
              3.964669,
              4.116374,
              4.14333,
              1.87262,
              -2.621792,
              2.658519,
              2.689748,
              0.012672,
              0.891886,
              4.08862,
              1.677122,
              3.56793,
              2.568732,
              2.163158,
              -3.47555,
              -0.820746,
              -1.598288,
              4.153984,
              4.1509,
              1.748972,
              3.223063,
              0.789541,
              2.548193,
              0.441842,
              0.833633,
              1.978199,
              -1.807547,
              3.019019,
              3.152828,
              -1.765651,
              2.132701,
              2.920695,
              4.421458,
              4.169674,
              4.137106,
              -1.599648,
              1.582817,
              3.045159,
              3.083072,
              0.927501,
              -2.356355,
              3.003457,
              2.01941,
              2.319559,
              1.534973,
              1.818615,
              2.45095
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "rank_score": 109.195892
          },
          {
            "name": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000000100001000000001000000010001100100000110100010100010100010000000000000110000001000100001100001011000100001000000000000010100000001100001100010001000000010000010000000",
            "hard_bits_sha256_16": "2349237a6c1ad4a1",
            "hard_weight_174": 36,
            "llr_full_174": [
              3.511245,
              2.165497,
              0.281133,
              2.454295,
              0.833633,
              3.8423,
              2.742424,
              1.48451,
              0.966046,
              -1.599648,
              2.617179,
              4.168008,
              0.533081,
              1.473774,
              -1.765651,
              1.642426,
              3.447718,
              1.333744,
              1.052121,
              4.14333,
              3.56793,
              3.593033,
              4.169674,
              -2.621792,
              0.844266,
              2.678266,
              1.914037,
              3.599922,
              2.955568,
              0.300403,
              1.694026,
              -2.249717,
              2.548193,
              4.08862,
              3.285701,
              -1.103418,
              0.384955,
              3.566732,
              2.065345,
              0.471669,
              2.750596,
              4.166411,
              3.575036,
              2.45095,
              4.145349,
              -1.921746,
              -0.477879,
              2.163158,
              -1.988459,
              4.16914,
              1.978199,
              1.534973,
              -1.395798,
              1.0381,
              -0.571842,
              4.135428,
              3.223063,
              1.640172,
              -0.118003,
              4.421458,
              -1.085865,
              3.045159,
              0.891886,
              4.073255,
              -1.211827,
              3.383096,
              4.12139,
              3.137893,
              0.927501,
              3.300296,
              1.570304,
              2.01941,
              0.652185,
              1.008293,
              4.123045,
              3.617447,
              1.247615,
              4.07648,
              -0.251398,
              -0.820746,
              2.063815,
              2.689748,
              1.942431,
              2.402306,
              4.1509,
              3.019019,
              -2.226011,
              4.116374,
              1.999342,
              2.726546,
              -2.926977,
              1.575325,
              4.045318,
              2.756476,
              1.692448,
              -1.732909,
              -1.355162,
              3.083072,
              4.11961,
              3.666644,
              0.441842,
              0.27805,
              0.617935,
              -1.807547,
              -2.198749,
              0.17487,
              4.167475,
              1.719706,
              -3.47555,
              4.180269,
              2.980057,
              2.023583,
              1.818615,
              -1.598288,
              4.098287,
              1.080854,
              3.152828,
              3.154533,
              3.332469,
              1.499097,
              4.076237,
              0.268492,
              0.724531,
              1.87262,
              3.964669,
              0.585744,
              0.789541,
              -2.356355,
              4.091336,
              -3.210486,
              0.355702,
              4.14242,
              2.192378,
              0.012672,
              3.352145,
              2.633553,
              1.677122,
              -1.875523,
              -0.280146,
              2.920695,
              1.748972,
              2.264806,
              4.168076,
              -3.283029,
              -1.264035,
              0.866369,
              3.449224,
              3.666068,
              -0.473047,
              0.777135,
              4.137106,
              2.319559,
              -3.635826,
              4.153984,
              1.582817,
              2.427052,
              0.507303,
              1.730599,
              0.044719,
              2.658519,
              -0.948727,
              4.094062,
              3.262649,
              2.351419,
              3.003457,
              2.568732,
              -0.916188,
              3.200765,
              1.346997,
              1.837215,
              2.006609,
              4.16641,
              1.361861,
              2.132701
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "rank_score": 109.195892
          },
          {
            "name": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000000000000000011000011010000001000101100000010011000011011000001000000010010010000000000000000000000010000000001000011001001011001000011011000001011000011000001001000000",
            "hard_bits_sha256_16": "df16269c1fa0fa06",
            "hard_weight_174": 40,
            "llr_full_174": [
              4.145349,
              3.452473,
              3.086486,
              4.180269,
              3.489968,
              3.470833,
              4.168008,
              3.476142,
              3.45256,
              4.168076,
              3.466732,
              3.442433,
              4.07648,
              3.391909,
              3.398004,
              2.756476,
              2.085357,
              2.201863,
              2.955568,
              -1.622839,
              -1.279105,
              2.658519,
              0.584512,
              0.334781,
              3.045159,
              -1.913077,
              -1.05028,
              0.789541,
              0.355787,
              0.070686,
              2.454295,
              1.465874,
              1.259168,
              3.352145,
              2.148484,
              -1.593118,
              3.300296,
              1.631791,
              1.487633,
              0.27805,
              -0.679046,
              -0.859382,
              0.384955,
              0.516186,
              0.304115,
              3.200765,
              1.8241,
              1.313865,
              1.0381,
              -1.202946,
              0.271605,
              3.332469,
              -2.000617,
              -1.317992,
              3.56793,
              2.723053,
              2.74392,
              2.319559,
              -0.99225,
              -0.827198,
              3.019019,
              -2.4347,
              -2.703961,
              2.726546,
              0.253328,
              0.172804,
              0.844266,
              0.009756,
              0.001731,
              2.427052,
              0.7793,
              0.708649,
              1.640172,
              0.322631,
              0.301313,
              0.724531,
              -0.918917,
              0.050637,
              0.966046,
              -0.745342,
              0.005093,
              2.920695,
              -1.36693,
              0.77557,
              4.123045,
              2.877556,
              1.508338,
              4.167475,
              3.470682,
              3.433481,
              4.166411,
              3.467154,
              3.419835,
              4.16641,
              3.474034,
              3.435811,
              4.16914,
              3.422479,
              3.254487,
              4.098287,
              3.187851,
              1.562671,
              3.447718,
              0.042283,
              0.03456,
              3.666068,
              -1.076662,
              0.695554,
              2.689748,
              0.516457,
              0.457348,
              3.083072,
              2.218749,
              1.160866,
              2.548193,
              2.037409,
              -0.303721,
              2.351419,
              1.033145,
              0.774902,
              3.383096,
              -2.750704,
              -2.856231,
              0.355702,
              2.334924,
              -0.246542,
              2.165497,
              2.051906,
              -1.067205,
              2.192378,
              -1.42718,
              -1.339671,
              3.137893,
              2.926083,
              -1.778059,
              3.666644,
              0.510044,
              0.351311,
              3.285701,
              -2.612578,
              -2.58036,
              2.568732,
              -0.230927,
              -0.048807,
              1.534973,
              1.07191,
              1.044958,
              3.152828,
              0.289654,
              -0.027576,
              1.052121,
              -0.562778,
              -0.546582,
              0.777135,
              0.565054,
              0.316264,
              2.402306,
              -1.726242,
              -1.882543,
              1.575325,
              0.564689,
              0.656222,
              1.914037,
              2.436748,
              -0.998732,
              1.730599,
              1.457999,
              -0.555668,
              4.421458,
              0.604867,
              0.41283,
              3.964669,
              3.066087,
              2.824202
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 1.927169,
              "min_abs": 0.001731,
              "max_abs": 4.421458,
              "positive": 137,
              "negative": 37,
              "zero": 0
            },
            "rank_score": 107.708676
          },
          {
            "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "description": "Step 38 mapped LDPC candidate: {'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,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000100000001000100001000001010100001100000100001001100001001100000000010000011100011000011001100001000010000010000000010000101000000000000010100000001000011000000001001001000",
            "hard_bits_sha256_16": "ae82c24c7b38f3d2",
            "hard_weight_174": 40,
            "llr_full_174": [
              4.145349,
              4.167475,
              0.304115,
              -1.339671,
              0.584512,
              0.516457,
              0.844266,
              0.777135,
              3.442433,
              3.254487,
              2.723053,
              -0.230927,
              3.352145,
              3.383096,
              0.050637,
              -0.998732,
              4.168008,
              4.16641,
              0.271605,
              0.351311,
              0.355787,
              2.037409,
              1.640172,
              1.575325,
              2.201863,
              0.03456,
              -2.4347,
              0.289654,
              0.27805,
              2.165497,
              -1.36693,
              0.604867,
              4.180269,
              4.166411,
              1.313865,
              -1.778059,
              -1.913077,
              2.218749,
              2.427052,
              2.402306,
              3.398004,
              1.562671,
              -0.99225,
              1.07191,
              3.300296,
              0.355702,
              0.005093,
              -0.555668,
              4.168076,
              4.16914,
              -1.317992,
              -2.58036,
              1.465874,
              1.033145,
              0.724531,
              1.914037,
              -1.279105,
              0.695554,
              0.253328,
              -0.562778,
              0.384955,
              2.192378,
              2.877556,
              3.066087,
              3.086486,
              3.433481,
              1.8241,
              2.926083,
              3.045159,
              3.083072,
              0.001731,
              0.316264,
              3.391909,
              3.187851,
              2.319559,
              1.534973,
              -1.593118,
              -2.856231,
              -0.745342,
              1.457999,
              3.45256,
              3.435811,
              -2.000617,
              -2.612578,
              2.454295,
              2.351419,
              0.301313,
              0.656222,
              -1.622839,
              -1.076662,
              2.726546,
              1.052121,
              -0.859382,
              -1.067205,
              4.123045,
              3.964669,
              3.470833,
              3.419835,
              -1.202946,
              0.510044,
              0.789541,
              2.548193,
              0.708649,
              -1.882543,
              2.085357,
              0.042283,
              3.019019,
              3.152828,
              1.487633,
              -0.246542,
              2.920695,
              4.421458,
              3.466732,
              3.422479,
              3.56793,
              2.568732,
              1.259168,
              0.774902,
              -0.918917,
              2.436748,
              2.658519,
              2.689748,
              0.172804,
              -0.546582,
              0.516186,
              -1.42718,
              1.508338,
              2.824202,
              3.452473,
              3.470682,
              3.200765,
              3.137893,
              0.334781,
              0.457348,
              0.009756,
              0.565054,
              4.07648,
              4.098287,
              2.74392,
              -0.048807,
              2.148484,
              -2.750704,
              0.966046,
              1.730599,
              3.476142,
              3.474034,
              3.332469,
              3.285701,
              0.070686,
              -0.303721,
              0.322631,
              0.564689,
              2.955568,
              3.666068,
              -2.703961,
              -0.027576,
              -0.679046,
              2.051906,
              0.77557,
              0.41283,
              3.489968,
              3.467154,
              1.0381,
              3.666644,
              -1.05028,
              1.160866,
              0.7793,
              -1.726242,
              2.756476,
              3.447718,
              -0.827198,
              1.044958,
              1.631791,
              2.334924
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 1.927169,
              "min_abs": 0.001731,
              "max_abs": 4.421458,
              "positive": 137,
              "negative": 37,
              "zero": 0
            },
            "rank_score": 107.708676
          },
          {
            "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "010000000000000000100000101010011011000100000100000010000010110011010000000000100001010000000000100001001000100000001010000000010110101001000001000000010000110010000110000000",
            "hard_bits_sha256_16": "295f8a69db86c215",
            "hard_weight_174": 40,
            "llr_full_174": [
              4.145349,
              -1.067205,
              0.253328,
              1.259168,
              0.564689,
              4.16914,
              2.085357,
              1.534973,
              0.005093,
              1.0381,
              2.218749,
              3.45256,
              0.510044,
              1.640172,
              -0.679046,
              4.421458,
              0.03456,
              3.045159,
              -0.546582,
              3.470682,
              2.74392,
              3.383096,
              3.489968,
              3.137893,
              0.001731,
              3.300296,
              -0.998732,
              3.187851,
              -1.279105,
              0.289654,
              4.123045,
              -2.000617,
              -0.303721,
              4.07648,
              -2.58036,
              -0.918917,
              0.304115,
              3.066087,
              2.689748,
              0.355787,
              2.402306,
              3.419835,
              3.019019,
              2.334924,
              3.086486,
              -1.42718,
              0.844266,
              2.148484,
              1.914037,
              3.254487,
              2.955568,
              1.044958,
              -1.36693,
              0.271605,
              2.548193,
              3.466732,
              3.285701,
              0.301313,
              0.384955,
              0.41283,
              -1.076662,
              -1.05028,
              0.565054,
              4.166411,
              -0.99225,
              -2.856231,
              4.168008,
              -1.778059,
              0.7793,
              1.487633,
              1.457999,
              3.447718,
              0.584512,
              1.052121,
              1.508338,
              3.56793,
              1.033145,
              3.398004,
              -0.230927,
              0.966046,
              1.8241,
              0.457348,
              2.454295,
              -1.882543,
              3.474034,
              -2.703961,
              2.165497,
              3.452473,
              2.192378,
              0.172804,
              3.352145,
              0.656222,
              3.422479,
              2.201863,
              1.07191,
              2.920695,
              -1.202946,
              1.160866,
              4.168076,
              0.351311,
              0.322631,
              -0.859382,
              0.604867,
              3.666068,
              -1.913077,
              0.777135,
              3.433481,
              2.319559,
              -2.750704,
              3.470833,
              2.926083,
              2.427052,
              1.631791,
              1.730599,
              1.562671,
              2.658519,
              -0.027576,
              2.877556,
              -1.317992,
              2.351419,
              3.391909,
              2.568732,
              0.050637,
              3.200765,
              2.824202,
              0.516457,
              0.070686,
              -1.726242,
              4.16641,
              -2.4347,
              -0.246542,
              4.180269,
              -1.339671,
              0.009756,
              -1.593118,
              2.436748,
              4.098287,
              -1.622839,
              3.152828,
              0.77557,
              3.332469,
              2.037409,
              3.442433,
              -2.612578,
              0.724531,
              0.516186,
              3.964669,
              0.695554,
              0.789541,
              0.316264,
              3.467154,
              -0.827198,
              0.355702,
              3.476142,
              3.666644,
              0.708649,
              0.27805,
              -0.555668,
              0.042283,
              0.334781,
              -0.562778,
              4.167475,
              2.723053,
              0.774902,
              2.756476,
              -0.048807,
              -0.745342,
              1.313865,
              3.083072,
              1.465874,
              1.575325,
              3.435811,
              2.726546,
              2.051906
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 1.927169,
              "min_abs": 0.001731,
              "max_abs": 4.421458,
              "positive": 137,
              "negative": 37,
              "zero": 0
            },
            "rank_score": 107.708676
          },
          {
            "name": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000000000000000011000011010000001000101111000010011000011011000001000000010010010000000000000000000000010000000001000011001001011001000011011000001011000011000001001000000",
            "hard_bits_sha256_16": "ca523696fc2e0440",
            "hard_weight_174": 42,
            "llr_full_174": [
              4.145349,
              3.437868,
              3.076058,
              4.180269,
              3.482047,
              3.463052,
              4.168008,
              3.468067,
              3.444662,
              4.168076,
              3.458719,
              3.4346,
              4.07648,
              3.383499,
              3.389547,
              2.756476,
              2.060361,
              2.174491,
              2.955568,
              -1.591113,
              -1.253376,
              2.658519,
              0.56185,
              0.31333,
              3.045159,
              -1.847073,
              -1.011161,
              0.789541,
              0.174324,
              -0.107643,
              2.454295,
              1.419337,
              1.217867,
              3.352145,
              1.901332,
              -1.786838,
              3.300296,
              1.619799,
              1.476712,
              0.27805,
              -0.196181,
              -0.355267,
              0.384955,
              0.155455,
              -0.048096,
              3.200765,
              1.790739,
              1.289837,
              1.0381,
              -0.578368,
              0.827582,
              3.332469,
              -1.961803,
              -1.29335,
              3.56793,
              2.711617,
              2.732275,
              2.319559,
              -0.955261,
              -0.79266,
              3.019019,
              -2.418998,
              -2.684222,
              2.726546,
              0.246221,
              0.165756,
              0.844266,
              0.005053,
              -0.002971,
              2.427052,
              0.760335,
              0.690148,
              1.640172,
              0.29567,
              0.274437,
              0.724531,
              -0.352049,
              0.576942,
              0.966046,
              -0.389375,
              0.336351,
              2.920695,
              -1.212139,
              0.899911,
              4.123045,
              2.833396,
              1.4931,
              4.167475,
              3.462428,
              3.42551,
              4.166411,
              3.458752,
              3.411796,
              4.16641,
              3.465722,
              3.427791,
              4.16914,
              3.412437,
              3.245894,
              4.098287,
              3.125681,
              1.545767,
              3.447718,
              0.04196,
              0.034236,
              3.666068,
              -1.021437,
              0.743729,
              2.689748,
              0.507762,
              0.448774,
              3.083072,
              2.133428,
              1.118333,
              2.548193,
              1.711438,
              -0.459934,
              2.351419,
              0.988211,
              0.73449,
              3.383096,
              -2.736158,
              -2.840271,
              0.355702,
              0.298316,
              -2.186416,
              2.165497,
              1.469319,
              -1.497835,
              2.192378,
              -1.370996,
              -1.28627,
              3.137893,
              2.364918,
              -2.095502,
              3.666644,
              0.505329,
              0.346751,
              3.285701,
              -2.59262,
              -2.560943,
              2.568732,
              -0.215309,
              -0.033375,
              1.534973,
              0.95636,
              0.930803,
              3.152828,
              0.275455,
              -0.0415,
              1.052121,
              -0.432768,
              -0.417069,
              0.777135,
              0.312353,
              0.07304,
              2.402306,
              -1.69446,
              -1.847061,
              1.575325,
              0.530183,
              0.620799,
              1.914037,
              1.527821,
              -1.576503,
              1.730599,
              0.990283,
              -0.932253,
              4.421458,
              0.602345,
              0.410424,
              3.964669,
              3.053424,
              2.814003
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 1.894503,
              "min_abs": 0.002971,
              "max_abs": 4.421458,
              "positive": 134,
              "negative": 40,
              "zero": 0
            },
            "rank_score": 107.578012
          },
          {
            "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "description": "Step 38 mapped LDPC candidate: {'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,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "001100000001000100001000001010100001100000100001001100001001100000000010000011100011000011001100001000010000010000000010000111000000000000010100000001000011000000001001001000",
            "hard_bits_sha256_16": "2663b8086b53d8ff",
            "hard_weight_174": 42,
            "llr_full_174": [
              4.145349,
              4.167475,
              -0.048096,
              -1.28627,
              0.56185,
              0.507762,
              0.844266,
              0.777135,
              3.4346,
              3.245894,
              2.711617,
              -0.215309,
              3.352145,
              3.383096,
              0.576942,
              -1.576503,
              4.168008,
              4.16641,
              0.827582,
              0.346751,
              0.174324,
              1.711438,
              1.640172,
              1.575325,
              2.174491,
              0.034236,
              -2.418998,
              0.275455,
              0.27805,
              2.165497,
              -1.212139,
              0.602345,
              4.180269,
              4.166411,
              1.289837,
              -2.095502,
              -1.847073,
              2.133428,
              2.427052,
              2.402306,
              3.389547,
              1.545767,
              -0.955261,
              0.95636,
              3.300296,
              0.355702,
              0.336351,
              -0.932253,
              4.168076,
              4.16914,
              -1.29335,
              -2.560943,
              1.419337,
              0.988211,
              0.724531,
              1.914037,
              -1.253376,
              0.743729,
              0.246221,
              -0.432768,
              0.384955,
              2.192378,
              2.833396,
              3.053424,
              3.076058,
              3.42551,
              1.790739,
              2.364918,
              3.045159,
              3.083072,
              -0.002971,
              0.07304,
              3.383499,
              3.125681,
              2.319559,
              1.534973,
              -1.786838,
              -2.840271,
              -0.389375,
              0.990283,
              3.444662,
              3.427791,
              -1.961803,
              -2.59262,
              2.454295,
              2.351419,
              0.274437,
              0.620799,
              -1.591113,
              -1.021437,
              2.726546,
              1.052121,
              -0.355267,
              -1.497835,
              4.123045,
              3.964669,
              3.463052,
              3.411796,
              -0.578368,
              0.505329,
              0.789541,
              2.548193,
              0.690148,
              -1.847061,
              2.060361,
              0.04196,
              3.019019,
              3.152828,
              1.476712,
              -2.186416,
              2.920695,
              4.421458,
              3.458719,
              3.412437,
              3.56793,
              2.568732,
              1.217867,
              0.73449,
              -0.352049,
              1.527821,
              2.658519,
              2.689748,
              0.165756,
              -0.417069,
              0.155455,
              -1.370996,
              1.4931,
              2.814003,
              3.437868,
              3.462428,
              3.200765,
              3.137893,
              0.31333,
              0.448774,
              0.005053,
              0.312353,
              4.07648,
              4.098287,
              2.732275,
              -0.033375,
              1.901332,
              -2.736158,
              0.966046,
              1.730599,
              3.468067,
              3.465722,
              3.332469,
              3.285701,
              -0.107643,
              -0.459934,
              0.29567,
              0.530183,
              2.955568,
              3.666068,
              -2.684222,
              -0.0415,
              -0.196181,
              1.469319,
              0.899911,
              0.410424,
              3.482047,
              3.458752,
              1.0381,
              3.666644,
              -1.011161,
              1.118333,
              0.760335,
              -1.69446,
              2.756476,
              3.447718,
              -0.79266,
              0.930803,
              1.619799,
              0.298316
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 1.894503,
              "min_abs": 0.002971,
              "max_abs": 4.421458,
              "positive": 134,
              "negative": 40,
              "zero": 0
            },
            "rank_score": 107.578012
          },
          {
            "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "010000000000000000100000101010011011100100000100000010000010110011010000000000100001010000000000100001001000100000001010000000010110101001000001010000010000110010000110000000",
            "hard_bits_sha256_16": "cd7e0a7d331a9605",
            "hard_weight_174": 42,
            "llr_full_174": [
              4.145349,
              -1.497835,
              0.246221,
              1.217867,
              0.530183,
              4.16914,
              2.060361,
              1.534973,
              0.336351,
              1.0381,
              2.133428,
              3.444662,
              0.505329,
              1.640172,
              -0.196181,
              4.421458,
              0.034236,
              3.045159,
              -0.417069,
              3.462428,
              2.732275,
              3.383096,
              3.482047,
              3.137893,
              -0.002971,
              3.300296,
              -1.576503,
              3.125681,
              -1.253376,
              0.275455,
              4.123045,
              -1.961803,
              -0.459934,
              4.07648,
              -2.560943,
              -0.352049,
              -0.048096,
              3.053424,
              2.689748,
              0.174324,
              2.402306,
              3.411796,
              3.019019,
              0.298316,
              3.076058,
              -1.370996,
              0.844266,
              1.901332,
              1.914037,
              3.245894,
              2.955568,
              0.930803,
              -1.212139,
              0.827582,
              2.548193,
              3.458719,
              3.285701,
              0.274437,
              0.384955,
              0.410424,
              -1.021437,
              -1.011161,
              0.312353,
              4.166411,
              -0.955261,
              -2.840271,
              4.168008,
              -2.095502,
              0.760335,
              1.476712,
              0.990283,
              3.447718,
              0.56185,
              1.052121,
              1.4931,
              3.56793,
              0.988211,
              3.389547,
              -0.215309,
              0.966046,
              1.790739,
              0.448774,
              2.454295,
              -1.847061,
              3.465722,
              -2.684222,
              2.165497,
              3.437868,
              2.192378,
              0.165756,
              3.352145,
              0.620799,
              3.412437,
              2.174491,
              0.95636,
              2.920695,
              -0.578368,
              1.118333,
              4.168076,
              0.346751,
              0.29567,
              -0.355267,
              0.602345,
              3.666068,
              -1.847073,
              0.777135,
              3.42551,
              2.319559,
              -2.736158,
              3.463052,
              2.364918,
              2.427052,
              1.619799,
              1.730599,
              1.545767,
              2.658519,
              -0.0415,
              2.833396,
              -1.29335,
              2.351419,
              3.383499,
              2.568732,
              0.576942,
              3.200765,
              2.814003,
              0.507762,
              -0.107643,
              -1.69446,
              4.16641,
              -2.418998,
              -2.186416,
              4.180269,
              -1.28627,
              0.005053,
              -1.786838,
              1.527821,
              4.098287,
              -1.591113,
              3.152828,
              0.899911,
              3.332469,
              1.711438,
              3.4346,
              -2.59262,
              0.724531,
              0.155455,
              3.964669,
              0.743729,
              0.789541,
              0.07304,
              3.458752,
              -0.79266,
              0.355702,
              3.468067,
              3.666644,
              0.690148,
              0.27805,
              -0.932253,
              0.04196,
              0.31333,
              -0.432768,
              4.167475,
              2.711617,
              0.73449,
              2.756476,
              -0.033375,
              -0.389375,
              1.289837,
              3.083072,
              1.419337,
              1.575325,
              3.427791,
              2.726546,
              1.469319
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 1.894503,
              "min_abs": 0.002971,
              "max_abs": 4.421458,
              "positive": 134,
              "negative": 40,
              "zero": 0
            },
            "rank_score": 107.578012
          },
          {
            "name": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000000000000000011000011101000110000010100000101011000011011000110000000101101101000000000000000000000101000000110000011110110011110000011011000110011000011000110110000000",
            "hard_bits_sha256_16": "11a8af0598c33a55",
            "hard_weight_174": 54,
            "llr_full_174": [
              3.511245,
              3.086486,
              3.452473,
              4.14242,
              3.470833,
              3.489968,
              4.12139,
              3.45256,
              3.476142,
              4.11961,
              3.442433,
              3.466732,
              4.08862,
              3.398004,
              3.391909,
              3.003457,
              2.201863,
              2.085357,
              1.978199,
              -1.279105,
              -1.622839,
              1.080854,
              0.334781,
              0.584512,
              1.333744,
              -1.05028,
              -1.913077,
              -0.473047,
              0.070686,
              0.355787,
              1.942431,
              1.259168,
              1.465874,
              -2.926977,
              -1.593118,
              2.148484,
              2.678266,
              1.487633,
              1.631791,
              0.507303,
              -0.859382,
              -0.679046,
              -0.118003,
              0.304115,
              0.516186,
              1.87262,
              1.313865,
              1.8241,
              -1.599648,
              0.271605,
              -1.202946,
              1.748972,
              -1.317992,
              -2.000617,
              3.617447,
              2.74392,
              2.723053,
              1.719706,
              -0.827198,
              -0.99225,
              3.575036,
              -2.703961,
              -2.4347,
              1.361861,
              0.172804,
              0.253328,
              -0.477879,
              0.001731,
              0.009756,
              2.023583,
              0.708649,
              0.7793,
              1.473774,
              0.301313,
              0.322631,
              -1.264035,
              0.050637,
              -0.918917,
              -0.820746,
              0.005093,
              -0.745342,
              -1.732909,
              0.77557,
              -1.36693,
              1.694026,
              1.508338,
              2.877556,
              4.094062,
              3.433481,
              3.470682,
              4.073255,
              3.419835,
              3.467154,
              4.091336,
              3.435811,
              3.474034,
              3.8423,
              3.254487,
              3.422479,
              1.677122,
              1.562671,
              3.187851,
              2.01941,
              0.03456,
              0.042283,
              -1.807547,
              0.695554,
              -1.076662,
              2.065345,
              0.457348,
              0.516457,
              1.346997,
              1.160866,
              2.218749,
              -0.571842,
              -0.303721,
              2.037409,
              1.499097,
              0.774902,
              1.033145,
              3.593033,
              -2.856231,
              -2.750704,
              -3.635826,
              -0.246542,
              2.334924,
              -2.226011,
              -1.067205,
              2.051906,
              1.999342,
              -1.339671,
              -1.42718,
              -2.621792,
              -1.778059,
              2.926083,
              1.582817,
              0.351311,
              0.510044,
              3.223063,
              -2.58036,
              -2.612578,
              0.268492,
              -0.048807,
              -0.230927,
              1.48451,
              1.044958,
              1.07191,
              -0.280146,
              -0.027576,
              0.289654,
              1.008293,
              -0.546582,
              -0.562778,
              0.17487,
              0.316264,
              0.565054,
              2.750596,
              -1.882543,
              -1.726242,
              2.006609,
              0.656222,
              0.564689,
              -1.988459,
              -0.998732,
              2.436748,
              -1.598288,
              -0.555668,
              1.457999,
              1.642426,
              0.41283,
              0.604867,
              3.449224,
              2.824202,
              3.066087
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 1.733097,
              "min_abs": 0.001731,
              "max_abs": 4.14242,
              "positive": 121,
              "negative": 53,
              "zero": 0
            },
            "rank_score": 106.932388
          },
          {
            "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "description": "Step 38 mapped LDPC candidate: {'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,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000100100001101000100100001101000000100000100110001100111101100000010000000001010011000010000000000011010001001000000001000101000001001000011111000010000110111000101001001001",
            "hard_bits_sha256_16": "cf6690c1042ed612",
            "hard_weight_174": 54,
            "llr_full_174": [
              3.511245,
              4.094062,
              0.516186,
              -1.42718,
              0.334781,
              0.457348,
              -0.477879,
              0.17487,
              3.466732,
              3.422479,
              2.74392,
              -0.048807,
              -2.926977,
              3.593033,
              -0.918917,
              2.436748,
              4.12139,
              4.091336,
              -1.202946,
              0.510044,
              0.070686,
              -0.303721,
              1.473774,
              2.006609,
              2.085357,
              0.042283,
              -2.703961,
              -0.027576,
              0.507303,
              -2.226011,
              0.77557,
              0.41283,
              4.14242,
              4.073255,
              1.8241,
              2.926083,
              -1.05028,
              1.160866,
              2.023583,
              2.750596,
              3.391909,
              3.187851,
              -0.827198,
              1.044958,
              2.678266,
              -3.635826,
              -0.745342,
              1.457999,
              4.11961,
              3.8423,
              -2.000617,
              -2.612578,
              1.259168,
              0.774902,
              -1.264035,
              -1.988459,
              -1.622839,
              -1.076662,
              0.172804,
              -0.546582,
              -0.118003,
              1.999342,
              1.508338,
              2.824202,
              3.452473,
              3.470682,
              1.313865,
              -1.778059,
              1.333744,
              1.346997,
              0.009756,
              0.565054,
              3.398004,
              1.562671,
              1.719706,
              1.48451,
              2.148484,
              -2.750704,
              0.005093,
              -0.555668,
              3.476142,
              3.474034,
              -1.317992,
              -2.58036,
              1.942431,
              1.499097,
              0.322631,
              0.564689,
              -1.279105,
              0.695554,
              1.361861,
              1.008293,
              -0.679046,
              2.051906,
              1.694026,
              3.449224,
              3.489968,
              3.467154,
              0.271605,
              0.351311,
              -0.473047,
              -0.571842,
              0.7793,
              -1.726242,
              2.201863,
              0.03456,
              3.575036,
              -0.280146,
              1.631791,
              2.334924,
              -1.732909,
              1.642426,
              3.442433,
              3.254487,
              3.617447,
              0.268492,
              1.465874,
              1.033145,
              0.050637,
              -0.998732,
              1.080854,
              2.065345,
              0.253328,
              -0.562778,
              0.304115,
              -1.339671,
              2.877556,
              3.066087,
              3.086486,
              3.433481,
              1.87262,
              -2.621792,
              0.584512,
              0.516457,
              0.001731,
              0.316264,
              4.08862,
              1.677122,
              2.723053,
              -0.230927,
              -1.593118,
              -2.856231,
              -0.820746,
              -1.598288,
              3.45256,
              3.435811,
              1.748972,
              3.223063,
              0.355787,
              2.037409,
              0.301313,
              0.656222,
              1.978199,
              -1.807547,
              -2.4347,
              0.289654,
              -0.859382,
              -1.067205,
              -1.36693,
              0.604867,
              3.470833,
              3.419835,
              -1.599648,
              1.582817,
              -1.913077,
              2.218749,
              0.708649,
              -1.882543,
              3.003457,
              2.01941,
              -0.99225,
              1.07191,
              1.487633,
              -0.246542
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 1.733097,
              "min_abs": 0.001731,
              "max_abs": 4.14242,
              "positive": 121,
              "negative": 53,
              "zero": 0
            },
            "rank_score": 106.932388
          },
          {
            "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "description": "Step 38 mapped LDPC candidate: {'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,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000001100001000100001000011010010000000010111100001100010010011000010000000110001011000100001000000011000101001000010001000110100110101110101100110011000000010000100000001",
            "hard_bits_sha256_16": "677c5f0295abfd3d",
            "hard_weight_174": 54,
            "llr_full_174": [
              3.511245,
              2.051906,
              0.172804,
              1.465874,
              0.656222,
              3.8423,
              2.201863,
              1.48451,
              -0.745342,
              -1.599648,
              1.160866,
              3.476142,
              0.351311,
              1.473774,
              -0.859382,
              1.642426,
              0.042283,
              1.333744,
              -0.562778,
              3.433481,
              2.723053,
              3.593033,
              3.470833,
              -2.621792,
              0.009756,
              2.678266,
              2.436748,
              1.562671,
              -1.622839,
              -0.027576,
              1.694026,
              -1.317992,
              2.037409,
              4.08862,
              -2.612578,
              0.050637,
              0.516186,
              2.824202,
              2.065345,
              0.070686,
              2.750596,
              3.467154,
              3.575036,
              -0.246542,
              3.452473,
              -1.339671,
              -0.477879,
              -1.593118,
              -1.988459,
              3.422479,
              1.978199,
              1.07191,
              0.77557,
              -1.202946,
              -0.571842,
              3.442433,
              3.223063,
              0.322631,
              -0.118003,
              0.604867,
              0.695554,
              -1.913077,
              0.316264,
              4.073255,
              -0.827198,
              -2.750704,
              4.12139,
              2.926083,
              0.708649,
              1.631791,
              -0.555668,
              2.01941,
              0.334781,
              1.008293,
              2.877556,
              3.617447,
              0.774902,
              3.391909,
              -0.048807,
              -0.820746,
              1.313865,
              0.516457,
              1.942431,
              -1.726242,
              3.435811,
              -2.4347,
              -2.226011,
              3.086486,
              1.999342,
              0.253328,
              -2.926977,
              0.564689,
              3.254487,
              2.085357,
              1.044958,
              -1.732909,
              0.271605,
              2.218749,
              4.11961,
              0.510044,
              0.301313,
              -0.679046,
              0.41283,
              -1.807547,
              -1.05028,
              0.17487,
              3.470682,
              1.719706,
              -2.856231,
              3.489968,
              -1.778059,
              2.023583,
              1.487633,
              -1.598288,
              3.187851,
              1.080854,
              0.289654,
              1.508338,
              -2.000617,
              1.499097,
              3.398004,
              0.268492,
              -0.918917,
              1.87262,
              3.066087,
              0.457348,
              0.355787,
              -1.882543,
              4.091336,
              -2.703961,
              2.334924,
              4.14242,
              -1.42718,
              0.001731,
              2.148484,
              -0.998732,
              1.677122,
              -1.279105,
              -0.280146,
              -1.36693,
              1.748972,
              -0.303721,
              3.466732,
              -2.58036,
              -1.264035,
              0.304115,
              3.449224,
              -1.076662,
              -0.473047,
              0.565054,
              3.419835,
              -0.99225,
              -3.635826,
              3.45256,
              1.582817,
              0.7793,
              0.507303,
              1.457999,
              0.03456,
              0.584512,
              -0.546582,
              4.094062,
              2.74392,
              1.033145,
              3.003457,
              -0.230927,
              0.005093,
              1.8241,
              1.346997,
              1.259168,
              2.006609,
              3.474034,
              1.361861,
              -1.067205
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 1.733097,
              "min_abs": 0.001731,
              "max_abs": 4.14242,
              "positive": 121,
              "negative": 53,
              "zero": 0
            },
            "rank_score": 106.932388
          },
          {
            "name": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000000000000000011000011101000110000010111000101011000011011000110000000101101101000000000000000000000101000000110000011110110011110000011011000110011000011000110110000000",
            "hard_bits_sha256_16": "59ffe501f1e043cb",
            "hard_weight_174": 56,
            "llr_full_174": [
              3.511245,
              3.076058,
              3.437868,
              4.14242,
              3.463052,
              3.482047,
              4.12139,
              3.444662,
              3.468067,
              4.11961,
              3.4346,
              3.458719,
              4.08862,
              3.389547,
              3.383499,
              3.003457,
              2.174491,
              2.060361,
              1.978199,
              -1.253376,
              -1.591113,
              1.080854,
              0.31333,
              0.56185,
              1.333744,
              -1.011161,
              -1.847073,
              -0.473047,
              -0.107643,
              0.174324,
              1.942431,
              1.217867,
              1.419337,
              -2.926977,
              -1.786838,
              1.901332,
              2.678266,
              1.476712,
              1.619799,
              0.507303,
              -0.355267,
              -0.196181,
              -0.118003,
              -0.048096,
              0.155455,
              1.87262,
              1.289837,
              1.790739,
              -1.599648,
              0.827582,
              -0.578368,
              1.748972,
              -1.29335,
              -1.961803,
              3.617447,
              2.732275,
              2.711617,
              1.719706,
              -0.79266,
              -0.955261,
              3.575036,
              -2.684222,
              -2.418998,
              1.361861,
              0.165756,
              0.246221,
              -0.477879,
              -0.002971,
              0.005053,
              2.023583,
              0.690148,
              0.760335,
              1.473774,
              0.274437,
              0.29567,
              -1.264035,
              0.576942,
              -0.352049,
              -0.820746,
              0.336351,
              -0.389375,
              -1.732909,
              0.899911,
              -1.212139,
              1.694026,
              1.4931,
              2.833396,
              4.094062,
              3.42551,
              3.462428,
              4.073255,
              3.411796,
              3.458752,
              4.091336,
              3.427791,
              3.465722,
              3.8423,
              3.245894,
              3.412437,
              1.677122,
              1.545767,
              3.125681,
              2.01941,
              0.034236,
              0.04196,
              -1.807547,
              0.743729,
              -1.021437,
              2.065345,
              0.448774,
              0.507762,
              1.346997,
              1.118333,
              2.133428,
              -0.571842,
              -0.459934,
              1.711438,
              1.499097,
              0.73449,
              0.988211,
              3.593033,
              -2.840271,
              -2.736158,
              -3.635826,
              -2.186416,
              0.298316,
              -2.226011,
              -1.497835,
              1.469319,
              1.999342,
              -1.28627,
              -1.370996,
              -2.621792,
              -2.095502,
              2.364918,
              1.582817,
              0.346751,
              0.505329,
              3.223063,
              -2.560943,
              -2.59262,
              0.268492,
              -0.033375,
              -0.215309,
              1.48451,
              0.930803,
              0.95636,
              -0.280146,
              -0.0415,
              0.275455,
              1.008293,
              -0.417069,
              -0.432768,
              0.17487,
              0.07304,
              0.312353,
              2.750596,
              -1.847061,
              -1.69446,
              2.006609,
              0.620799,
              0.530183,
              -1.988459,
              -1.576503,
              1.527821,
              -1.598288,
              -0.932253,
              0.990283,
              1.642426,
              0.410424,
              0.602345,
              3.449224,
              2.814003,
              3.053424
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 1.700431,
              "min_abs": 0.002971,
              "max_abs": 4.14242,
              "positive": 118,
              "negative": 56,
              "zero": 0
            },
            "rank_score": 106.801724
          },
          {
            "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "description": "Step 38 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "001100100001101000100100001101000000100000100110001100111101100000010000000001010011000010000000000011010001001000000001000111000001001000011111000010000110111000101001001001",
            "hard_bits_sha256_16": "ff8640fb5870e924",
            "hard_weight_174": 56,
            "llr_full_174": [
              3.511245,
              4.094062,
              0.155455,
              -1.370996,
              0.31333,
              0.448774,
              -0.477879,
              0.17487,
              3.458719,
              3.412437,
              2.732275,
              -0.033375,
              -2.926977,
              3.593033,
              -0.352049,
              1.527821,
              4.12139,
              4.091336,
              -0.578368,
              0.505329,
              -0.107643,
              -0.459934,
              1.473774,
              2.006609,
              2.060361,
              0.04196,
              -2.684222,
              -0.0415,
              0.507303,
              -2.226011,
              0.899911,
              0.410424,
              4.14242,
              4.073255,
              1.790739,
              2.364918,
              -1.011161,
              1.118333,
              2.023583,
              2.750596,
              3.383499,
              3.125681,
              -0.79266,
              0.930803,
              2.678266,
              -3.635826,
              -0.389375,
              0.990283,
              4.11961,
              3.8423,
              -1.961803,
              -2.59262,
              1.217867,
              0.73449,
              -1.264035,
              -1.988459,
              -1.591113,
              -1.021437,
              0.165756,
              -0.417069,
              -0.118003,
              1.999342,
              1.4931,
              2.814003,
              3.437868,
              3.462428,
              1.289837,
              -2.095502,
              1.333744,
              1.346997,
              0.005053,
              0.312353,
              3.389547,
              1.545767,
              1.719706,
              1.48451,
              1.901332,
              -2.736158,
              0.336351,
              -0.932253,
              3.468067,
              3.465722,
              -1.29335,
              -2.560943,
              1.942431,
              1.499097,
              0.29567,
              0.530183,
              -1.253376,
              0.743729,
              1.361861,
              1.008293,
              -0.196181,
              1.469319,
              1.694026,
              3.449224,
              3.482047,
              3.458752,
              0.827582,
              0.346751,
              -0.473047,
              -0.571842,
              0.760335,
              -1.69446,
              2.174491,
              0.034236,
              3.575036,
              -0.280146,
              1.619799,
              0.298316,
              -1.732909,
              1.642426,
              3.4346,
              3.245894,
              3.617447,
              0.268492,
              1.419337,
              0.988211,
              0.576942,
              -1.576503,
              1.080854,
              2.065345,
              0.246221,
              -0.432768,
              -0.048096,
              -1.28627,
              2.833396,
              3.053424,
              3.076058,
              3.42551,
              1.87262,
              -2.621792,
              0.56185,
              0.507762,
              -0.002971,
              0.07304,
              4.08862,
              1.677122,
              2.711617,
              -0.215309,
              -1.786838,
              -2.840271,
              -0.820746,
              -1.598288,
              3.444662,
              3.427791,
              1.748972,
              3.223063,
              0.174324,
              1.711438,
              0.274437,
              0.620799,
              1.978199,
              -1.807547,
              -2.418998,
              0.275455,
              -0.355267,
              -1.497835,
              -1.212139,
              0.602345,
              3.463052,
              3.411796,
              -1.599648,
              1.582817,
              -1.847073,
              2.133428,
              0.690148,
              -1.847061,
              3.003457,
              2.01941,
              -0.955261,
              0.95636,
              1.476712,
              -2.186416
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 1.700431,
              "min_abs": 0.002971,
              "max_abs": 4.14242,
              "positive": 118,
              "negative": 56,
              "zero": 0
            },
            "rank_score": 106.801724
          },
          {
            "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "description": "Step 38 mapped LDPC candidate: {'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,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "000000001100001000100001000011010010100000010111100001100010010011000010000000110001011000100001000000011000101001000010001000110100110101110101110110011000000010000100000001",
            "hard_bits_sha256_16": "bfb5977abc51e8a1",
            "hard_weight_174": 56,
            "llr_full_174": [
              3.511245,
              1.469319,
              0.165756,
              1.419337,
              0.620799,
              3.8423,
              2.174491,
              1.48451,
              -0.389375,
              -1.599648,
              1.118333,
              3.468067,
              0.346751,
              1.473774,
              -0.355267,
              1.642426,
              0.04196,
              1.333744,
              -0.432768,
              3.42551,
              2.711617,
              3.593033,
              3.463052,
              -2.621792,
              0.005053,
              2.678266,
              1.527821,
              1.545767,
              -1.591113,
              -0.0415,
              1.694026,
              -1.29335,
              1.711438,
              4.08862,
              -2.59262,
              0.576942,
              0.155455,
              2.814003,
              2.065345,
              -0.107643,
              2.750596,
              3.458752,
              3.575036,
              -2.186416,
              3.437868,
              -1.28627,
              -0.477879,
              -1.786838,
              -1.988459,
              3.412437,
              1.978199,
              0.95636,
              0.899911,
              -0.578368,
              -0.571842,
              3.4346,
              3.223063,
              0.29567,
              -0.118003,
              0.602345,
              0.743729,
              -1.847073,
              0.07304,
              4.073255,
              -0.79266,
              -2.736158,
              4.12139,
              2.364918,
              0.690148,
              1.619799,
              -0.932253,
              2.01941,
              0.31333,
              1.008293,
              2.833396,
              3.617447,
              0.73449,
              3.383499,
              -0.033375,
              -0.820746,
              1.289837,
              0.507762,
              1.942431,
              -1.69446,
              3.427791,
              -2.418998,
              -2.226011,
              3.076058,
              1.999342,
              0.246221,
              -2.926977,
              0.530183,
              3.245894,
              2.060361,
              0.930803,
              -1.732909,
              0.827582,
              2.133428,
              4.11961,
              0.505329,
              0.274437,
              -0.196181,
              0.410424,
              -1.807547,
              -1.011161,
              0.17487,
              3.462428,
              1.719706,
              -2.840271,
              3.482047,
              -2.095502,
              2.023583,
              1.476712,
              -1.598288,
              3.125681,
              1.080854,
              0.275455,
              1.4931,
              -1.961803,
              1.499097,
              3.389547,
              0.268492,
              -0.352049,
              1.87262,
              3.053424,
              0.448774,
              0.174324,
              -1.847061,
              4.091336,
              -2.684222,
              0.298316,
              4.14242,
              -1.370996,
              -0.002971,
              1.901332,
              -1.576503,
              1.677122,
              -1.253376,
              -0.280146,
              -1.212139,
              1.748972,
              -0.459934,
              3.458719,
              -2.560943,
              -1.264035,
              -0.048096,
              3.449224,
              -1.021437,
              -0.473047,
              0.312353,
              3.411796,
              -0.955261,
              -3.635826,
              3.444662,
              1.582817,
              0.760335,
              0.507303,
              0.990283,
              0.034236,
              0.56185,
              -0.417069,
              4.094062,
              2.732275,
              0.988211,
              3.003457,
              -0.215309,
              0.336351,
              1.790739,
              1.346997,
              1.217867,
              2.006609,
              3.465722,
              1.361861,
              -1.497835
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 1.700431,
              "min_abs": 0.002971,
              "max_abs": 4.14242,
              "positive": 118,
              "negative": 56,
              "zero": 0
            },
            "rank_score": 106.801724
          },
          {
            "name": "lab_mask_xor_preview",
            "description": "Deterministic lab-only XOR mask preview; not the real JS8 whitening polynomial.",
            "bit_count": 174,
            "llr_count": 174,
            "complete_174bit_candidate": true,
            "hard_bits_174": "100000110011010100101001101000010001101100010110111111000100101000110111100010101100100101100100100000010010001100011111000111111010010001111000011101101101111000011100011111",
            "hard_bits_sha256_16": "b1bb86c852f0f4ca",
            "hard_weight_174": 85,
            "llr_full_174": [
              4.145349,
              4.116374,
              3.511245,
              4.180269,
              4.169674,
              4.14242,
              4.168008,
              4.153984,
              4.12139,
              4.168076,
              4.135428,
              4.11961,
              4.07648,
              4.076237,
              4.08862,
              2.756476,
              2.742424,
              3.003457,
              2.955568,
              -1.875523,
              1.978199,
              2.658519,
              0.652185,
              1.080854,
              3.045159,
              -2.198749,
              1.333744,
              0.789541,
              0.471669,
              -0.473047,
              2.454295,
              1.837215,
              1.942431,
              3.352145,
              2.163158,
              -2.926977,
              3.300296,
              1.818615,
              2.678266,
              0.27805,
              -1.765651,
              0.507303,
              0.384955,
              0.866369,
              -0.118003,
              3.200765,
              2.063815,
              1.87262,
              1.0381,
              -1.355162,
              -1.599648,
              3.332469,
              -2.249717,
              1.748972,
              3.56793,
              3.262649,
              3.617447,
              2.319559,
              -1.211827,
              1.719706,
              3.019019,
              -3.210486,
              3.575036,
              2.726546,
              0.281133,
              1.361861,
              0.844266,
              0.012672,
              -0.477879,
              2.427052,
              0.927501,
              2.023583,
              1.640172,
              0.441842,
              1.473774,
              0.724531,
              -1.103418,
              -1.264035,
              0.966046,
              -0.916188,
              -0.820746,
              2.920695,
              -1.395798,
              -1.732909,
              4.123045,
              3.154533,
              1.694026,
              4.167475,
              4.14333,
              4.094062,
              4.166411,
              4.137106,
              4.073255,
              4.16641,
              4.1509,
              4.091336,
              4.16914,
              4.045318,
              3.8423,
              4.098287,
              3.599922,
              1.677122,
              3.447718,
              0.044719,
              2.01941,
              3.666068,
              -1.085865,
              -1.807547,
              2.689748,
              0.585744,
              2.065345,
              3.083072,
              2.617179,
              1.346997,
              2.548193,
              2.264806,
              -0.571842,
              2.351419,
              1.247615,
              1.499097,
              3.383096,
              -3.47555,
              3.593033,
              0.355702,
              2.45095,
              -3.635826,
              2.165497,
              2.132701,
              -2.226011,
              2.192378,
              -1.921746,
              1.999342,
              3.137893,
              2.980057,
              -2.621792,
              3.666644,
              0.533081,
              1.582817,
              3.285701,
              -3.283029,
              3.223063,
              2.568732,
              -0.251398,
              0.268492,
              1.534973,
              1.692448,
              1.48451,
              3.152828,
              0.300403,
              -0.280146,
              1.052121,
              -0.948727,
              1.008293,
              0.777135,
              0.891886,
              0.17487,
              2.402306,
              -2.356355,
              2.750596,
              1.575325,
              0.833633,
              2.006609,
              1.914037,
              2.633553,
              -1.988459,
              1.730599,
              1.570304,
              -1.598288,
              4.421458,
              0.617935,
              1.642426,
              3.964669,
              3.566732,
              3.449224
            ],
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "rank_score": 101.195892
          }
        ],
        "outputs": {
          "candidate_json": "/decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.json",
          "selected_bits_file": "/decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.bits"
        },
        "decodes": [],
        "warnings": [
          "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
          "Step 38 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 38 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.",
          "Step 38 locks candidate export to JS8-realistic timing and reuses the selected profile sync anchor for FEC symbol extraction where available.",
          "It still does not perform real LDPC/FEC decode or message unpack.",
          "Next step can tune real JS8/FT8 LDPC matrix/deinterleaver/message unpack against this anchored candidate contract."
        ],
        "next_action": "Run collect-logs and upload the JS8Lab bundle. If selected_variant.complete_174bit_candidate is true, proceed to LDPC/deinterleaver/message-unpack tuning."
      }
    },
    "timing_boundary_sweep": {
      "name": "20260527T041823Z_real_run_timing_boundary_sweep_output.json",
      "path": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_timing_boundary_sweep_output.json",
      "url": "/logs/20260527T041823Z_real_run_timing_boundary_sweep_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 144680,
        "mtime_utc": "2026-05-27T04:27:12Z"
      },
      "json_preview": {
        "ok": true,
        "mode": "JS8",
        "tool": "webftr-js8-timing-boundary-candidate-sweep",
        "tool_version": "step38-fine-timing-ridge-sweep",
        "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
        "profile_scan_json": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_profile_scan_output.json",
        "anchor_json": "/decoders/js8_decoder/logs/20260527T041823Z_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": "step38_timing_boundary_syndrome_sweep_no_message_unpack",
        "anchor_selection": {
          "source": "profile_scan_json",
          "path": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_profile_scan_output.json",
          "selection": "profile_scan_selected_profile",
          "nsps": 6400,
          "start_seconds": 4.8,
          "base_freq_hz": 1025.0,
          "tone_spacing_hz": 1.875
        },
        "sweep_grid": {
          "start_offsets_s": [
            0.0,
            0.06,
            0.12,
            0.18,
            0.24,
            0.3,
            0.36
          ],
          "base_freq_offsets_hz": [
            3.0,
            3.5,
            4.0,
            4.5,
            5.0
          ],
          "tone_spacing_offsets_hz": [
            0.0,
            -0.03,
            0.03
          ],
          "max_combinations": 30,
          "actual_combinations": 30
        },
        "decode_found": false,
        "best_final_syndrome_weight": 22,
        "best_candidate": {
          "combination_index": 18,
          "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": "step38_timing_boundary_sweep:18"
          },
          "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 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
            "Step 38 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 38 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": 18,
            "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": "step38_timing_boundary_sweep:18"
            },
            "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 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 15,
            "offsets": {
              "start_offset_s": 0.0,
              "base_freq_offset_hz": 5.0,
              "tone_spacing_offset_hz": 0.03
            },
            "anchor_applied": {
              "start_seconds": 4.8,
              "base_freq_hz": 1030.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": 57600,
              "start_seconds": 4.8,
              "base_freq_hz": 1030.0,
              "tone_spacing_hz": 1.905,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:15"
            },
            "best_row": {
              "variant": "lab_mask_xor_preview",
              "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
              "mapping_meta": {
                "tone_mapping": "ft8_gray_primary",
                "gray_direction": "inverse_observed_to_plain",
                "reverse_bits_within_tone_before_gray": true,
                "interleaver": "ft8_bitrev",
                "direction": "interleave_codeword_to_rx_inverse",
                "order_len": 174,
                "polarity": "inverted"
              },
              "bit_count": 174,
              "hard_weight_174": 84,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.566292,
                "min_abs": 0.008625,
                "max_abs": 3.871059,
                "positive": 46,
                "negative": 128,
                "zero": 0
              },
              "source_rank_score": 98.265168,
              "syndrome_weight": 24,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "15da00dc0c187968",
              "codeword174_sha256_16": "a34efb83ad21097f"
            },
            "top_rows": [
              {
                "variant": "lab_mask_xor_preview",
                "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 84,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.566292,
                  "min_abs": 0.008625,
                  "max_abs": 3.871059,
                  "positive": 46,
                  "negative": 128,
                  "zero": 0
                },
                "source_rank_score": 98.265168,
                "syndrome_weight": 24,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "15da00dc0c187968",
                "codeword174_sha256_16": "a34efb83ad21097f"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 46,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.251631,
                  "min_abs": 0.005541,
                  "max_abs": 4.032212,
                  "positive": 128,
                  "negative": 46,
                  "zero": 0
                },
                "source_rank_score": 105.006524,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ff55f5e7dbb755af",
                "codeword174_sha256_16": "46f8b82ab21340e3"
              },
              {
                "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": 125,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.553047,
                  "min_abs": 0.04156,
                  "max_abs": 3.744241,
                  "positive": 49,
                  "negative": 125,
                  "zero": 0
                },
                "source_rank_score": 106.212188,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "0a664839a51e9f34",
                "codeword174_sha256_16": "299293d8b8d7026b"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "none",
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 123,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.285799,
                  "min_abs": 0.003321,
                  "max_abs": 3.744241,
                  "positive": 50,
                  "negative": 124,
                  "zero": 0
                },
                "source_rank_score": 105.143196,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "afefdb2bc335171d",
                "codeword174_sha256_16": "67c8c6e096cb6235"
              },
              {
                "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": 52,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.562515,
                  "min_abs": 0.033601,
                  "max_abs": 4.042898,
                  "positive": 122,
                  "negative": 52,
                  "zero": 0
                },
                "source_rank_score": 106.25006,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "555090f944023a0c",
                "codeword174_sha256_16": "3d0eb40db86bb238"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_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": 64,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.045094,
                  "min_abs": 0.005438,
                  "max_abs": 3.871059,
                  "positive": 110,
                  "negative": 64,
                  "zero": 0
                },
                "source_rank_score": 104.180376,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "83306fbbd73e8853",
                "codeword174_sha256_16": "366e3c1a45351d5b"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
                "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": 137,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.540017,
                  "min_abs": 0.006373,
                  "max_abs": 4.032212,
                  "positive": 43,
                  "negative": 131,
                  "zero": 0
                },
                "source_rank_score": 106.160068,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "48e4ec60a6d27f12",
                "codeword174_sha256_16": "74765003214fc113"
              },
              {
                "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": 61,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.074864,
                  "min_abs": 0.002138,
                  "max_abs": 3.871059,
                  "positive": 117,
                  "negative": 57,
                  "zero": 0
                },
                "source_rank_score": 104.299456,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "83306fbbd73e8853",
                "codeword174_sha256_16": "28c0611403d18822"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
              "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
            ]
          },
          {
            "combination_index": 25,
            "offsets": {
              "start_offset_s": 0.06,
              "base_freq_offset_hz": 4.5,
              "tone_spacing_offset_hz": 0.0
            },
            "anchor_applied": {
              "start_seconds": 4.859999999999999,
              "base_freq_hz": 1029.5,
              "tone_spacing_hz": 1.875,
              "nsps": 6400
            },
            "pipeline_ok": true,
            "fec_input_summary": {
              "soft_bit_count": 174,
              "missing_soft_bits": 0,
              "complete_ldpc_input_candidate": true,
              "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
            },
            "sync_candidate": {
              "start_sample": 58320,
              "start_seconds": 4.86,
              "base_freq_hz": 1029.5,
              "tone_spacing_hz": 1.875,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:25"
            },
            "best_row": {
              "variant": "raw_msb_symbol_order",
              "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": 2.061371,
                "min_abs": 0.00324,
                "max_abs": 4.274643,
                "positive": 32,
                "negative": 142,
                "zero": 0
              },
              "source_rank_score": 126.245484,
              "syndrome_weight": 25,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "7fd92be77aa95d3a",
              "codeword174_sha256_16": "0201ec5a9b5b2e3b"
            },
            "top_rows": [
              {
                "variant": "raw_msb_symbol_order",
                "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": 2.061371,
                  "min_abs": 0.00324,
                  "max_abs": 4.274643,
                  "positive": 32,
                  "negative": 142,
                  "zero": 0
                },
                "source_rank_score": 126.245484,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7fd92be77aa95d3a",
                "codeword174_sha256_16": "0201ec5a9b5b2e3b"
              },
              {
                "variant": "lsb_within_each_tone",
                "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": 141,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 2.061371,
                  "min_abs": 0.00324,
                  "max_abs": 4.274643,
                  "positive": 32,
                  "negative": 142,
                  "zero": 0
                },
                "source_rank_score": 118.245484,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7fd92be77aa95d3a",
                "codeword174_sha256_16": "0201ec5a9b5b2e3b"
              },
              {
                "variant": "mapped_lsb_within_each_tone+no_interleaver",
                "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": 141,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 2.061371,
                  "min_abs": 0.00324,
                  "max_abs": 4.274643,
                  "positive": 32,
                  "negative": 142,
                  "zero": 0
                },
                "source_rank_score": 108.245484,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7fd92be77aa95d3a",
                "codeword174_sha256_16": "0201ec5a9b5b2e3b"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "raw_msb",
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 141,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 2.061371,
                  "min_abs": 0.00324,
                  "max_abs": 4.274643,
                  "positive": 32,
                  "negative": 142,
                  "zero": 0
                },
                "source_rank_score": 108.245484,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7fd92be77aa95d3a",
                "codeword174_sha256_16": "0201ec5a9b5b2e3b"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "raw_msb",
                  "interleaver": "ft8_bitrev",
                  "direction": "deinterleave_rx_to_codeword",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 141,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 2.061371,
                  "min_abs": 0.00324,
                  "max_abs": 4.274643,
                  "positive": 32,
                  "negative": 142,
                  "zero": 0
                },
                "source_rank_score": 108.245484,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7fd92be77aa95d3a",
                "codeword174_sha256_16": "0201ec5a9b5b2e3b"
              },
              {
                "variant": "mapped_raw_msb+no_interleaver",
                "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": 2.061371,
                  "min_abs": 0.00324,
                  "max_abs": 4.274643,
                  "positive": 32,
                  "negative": 142,
                  "zero": 0
                },
                "source_rank_score": 108.245484,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7fd92be77aa95d3a",
                "codeword174_sha256_16": "0201ec5a9b5b2e3b"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "none",
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 128,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.219845,
                  "min_abs": 0.001305,
                  "max_abs": 3.783049,
                  "positive": 42,
                  "negative": 132,
                  "zero": 0
                },
                "source_rank_score": 104.87938,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "522313e00a992a7b",
                "codeword174_sha256_16": "b7191964a661a02d"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "none",
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 128,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.17103,
                  "min_abs": 0.002471,
                  "max_abs": 3.783049,
                  "positive": 38,
                  "negative": 136,
                  "zero": 0
                },
                "source_rank_score": 104.68412,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "522313e00a992a7b",
                "codeword174_sha256_16": "b7191964a661a02d"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 3.5,
              "tone_spacing_offset_hz": -0.03
            },
            "anchor_applied": {
              "start_seconds": 4.859999999999999,
              "base_freq_hz": 1028.5,
              "tone_spacing_hz": 1.845,
              "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.5,
              "tone_spacing_hz": 1.845,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:20"
            },
            "best_row": {
              "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": 125,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.66919,
                "min_abs": 0.002626,
                "max_abs": 3.91817,
                "positive": 41,
                "negative": 133,
                "zero": 0
              },
              "source_rank_score": 106.67676,
              "syndrome_weight": 25,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "19b08813892a465d",
              "codeword174_sha256_16": "98ad9f5d93eab225"
            },
            "top_rows": [
              {
                "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": 125,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.66919,
                  "min_abs": 0.002626,
                  "max_abs": 3.91817,
                  "positive": 41,
                  "negative": 133,
                  "zero": 0
                },
                "source_rank_score": 106.67676,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "19b08813892a465d",
                "codeword174_sha256_16": "98ad9f5d93eab225"
              },
              {
                "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": 105,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.131115,
                  "min_abs": 0.003669,
                  "max_abs": 3.549497,
                  "positive": 67,
                  "negative": 107,
                  "zero": 0
                },
                "source_rank_score": 104.52446,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "dd000bb12884ff34",
                "codeword174_sha256_16": "c59341021e0676e7"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver",
                "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": 59,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.701322,
                  "min_abs": 0.004742,
                  "max_abs": 3.873713,
                  "positive": 120,
                  "negative": 54,
                  "zero": 0
                },
                "source_rank_score": 106.805288,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "9c01737f4aeb9695",
                "codeword174_sha256_16": "bc131bc857b8fd31"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 116,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.691194,
                  "min_abs": 0.004742,
                  "max_abs": 3.801836,
                  "positive": 48,
                  "negative": 126,
                  "zero": 0
                },
                "source_rank_score": 106.764776,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "aac0c46f3706d4b7",
                "codeword174_sha256_16": "98e503566e802118"
              },
              {
                "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": 116,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.634484,
                  "min_abs": 0.003516,
                  "max_abs": 3.801836,
                  "positive": 51,
                  "negative": 123,
                  "zero": 0
                },
                "source_rank_score": 106.537936,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "aac0c46f3706d4b7",
                "codeword174_sha256_16": "98e503566e802118"
              },
              {
                "variant": "reverse_symbol_order",
                "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": 61,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.780164,
                  "min_abs": 0.003515,
                  "max_abs": 4.088622,
                  "positive": 134,
                  "negative": 40,
                  "zero": 0
                },
                "source_rank_score": 111.120656,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "17e5d06559c52a35",
                "codeword174_sha256_16": "001b4860f509a5d7"
              },
              {
                "variant": "reverse_full_bitstream",
                "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 61,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.63496,
                  "min_abs": 0.003515,
                  "max_abs": 3.873713,
                  "positive": 114,
                  "negative": 60,
                  "zero": 0
                },
                "source_rank_score": 109.53984,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "17e5d06559c52a35",
                "codeword174_sha256_16": "001b4860f509a5d7"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "lsb_within_each_tone+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "lsb_within_each_tone",
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 39,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 2.202357,
                  "min_abs": 0.004742,
                  "max_abs": 4.088622,
                  "positive": 139,
                  "negative": 35,
                  "zero": 0
                },
                "source_rank_score": 108.809428,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2e790574e40151c8",
                "codeword174_sha256_16": "5df9f8ed4f8c7306"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 23,
            "offsets": {
              "start_offset_s": 0.06,
              "base_freq_offset_hz": 4.0,
              "tone_spacing_offset_hz": -0.03
            },
            "anchor_applied": {
              "start_seconds": 4.859999999999999,
              "base_freq_hz": 1029.0,
              "tone_spacing_hz": 1.845,
              "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": 1029.0,
              "tone_spacing_hz": 1.845,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:23"
            },
            "best_row": {
              "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
              "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
              "mapping_meta": {
                "tone_mapping": "ft8_gray_primary",
                "gray_direction": "inverse_observed_to_plain",
                "reverse_bits_within_tone_before_gray": false,
                "interleaver": "none",
                "polarity": "inverted"
              },
              "bit_count": 174,
              "hard_weight_174": 107,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.110512,
                "min_abs": 0.000235,
                "max_abs": 3.70669,
                "positive": 62,
                "negative": 112,
                "zero": 0
              },
              "source_rank_score": 104.442048,
              "syndrome_weight": 25,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "e2a04bc8873cd51b",
              "codeword174_sha256_16": "5f92cab401d389b8"
            },
            "top_rows": [
              {
                "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "none",
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 107,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.110512,
                  "min_abs": 0.000235,
                  "max_abs": 3.70669,
                  "positive": 62,
                  "negative": 112,
                  "zero": 0
                },
                "source_rank_score": 104.442048,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "e2a04bc8873cd51b",
                "codeword174_sha256_16": "5f92cab401d389b8"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_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": 116,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.209004,
                  "min_abs": 4.8e-05,
                  "max_abs": 3.868363,
                  "positive": 49,
                  "negative": 125,
                  "zero": 0
                },
                "source_rank_score": 104.836016,
                "syndrome_weight": 28,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2a60dab5f22bdeb9",
                "codeword174_sha256_16": "324857f8511d7ab8"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 44,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.483932,
                  "min_abs": 0.002548,
                  "max_abs": 4.301509,
                  "positive": 130,
                  "negative": 44,
                  "zero": 0
                },
                "source_rank_score": 105.935728,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "41f38ee3a2884ea3",
                "codeword174_sha256_16": "da6cffabf95007e0"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 45,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.528267,
                  "min_abs": 0.000574,
                  "max_abs": 4.301509,
                  "positive": 134,
                  "negative": 40,
                  "zero": 0
                },
                "source_rank_score": 106.113068,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "41f38ee3a2884ea3",
                "codeword174_sha256_16": "e6d7ca287cd841f5"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
                "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 47,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.483001,
                  "min_abs": 0.000463,
                  "max_abs": 4.301509,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 105.932004,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "76e6ebcaab758d57",
                "codeword174_sha256_16": "43fd69baa6275efa"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+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": 133,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.051506,
                  "min_abs": 0.000742,
                  "max_abs": 3.029638,
                  "positive": 42,
                  "negative": 132,
                  "zero": 0
                },
                "source_rank_score": 104.206024,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "80152402848c8fd2",
                "codeword174_sha256_16": "b1aa695db14b9528"
              },
              {
                "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "deinterleave_rx_to_codeword",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 54,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.570633,
                  "min_abs": 0.013213,
                  "max_abs": 3.868363,
                  "positive": 123,
                  "negative": 51,
                  "zero": 0
                },
                "source_rank_score": 106.282532,
                "syndrome_weight": 32,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "e68de5e9e889b44d",
                "codeword174_sha256_16": "4472fdb1ccb84734"
              },
              {
                "variant": "mapped_raw_msb+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": 56,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.549143,
                  "min_abs": 0.04597,
                  "max_abs": 3.742293,
                  "positive": 120,
                  "negative": 54,
                  "zero": 0
                },
                "source_rank_score": 106.196572,
                "syndrome_weight": 32,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2f35f2655a2e1d94",
                "codeword174_sha256_16": "258ccfc85b73ee00"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 3,
            "offsets": {
              "start_offset_s": 0.0,
              "base_freq_offset_hz": 3.0,
              "tone_spacing_offset_hz": 0.03
            },
            "anchor_applied": {
              "start_seconds": 4.8,
              "base_freq_hz": 1028.0,
              "tone_spacing_hz": 1.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": 57600,
              "start_seconds": 4.8,
              "base_freq_hz": 1028.0,
              "tone_spacing_hz": 1.905,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:3"
            },
            "best_row": {
              "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
              "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": 38,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.883273,
                "min_abs": 0.004668,
                "max_abs": 4.206963,
                "positive": 144,
                "negative": 30,
                "zero": 0
              },
              "source_rank_score": 107.533092,
              "syndrome_weight": 26,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "9dc92bc8076d3453",
              "codeword174_sha256_16": "69589423fe420ec9"
            },
            "top_rows": [
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
                "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": 38,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.883273,
                  "min_abs": 0.004668,
                  "max_abs": 4.206963,
                  "positive": 144,
                  "negative": 30,
                  "zero": 0
                },
                "source_rank_score": 107.533092,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "9dc92bc8076d3453",
                "codeword174_sha256_16": "69589423fe420ec9"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "deinterleave_rx_to_codeword",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 63,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.495211,
                  "min_abs": 0.006001,
                  "max_abs": 4.206963,
                  "positive": 115,
                  "negative": 59,
                  "zero": 0
                },
                "source_rank_score": 105.980844,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "980fa2c313a59ed7",
                "codeword174_sha256_16": "94f3aa758feed897"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+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": 113,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.171359,
                  "min_abs": 0.000261,
                  "max_abs": 3.142279,
                  "positive": 62,
                  "negative": 112,
                  "zero": 0
                },
                "source_rank_score": 104.685436,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "d347312390ff5cf2",
                "codeword174_sha256_16": "6dd8473311877d6b"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
                "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 55,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.140102,
                  "min_abs": 1e-06,
                  "max_abs": 2.987177,
                  "positive": 121,
                  "negative": 53,
                  "zero": 0
                },
                "source_rank_score": 104.560408,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "a17885ef99d8871e",
                "codeword174_sha256_16": "9d7026f93f1641b5"
              },
              {
                "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": 40,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.826466,
                  "min_abs": 0.000261,
                  "max_abs": 4.206963,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 125.305864,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2713ced8ec42e2ee",
                "codeword174_sha256_16": "df1c85af54cc4761"
              },
              {
                "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": 40,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.520682,
                  "min_abs": 0.000261,
                  "max_abs": 3.761123,
                  "positive": 113,
                  "negative": 61,
                  "zero": 0
                },
                "source_rank_score": 116.082728,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2713ced8ec42e2ee",
                "codeword174_sha256_16": "df1c85af54cc4761"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+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": 40,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.826466,
                  "min_abs": 0.000261,
                  "max_abs": 4.206963,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 107.305864,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2713ced8ec42e2ee",
                "codeword174_sha256_16": "df1c85af54cc4761"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+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": 40,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.826466,
                  "min_abs": 0.000261,
                  "max_abs": 4.206963,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 107.305864,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2713ced8ec42e2ee",
                "codeword174_sha256_16": "df1c85af54cc4761"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 16,
            "offsets": {
              "start_offset_s": 0.06,
              "base_freq_offset_hz": 3.0,
              "tone_spacing_offset_hz": 0.0
            },
            "anchor_applied": {
              "start_seconds": 4.859999999999999,
              "base_freq_hz": 1028.0,
              "tone_spacing_hz": 1.875,
              "nsps": 6400
            },
            "pipeline_ok": true,
            "fec_input_summary": {
              "soft_bit_count": 174,
              "missing_soft_bits": 0,
              "complete_ldpc_input_candidate": true,
              "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
            },
            "sync_candidate": {
              "start_sample": 58320,
              "start_seconds": 4.86,
              "base_freq_hz": 1028.0,
              "tone_spacing_hz": 1.875,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:16"
            },
            "best_row": {
              "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
              "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": 52,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.386406,
                "min_abs": 0.005031,
                "max_abs": 4.071798,
                "positive": 133,
                "negative": 41,
                "zero": 0
              },
              "source_rank_score": 105.545624,
              "syndrome_weight": 26,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "20cb8982e61b4da6",
              "codeword174_sha256_16": "930f19c9f48a77d8"
            },
            "top_rows": [
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "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": 52,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.386406,
                  "min_abs": 0.005031,
                  "max_abs": 4.071798,
                  "positive": 133,
                  "negative": 41,
                  "zero": 0
                },
                "source_rank_score": 105.545624,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "20cb8982e61b4da6",
                "codeword174_sha256_16": "930f19c9f48a77d8"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "deinterleave_rx_to_codeword",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 52,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.315017,
                  "min_abs": 0.004658,
                  "max_abs": 4.071798,
                  "positive": 131,
                  "negative": 43,
                  "zero": 0
                },
                "source_rank_score": 105.260068,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "20cb8982e61b4da6",
                "codeword174_sha256_16": "930f19c9f48a77d8"
              },
              {
                "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": 117,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.878257,
                  "min_abs": 0.005474,
                  "max_abs": 4.082287,
                  "positive": 34,
                  "negative": 140,
                  "zero": 0
                },
                "source_rank_score": 111.513028,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "5a5f45650d34d120",
                "codeword174_sha256_16": "c3ddcaf03c3ccd70"
              },
              {
                "variant": "reverse_symbol_order",
                "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": 33,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.74431,
                  "min_abs": 0.007324,
                  "max_abs": 3.889221,
                  "positive": 127,
                  "negative": 47,
                  "zero": 0
                },
                "source_rank_score": 110.97724,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "e1e8116e828e9db5",
                "codeword174_sha256_16": "83548fad996036b7"
              },
              {
                "variant": "reverse_full_bitstream",
                "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": 33,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.935993,
                  "min_abs": 0.007324,
                  "max_abs": 4.082287,
                  "positive": 147,
                  "negative": 27,
                  "zero": 0
                },
                "source_rank_score": 110.743972,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "e1e8116e828e9db5",
                "codeword174_sha256_16": "83548fad996036b7"
              },
              {
                "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": 117,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.686575,
                  "min_abs": 0.005474,
                  "max_abs": 3.889221,
                  "positive": 54,
                  "negative": 120,
                  "zero": 0
                },
                "source_rank_score": 109.7463,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "5a5f45650d34d120",
                "codeword174_sha256_16": "c3ddcaf03c3ccd70"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "deinterleave_rx_to_codeword",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 99,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.116924,
                  "min_abs": 0.004138,
                  "max_abs": 3.889221,
                  "positive": 72,
                  "negative": 102,
                  "zero": 0
                },
                "source_rank_score": 104.467696,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "145bc09c008ba5d6",
                "codeword174_sha256_16": "409c00e9c14169e8"
              },
              {
                "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": 48,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.737959,
                  "min_abs": 0.057881,
                  "max_abs": 4.071798,
                  "positive": 127,
                  "negative": 47,
                  "zero": 0
                },
                "source_rank_score": 106.951836,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "93cb5265335a79ef",
                "codeword174_sha256_16": "4766150d6d4fa78d"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
              "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
            ]
          },
          {
            "combination_index": 12,
            "offsets": {
              "start_offset_s": 0.0,
              "base_freq_offset_hz": 4.5,
              "tone_spacing_offset_hz": 0.03
            },
            "anchor_applied": {
              "start_seconds": 4.8,
              "base_freq_hz": 1029.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": 57600,
              "start_seconds": 4.8,
              "base_freq_hz": 1029.5,
              "tone_spacing_hz": 1.905,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:12"
            },
            "best_row": {
              "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
              "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_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": 138,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.353497,
                "min_abs": 0.000502,
                "max_abs": 3.874215,
                "positive": 36,
                "negative": 138,
                "zero": 0
              },
              "source_rank_score": 105.413988,
              "syndrome_weight": 26,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "2a682adb0723359d",
              "codeword174_sha256_16": "a247ca5c9f29b5ce"
            },
            "top_rows": [
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_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": 138,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.353497,
                  "min_abs": 0.000502,
                  "max_abs": 3.874215,
                  "positive": 36,
                  "negative": 138,
                  "zero": 0
                },
                "source_rank_score": 105.413988,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2a682adb0723359d",
                "codeword174_sha256_16": "a247ca5c9f29b5ce"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+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": 138,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.329849,
                  "min_abs": 0.000185,
                  "max_abs": 3.874215,
                  "positive": 36,
                  "negative": 138,
                  "zero": 0
                },
                "source_rank_score": 105.319396,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2a682adb0723359d",
                "codeword174_sha256_16": "a247ca5c9f29b5ce"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 45,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.620206,
                  "min_abs": 0.007163,
                  "max_abs": 3.874215,
                  "positive": 136,
                  "negative": 38,
                  "zero": 0
                },
                "source_rank_score": 106.480824,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "744b05836ecbcbe7",
                "codeword174_sha256_16": "568610ba9457b09f"
              },
              {
                "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": 135,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.223374,
                  "min_abs": 0.000233,
                  "max_abs": 3.781995,
                  "positive": 33,
                  "negative": 141,
                  "zero": 0
                },
                "source_rank_score": 104.893496,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "346b39e657fd9af2",
                "codeword174_sha256_16": "46cb1d75970a3803"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_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": 135,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.221819,
                  "min_abs": 8.2e-05,
                  "max_abs": 3.781995,
                  "positive": 35,
                  "negative": 139,
                  "zero": 0
                },
                "source_rank_score": 104.887276,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "346b39e657fd9af2",
                "codeword174_sha256_16": "46cb1d75970a3803"
              },
              {
                "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": 135,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.592845,
                  "min_abs": 0.010963,
                  "max_abs": 3.781995,
                  "positive": 34,
                  "negative": 140,
                  "zero": 0
                },
                "source_rank_score": 124.37138,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "5dd3399566d3b627",
                "codeword174_sha256_16": "a46e41c47e03bed8"
              },
              {
                "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": 135,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.555609,
                  "min_abs": 0.004557,
                  "max_abs": 3.781995,
                  "positive": 34,
                  "negative": 140,
                  "zero": 0
                },
                "source_rank_score": 124.222436,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "5dd3399566d3b627",
                "codeword174_sha256_16": "a46e41c47e03bed8"
              },
              {
                "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": 135,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.855681,
                  "min_abs": 0.010963,
                  "max_abs": 4.002562,
                  "positive": 28,
                  "negative": 146,
                  "zero": 0
                },
                "source_rank_score": 117.422724,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "5dd3399566d3b627",
                "codeword174_sha256_16": "a46e41c47e03bed8"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 11,
            "offsets": {
              "start_offset_s": 0.0,
              "base_freq_offset_hz": 4.5,
              "tone_spacing_offset_hz": -0.03
            },
            "anchor_applied": {
              "start_seconds": 4.8,
              "base_freq_hz": 1029.5,
              "tone_spacing_hz": 1.845,
              "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": 57600,
              "start_seconds": 4.8,
              "base_freq_hz": 1029.5,
              "tone_spacing_hz": 1.845,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:11"
            },
            "best_row": {
              "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+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": 134,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.272009,
                "min_abs": 0.000567,
                "max_abs": 4.079288,
                "positive": 42,
                "negative": 132,
                "zero": 0
              },
              "source_rank_score": 105.088036,
              "syndrome_weight": 26,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "dc0344c66ac2c99b",
              "codeword174_sha256_16": "6974c4c526e2c94d"
            },
            "top_rows": [
              {
                "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+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": 134,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.272009,
                  "min_abs": 0.000567,
                  "max_abs": 4.079288,
                  "positive": 42,
                  "negative": 132,
                  "zero": 0
                },
                "source_rank_score": 105.088036,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "dc0344c66ac2c99b",
                "codeword174_sha256_16": "6974c4c526e2c94d"
              },
              {
                "variant": "raw_msb_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": 41,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.587569,
                  "min_abs": 0.00039,
                  "max_abs": 3.918957,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 124.350276,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ea1ac80658c5352d",
                "codeword174_sha256_16": "c5c2175ccde6e5b3"
              },
              {
                "variant": "lsb_within_each_tone",
                "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": 41,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.847373,
                  "min_abs": 0.00039,
                  "max_abs": 4.079288,
                  "positive": 144,
                  "negative": 30,
                  "zero": 0
                },
                "source_rank_score": 117.389492,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ea1ac80658c5352d",
                "codeword174_sha256_16": "c5c2175ccde6e5b3"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "raw_msb+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "raw_msb",
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 41,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.587569,
                  "min_abs": 0.00039,
                  "max_abs": 3.918957,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 106.350276,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ea1ac80658c5352d",
                "codeword174_sha256_16": "c5c2175ccde6e5b3"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver",
                "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": 41,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.587569,
                  "min_abs": 0.00039,
                  "max_abs": 3.918957,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 106.350276,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ea1ac80658c5352d",
                "codeword174_sha256_16": "c5c2175ccde6e5b3"
              },
              {
                "variant": "mapped_lsb_within_each_tone+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": 41,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.587569,
                  "min_abs": 0.00039,
                  "max_abs": 3.918957,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 106.350276,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ea1ac80658c5352d",
                "codeword174_sha256_16": "c5c2175ccde6e5b3"
              },
              {
                "variant": "mapped_raw_msb+no_interleaver",
                "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": 41,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.587569,
                  "min_abs": 0.00039,
                  "max_abs": 3.918957,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 106.350276,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ea1ac80658c5352d",
                "codeword174_sha256_16": "c5c2175ccde6e5b3"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+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": 136,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.357028,
                  "min_abs": 0.002021,
                  "max_abs": 4.079288,
                  "positive": 38,
                  "negative": 136,
                  "zero": 0
                },
                "source_rank_score": 105.428112,
                "syndrome_weight": 28,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "dc0344c66ac2c99b",
                "codeword174_sha256_16": "9f8723dc4b58b6cf"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
              "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
            ]
          },
          {
            "combination_index": 24,
            "offsets": {
              "start_offset_s": 0.06,
              "base_freq_offset_hz": 4.0,
              "tone_spacing_offset_hz": 0.03
            },
            "anchor_applied": {
              "start_seconds": 4.859999999999999,
              "base_freq_hz": 1029.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": 1029.0,
              "tone_spacing_hz": 1.905,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:24"
            },
            "best_row": {
              "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
              "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+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": 124,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.12694,
                "min_abs": 0.003683,
                "max_abs": 3.638909,
                "positive": 49,
                "negative": 125,
                "zero": 0
              },
              "source_rank_score": 104.50776,
              "syndrome_weight": 26,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "df177b1b43ebcb88",
              "codeword174_sha256_16": "60205fdd011c7e05"
            },
            "top_rows": [
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+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": 124,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.12694,
                  "min_abs": 0.003683,
                  "max_abs": 3.638909,
                  "positive": 49,
                  "negative": 125,
                  "zero": 0
                },
                "source_rank_score": 104.50776,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "df177b1b43ebcb88",
                "codeword174_sha256_16": "60205fdd011c7e05"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 122,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.564733,
                  "min_abs": 0.002655,
                  "max_abs": 3.707365,
                  "positive": 51,
                  "negative": 123,
                  "zero": 0
                },
                "source_rank_score": 106.258932,
                "syndrome_weight": 28,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "4f001edffee5017f",
                "codeword174_sha256_16": "a5e99a9fff619150"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "lsb_within_each_tone+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "lsb_within_each_tone",
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 51,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.419682,
                  "min_abs": 0.024839,
                  "max_abs": 3.54107,
                  "positive": 123,
                  "negative": 51,
                  "zero": 0
                },
                "source_rank_score": 105.678728,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7a4f98eb8214a8ce",
                "codeword174_sha256_16": "395bf0abe3aec3be"
              },
              {
                "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": 89,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 2.03621,
                  "min_abs": 0.05766,
                  "max_abs": 4.191314,
                  "positive": 40,
                  "negative": 134,
                  "zero": 0
                },
                "source_rank_score": 100.14484,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "c01f71a2edd9b97d",
                "codeword174_sha256_16": "6cbef933635a5885"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "lsb_within_each_tone",
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 134,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.700993,
                  "min_abs": 0.004606,
                  "max_abs": 4.191314,
                  "positive": 35,
                  "negative": 139,
                  "zero": 0
                },
                "source_rank_score": 106.803972,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "88b1b2753c5bdae5",
                "codeword174_sha256_16": "0e969acbf79d9c0c"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_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": 126,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.20202,
                  "min_abs": 0.000831,
                  "max_abs": 3.64312,
                  "positive": 43,
                  "negative": 131,
                  "zero": 0
                },
                "source_rank_score": 104.80808,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "df177b1b43ebcb88",
                "codeword174_sha256_16": "136b5757a40ae6cc"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 126,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.128603,
                  "min_abs": 0.008687,
                  "max_abs": 4.191314,
                  "positive": 46,
                  "negative": 128,
                  "zero": 0
                },
                "source_rank_score": 104.514412,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "1deaddb66b489890",
                "codeword174_sha256_16": "d67680bf6760f7e3"
              },
              {
                "variant": "raw_msb_symbol_order",
                "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "none",
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 121,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.461699,
                  "min_abs": 0.004606,
                  "max_abs": 3.54107,
                  "positive": 49,
                  "negative": 125,
                  "zero": 0
                },
                "source_rank_score": 123.846796,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "c9536416c7505249",
                "codeword174_sha256_16": "b716e17f5524d175"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
              "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
            ]
          },
          {
            "combination_index": 14,
            "offsets": {
              "start_offset_s": 0.0,
              "base_freq_offset_hz": 5.0,
              "tone_spacing_offset_hz": -0.03
            },
            "anchor_applied": {
              "start_seconds": 4.8,
              "base_freq_hz": 1030.0,
              "tone_spacing_hz": 1.845,
              "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": 57600,
              "start_seconds": 4.8,
              "base_freq_hz": 1030.0,
              "tone_spacing_hz": 1.845,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:14"
            },
            "best_row": {
              "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
              "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
              "mapping_meta": {
                "tone_mapping": "ft8_gray_alt_high",
                "gray_direction": "inverse_observed_to_plain",
                "reverse_bits_within_tone_before_gray": true,
                "interleaver": "ft8_bitrev",
                "direction": "deinterleave_rx_to_codeword",
                "order_len": 174
              },
              "bit_count": 174,
              "hard_weight_174": 47,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.347502,
                "min_abs": 0.002411,
                "max_abs": 3.955787,
                "positive": 129,
                "negative": 45,
                "zero": 0
              },
              "source_rank_score": 105.390008,
              "syndrome_weight": 27,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "1c2e6d4c1a1e2ab1",
              "codeword174_sha256_16": "b348ee70b6a3483c"
            },
            "top_rows": [
              {
                "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "deinterleave_rx_to_codeword",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 47,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.347502,
                  "min_abs": 0.002411,
                  "max_abs": 3.955787,
                  "positive": 129,
                  "negative": 45,
                  "zero": 0
                },
                "source_rank_score": 105.390008,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "1c2e6d4c1a1e2ab1",
                "codeword174_sha256_16": "b348ee70b6a3483c"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 44,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 0.915549,
                  "min_abs": 0.000541,
                  "max_abs": 3.70776,
                  "positive": 135,
                  "negative": 39,
                  "zero": 0
                },
                "source_rank_score": 103.662196,
                "syndrome_weight": 28,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "4519b9b754d1204f",
                "codeword174_sha256_16": "d94e9095d6c6e93a"
              },
              {
                "variant": "mapped_raw_msb+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": 140,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.96276,
                  "min_abs": 0.028868,
                  "max_abs": 4.041541,
                  "positive": 35,
                  "negative": 139,
                  "zero": 0
                },
                "source_rank_score": 107.85104,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "f1cd8126e5c533e3",
                "codeword174_sha256_16": "16a4556bf802b492"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+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": 119,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.065423,
                  "min_abs": 0.005117,
                  "max_abs": 3.498813,
                  "positive": 52,
                  "negative": 122,
                  "zero": 0
                },
                "source_rank_score": 104.261692,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "af85b2aafd15d647",
                "codeword174_sha256_16": "6b02d8170f5771ba"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 51,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 0.938196,
                  "min_abs": 8.5e-05,
                  "max_abs": 3.107059,
                  "positive": 127,
                  "negative": 47,
                  "zero": 0
                },
                "source_rank_score": 103.752784,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "1ef1df661b088fb2",
                "codeword174_sha256_16": "7dcdc2345950aa49"
              },
              {
                "variant": "raw_msb_symbol_order",
                "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 132,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.402685,
                  "min_abs": 0.016119,
                  "max_abs": 4.041541,
                  "positive": 39,
                  "negative": 135,
                  "zero": 0
                },
                "source_rank_score": 123.61074,
                "syndrome_weight": 32,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "9efa82de730c504e",
                "codeword174_sha256_16": "9fc74ff7a5307a79"
              },
              {
                "variant": "lsb_within_each_tone",
                "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": 132,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.602357,
                  "min_abs": 0.016119,
                  "max_abs": 3.889323,
                  "positive": 38,
                  "negative": 136,
                  "zero": 0
                },
                "source_rank_score": 116.409428,
                "syndrome_weight": 32,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "9efa82de730c504e",
                "codeword174_sha256_16": "9fc74ff7a5307a79"
              },
              {
                "variant": "mapped_lsb_within_each_tone+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.96276,
                  "min_abs": 0.028868,
                  "max_abs": 4.041541,
                  "positive": 35,
                  "negative": 139,
                  "zero": 0
                },
                "source_rank_score": 107.85104,
                "syndrome_weight": 32,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "128686bc8fd1c14d",
                "codeword174_sha256_16": "e1946ca31cb74111"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 28,
            "offsets": {
              "start_offset_s": 0.06,
              "base_freq_offset_hz": 5.0,
              "tone_spacing_offset_hz": 0.0
            },
            "anchor_applied": {
              "start_seconds": 4.859999999999999,
              "base_freq_hz": 1030.0,
              "tone_spacing_hz": 1.875,
              "nsps": 6400
            },
            "pipeline_ok": true,
            "fec_input_summary": {
              "soft_bit_count": 174,
              "missing_soft_bits": 0,
              "complete_ldpc_input_candidate": true,
              "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
            },
            "sync_candidate": {
              "start_sample": 58320,
              "start_seconds": 4.86,
              "base_freq_hz": 1030.0,
              "tone_spacing_hz": 1.875,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:28"
            },
            "best_row": {
              "variant": "lab_mask_xor_preview",
              "transform": "raw_msb+no_interleaver",
              "mapping_meta": {
                "tone_mapping": "raw_msb",
                "interleaver": "none"
              },
              "bit_count": 174,
              "hard_weight_174": 95,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.983812,
                "min_abs": 0.041058,
                "max_abs": 4.24207,
                "positive": 136,
                "negative": 38,
                "zero": 0
              },
              "source_rank_score": 99.935248,
              "syndrome_weight": 27,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "f2ef1762c906ef31",
              "codeword174_sha256_16": "c6cb32457e4c0ce8"
            },
            "top_rows": [
              {
                "variant": "lab_mask_xor_preview",
                "transform": "raw_msb+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "raw_msb",
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 95,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.983812,
                  "min_abs": 0.041058,
                  "max_abs": 4.24207,
                  "positive": 136,
                  "negative": 38,
                  "zero": 0
                },
                "source_rank_score": 99.935248,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "f2ef1762c906ef31",
                "codeword174_sha256_16": "c6cb32457e4c0ce8"
              },
              {
                "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_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": 62,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 0.803329,
                  "min_abs": 0.000439,
                  "max_abs": 4.003245,
                  "positive": 117,
                  "negative": 57,
                  "zero": 0
                },
                "source_rank_score": 103.213316,
                "syndrome_weight": 28,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "1ddf65b53765c405",
                "codeword174_sha256_16": "d21ebfe4fe19a48e"
              },
              {
                "variant": "lab_mask_xor_preview",
                "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": 80,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.391376,
                  "min_abs": 0.011395,
                  "max_abs": 4.003245,
                  "positive": 47,
                  "negative": 127,
                  "zero": 0
                },
                "source_rank_score": 97.565504,
                "syndrome_weight": 28,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "18e650f62fd5e09a",
                "codeword174_sha256_16": "7ffc3739b59e3fa2"
              },
              {
                "variant": "mapped_lsb_within_each_tone+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": 59,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.384894,
                  "min_abs": 0.012691,
                  "max_abs": 3.864479,
                  "positive": 122,
                  "negative": 52,
                  "zero": 0
                },
                "source_rank_score": 105.539576,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "cc70148368f3b858",
                "codeword174_sha256_16": "1efb9deb93117651"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_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": 131,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.347851,
                  "min_abs": 2e-05,
                  "max_abs": 3.94795,
                  "positive": 42,
                  "negative": 132,
                  "zero": 0
                },
                "source_rank_score": 105.391404,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "5e6c6e2b61b907a6",
                "codeword174_sha256_16": "c23c8e48b4495a2e"
              },
              {
                "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+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": 105,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 0.918547,
                  "min_abs": 0.004101,
                  "max_abs": 4.003245,
                  "positive": 61,
                  "negative": 113,
                  "zero": 0
                },
                "source_rank_score": 103.674188,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "3223363eef47db07",
                "codeword174_sha256_16": "d7d8c2ca45f49a02"
              },
              {
                "variant": "lab_mask_xor_preview",
                "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 91,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.564828,
                  "min_abs": 0.002818,
                  "max_abs": 3.94795,
                  "positive": 136,
                  "negative": 38,
                  "zero": 0
                },
                "source_rank_score": 98.259312,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "d976abd0f4c5e758",
                "codeword174_sha256_16": "9c0ea41469c0b0ac"
              },
              {
                "variant": "lab_mask_xor_preview",
                "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": 82,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.355256,
                  "min_abs": 0.002818,
                  "max_abs": 4.003245,
                  "positive": 50,
                  "negative": 124,
                  "zero": 0
                },
                "source_rank_score": 97.421024,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "d3b942034a3e8ac6",
                "codeword174_sha256_16": "58bfad37282e8343"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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/step38_timing_boundary_sweep.json",
          "timing_best_candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step38_best_timing_fec_candidate.json"
        },
        "decodes": [],
        "warnings": [
          "Step 38 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."
      }
    },
    "real_run_timing_boundary_sweep": {
      "name": "20260527T041823Z_real_run_timing_boundary_sweep_output.json",
      "path": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_timing_boundary_sweep_output.json",
      "url": "/logs/20260527T041823Z_real_run_timing_boundary_sweep_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 144680,
        "mtime_utc": "2026-05-27T04:27:12Z"
      },
      "json_preview": {
        "ok": true,
        "mode": "JS8",
        "tool": "webftr-js8-timing-boundary-candidate-sweep",
        "tool_version": "step38-fine-timing-ridge-sweep",
        "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
        "profile_scan_json": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_profile_scan_output.json",
        "anchor_json": "/decoders/js8_decoder/logs/20260527T041823Z_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": "step38_timing_boundary_syndrome_sweep_no_message_unpack",
        "anchor_selection": {
          "source": "profile_scan_json",
          "path": "/decoders/js8_decoder/logs/20260527T041823Z_real_run_profile_scan_output.json",
          "selection": "profile_scan_selected_profile",
          "nsps": 6400,
          "start_seconds": 4.8,
          "base_freq_hz": 1025.0,
          "tone_spacing_hz": 1.875
        },
        "sweep_grid": {
          "start_offsets_s": [
            0.0,
            0.06,
            0.12,
            0.18,
            0.24,
            0.3,
            0.36
          ],
          "base_freq_offsets_hz": [
            3.0,
            3.5,
            4.0,
            4.5,
            5.0
          ],
          "tone_spacing_offsets_hz": [
            0.0,
            -0.03,
            0.03
          ],
          "max_combinations": 30,
          "actual_combinations": 30
        },
        "decode_found": false,
        "best_final_syndrome_weight": 22,
        "best_candidate": {
          "combination_index": 18,
          "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": "step38_timing_boundary_sweep:18"
          },
          "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 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
            "Step 38 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 38 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": 18,
            "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": "step38_timing_boundary_sweep:18"
            },
            "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 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 15,
            "offsets": {
              "start_offset_s": 0.0,
              "base_freq_offset_hz": 5.0,
              "tone_spacing_offset_hz": 0.03
            },
            "anchor_applied": {
              "start_seconds": 4.8,
              "base_freq_hz": 1030.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": 57600,
              "start_seconds": 4.8,
              "base_freq_hz": 1030.0,
              "tone_spacing_hz": 1.905,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:15"
            },
            "best_row": {
              "variant": "lab_mask_xor_preview",
              "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
              "mapping_meta": {
                "tone_mapping": "ft8_gray_primary",
                "gray_direction": "inverse_observed_to_plain",
                "reverse_bits_within_tone_before_gray": true,
                "interleaver": "ft8_bitrev",
                "direction": "interleave_codeword_to_rx_inverse",
                "order_len": 174,
                "polarity": "inverted"
              },
              "bit_count": 174,
              "hard_weight_174": 84,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.566292,
                "min_abs": 0.008625,
                "max_abs": 3.871059,
                "positive": 46,
                "negative": 128,
                "zero": 0
              },
              "source_rank_score": 98.265168,
              "syndrome_weight": 24,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "15da00dc0c187968",
              "codeword174_sha256_16": "a34efb83ad21097f"
            },
            "top_rows": [
              {
                "variant": "lab_mask_xor_preview",
                "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 84,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.566292,
                  "min_abs": 0.008625,
                  "max_abs": 3.871059,
                  "positive": 46,
                  "negative": 128,
                  "zero": 0
                },
                "source_rank_score": 98.265168,
                "syndrome_weight": 24,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "15da00dc0c187968",
                "codeword174_sha256_16": "a34efb83ad21097f"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 46,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.251631,
                  "min_abs": 0.005541,
                  "max_abs": 4.032212,
                  "positive": 128,
                  "negative": 46,
                  "zero": 0
                },
                "source_rank_score": 105.006524,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ff55f5e7dbb755af",
                "codeword174_sha256_16": "46f8b82ab21340e3"
              },
              {
                "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": 125,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.553047,
                  "min_abs": 0.04156,
                  "max_abs": 3.744241,
                  "positive": 49,
                  "negative": 125,
                  "zero": 0
                },
                "source_rank_score": 106.212188,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "0a664839a51e9f34",
                "codeword174_sha256_16": "299293d8b8d7026b"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "none",
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 123,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.285799,
                  "min_abs": 0.003321,
                  "max_abs": 3.744241,
                  "positive": 50,
                  "negative": 124,
                  "zero": 0
                },
                "source_rank_score": 105.143196,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "afefdb2bc335171d",
                "codeword174_sha256_16": "67c8c6e096cb6235"
              },
              {
                "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": 52,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.562515,
                  "min_abs": 0.033601,
                  "max_abs": 4.042898,
                  "positive": 122,
                  "negative": 52,
                  "zero": 0
                },
                "source_rank_score": 106.25006,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "555090f944023a0c",
                "codeword174_sha256_16": "3d0eb40db86bb238"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_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": 64,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.045094,
                  "min_abs": 0.005438,
                  "max_abs": 3.871059,
                  "positive": 110,
                  "negative": 64,
                  "zero": 0
                },
                "source_rank_score": 104.180376,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "83306fbbd73e8853",
                "codeword174_sha256_16": "366e3c1a45351d5b"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
                "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": 137,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.540017,
                  "min_abs": 0.006373,
                  "max_abs": 4.032212,
                  "positive": 43,
                  "negative": 131,
                  "zero": 0
                },
                "source_rank_score": 106.160068,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "48e4ec60a6d27f12",
                "codeword174_sha256_16": "74765003214fc113"
              },
              {
                "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": 61,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.074864,
                  "min_abs": 0.002138,
                  "max_abs": 3.871059,
                  "positive": 117,
                  "negative": 57,
                  "zero": 0
                },
                "source_rank_score": 104.299456,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "83306fbbd73e8853",
                "codeword174_sha256_16": "28c0611403d18822"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
              "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
            ]
          },
          {
            "combination_index": 25,
            "offsets": {
              "start_offset_s": 0.06,
              "base_freq_offset_hz": 4.5,
              "tone_spacing_offset_hz": 0.0
            },
            "anchor_applied": {
              "start_seconds": 4.859999999999999,
              "base_freq_hz": 1029.5,
              "tone_spacing_hz": 1.875,
              "nsps": 6400
            },
            "pipeline_ok": true,
            "fec_input_summary": {
              "soft_bit_count": 174,
              "missing_soft_bits": 0,
              "complete_ldpc_input_candidate": true,
              "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
            },
            "sync_candidate": {
              "start_sample": 58320,
              "start_seconds": 4.86,
              "base_freq_hz": 1029.5,
              "tone_spacing_hz": 1.875,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:25"
            },
            "best_row": {
              "variant": "raw_msb_symbol_order",
              "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": 2.061371,
                "min_abs": 0.00324,
                "max_abs": 4.274643,
                "positive": 32,
                "negative": 142,
                "zero": 0
              },
              "source_rank_score": 126.245484,
              "syndrome_weight": 25,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "7fd92be77aa95d3a",
              "codeword174_sha256_16": "0201ec5a9b5b2e3b"
            },
            "top_rows": [
              {
                "variant": "raw_msb_symbol_order",
                "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": 2.061371,
                  "min_abs": 0.00324,
                  "max_abs": 4.274643,
                  "positive": 32,
                  "negative": 142,
                  "zero": 0
                },
                "source_rank_score": 126.245484,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7fd92be77aa95d3a",
                "codeword174_sha256_16": "0201ec5a9b5b2e3b"
              },
              {
                "variant": "lsb_within_each_tone",
                "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": 141,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 2.061371,
                  "min_abs": 0.00324,
                  "max_abs": 4.274643,
                  "positive": 32,
                  "negative": 142,
                  "zero": 0
                },
                "source_rank_score": 118.245484,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7fd92be77aa95d3a",
                "codeword174_sha256_16": "0201ec5a9b5b2e3b"
              },
              {
                "variant": "mapped_lsb_within_each_tone+no_interleaver",
                "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": 141,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 2.061371,
                  "min_abs": 0.00324,
                  "max_abs": 4.274643,
                  "positive": 32,
                  "negative": 142,
                  "zero": 0
                },
                "source_rank_score": 108.245484,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7fd92be77aa95d3a",
                "codeword174_sha256_16": "0201ec5a9b5b2e3b"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "raw_msb",
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 141,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 2.061371,
                  "min_abs": 0.00324,
                  "max_abs": 4.274643,
                  "positive": 32,
                  "negative": 142,
                  "zero": 0
                },
                "source_rank_score": 108.245484,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7fd92be77aa95d3a",
                "codeword174_sha256_16": "0201ec5a9b5b2e3b"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "raw_msb",
                  "interleaver": "ft8_bitrev",
                  "direction": "deinterleave_rx_to_codeword",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 141,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 2.061371,
                  "min_abs": 0.00324,
                  "max_abs": 4.274643,
                  "positive": 32,
                  "negative": 142,
                  "zero": 0
                },
                "source_rank_score": 108.245484,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7fd92be77aa95d3a",
                "codeword174_sha256_16": "0201ec5a9b5b2e3b"
              },
              {
                "variant": "mapped_raw_msb+no_interleaver",
                "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": 2.061371,
                  "min_abs": 0.00324,
                  "max_abs": 4.274643,
                  "positive": 32,
                  "negative": 142,
                  "zero": 0
                },
                "source_rank_score": 108.245484,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7fd92be77aa95d3a",
                "codeword174_sha256_16": "0201ec5a9b5b2e3b"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "none",
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 128,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.219845,
                  "min_abs": 0.001305,
                  "max_abs": 3.783049,
                  "positive": 42,
                  "negative": 132,
                  "zero": 0
                },
                "source_rank_score": 104.87938,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "522313e00a992a7b",
                "codeword174_sha256_16": "b7191964a661a02d"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "none",
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 128,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.17103,
                  "min_abs": 0.002471,
                  "max_abs": 3.783049,
                  "positive": 38,
                  "negative": 136,
                  "zero": 0
                },
                "source_rank_score": 104.68412,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "522313e00a992a7b",
                "codeword174_sha256_16": "b7191964a661a02d"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 3.5,
              "tone_spacing_offset_hz": -0.03
            },
            "anchor_applied": {
              "start_seconds": 4.859999999999999,
              "base_freq_hz": 1028.5,
              "tone_spacing_hz": 1.845,
              "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.5,
              "tone_spacing_hz": 1.845,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:20"
            },
            "best_row": {
              "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": 125,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.66919,
                "min_abs": 0.002626,
                "max_abs": 3.91817,
                "positive": 41,
                "negative": 133,
                "zero": 0
              },
              "source_rank_score": 106.67676,
              "syndrome_weight": 25,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "19b08813892a465d",
              "codeword174_sha256_16": "98ad9f5d93eab225"
            },
            "top_rows": [
              {
                "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": 125,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.66919,
                  "min_abs": 0.002626,
                  "max_abs": 3.91817,
                  "positive": 41,
                  "negative": 133,
                  "zero": 0
                },
                "source_rank_score": 106.67676,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "19b08813892a465d",
                "codeword174_sha256_16": "98ad9f5d93eab225"
              },
              {
                "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": 105,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.131115,
                  "min_abs": 0.003669,
                  "max_abs": 3.549497,
                  "positive": 67,
                  "negative": 107,
                  "zero": 0
                },
                "source_rank_score": 104.52446,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "dd000bb12884ff34",
                "codeword174_sha256_16": "c59341021e0676e7"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver",
                "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": 59,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.701322,
                  "min_abs": 0.004742,
                  "max_abs": 3.873713,
                  "positive": 120,
                  "negative": 54,
                  "zero": 0
                },
                "source_rank_score": 106.805288,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "9c01737f4aeb9695",
                "codeword174_sha256_16": "bc131bc857b8fd31"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 116,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.691194,
                  "min_abs": 0.004742,
                  "max_abs": 3.801836,
                  "positive": 48,
                  "negative": 126,
                  "zero": 0
                },
                "source_rank_score": 106.764776,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "aac0c46f3706d4b7",
                "codeword174_sha256_16": "98e503566e802118"
              },
              {
                "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": 116,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.634484,
                  "min_abs": 0.003516,
                  "max_abs": 3.801836,
                  "positive": 51,
                  "negative": 123,
                  "zero": 0
                },
                "source_rank_score": 106.537936,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "aac0c46f3706d4b7",
                "codeword174_sha256_16": "98e503566e802118"
              },
              {
                "variant": "reverse_symbol_order",
                "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": 61,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.780164,
                  "min_abs": 0.003515,
                  "max_abs": 4.088622,
                  "positive": 134,
                  "negative": 40,
                  "zero": 0
                },
                "source_rank_score": 111.120656,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "17e5d06559c52a35",
                "codeword174_sha256_16": "001b4860f509a5d7"
              },
              {
                "variant": "reverse_full_bitstream",
                "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 61,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.63496,
                  "min_abs": 0.003515,
                  "max_abs": 3.873713,
                  "positive": 114,
                  "negative": 60,
                  "zero": 0
                },
                "source_rank_score": 109.53984,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "17e5d06559c52a35",
                "codeword174_sha256_16": "001b4860f509a5d7"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "lsb_within_each_tone+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "lsb_within_each_tone",
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 39,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 2.202357,
                  "min_abs": 0.004742,
                  "max_abs": 4.088622,
                  "positive": 139,
                  "negative": 35,
                  "zero": 0
                },
                "source_rank_score": 108.809428,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2e790574e40151c8",
                "codeword174_sha256_16": "5df9f8ed4f8c7306"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 23,
            "offsets": {
              "start_offset_s": 0.06,
              "base_freq_offset_hz": 4.0,
              "tone_spacing_offset_hz": -0.03
            },
            "anchor_applied": {
              "start_seconds": 4.859999999999999,
              "base_freq_hz": 1029.0,
              "tone_spacing_hz": 1.845,
              "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": 1029.0,
              "tone_spacing_hz": 1.845,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:23"
            },
            "best_row": {
              "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
              "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
              "mapping_meta": {
                "tone_mapping": "ft8_gray_primary",
                "gray_direction": "inverse_observed_to_plain",
                "reverse_bits_within_tone_before_gray": false,
                "interleaver": "none",
                "polarity": "inverted"
              },
              "bit_count": 174,
              "hard_weight_174": 107,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.110512,
                "min_abs": 0.000235,
                "max_abs": 3.70669,
                "positive": 62,
                "negative": 112,
                "zero": 0
              },
              "source_rank_score": 104.442048,
              "syndrome_weight": 25,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "e2a04bc8873cd51b",
              "codeword174_sha256_16": "5f92cab401d389b8"
            },
            "top_rows": [
              {
                "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "none",
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 107,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.110512,
                  "min_abs": 0.000235,
                  "max_abs": 3.70669,
                  "positive": 62,
                  "negative": 112,
                  "zero": 0
                },
                "source_rank_score": 104.442048,
                "syndrome_weight": 25,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "e2a04bc8873cd51b",
                "codeword174_sha256_16": "5f92cab401d389b8"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_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": 116,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.209004,
                  "min_abs": 4.8e-05,
                  "max_abs": 3.868363,
                  "positive": 49,
                  "negative": 125,
                  "zero": 0
                },
                "source_rank_score": 104.836016,
                "syndrome_weight": 28,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2a60dab5f22bdeb9",
                "codeword174_sha256_16": "324857f8511d7ab8"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 44,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.483932,
                  "min_abs": 0.002548,
                  "max_abs": 4.301509,
                  "positive": 130,
                  "negative": 44,
                  "zero": 0
                },
                "source_rank_score": 105.935728,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "41f38ee3a2884ea3",
                "codeword174_sha256_16": "da6cffabf95007e0"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 45,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.528267,
                  "min_abs": 0.000574,
                  "max_abs": 4.301509,
                  "positive": 134,
                  "negative": 40,
                  "zero": 0
                },
                "source_rank_score": 106.113068,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "41f38ee3a2884ea3",
                "codeword174_sha256_16": "e6d7ca287cd841f5"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
                "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 47,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.483001,
                  "min_abs": 0.000463,
                  "max_abs": 4.301509,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 105.932004,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "76e6ebcaab758d57",
                "codeword174_sha256_16": "43fd69baa6275efa"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+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": 133,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.051506,
                  "min_abs": 0.000742,
                  "max_abs": 3.029638,
                  "positive": 42,
                  "negative": 132,
                  "zero": 0
                },
                "source_rank_score": 104.206024,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "80152402848c8fd2",
                "codeword174_sha256_16": "b1aa695db14b9528"
              },
              {
                "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "deinterleave_rx_to_codeword",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 54,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.570633,
                  "min_abs": 0.013213,
                  "max_abs": 3.868363,
                  "positive": 123,
                  "negative": 51,
                  "zero": 0
                },
                "source_rank_score": 106.282532,
                "syndrome_weight": 32,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "e68de5e9e889b44d",
                "codeword174_sha256_16": "4472fdb1ccb84734"
              },
              {
                "variant": "mapped_raw_msb+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": 56,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.549143,
                  "min_abs": 0.04597,
                  "max_abs": 3.742293,
                  "positive": 120,
                  "negative": 54,
                  "zero": 0
                },
                "source_rank_score": 106.196572,
                "syndrome_weight": 32,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2f35f2655a2e1d94",
                "codeword174_sha256_16": "258ccfc85b73ee00"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 3,
            "offsets": {
              "start_offset_s": 0.0,
              "base_freq_offset_hz": 3.0,
              "tone_spacing_offset_hz": 0.03
            },
            "anchor_applied": {
              "start_seconds": 4.8,
              "base_freq_hz": 1028.0,
              "tone_spacing_hz": 1.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": 57600,
              "start_seconds": 4.8,
              "base_freq_hz": 1028.0,
              "tone_spacing_hz": 1.905,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:3"
            },
            "best_row": {
              "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
              "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": 38,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.883273,
                "min_abs": 0.004668,
                "max_abs": 4.206963,
                "positive": 144,
                "negative": 30,
                "zero": 0
              },
              "source_rank_score": 107.533092,
              "syndrome_weight": 26,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "9dc92bc8076d3453",
              "codeword174_sha256_16": "69589423fe420ec9"
            },
            "top_rows": [
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver",
                "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": 38,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.883273,
                  "min_abs": 0.004668,
                  "max_abs": 4.206963,
                  "positive": 144,
                  "negative": 30,
                  "zero": 0
                },
                "source_rank_score": 107.533092,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "9dc92bc8076d3453",
                "codeword174_sha256_16": "69589423fe420ec9"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "deinterleave_rx_to_codeword",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 63,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.495211,
                  "min_abs": 0.006001,
                  "max_abs": 4.206963,
                  "positive": 115,
                  "negative": 59,
                  "zero": 0
                },
                "source_rank_score": 105.980844,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "980fa2c313a59ed7",
                "codeword174_sha256_16": "94f3aa758feed897"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+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": 113,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.171359,
                  "min_abs": 0.000261,
                  "max_abs": 3.142279,
                  "positive": 62,
                  "negative": 112,
                  "zero": 0
                },
                "source_rank_score": 104.685436,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "d347312390ff5cf2",
                "codeword174_sha256_16": "6dd8473311877d6b"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver",
                "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 55,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.140102,
                  "min_abs": 1e-06,
                  "max_abs": 2.987177,
                  "positive": 121,
                  "negative": 53,
                  "zero": 0
                },
                "source_rank_score": 104.560408,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "a17885ef99d8871e",
                "codeword174_sha256_16": "9d7026f93f1641b5"
              },
              {
                "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": 40,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.826466,
                  "min_abs": 0.000261,
                  "max_abs": 4.206963,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 125.305864,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2713ced8ec42e2ee",
                "codeword174_sha256_16": "df1c85af54cc4761"
              },
              {
                "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": 40,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.520682,
                  "min_abs": 0.000261,
                  "max_abs": 3.761123,
                  "positive": 113,
                  "negative": 61,
                  "zero": 0
                },
                "source_rank_score": 116.082728,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2713ced8ec42e2ee",
                "codeword174_sha256_16": "df1c85af54cc4761"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+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": 40,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.826466,
                  "min_abs": 0.000261,
                  "max_abs": 4.206963,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 107.305864,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2713ced8ec42e2ee",
                "codeword174_sha256_16": "df1c85af54cc4761"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+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": 40,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.826466,
                  "min_abs": 0.000261,
                  "max_abs": 4.206963,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 107.305864,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2713ced8ec42e2ee",
                "codeword174_sha256_16": "df1c85af54cc4761"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 16,
            "offsets": {
              "start_offset_s": 0.06,
              "base_freq_offset_hz": 3.0,
              "tone_spacing_offset_hz": 0.0
            },
            "anchor_applied": {
              "start_seconds": 4.859999999999999,
              "base_freq_hz": 1028.0,
              "tone_spacing_hz": 1.875,
              "nsps": 6400
            },
            "pipeline_ok": true,
            "fec_input_summary": {
              "soft_bit_count": 174,
              "missing_soft_bits": 0,
              "complete_ldpc_input_candidate": true,
              "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
            },
            "sync_candidate": {
              "start_sample": 58320,
              "start_seconds": 4.86,
              "base_freq_hz": 1028.0,
              "tone_spacing_hz": 1.875,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:16"
            },
            "best_row": {
              "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
              "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": 52,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.386406,
                "min_abs": 0.005031,
                "max_abs": 4.071798,
                "positive": 133,
                "negative": 41,
                "zero": 0
              },
              "source_rank_score": 105.545624,
              "syndrome_weight": 26,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "20cb8982e61b4da6",
              "codeword174_sha256_16": "930f19c9f48a77d8"
            },
            "top_rows": [
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "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": 52,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.386406,
                  "min_abs": 0.005031,
                  "max_abs": 4.071798,
                  "positive": 133,
                  "negative": 41,
                  "zero": 0
                },
                "source_rank_score": 105.545624,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "20cb8982e61b4da6",
                "codeword174_sha256_16": "930f19c9f48a77d8"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "deinterleave_rx_to_codeword",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 52,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.315017,
                  "min_abs": 0.004658,
                  "max_abs": 4.071798,
                  "positive": 131,
                  "negative": 43,
                  "zero": 0
                },
                "source_rank_score": 105.260068,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "20cb8982e61b4da6",
                "codeword174_sha256_16": "930f19c9f48a77d8"
              },
              {
                "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": 117,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.878257,
                  "min_abs": 0.005474,
                  "max_abs": 4.082287,
                  "positive": 34,
                  "negative": 140,
                  "zero": 0
                },
                "source_rank_score": 111.513028,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "5a5f45650d34d120",
                "codeword174_sha256_16": "c3ddcaf03c3ccd70"
              },
              {
                "variant": "reverse_symbol_order",
                "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": 33,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.74431,
                  "min_abs": 0.007324,
                  "max_abs": 3.889221,
                  "positive": 127,
                  "negative": 47,
                  "zero": 0
                },
                "source_rank_score": 110.97724,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "e1e8116e828e9db5",
                "codeword174_sha256_16": "83548fad996036b7"
              },
              {
                "variant": "reverse_full_bitstream",
                "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": 33,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.935993,
                  "min_abs": 0.007324,
                  "max_abs": 4.082287,
                  "positive": 147,
                  "negative": 27,
                  "zero": 0
                },
                "source_rank_score": 110.743972,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "e1e8116e828e9db5",
                "codeword174_sha256_16": "83548fad996036b7"
              },
              {
                "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": 117,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.686575,
                  "min_abs": 0.005474,
                  "max_abs": 3.889221,
                  "positive": 54,
                  "negative": 120,
                  "zero": 0
                },
                "source_rank_score": 109.7463,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "5a5f45650d34d120",
                "codeword174_sha256_16": "c3ddcaf03c3ccd70"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "deinterleave_rx_to_codeword",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 99,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.116924,
                  "min_abs": 0.004138,
                  "max_abs": 3.889221,
                  "positive": 72,
                  "negative": 102,
                  "zero": 0
                },
                "source_rank_score": 104.467696,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "145bc09c008ba5d6",
                "codeword174_sha256_16": "409c00e9c14169e8"
              },
              {
                "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": 48,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.737959,
                  "min_abs": 0.057881,
                  "max_abs": 4.071798,
                  "positive": 127,
                  "negative": 47,
                  "zero": 0
                },
                "source_rank_score": 106.951836,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "93cb5265335a79ef",
                "codeword174_sha256_16": "4766150d6d4fa78d"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
              "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
            ]
          },
          {
            "combination_index": 12,
            "offsets": {
              "start_offset_s": 0.0,
              "base_freq_offset_hz": 4.5,
              "tone_spacing_offset_hz": 0.03
            },
            "anchor_applied": {
              "start_seconds": 4.8,
              "base_freq_hz": 1029.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": 57600,
              "start_seconds": 4.8,
              "base_freq_hz": 1029.5,
              "tone_spacing_hz": 1.905,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:12"
            },
            "best_row": {
              "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
              "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_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": 138,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.353497,
                "min_abs": 0.000502,
                "max_abs": 3.874215,
                "positive": 36,
                "negative": 138,
                "zero": 0
              },
              "source_rank_score": 105.413988,
              "syndrome_weight": 26,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "2a682adb0723359d",
              "codeword174_sha256_16": "a247ca5c9f29b5ce"
            },
            "top_rows": [
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_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": 138,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.353497,
                  "min_abs": 0.000502,
                  "max_abs": 3.874215,
                  "positive": 36,
                  "negative": 138,
                  "zero": 0
                },
                "source_rank_score": 105.413988,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2a682adb0723359d",
                "codeword174_sha256_16": "a247ca5c9f29b5ce"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+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": 138,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.329849,
                  "min_abs": 0.000185,
                  "max_abs": 3.874215,
                  "positive": 36,
                  "negative": 138,
                  "zero": 0
                },
                "source_rank_score": 105.319396,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "2a682adb0723359d",
                "codeword174_sha256_16": "a247ca5c9f29b5ce"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 45,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.620206,
                  "min_abs": 0.007163,
                  "max_abs": 3.874215,
                  "positive": 136,
                  "negative": 38,
                  "zero": 0
                },
                "source_rank_score": 106.480824,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "744b05836ecbcbe7",
                "codeword174_sha256_16": "568610ba9457b09f"
              },
              {
                "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": 135,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.223374,
                  "min_abs": 0.000233,
                  "max_abs": 3.781995,
                  "positive": 33,
                  "negative": 141,
                  "zero": 0
                },
                "source_rank_score": 104.893496,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "346b39e657fd9af2",
                "codeword174_sha256_16": "46cb1d75970a3803"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_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": 135,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.221819,
                  "min_abs": 8.2e-05,
                  "max_abs": 3.781995,
                  "positive": 35,
                  "negative": 139,
                  "zero": 0
                },
                "source_rank_score": 104.887276,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "346b39e657fd9af2",
                "codeword174_sha256_16": "46cb1d75970a3803"
              },
              {
                "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": 135,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.592845,
                  "min_abs": 0.010963,
                  "max_abs": 3.781995,
                  "positive": 34,
                  "negative": 140,
                  "zero": 0
                },
                "source_rank_score": 124.37138,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "5dd3399566d3b627",
                "codeword174_sha256_16": "a46e41c47e03bed8"
              },
              {
                "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": 135,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.555609,
                  "min_abs": 0.004557,
                  "max_abs": 3.781995,
                  "positive": 34,
                  "negative": 140,
                  "zero": 0
                },
                "source_rank_score": 124.222436,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "5dd3399566d3b627",
                "codeword174_sha256_16": "a46e41c47e03bed8"
              },
              {
                "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": 135,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.855681,
                  "min_abs": 0.010963,
                  "max_abs": 4.002562,
                  "positive": 28,
                  "negative": 146,
                  "zero": 0
                },
                "source_rank_score": 117.422724,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "5dd3399566d3b627",
                "codeword174_sha256_16": "a46e41c47e03bed8"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 11,
            "offsets": {
              "start_offset_s": 0.0,
              "base_freq_offset_hz": 4.5,
              "tone_spacing_offset_hz": -0.03
            },
            "anchor_applied": {
              "start_seconds": 4.8,
              "base_freq_hz": 1029.5,
              "tone_spacing_hz": 1.845,
              "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": 57600,
              "start_seconds": 4.8,
              "base_freq_hz": 1029.5,
              "tone_spacing_hz": 1.845,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:11"
            },
            "best_row": {
              "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+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": 134,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.272009,
                "min_abs": 0.000567,
                "max_abs": 4.079288,
                "positive": 42,
                "negative": 132,
                "zero": 0
              },
              "source_rank_score": 105.088036,
              "syndrome_weight": 26,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "dc0344c66ac2c99b",
              "codeword174_sha256_16": "6974c4c526e2c94d"
            },
            "top_rows": [
              {
                "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+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": 134,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.272009,
                  "min_abs": 0.000567,
                  "max_abs": 4.079288,
                  "positive": 42,
                  "negative": 132,
                  "zero": 0
                },
                "source_rank_score": 105.088036,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "dc0344c66ac2c99b",
                "codeword174_sha256_16": "6974c4c526e2c94d"
              },
              {
                "variant": "raw_msb_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": 41,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.587569,
                  "min_abs": 0.00039,
                  "max_abs": 3.918957,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 124.350276,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ea1ac80658c5352d",
                "codeword174_sha256_16": "c5c2175ccde6e5b3"
              },
              {
                "variant": "lsb_within_each_tone",
                "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": 41,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.847373,
                  "min_abs": 0.00039,
                  "max_abs": 4.079288,
                  "positive": 144,
                  "negative": 30,
                  "zero": 0
                },
                "source_rank_score": 117.389492,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ea1ac80658c5352d",
                "codeword174_sha256_16": "c5c2175ccde6e5b3"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "raw_msb+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "raw_msb",
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 41,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.587569,
                  "min_abs": 0.00039,
                  "max_abs": 3.918957,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 106.350276,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ea1ac80658c5352d",
                "codeword174_sha256_16": "c5c2175ccde6e5b3"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver",
                "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": 41,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.587569,
                  "min_abs": 0.00039,
                  "max_abs": 3.918957,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 106.350276,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ea1ac80658c5352d",
                "codeword174_sha256_16": "c5c2175ccde6e5b3"
              },
              {
                "variant": "mapped_lsb_within_each_tone+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": 41,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.587569,
                  "min_abs": 0.00039,
                  "max_abs": 3.918957,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 106.350276,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ea1ac80658c5352d",
                "codeword174_sha256_16": "c5c2175ccde6e5b3"
              },
              {
                "variant": "mapped_raw_msb+no_interleaver",
                "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": 41,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.587569,
                  "min_abs": 0.00039,
                  "max_abs": 3.918957,
                  "positive": 132,
                  "negative": 42,
                  "zero": 0
                },
                "source_rank_score": 106.350276,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "ea1ac80658c5352d",
                "codeword174_sha256_16": "c5c2175ccde6e5b3"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+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": 136,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.357028,
                  "min_abs": 0.002021,
                  "max_abs": 4.079288,
                  "positive": 38,
                  "negative": 136,
                  "zero": 0
                },
                "source_rank_score": 105.428112,
                "syndrome_weight": 28,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "dc0344c66ac2c99b",
                "codeword174_sha256_16": "9f8723dc4b58b6cf"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
              "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
            ]
          },
          {
            "combination_index": 24,
            "offsets": {
              "start_offset_s": 0.06,
              "base_freq_offset_hz": 4.0,
              "tone_spacing_offset_hz": 0.03
            },
            "anchor_applied": {
              "start_seconds": 4.859999999999999,
              "base_freq_hz": 1029.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": 1029.0,
              "tone_spacing_hz": 1.905,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:24"
            },
            "best_row": {
              "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
              "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+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": 124,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.12694,
                "min_abs": 0.003683,
                "max_abs": 3.638909,
                "positive": 49,
                "negative": 125,
                "zero": 0
              },
              "source_rank_score": 104.50776,
              "syndrome_weight": 26,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "df177b1b43ebcb88",
              "codeword174_sha256_16": "60205fdd011c7e05"
            },
            "top_rows": [
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+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": 124,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.12694,
                  "min_abs": 0.003683,
                  "max_abs": 3.638909,
                  "positive": 49,
                  "negative": 125,
                  "zero": 0
                },
                "source_rank_score": 104.50776,
                "syndrome_weight": 26,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "df177b1b43ebcb88",
                "codeword174_sha256_16": "60205fdd011c7e05"
              },
              {
                "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 122,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.564733,
                  "min_abs": 0.002655,
                  "max_abs": 3.707365,
                  "positive": 51,
                  "negative": 123,
                  "zero": 0
                },
                "source_rank_score": 106.258932,
                "syndrome_weight": 28,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "4f001edffee5017f",
                "codeword174_sha256_16": "a5e99a9fff619150"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "lsb_within_each_tone+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "lsb_within_each_tone",
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 51,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.419682,
                  "min_abs": 0.024839,
                  "max_abs": 3.54107,
                  "positive": 123,
                  "negative": 51,
                  "zero": 0
                },
                "source_rank_score": 105.678728,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "7a4f98eb8214a8ce",
                "codeword174_sha256_16": "395bf0abe3aec3be"
              },
              {
                "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": 89,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 2.03621,
                  "min_abs": 0.05766,
                  "max_abs": 4.191314,
                  "positive": 40,
                  "negative": 134,
                  "zero": 0
                },
                "source_rank_score": 100.14484,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "c01f71a2edd9b97d",
                "codeword174_sha256_16": "6cbef933635a5885"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "lsb_within_each_tone",
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 134,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.700993,
                  "min_abs": 0.004606,
                  "max_abs": 4.191314,
                  "positive": 35,
                  "negative": 139,
                  "zero": 0
                },
                "source_rank_score": 106.803972,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "88b1b2753c5bdae5",
                "codeword174_sha256_16": "0e969acbf79d9c0c"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_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": 126,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.20202,
                  "min_abs": 0.000831,
                  "max_abs": 3.64312,
                  "positive": 43,
                  "negative": 131,
                  "zero": 0
                },
                "source_rank_score": 104.80808,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "df177b1b43ebcb88",
                "codeword174_sha256_16": "136b5757a40ae6cc"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 126,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.128603,
                  "min_abs": 0.008687,
                  "max_abs": 4.191314,
                  "positive": 46,
                  "negative": 128,
                  "zero": 0
                },
                "source_rank_score": 104.514412,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "1deaddb66b489890",
                "codeword174_sha256_16": "d67680bf6760f7e3"
              },
              {
                "variant": "raw_msb_symbol_order",
                "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "none",
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 121,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.461699,
                  "min_abs": 0.004606,
                  "max_abs": 3.54107,
                  "positive": 49,
                  "negative": 125,
                  "zero": 0
                },
                "source_rank_score": 123.846796,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "c9536416c7505249",
                "codeword174_sha256_16": "b716e17f5524d175"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.",
              "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation."
            ]
          },
          {
            "combination_index": 14,
            "offsets": {
              "start_offset_s": 0.0,
              "base_freq_offset_hz": 5.0,
              "tone_spacing_offset_hz": -0.03
            },
            "anchor_applied": {
              "start_seconds": 4.8,
              "base_freq_hz": 1030.0,
              "tone_spacing_hz": 1.845,
              "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": 57600,
              "start_seconds": 4.8,
              "base_freq_hz": 1030.0,
              "tone_spacing_hz": 1.845,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:14"
            },
            "best_row": {
              "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
              "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
              "mapping_meta": {
                "tone_mapping": "ft8_gray_alt_high",
                "gray_direction": "inverse_observed_to_plain",
                "reverse_bits_within_tone_before_gray": true,
                "interleaver": "ft8_bitrev",
                "direction": "deinterleave_rx_to_codeword",
                "order_len": 174
              },
              "bit_count": 174,
              "hard_weight_174": 47,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.347502,
                "min_abs": 0.002411,
                "max_abs": 3.955787,
                "positive": 129,
                "negative": 45,
                "zero": 0
              },
              "source_rank_score": 105.390008,
              "syndrome_weight": 27,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "1c2e6d4c1a1e2ab1",
              "codeword174_sha256_16": "b348ee70b6a3483c"
            },
            "top_rows": [
              {
                "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "deinterleave_rx_to_codeword",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 47,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.347502,
                  "min_abs": 0.002411,
                  "max_abs": 3.955787,
                  "positive": 129,
                  "negative": 45,
                  "zero": 0
                },
                "source_rank_score": 105.390008,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "1c2e6d4c1a1e2ab1",
                "codeword174_sha256_16": "b348ee70b6a3483c"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 44,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 0.915549,
                  "min_abs": 0.000541,
                  "max_abs": 3.70776,
                  "positive": 135,
                  "negative": 39,
                  "zero": 0
                },
                "source_rank_score": 103.662196,
                "syndrome_weight": 28,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "4519b9b754d1204f",
                "codeword174_sha256_16": "d94e9095d6c6e93a"
              },
              {
                "variant": "mapped_raw_msb+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": 140,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.96276,
                  "min_abs": 0.028868,
                  "max_abs": 4.041541,
                  "positive": 35,
                  "negative": 139,
                  "zero": 0
                },
                "source_rank_score": 107.85104,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "f1cd8126e5c533e3",
                "codeword174_sha256_16": "16a4556bf802b492"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+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": 119,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.065423,
                  "min_abs": 0.005117,
                  "max_abs": 3.498813,
                  "positive": 52,
                  "negative": 122,
                  "zero": 0
                },
                "source_rank_score": 104.261692,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "af85b2aafd15d647",
                "codeword174_sha256_16": "6b02d8170f5771ba"
              },
              {
                "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
                "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 51,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 0.938196,
                  "min_abs": 8.5e-05,
                  "max_abs": 3.107059,
                  "positive": 127,
                  "negative": 47,
                  "zero": 0
                },
                "source_rank_score": 103.752784,
                "syndrome_weight": 31,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "1ef1df661b088fb2",
                "codeword174_sha256_16": "7dcdc2345950aa49"
              },
              {
                "variant": "raw_msb_symbol_order",
                "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_primary",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": true,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174,
                  "polarity": "inverted"
                },
                "bit_count": 174,
                "hard_weight_174": 132,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.402685,
                  "min_abs": 0.016119,
                  "max_abs": 4.041541,
                  "positive": 39,
                  "negative": 135,
                  "zero": 0
                },
                "source_rank_score": 123.61074,
                "syndrome_weight": 32,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "9efa82de730c504e",
                "codeword174_sha256_16": "9fc74ff7a5307a79"
              },
              {
                "variant": "lsb_within_each_tone",
                "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": 132,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.602357,
                  "min_abs": 0.016119,
                  "max_abs": 3.889323,
                  "positive": 38,
                  "negative": 136,
                  "zero": 0
                },
                "source_rank_score": 116.409428,
                "syndrome_weight": 32,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "9efa82de730c504e",
                "codeword174_sha256_16": "9fc74ff7a5307a79"
              },
              {
                "variant": "mapped_lsb_within_each_tone+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.96276,
                  "min_abs": 0.028868,
                  "max_abs": 4.041541,
                  "positive": 35,
                  "negative": 139,
                  "zero": 0
                },
                "source_rank_score": 107.85104,
                "syndrome_weight": 32,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "128686bc8fd1c14d",
                "codeword174_sha256_16": "e1946ca31cb74111"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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": 28,
            "offsets": {
              "start_offset_s": 0.06,
              "base_freq_offset_hz": 5.0,
              "tone_spacing_offset_hz": 0.0
            },
            "anchor_applied": {
              "start_seconds": 4.859999999999999,
              "base_freq_hz": 1030.0,
              "tone_spacing_hz": 1.875,
              "nsps": 6400
            },
            "pipeline_ok": true,
            "fec_input_summary": {
              "soft_bit_count": 174,
              "missing_soft_bits": 0,
              "complete_ldpc_input_candidate": true,
              "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
            },
            "sync_candidate": {
              "start_sample": 58320,
              "start_seconds": 4.86,
              "base_freq_hz": 1030.0,
              "tone_spacing_hz": 1.875,
              "nsps": 6400,
              "candidate_score": null,
              "costas_hits": null,
              "avg_margin_db": null,
              "anchor_source": "step38_timing_boundary_sweep:28"
            },
            "best_row": {
              "variant": "lab_mask_xor_preview",
              "transform": "raw_msb+no_interleaver",
              "mapping_meta": {
                "tone_mapping": "raw_msb",
                "interleaver": "none"
              },
              "bit_count": 174,
              "hard_weight_174": 95,
              "llr_stats": {
                "count": 174,
                "avg_abs": 1.983812,
                "min_abs": 0.041058,
                "max_abs": 4.24207,
                "positive": 136,
                "negative": 38,
                "zero": 0
              },
              "source_rank_score": 99.935248,
              "syndrome_weight": 27,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "f2ef1762c906ef31",
              "codeword174_sha256_16": "c6cb32457e4c0ce8"
            },
            "top_rows": [
              {
                "variant": "lab_mask_xor_preview",
                "transform": "raw_msb+no_interleaver",
                "mapping_meta": {
                  "tone_mapping": "raw_msb",
                  "interleaver": "none"
                },
                "bit_count": 174,
                "hard_weight_174": 95,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.983812,
                  "min_abs": 0.041058,
                  "max_abs": 4.24207,
                  "positive": 136,
                  "negative": 38,
                  "zero": 0
                },
                "source_rank_score": 99.935248,
                "syndrome_weight": 27,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "f2ef1762c906ef31",
                "codeword174_sha256_16": "c6cb32457e4c0ce8"
              },
              {
                "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_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": 62,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 0.803329,
                  "min_abs": 0.000439,
                  "max_abs": 4.003245,
                  "positive": 117,
                  "negative": 57,
                  "zero": 0
                },
                "source_rank_score": 103.213316,
                "syndrome_weight": 28,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "1ddf65b53765c405",
                "codeword174_sha256_16": "d21ebfe4fe19a48e"
              },
              {
                "variant": "lab_mask_xor_preview",
                "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": 80,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.391376,
                  "min_abs": 0.011395,
                  "max_abs": 4.003245,
                  "positive": 47,
                  "negative": 127,
                  "zero": 0
                },
                "source_rank_score": 97.565504,
                "syndrome_weight": 28,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "18e650f62fd5e09a",
                "codeword174_sha256_16": "7ffc3739b59e3fa2"
              },
              {
                "variant": "mapped_lsb_within_each_tone+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": 59,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.384894,
                  "min_abs": 0.012691,
                  "max_abs": 3.864479,
                  "positive": 122,
                  "negative": 52,
                  "zero": 0
                },
                "source_rank_score": 105.539576,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "cc70148368f3b858",
                "codeword174_sha256_16": "1efb9deb93117651"
              },
              {
                "variant": "mapped_ft8_gray_alt_high_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": 131,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.347851,
                  "min_abs": 2e-05,
                  "max_abs": 3.94795,
                  "positive": 42,
                  "negative": 132,
                  "zero": 0
                },
                "source_rank_score": 105.391404,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "5e6c6e2b61b907a6",
                "codeword174_sha256_16": "c23c8e48b4495a2e"
              },
              {
                "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+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": 105,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 0.918547,
                  "min_abs": 0.004101,
                  "max_abs": 4.003245,
                  "positive": 61,
                  "negative": 113,
                  "zero": 0
                },
                "source_rank_score": 103.674188,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "3223363eef47db07",
                "codeword174_sha256_16": "d7d8c2ca45f49a02"
              },
              {
                "variant": "lab_mask_xor_preview",
                "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
                "mapping_meta": {
                  "tone_mapping": "ft8_gray_alt_high",
                  "gray_direction": "inverse_observed_to_plain",
                  "reverse_bits_within_tone_before_gray": false,
                  "interleaver": "ft8_bitrev",
                  "direction": "interleave_codeword_to_rx_inverse",
                  "order_len": 174
                },
                "bit_count": 174,
                "hard_weight_174": 91,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.564828,
                  "min_abs": 0.002818,
                  "max_abs": 3.94795,
                  "positive": 136,
                  "negative": 38,
                  "zero": 0
                },
                "source_rank_score": 98.259312,
                "syndrome_weight": 29,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "d976abd0f4c5e758",
                "codeword174_sha256_16": "9c0ea41469c0b0ac"
              },
              {
                "variant": "lab_mask_xor_preview",
                "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": 82,
                "llr_stats": {
                  "count": 174,
                  "avg_abs": 1.355256,
                  "min_abs": 0.002818,
                  "max_abs": 4.003245,
                  "positive": 50,
                  "negative": 124,
                  "zero": 0
                },
                "source_rank_score": 97.421024,
                "syndrome_weight": 30,
                "valid_codeword_hard_decision": false,
                "message91_sha256_16": "d3b942034a3e8ac6",
                "codeword174_sha256_16": "58bfad37282e8343"
              }
            ],
            "warnings": [
              "Step 38 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 38 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.",
              "Step 38 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 38 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/step38_timing_boundary_sweep.json",
          "timing_best_candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step38_best_timing_fec_candidate.json"
        },
        "decodes": [],
        "warnings": [
          "Step 38 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."
      }
    }
  },
  "bundles": [
    {
      "name": "js8_decoder_lab_real_run_20260527T041823Z.zip",
      "url": "/logs/js8_decoder_lab_real_run_20260527T041823Z.zip",
      "size": 879022,
      "mtime_utc": "2026-05-27T04:28:02Z"
    },
    {
      "name": "js8_decoder_lab_real_run_20260527T035634Z.zip",
      "url": "/logs/js8_decoder_lab_real_run_20260527T035634Z.zip",
      "size": 731839,
      "mtime_utc": "2026-05-27T04:06:07Z"
    },
    {
      "name": "js8_decoder_lab_real_run_20260527T033514Z.zip",
      "url": "/logs/js8_decoder_lab_real_run_20260527T033514Z.zip",
      "size": 585516,
      "mtime_utc": "2026-05-27T03:44:19Z"
    },
    {
      "name": "js8_decoder_lab_real_run_20260526T180620Z.zip",
      "url": "/logs/js8_decoder_lab_real_run_20260526T180620Z.zip",
      "size": 380494,
      "mtime_utc": "2026-05-26T18:17:38Z"
    },
    {
      "name": "js8_decoder_lab_real_run_20260526T161453Z.zip",
      "url": "/logs/js8_decoder_lab_real_run_20260526T161453Z.zip",
      "size": 330478,
      "mtime_utc": "2026-05-26T16:28:31Z"
    },
    {
      "name": "js8_decoder_lab_real_run_20260526T155012Z.zip",
      "url": "/logs/js8_decoder_lab_real_run_20260526T155012Z.zip",
      "size": 251055,
      "mtime_utc": "2026-05-26T16:04:16Z"
    },
    {
      "name": "js8_decoder_lab_real_run_20260526T152808Z.zip",
      "url": "/logs/js8_decoder_lab_real_run_20260526T152808Z.zip",
      "size": 183168,
      "mtime_utc": "2026-05-26T15:36:20Z"
    },
    {
      "name": "js8_decoder_lab_real_run_20260526T114834Z.zip",
      "url": "/logs/js8_decoder_lab_real_run_20260526T114834Z.zip",
      "size": 108297,
      "mtime_utc": "2026-05-26T11:59:31Z"
    }
  ],
  "stable_latest_links": {
    "browser_report": "/logs/js8_browser_report_latest.json",
    "input_check": "/logs/js8_server_input_check_latest.json",
    "quick_window_scan": "/logs/js8_server_quick_window_scan_latest.json",
    "sync_probe": "/logs/js8_server_sync_probe_latest.json",
    "latest_log": "/logs/latest.log"
  },
  "recent_files": [
    {
      "name": "js8_browser_server.log",
      "size": 962,
      "mtime_utc": "2026-05-27T04:28:36Z",
      "url": "/logs/js8_browser_server.log"
    },
    {
      "name": "js8_browser_report_latest.json",
      "size": 624207,
      "mtime_utc": "2026-05-27T04:28:15Z",
      "url": "/logs/js8_browser_report_latest.json"
    },
    {
      "name": "js8_start_diagnostics_latest.log",
      "size": 407061,
      "mtime_utc": "2026-05-27T04:28:03Z",
      "url": "/logs/js8_start_diagnostics_latest.log"
    },
    {
      "name": "latest.log",
      "size": 406732,
      "mtime_utc": "2026-05-27T04:28:03Z",
      "url": "/logs/latest.log"
    },
    {
      "name": "20260527T041823Z_server-deep-run.log",
      "size": 406732,
      "mtime_utc": "2026-05-27T04:28:03Z",
      "url": "/logs/20260527T041823Z_server-deep-run.log"
    },
    {
      "name": "20260527T041823Z_server-deep-run_manifest.json",
      "size": 1042,
      "mtime_utc": "2026-05-27T04:28:03Z",
      "url": "/logs/20260527T041823Z_server-deep-run_manifest.json"
    },
    {
      "name": "20260527T041823Z_real-run.log",
      "size": 405702,
      "mtime_utc": "2026-05-27T04:28:02Z",
      "url": "/logs/20260527T041823Z_real-run.log"
    },
    {
      "name": "20260527T041823Z_real-run_manifest.json",
      "size": 2243,
      "mtime_utc": "2026-05-27T04:28:02Z",
      "url": "/logs/20260527T041823Z_real-run_manifest.json"
    },
    {
      "name": "js8_decoder_lab_real_run_20260527T041823Z.zip",
      "size": 879022,
      "mtime_utc": "2026-05-27T04:28:02Z",
      "url": "/logs/js8_decoder_lab_real_run_20260527T041823Z.zip"
    },
    {
      "name": "20260527T041823Z_real_run_bundle_index.json",
      "size": 25333,
      "mtime_utc": "2026-05-27T04:28:01Z",
      "url": "/logs/20260527T041823Z_real_run_bundle_index.json"
    },
    {
      "name": "20260527T042715Z_ldpc-soft-decode.log",
      "size": 45850,
      "mtime_utc": "2026-05-27T04:28:01Z",
      "url": "/logs/20260527T042715Z_ldpc-soft-decode.log"
    },
    {
      "name": "20260527T042715Z_ldpc-soft-decode_manifest.json",
      "size": 909,
      "mtime_utc": "2026-05-27T04:28:01Z",
      "url": "/logs/20260527T042715Z_ldpc-soft-decode_manifest.json"
    },
    {
      "name": "20260527T042715Z_ldpc_soft_decode_output.json",
      "size": 45112,
      "mtime_utc": "2026-05-27T04:28:00Z",
      "url": "/logs/20260527T042715Z_ldpc_soft_decode_output.json"
    },
    {
      "name": "20260527T042715Z_ldpc_soft_decode_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:27:15Z",
      "url": "/logs/20260527T042715Z_ldpc_soft_decode_output.stderr.log"
    },
    {
      "name": "20260527T042712Z_ldpc-matrix-probe.log",
      "size": 36541,
      "mtime_utc": "2026-05-27T04:27:15Z",
      "url": "/logs/20260527T042712Z_ldpc-matrix-probe.log"
    },
    {
      "name": "20260527T042712Z_ldpc-matrix-probe_manifest.json",
      "size": 913,
      "mtime_utc": "2026-05-27T04:27:15Z",
      "url": "/logs/20260527T042712Z_ldpc-matrix-probe_manifest.json"
    },
    {
      "name": "20260527T042712Z_ldpc_matrix_probe_output.json",
      "size": 35797,
      "mtime_utc": "2026-05-27T04:27:14Z",
      "url": "/logs/20260527T042712Z_ldpc_matrix_probe_output.json"
    },
    {
      "name": "20260527T042712Z_ldpc_matrix_probe_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:27:12Z",
      "url": "/logs/20260527T042712Z_ldpc_matrix_probe_output.stderr.log"
    },
    {
      "name": "20260527T041823Z_real_run_timing_boundary_sweep_output.json",
      "size": 144680,
      "mtime_utc": "2026-05-27T04:27:12Z",
      "url": "/logs/20260527T041823Z_real_run_timing_boundary_sweep_output.json"
    },
    {
      "name": "20260527T041823Z_real_run_timing_boundary_sweep_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:25:26Z",
      "url": "/logs/20260527T041823Z_real_run_timing_boundary_sweep_output.stderr.log"
    },
    {
      "name": "20260527T041823Z_real_run_candidate_export_output.json",
      "size": 99102,
      "mtime_utc": "2026-05-27T04:25:26Z",
      "url": "/logs/20260527T041823Z_real_run_candidate_export_output.json"
    },
    {
      "name": "20260527T041823Z_real_run_candidate_export_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:25:24Z",
      "url": "/logs/20260527T041823Z_real_run_candidate_export_output.stderr.log"
    },
    {
      "name": "20260527T041823Z_real_run_auto_ldpc_probe_output.json",
      "size": 40022,
      "mtime_utc": "2026-05-27T04:25:23Z",
      "url": "/logs/20260527T041823Z_real_run_auto_ldpc_probe_output.json"
    },
    {
      "name": "20260527T041823Z_real_run_auto_ldpc_probe_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:23:39Z",
      "url": "/logs/20260527T041823Z_real_run_auto_ldpc_probe_output.stderr.log"
    },
    {
      "name": "20260527T042101Z_frame-recover.log",
      "size": 18754,
      "mtime_utc": "2026-05-27T04:23:39Z",
      "url": "/logs/20260527T042101Z_frame-recover.log"
    },
    {
      "name": "20260527T042101Z_frame-recover_manifest.json",
      "size": 886,
      "mtime_utc": "2026-05-27T04:23:39Z",
      "url": "/logs/20260527T042101Z_frame-recover_manifest.json"
    },
    {
      "name": "20260527T042101Z_frame_recover_output.json",
      "size": 18033,
      "mtime_utc": "2026-05-27T04:23:38Z",
      "url": "/logs/20260527T042101Z_frame_recover_output.json"
    },
    {
      "name": "20260527T042101Z_frame_recover_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:21:01Z",
      "url": "/logs/20260527T042101Z_frame_recover_output.stderr.log"
    },
    {
      "name": "20260527T041823Z_real_run_profile_scan_output.json",
      "size": 4304,
      "mtime_utc": "2026-05-27T04:21:01Z",
      "url": "/logs/20260527T041823Z_real_run_profile_scan_output.json"
    },
    {
      "name": "20260527T041823Z_real_run_profile_scan_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:19:37Z",
      "url": "/logs/20260527T041823Z_real_run_profile_scan_output.stderr.log"
    },
    {
      "name": "20260527T041823Z_real_run_dirty_window_scan_output.json",
      "size": 1223,
      "mtime_utc": "2026-05-27T04:19:37Z",
      "url": "/logs/20260527T041823Z_real_run_dirty_window_scan_output.json"
    },
    {
      "name": "20260527T041823Z_real_run_dirty_window_scan_output.stderr.log",
      "size": 168,
      "mtime_utc": "2026-05-27T04:18:37Z",
      "url": "/logs/20260527T041823Z_real_run_dirty_window_scan_output.stderr.log"
    },
    {
      "name": "20260527T041823Z_real_run_quick_prefilter_output.json",
      "size": 8804,
      "mtime_utc": "2026-05-27T04:18:37Z",
      "url": "/logs/20260527T041823Z_real_run_quick_prefilter_output.json"
    },
    {
      "name": "20260527T041823Z_real_run_quick_prefilter_output.stderr.log",
      "size": 168,
      "mtime_utc": "2026-05-27T04:18:24Z",
      "url": "/logs/20260527T041823Z_real_run_quick_prefilter_output.stderr.log"
    },
    {
      "name": "20260527T041823Z_input-check.log",
      "size": 1382,
      "mtime_utc": "2026-05-27T04:18:24Z",
      "url": "/logs/20260527T041823Z_input-check.log"
    },
    {
      "name": "20260527T041823Z_input-check_manifest.json",
      "size": 817,
      "mtime_utc": "2026-05-27T04:18:23Z",
      "url": "/logs/20260527T041823Z_input-check_manifest.json"
    },
    {
      "name": "20260527T041823Z_input_check_output.json",
      "size": 673,
      "mtime_utc": "2026-05-27T04:18:23Z",
      "url": "/logs/20260527T041823Z_input_check_output.json"
    },
    {
      "name": "20260527T041823Z_input_check_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:18:23Z",
      "url": "/logs/20260527T041823Z_input_check_output.stderr.log"
    },
    {
      "name": "20260527T035634Z_server-deep-run.log",
      "size": 404110,
      "mtime_utc": "2026-05-27T04:06:09Z",
      "url": "/logs/20260527T035634Z_server-deep-run.log"
    },
    {
      "name": "20260527T035634Z_server-deep-run_manifest.json",
      "size": 1051,
      "mtime_utc": "2026-05-27T04:06:08Z",
      "url": "/logs/20260527T035634Z_server-deep-run_manifest.json"
    },
    {
      "name": "20260527T035634Z_real-run.log",
      "size": 403082,
      "mtime_utc": "2026-05-27T04:06:08Z",
      "url": "/logs/20260527T035634Z_real-run.log"
    },
    {
      "name": "20260527T035634Z_real-run_manifest.json",
      "size": 2252,
      "mtime_utc": "2026-05-27T04:06:07Z",
      "url": "/logs/20260527T035634Z_real-run_manifest.json"
    },
    {
      "name": "js8_decoder_lab_real_run_20260527T035634Z.zip",
      "size": 731839,
      "mtime_utc": "2026-05-27T04:06:07Z",
      "url": "/logs/js8_decoder_lab_real_run_20260527T035634Z.zip"
    },
    {
      "name": "20260527T035634Z_real_run_bundle_index.json",
      "size": 22139,
      "mtime_utc": "2026-05-27T04:06:07Z",
      "url": "/logs/20260527T035634Z_real_run_bundle_index.json"
    },
    {
      "name": "20260527T040522Z_ldpc-soft-decode.log",
      "size": 45365,
      "mtime_utc": "2026-05-27T04:06:07Z",
      "url": "/logs/20260527T040522Z_ldpc-soft-decode.log"
    },
    {
      "name": "20260527T040522Z_ldpc-soft-decode_manifest.json",
      "size": 918,
      "mtime_utc": "2026-05-27T04:06:06Z",
      "url": "/logs/20260527T040522Z_ldpc-soft-decode_manifest.json"
    },
    {
      "name": "20260527T040522Z_ldpc_soft_decode_output.json",
      "size": 44627,
      "mtime_utc": "2026-05-27T04:06:06Z",
      "url": "/logs/20260527T040522Z_ldpc_soft_decode_output.json"
    },
    {
      "name": "20260527T040522Z_ldpc_soft_decode_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:05:22Z",
      "url": "/logs/20260527T040522Z_ldpc_soft_decode_output.stderr.log"
    },
    {
      "name": "20260527T040519Z_ldpc-matrix-probe.log",
      "size": 36088,
      "mtime_utc": "2026-05-27T04:05:22Z",
      "url": "/logs/20260527T040519Z_ldpc-matrix-probe.log"
    },
    {
      "name": "20260527T040519Z_ldpc-matrix-probe_manifest.json",
      "size": 922,
      "mtime_utc": "2026-05-27T04:05:21Z",
      "url": "/logs/20260527T040519Z_ldpc-matrix-probe_manifest.json"
    },
    {
      "name": "20260527T040519Z_ldpc_matrix_probe_output.json",
      "size": 35344,
      "mtime_utc": "2026-05-27T04:05:21Z",
      "url": "/logs/20260527T040519Z_ldpc_matrix_probe_output.json"
    },
    {
      "name": "20260527T040519Z_ldpc_matrix_probe_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:05:19Z",
      "url": "/logs/20260527T040519Z_ldpc_matrix_probe_output.stderr.log"
    },
    {
      "name": "20260527T035634Z_real_run_timing_boundary_sweep_output.json",
      "size": 142928,
      "mtime_utc": "2026-05-27T04:05:19Z",
      "url": "/logs/20260527T035634Z_real_run_timing_boundary_sweep_output.json"
    },
    {
      "name": "20260527T035634Z_real_run_timing_boundary_sweep_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:03:33Z",
      "url": "/logs/20260527T035634Z_real_run_timing_boundary_sweep_output.stderr.log"
    },
    {
      "name": "20260527T035634Z_real_run_candidate_export_output.json",
      "size": 99111,
      "mtime_utc": "2026-05-27T04:03:33Z",
      "url": "/logs/20260527T035634Z_real_run_candidate_export_output.json"
    },
    {
      "name": "20260527T035634Z_real_run_candidate_export_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:03:31Z",
      "url": "/logs/20260527T035634Z_real_run_candidate_export_output.stderr.log"
    },
    {
      "name": "20260527T035634Z_real_run_auto_ldpc_probe_output.json",
      "size": 40040,
      "mtime_utc": "2026-05-27T04:03:31Z",
      "url": "/logs/20260527T035634Z_real_run_auto_ldpc_probe_output.json"
    },
    {
      "name": "20260527T035634Z_real_run_auto_ldpc_probe_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T04:01:44Z",
      "url": "/logs/20260527T035634Z_real_run_auto_ldpc_probe_output.stderr.log"
    },
    {
      "name": "20260527T035913Z_frame-recover.log",
      "size": 18772,
      "mtime_utc": "2026-05-27T04:01:44Z",
      "url": "/logs/20260527T035913Z_frame-recover.log"
    },
    {
      "name": "20260527T035913Z_frame-recover_manifest.json",
      "size": 895,
      "mtime_utc": "2026-05-27T04:01:44Z",
      "url": "/logs/20260527T035913Z_frame-recover_manifest.json"
    },
    {
      "name": "20260527T035913Z_frame_recover_output.json",
      "size": 18051,
      "mtime_utc": "2026-05-27T04:01:44Z",
      "url": "/logs/20260527T035913Z_frame_recover_output.json"
    },
    {
      "name": "20260527T035913Z_frame_recover_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T03:59:13Z",
      "url": "/logs/20260527T035913Z_frame_recover_output.stderr.log"
    },
    {
      "name": "20260527T035634Z_real_run_profile_scan_output.json",
      "size": 4313,
      "mtime_utc": "2026-05-27T03:59:12Z",
      "url": "/logs/20260527T035634Z_real_run_profile_scan_output.json"
    },
    {
      "name": "20260527T035634Z_real_run_profile_scan_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T03:57:49Z",
      "url": "/logs/20260527T035634Z_real_run_profile_scan_output.stderr.log"
    },
    {
      "name": "20260527T035634Z_real_run_dirty_window_scan_output.json",
      "size": 1223,
      "mtime_utc": "2026-05-27T03:57:48Z",
      "url": "/logs/20260527T035634Z_real_run_dirty_window_scan_output.json"
    },
    {
      "name": "20260527T035634Z_real_run_dirty_window_scan_output.stderr.log",
      "size": 168,
      "mtime_utc": "2026-05-27T03:56:48Z",
      "url": "/logs/20260527T035634Z_real_run_dirty_window_scan_output.stderr.log"
    },
    {
      "name": "20260527T035634Z_real_run_quick_prefilter_output.json",
      "size": 8813,
      "mtime_utc": "2026-05-27T03:56:48Z",
      "url": "/logs/20260527T035634Z_real_run_quick_prefilter_output.json"
    },
    {
      "name": "20260527T035634Z_real_run_quick_prefilter_output.stderr.log",
      "size": 168,
      "mtime_utc": "2026-05-27T03:56:35Z",
      "url": "/logs/20260527T035634Z_real_run_quick_prefilter_output.stderr.log"
    },
    {
      "name": "20260527T035634Z_input-check.log",
      "size": 1391,
      "mtime_utc": "2026-05-27T03:56:35Z",
      "url": "/logs/20260527T035634Z_input-check.log"
    },
    {
      "name": "20260527T035634Z_input-check_manifest.json",
      "size": 826,
      "mtime_utc": "2026-05-27T03:56:35Z",
      "url": "/logs/20260527T035634Z_input-check_manifest.json"
    },
    {
      "name": "20260527T035634Z_input_check_output.json",
      "size": 682,
      "mtime_utc": "2026-05-27T03:56:34Z",
      "url": "/logs/20260527T035634Z_input_check_output.json"
    },
    {
      "name": "20260527T035634Z_input_check_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-27T03:56:34Z",
      "url": "/logs/20260527T035634Z_input_check_output.stderr.log"
    },
    {
      "name": "20260527T033514Z_server-deep-run.log",
      "size": 405312,
      "mtime_utc": "2026-05-27T03:44:21Z",
      "url": "/logs/20260527T033514Z_server-deep-run.log"
    },
    {
      "name": "20260527T033514Z_server-deep-run_manifest.json",
      "size": 1050,
      "mtime_utc": "2026-05-27T03:44:20Z",
      "url": "/logs/20260527T033514Z_server-deep-run_manifest.json"
    },
    {
      "name": "20260527T033514Z_real-run.log",
      "size": 404284,
      "mtime_utc": "2026-05-27T03:44:20Z",
      "url": "/logs/20260527T033514Z_real-run.log"
    },
    {
      "name": "20260527T033514Z_real-run_manifest.json",
      "size": 2251,
      "mtime_utc": "2026-05-27T03:44:19Z",
      "url": "/logs/20260527T033514Z_real-run_manifest.json"
    },
    {
      "name": "js8_decoder_lab_real_run_20260527T033514Z.zip",
      "size": 585516,
      "mtime_utc": "2026-05-27T03:44:19Z",
      "url": "/logs/js8_decoder_lab_real_run_20260527T033514Z.zip"
    },
    {
      "name": "20260527T033514Z_real_run_bundle_index.json",
      "size": 18936,
      "mtime_utc": "2026-05-27T03:44:19Z",
      "url": "/logs/20260527T033514Z_real_run_bundle_index.json"
    },
    {
      "name": "20260527T034334Z_ldpc-soft-decode.log",
      "size": 46537,
      "mtime_utc": "2026-05-27T03:44:19Z",
      "url": "/logs/20260527T034334Z_ldpc-soft-decode.log"
    },
    {
      "name": "20260527T034334Z_ldpc-soft-decode_manifest.json",
      "size": 924,
      "mtime_utc": "2026-05-27T03:44:19Z",
      "url": "/logs/20260527T034334Z_ldpc-soft-decode_manifest.json"
    }
  ],
  "browser_links": {
    "home": "/",
    "api_report": "/api/report",
    "logs": "/logs/"
  },
  "note": "Read-only browser report for JS8 Decoder Lab logs. It does not start TX/PTT/Tune/Send or control JS8Call runtime."
}