{
  "schema": "webftr-js8-decoder-lab-browser-report-v1",
  "version": "step35-bounded-ldpc-ranking-guard",
  "created_utc": "2026-05-26T21:46:43Z",
  "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": "step35-bounded-ldpc-ranking-guard",
    "created_utc": "2026-05-26T07:46:12Z",
    "updated_utc": "2026-05-26T18:17:40Z",
    "state": "diagnostics_failed",
    "detail": "Diagnose mit Fehler beendet",
    "exit_code": 143,
    "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": 541480,
      "running": true,
      "log": "/decoders/js8_decoder/logs/js8_browser_server.log"
    },
    "diagnostics": {
      "pid": 541500,
      "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-26T15:36:20Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 9/9: JS8LAB LOG BUNDLE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T15:36:21Z",
        "state": "diagnostics_ok",
        "detail": "Diagnose fertig",
        "exit_code": 0
      },
      {
        "utc": "2026-05-26T15:50:10Z",
        "state": "restarting",
        "detail": "Start-Guard: bestehende JS8Lab-Instanz wird geprüft und beendet",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T15:50:11Z",
        "state": "server_starting",
        "detail": "Browser-Logserver startet auf 0.0.0.0:8000",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T15:50:12Z",
        "state": "server_running",
        "detail": "Browser-Logserver läuft auf 0.0.0.0:8000",
        "exit_code": 0
      },
      {
        "utc": "2026-05-26T15:50:12Z",
        "state": "diagnostics_running",
        "detail": "Diagnose läuft: server-deep-run /decoders/js8_test.wav",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T15:50:12Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 1/9: INPUT CHECK",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T15:50:13Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 2/9A: QUICK WINDOW PREFILTER",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T15:50:13Z",
        "state": "diagnostics_running",
        "detail": "Diagnosejob im Hintergrund gestartet",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T15:50:26Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 2/9B: BOUNDED DIRTY WINDOW SCAN",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T15:51:26Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 3/9: PROFILE SCAN",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T15:53:08Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 4/9: FRAME RECOVER",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T15:56:09Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 5/9: AUTO LDPC PROBE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T15:59:10Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 6/9: CANDIDATE EXPORT",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T15:59:14Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 7/9: LDPC MATRIX PROBE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:02:15Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 8/9: LDPC SOFT DECODE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:04:16Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 9/9: JS8LAB LOG BUNDLE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:04:17Z",
        "state": "diagnostics_failed",
        "detail": "Diagnose mit Fehler beendet",
        "exit_code": 143
      },
      {
        "utc": "2026-05-26T16:14:51Z",
        "state": "restarting",
        "detail": "Start-Guard: bestehende JS8Lab-Instanz wird geprüft und beendet",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:14:51Z",
        "state": "server_starting",
        "detail": "Browser-Logserver startet auf 0.0.0.0:8000",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:14:52Z",
        "state": "server_running",
        "detail": "Browser-Logserver läuft auf 0.0.0.0:8000",
        "exit_code": 0
      },
      {
        "utc": "2026-05-26T16:14:53Z",
        "state": "diagnostics_running",
        "detail": "Diagnose läuft: server-deep-run /decoders/js8_test.wav",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:14:53Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 1/9: INPUT CHECK",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:14:54Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 2/9A: QUICK WINDOW PREFILTER",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:14:54Z",
        "state": "diagnostics_running",
        "detail": "Diagnosejob im Hintergrund gestartet",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:15:16Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 2/9B: BOUNDED DIRTY WINDOW SCAN",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:16:17Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 3/9: PROFILE SCAN",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:18:18Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 4/9: FRAME RECOVER",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:21:19Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 5/9: AUTO LDPC PROBE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:23:27Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 6/9: CANDIDATE EXPORT",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:23:29Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 7/9: LDPC MATRIX PROBE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:26:30Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 8/9: LDPC SOFT DECODE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:28:31Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 9/9: JS8LAB LOG BUNDLE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T16:28:32Z",
        "state": "diagnostics_failed",
        "detail": "Diagnose mit Fehler beendet",
        "exit_code": 143
      },
      {
        "utc": "2026-05-26T18:06:19Z",
        "state": "restarting",
        "detail": "Start-Guard: bestehende JS8Lab-Instanz wird geprüft und beendet",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:06:19Z",
        "state": "server_starting",
        "detail": "Browser-Logserver startet auf 0.0.0.0:8000",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:06:20Z",
        "state": "server_running",
        "detail": "Browser-Logserver läuft auf 0.0.0.0:8000",
        "exit_code": 0
      },
      {
        "utc": "2026-05-26T18:06:20Z",
        "state": "diagnostics_running",
        "detail": "Diagnose läuft: server-deep-run /decoders/js8_test.wav",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:06:21Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 1/9: INPUT CHECK",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:06:21Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 2/9A: QUICK WINDOW PREFILTER",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:06:22Z",
        "state": "diagnostics_running",
        "detail": "Diagnosejob im Hintergrund gestartet",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:06:35Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 2/9B: BOUNDED DIRTY WINDOW SCAN",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:07:35Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 3/9: PROFILE SCAN",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:09:36Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 4/9: FRAME RECOVER",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:12:38Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 5/9: AUTO LDPC PROBE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:15:38Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 6/9: CANDIDATE EXPORT",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:16:39Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 7/9: LDPC MATRIX PROBE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:16:43Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 8/9: LDPC SOFT DECODE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:17:38Z",
        "state": "diagnostics_running",
        "detail": "REAL-RUN STEP 9/9: JS8LAB LOG BUNDLE",
        "exit_code": null
      },
      {
        "utc": "2026-05-26T18:17:40Z",
        "state": "diagnostics_failed",
        "detail": "Diagnose mit Fehler beendet",
        "exit_code": 143
      }
    ],
    "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": "20260526T180620Z_server-deep-run_manifest.json",
    "url": "/logs/20260526T180620Z_server-deep-run_manifest.json",
    "stat": {
      "exists": true,
      "is_file": true,
      "is_dir": false,
      "size": 1053,
      "mtime_utc": "2026-05-26T18:17:39Z"
    },
    "json": {
      "schema": "webftr-js8-decoder-lab-log-manifest-v2",
      "project": "WebFTR JS8 Decoder Lab",
      "version": "step35-bounded-ldpc-ranking-guard",
      "status": "failed",
      "exit_code": 143,
      "command": "server-deep-run",
      "timestamp_utc": "2026-05-26T18:17:39Z",
      "root": "/decoders/js8_decoder",
      "log_file": "/decoders/js8_decoder/logs/20260526T180620Z_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": 143
      },
      "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": 105246,
      "mtime_utc": "2026-05-26T18:17:40Z"
    },
    "tail": "v_interleave_codeword_to_rx_inverse\",\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\": \"ft8_bitrev\",\n        \"direction\": \"interleave_codeword_to_rx_inverse\",\n        \"order_len\": 174\n      },\n      \"decoder_trial\": {\n        \"llr_scale\": 0.75,\n        \"alpha\": 0.7\n      },\n      \"source_rank_score\": 107.708676,\n      \"source_llr_stats\": {\n        \"count\": 174,\n        \"avg_abs\": 1.927169,\n        \"min_abs\": 0.001731,\n        \"max_abs\": 4.421458,\n        \"positive\": 137,\n        \"negative\": 37,\n        \"zero\": 0\n      },\n      \"success\": false,\n      \"iterations_used\": 24,\n      \"final_syndrome_weight\": 33,\n      \"message91\": null,\n      \"message91_sha256_16\": \"458df79ba60a9328\",\n      \"codeword174_sha256_16\": \"6d00dc7e03a960c9\",\n      \"trace\": [\n        {\n          \"iteration\": 0,\n          \"syndrome_weight\": 40\n        },\n        {\n          \"iteration\": 1,\n          \"syndrome_weight\": 43\n        },\n        {\n          \"iteration\": 2,\n          \"syndrome_weight\": 42\n        },\n        {\n          \"iteration\": 3,\n          \"syndrome_weight\": 36\n        },\n        {\n          \"iteration\": 4,\n          \"syndrome_weight\": 55\n        },\n        {\n          \"iteration\": 5,\n          \"syndrome_weight\": 44\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\": 41\n        },\n        {\n          \"iteration\": 9,\n          \"syndrome_weight\": 44\n        },\n        {\n          \"iteration\": 10,\n          \"syndrome_weight\": 33\n        },\n        {\n          \"iteration\": 15,\n          \"syndrome_weight\": 34\n        },\n        {\n          \"iteration\": 20,\n          \"syndrome_weight\": 43\n        }\n      ]\n    },\n    {\n      \"variant\": \"reverse_symbol_order\",\n      \"transform\": \"lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse\",\n      \"mapping_meta\": {\n        \"tone_mapping\": \"lsb_within_each_tone\",\n        \"interleaver\": \"ft8_bitrev\",\n        \"direction\": \"interleave_codeword_to_rx_inverse\",\n        \"order_len\": 174\n      },\n      \"decoder_trial\": {\n        \"llr_scale\": 1.0,\n        \"alpha\": 0.8\n      },\n      \"source_rank_score\": 113.195892,\n      \"source_llr_stats\": {\n        \"count\": 174,\n        \"avg_abs\": 2.298973,\n        \"min_abs\": 0.012672,\n        \"max_abs\": 4.421458,\n        \"positive\": 141,\n        \"negative\": 33,\n        \"zero\": 0\n      },\n      \"success\": false,\n      \"iterations_used\": 24,\n      \"final_syndrome_weight\": 34,\n      \"message91\": null,\n      \"message91_sha256_16\": \"90c113192e91f005\",\n      \"codeword174_sha256_16\": \"41b7858eaf726d78\",\n      \"trace\": [\n        {\n          \"iteration\": 0,\n          \"syndrome_weight\": 41\n        },\n        {\n          \"iteration\": 1,\n          \"syndrome_weight\": 45\n        },\n        {\n          \"iteration\": 2,\n          \"syndrome_weight\": 34\n        },\n        {\n          \"iteration\": 3,\n          \"syndrome_weight\": 48\n        },\n        {\n          \"iteration\": 4,\n          \"syndrome_weight\": 38\n        },\n        {\n          \"iteration\": 5,\n          \"syndrome_weight\": 45\n        },\n        {\n          \"iteration\": 6,\n          \"syndrome_weight\": 47\n        },\n        {\n          \"iteration\": 7,\n          \"syndrome_weight\": 39\n        },\n        {\n          \"iteration\": 8,\n          \"syndrome_weight\": 36\n        },\n        {\n          \"iteration\": 9,\n          \"syndrome_weight\": 40\n        },\n        {\n          \"iteration\": 10,\n          \"syndrome_weight\": 43\n        },\n        {\n          \"iteration\": 15,\n          \"syndrome_weight\": 49\n        },\n        {\n          \"iteration\": 20,\n          \"syndrome_weight\": 47\n        }\n      ]\n    },\n    {\n      \"variant\": \"mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword\",\n      \"transform\": \"ft8_gray_primary_demap_msb_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\": false,\n        \"interleaver\": \"none\",\n        \"polarity\": \"inverted\"\n      },\n      \"decoder_trial\": {\n        \"llr_scale\": 1.0,\n        \"alpha\": 0.8\n      },\n      \"source_rank_score\": 109.195892,\n      \"source_llr_stats\": {\n        \"count\": 174,\n        \"avg_abs\": 2.298973,\n        \"min_abs\": 0.012672,\n        \"max_abs\": 4.421458,\n        \"positive\": 141,\n        \"negative\": 33,\n        \"zero\": 0\n      },\n      \"success\": false,\n      \"iterations_used\": 24,\n      \"final_syndrome_weight\": 34,\n      \"message91\": null,\n      \"message91_sha256_16\": \"23c3e63ea6054327\",\n      \"codeword174_sha256_16\": \"37074cdf79522a3e\",\n      \"trace\": [\n        {\n          \"iteration\": 0,\n          \"syndrome_weight\": 40\n        },\n        {\n          \"iteration\": 1,\n          \"syndrome_weight\": 48\n        },\n        {\n          \"iteration\": 2,\n          \"syndrome_weight\": 43\n        },\n        {\n          \"iteration\": 3,\n          \"syndrome_weight\": 44\n        },\n        {\n          \"iteration\": 4,\n          \"syndrome_weight\": 47\n        },\n        {\n          \"iteration\": 5,\n          \"syndrome_weight\": 35\n        },\n        {\n          \"iteration\": 6,\n          \"syndrome_weight\": 35\n        },\n        {\n          \"iteration\": 7,\n          \"syndrome_weight\": 39\n        },\n        {\n          \"iteration\": 8,\n          \"syndrome_weight\": 43\n        },\n        {\n          \"iteration\": 9,\n          \"syndrome_weight\": 45\n        },\n        {\n          \"iteration\": 10,\n          \"syndrome_weight\": 34\n        },\n        {\n          \"iteration\": 15,\n          \"syndrome_weight\": 37\n        },\n        {\n          \"iteration\": 20,\n          \"syndrome_weight\": 46\n        }\n      ]\n    },\n    {\n      \"variant\": \"mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse\",\n      \"transform\": \"raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse\",\n      \"mapping_meta\": {\n        \"tone_mapping\": \"raw_msb\",\n        \"interleaver\": \"ft8_bitrev\",\n        \"direction\": \"interleave_codeword_to_rx_inverse\",\n        \"order_len\": 174\n      },\n      \"decoder_trial\": {\n        \"llr_scale\": 1.0,\n        \"alpha\": 0.8\n      },\n      \"source_rank_score\": 107.578012,\n      \"source_llr_stats\": {\n        \"count\": 174,\n        \"avg_abs\": 1.894503,\n        \"min_abs\": 0.002971,\n        \"max_abs\": 4.421458,\n        \"positive\": 134,\n        \"negative\": 40,\n        \"zero\": 0\n      },\n      \"success\": false,\n      \"iterations_used\": 24,\n      \"final_syndrome_weight\": 34,\n      \"message91\": null,\n      \"message91_sha256_16\": \"4c779f16eae4a194\",\n      \"codeword174_sha256_16\": \"e5695a940150931b\",\n      \"trace\": [\n        {\n          \"iteration\": 0,\n          \"syndrome_weight\": 42\n        },\n        {\n          \"iteration\": 1,\n          \"syndrome_weight\": 34\n        },\n        {\n          \"iteration\": 2,\n          \"syndrome_weight\": 38\n        },\n        {\n          \"iteration\": 3,\n          \"syndrome_weight\": 44\n        },\n        {\n          \"iteration\": 4,\n          \"syndrome_weight\": 36\n        },\n        {\n          \"iteration\": 5,\n          \"syndrome_weight\": 40\n        },\n        {\n          \"iteration\": 6,\n          \"syndrome_weight\": 39\n        },\n        {\n          \"iteration\": 7,\n          \"syndrome_weight\": 44\n        },\n        {\n          \"iteration\": 8,\n          \"syndrome_weight\": 41\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\": 41\n        },\n        {\n          \"iteration\": 20,\n          \"syndrome_weight\": 44\n        }\n      ]\n    },\n    {\n      \"variant\": \"mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse\",\n      \"transform\": \"lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits\",\n      \"mapping_meta\": {\n        \"tone_mapping\": \"lsb_within_each_tone\",\n        \"interleaver\": \"ft8_bitrev\",\n        \"direction\": \"deinterleave_rx_to_codeword\",\n        \"order_len\": 174,\n        \"polarity\": \"inverted\"\n      },\n      \"decoder_trial\": {\n        \"llr_scale\": 0.75,\n        \"alpha\": 0.7\n      },\n      \"source_rank_score\": 106.801724,\n      \"source_llr_stats\": {\n        \"count\": 174,\n        \"avg_abs\": 1.700431,\n        \"min_abs\": 0.002971,\n        \"max_abs\": 4.14242,\n        \"positive\": 118,\n        \"negative\": 56,\n        \"zero\": 0\n      },\n      \"success\": false,\n      \"iterations_used\": 24,\n      \"final_syndrome_weight\": 34,\n      \"message91\": null,\n      \"message91_sha256_16\": \"64a178ece7f87012\",\n      \"codeword174_sha256_16\": \"377fba097ea68f57\",\n      \"trace\": [\n        {\n          \"iteration\": 0,\n          \"syndrome_weight\": 34\n        },\n        {\n          \"iteration\": 1,\n          \"syndrome_weight\": 34\n        },\n        {\n          \"iteration\": 2,\n          \"syndrome_weight\": 34\n        },\n        {\n          \"iteration\": 3,\n          \"syndrome_weight\": 36\n        },\n        {\n          \"iteration\": 4,\n          \"syndrome_weight\": 34\n        },\n        {\n          \"iteration\": 5,\n          \"syndrome_weight\": 41\n        },\n        {\n          \"iteration\": 6,\n          \"syndrome_weight\": 39\n        },\n        {\n          \"iteration\": 7,\n          \"syndrome_weight\": 36\n        },\n        {\n          \"iteration\": 8,\n          \"syndrome_weight\": 34\n        },\n        {\n          \"iteration\": 9,\n          \"syndrome_weight\": 34\n        },\n        {\n          \"iteration\": 10,\n          \"syndrome_weight\": 43\n        },\n        {\n          \"iteration\": 15,\n          \"syndrome_weight\": 38\n        },\n        {\n          \"iteration\": 20,\n          \"syndrome_weight\": 35\n        }\n      ]\n    }\n  ],\n  \"decodes\": [],\n  \"outputs\": {\n    \"ldpc_soft_decode_json\": \"/decoders/js8_decoder/runtime/ldpc_soft_decode/step35_ldpc_soft_decode.json\"\n  },\n  \"warnings\": [\n    \"Step 35 runs bounded normalized-min-sum soft LDPC over the best-ranked FT8-style Gray/interleaver mapping candidates against the public (174,91) matrix contract.\",\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/20260526T181643Z_ldpc-soft-decode.log\n[webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T181643Z_ldpc-soft-decode_manifest.json\n[webftr-js8-lab] ldpc-soft-decode exit_code=0\n\n========== REAL-RUN STEP 9/9: 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_20260526T180620Z.zip\n\n[webftr-js8-lab] real-run completed with errors, but JS8Lab log bundle was created.\n[webftr-js8-lab] upload bundle: /decoders/js8_decoder/logs/js8_decoder_lab_real_run_20260526T180620Z.zip\n\n[webftr-js8-lab] FAILED exit_code=143\n[webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T180620Z_real-run.log\n[webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T180620Z_real-run_manifest.json\n\n[webftr-js8-lab] server-deep-run completed with errors, but logs/browser report were written.\n\n[webftr-js8-lab] FAILED exit_code=143\n[webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T180620Z_server-deep-run.log\n[webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T180620Z_server-deep-run_manifest.json\n"
  },
  "output_refs": {
    "input_check": {
      "name": "20260526T180621Z_input_check_output.json",
      "path": "/decoders/js8_decoder/logs/20260526T180621Z_input_check_output.json",
      "url": "/logs/20260526T180621Z_input_check_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 676,
        "mtime_utc": "2026-05-26T18:06:21Z"
      },
      "json_preview": {
        "ok": true,
        "mode": "JS8",
        "tool": "webftr-js8-input-check",
        "tool_version": "step35-bounded-ldpc-ranking-guard",
        "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": "20260526T180620Z_real_run_quick_prefilter_output.json",
      "path": "/decoders/js8_decoder/logs/20260526T180620Z_real_run_quick_prefilter_output.json",
      "url": "/logs/20260526T180620Z_real_run_quick_prefilter_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 8807,
        "mtime_utc": "2026-05-26T18:06:35Z"
      },
      "json_preview": {
        "ok": true,
        "mode": "JS8",
        "tool": "webftr-js8-quick-window-scan",
        "tool_version": "step35-bounded-ldpc-ranking-guard",
        "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 35."
      }
    },
    "real_run_dirty_window_scan": {
      "name": "20260526T180620Z_real_run_dirty_window_scan_output.json",
      "path": "/decoders/js8_decoder/logs/20260526T180620Z_real_run_dirty_window_scan_output.json",
      "url": "/logs/20260526T180620Z_real_run_dirty_window_scan_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 1223,
        "mtime_utc": "2026-05-26T18:07:35Z"
      },
      "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/20260526T180620Z_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 35 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": "20260526T180620Z_real_run_dirty_window_scan_output.json",
      "path": "/decoders/js8_decoder/logs/20260526T180620Z_real_run_dirty_window_scan_output.json",
      "url": "/logs/20260526T180620Z_real_run_dirty_window_scan_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 1223,
        "mtime_utc": "2026-05-26T18:07:35Z"
      },
      "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/20260526T180620Z_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 35 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": "20260526T181643Z_ldpc_soft_decode_output.json",
      "path": "/decoders/js8_decoder/logs/20260526T181643Z_ldpc_soft_decode_output.json",
      "url": "/logs/20260526T181643Z_ldpc_soft_decode_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 45708,
        "mtime_utc": "2026-05-26T18:17:37Z"
      },
      "json_preview": {
        "ok": true,
        "mode": "JS8",
        "tool": "webftr-js8-soft-ldpc-minsum-probe",
        "tool_version": "step35-bounded-ldpc-ranking-guard",
        "input_wav": null,
        "candidate_json": "/decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.json",
        "rx_only": true,
        "safety": {
          "tx": false,
          "ptt": false,
          "tune": false,
          "send": false,
          "js8call_runtime_control": false
        },
        "implementation_stage": "step35_bounded_gray_interleaver_llr_minsum_probe_no_message_unpack",
        "matrix": {
          "code": "(174,91)",
          "message_bits": 91,
          "parity_bits": 83,
          "codeword_bits": 174,
          "check_count": 83
        },
        "decoder": {
          "algorithm": "normalized_min_sum_multi_trial",
          "max_iterations": 24,
          "default_alpha": 0.8,
          "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely",
          "mapping_expansion": "ft8_gray_demap_plus_bitrev_interleaver_candidates",
          "max_decode_rows": 12,
          "fast_trials": true,
          "trial_count": 2
        },
        "candidate_context": {
          "nsps_used": 6400,
          "nsps_is_js8_realistic": true,
          "selected_profile": {
            "profile": "js8_near_6400",
            "nsps": 6400,
            "tone_spacing_hz": 1.875,
            "sync": {
              "start_sample": 57600,
              "start_seconds": 4.8,
              "base_freq_hz": 1025.0,
              "tone_spacing_hz": 1.875,
              "nsps": 6400,
              "candidate_score": 47.4,
              "costas_hits": 2,
              "avg_margin_db": 8.01
            },
            "rank_score": 225.085,
            "fec": {
              "soft_bit_count": 174,
              "missing_soft_bits": 0,
              "complete_ldpc_input_candidate": true,
              "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
            },
            "source_tool": "webftr-js8-auto-ldpc-probe"
          },
          "selected_variant": {
            "name": "raw_msb_symbol_order",
            "rank_score": 127.195892,
            "complete_174bit_candidate": true,
            "hard_bits_sha256_16": "c87312f86dbe74fc",
            "hard_weight_174": 36,
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            }
          }
        },
        "candidate_mapping_rows": 828,
        "probe_count": 24,
        "best_soft_decode": {
          "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "deinterleave_rx_to_codeword",
            "order_len": 174,
            "polarity": "inverted"
          },
          "decoder_trial": {
            "llr_scale": 1.0,
            "alpha": 0.8
          },
          "source_rank_score": 106.801724,
          "source_llr_stats": {
            "count": 174,
            "avg_abs": 1.700431,
            "min_abs": 0.002971,
            "max_abs": 4.14242,
            "positive": 118,
            "negative": 56,
            "zero": 0
          },
          "success": false,
          "iterations_used": 24,
          "final_syndrome_weight": 24,
          "message91": null,
          "message91_sha256_16": "6a6d742354b7cf6c",
          "codeword174_sha256_16": "a2f020a557f466b6",
          "trace": [
            {
              "iteration": 0,
              "syndrome_weight": 34
            },
            {
              "iteration": 1,
              "syndrome_weight": 34
            },
            {
              "iteration": 2,
              "syndrome_weight": 42
            },
            {
              "iteration": 3,
              "syndrome_weight": 44
            },
            {
              "iteration": 4,
              "syndrome_weight": 43
            },
            {
              "iteration": 5,
              "syndrome_weight": 42
            },
            {
              "iteration": 6,
              "syndrome_weight": 38
            },
            {
              "iteration": 7,
              "syndrome_weight": 50
            },
            {
              "iteration": 8,
              "syndrome_weight": 35
            },
            {
              "iteration": 9,
              "syndrome_weight": 42
            },
            {
              "iteration": 10,
              "syndrome_weight": 27
            },
            {
              "iteration": 15,
              "syndrome_weight": 41
            },
            {
              "iteration": 20,
              "syndrome_weight": 42
            }
          ]
        },
        "soft_decode_results": [
          {
            "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "ft8_bitrev",
              "direction": "deinterleave_rx_to_codeword",
              "order_len": 174,
              "polarity": "inverted"
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 106.801724,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 1.700431,
              "min_abs": 0.002971,
              "max_abs": 4.14242,
              "positive": 118,
              "negative": 56,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 24,
            "message91": null,
            "message91_sha256_16": "6a6d742354b7cf6c",
            "codeword174_sha256_16": "a2f020a557f466b6",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 34
              },
              {
                "iteration": 1,
                "syndrome_weight": 34
              },
              {
                "iteration": 2,
                "syndrome_weight": 42
              },
              {
                "iteration": 3,
                "syndrome_weight": 44
              },
              {
                "iteration": 4,
                "syndrome_weight": 43
              },
              {
                "iteration": 5,
                "syndrome_weight": 42
              },
              {
                "iteration": 6,
                "syndrome_weight": 38
              },
              {
                "iteration": 7,
                "syndrome_weight": 50
              },
              {
                "iteration": 8,
                "syndrome_weight": 35
              },
              {
                "iteration": 9,
                "syndrome_weight": 42
              },
              {
                "iteration": 10,
                "syndrome_weight": 27
              },
              {
                "iteration": 15,
                "syndrome_weight": 41
              },
              {
                "iteration": 20,
                "syndrome_weight": 42
              }
            ]
          },
          {
            "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 109.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 26,
            "message91": null,
            "message91_sha256_16": "2a0b7b7df8e4ebe3",
            "codeword174_sha256_16": "e4feadf57539b9eb",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 49
              },
              {
                "iteration": 1,
                "syndrome_weight": 34
              },
              {
                "iteration": 2,
                "syndrome_weight": 32
              },
              {
                "iteration": 3,
                "syndrome_weight": 38
              },
              {
                "iteration": 4,
                "syndrome_weight": 38
              },
              {
                "iteration": 5,
                "syndrome_weight": 38
              },
              {
                "iteration": 6,
                "syndrome_weight": 46
              },
              {
                "iteration": 7,
                "syndrome_weight": 48
              },
              {
                "iteration": 8,
                "syndrome_weight": 35
              },
              {
                "iteration": 9,
                "syndrome_weight": 45
              },
              {
                "iteration": 10,
                "syndrome_weight": 40
              },
              {
                "iteration": 15,
                "syndrome_weight": 40
              },
              {
                "iteration": 20,
                "syndrome_weight": 40
              }
            ]
          },
          {
            "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 109.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 28,
            "message91": null,
            "message91_sha256_16": "cbb1e701ab04aeee",
            "codeword174_sha256_16": "498009a7cbeb4133",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 38
              },
              {
                "iteration": 1,
                "syndrome_weight": 44
              },
              {
                "iteration": 2,
                "syndrome_weight": 47
              },
              {
                "iteration": 3,
                "syndrome_weight": 34
              },
              {
                "iteration": 4,
                "syndrome_weight": 39
              },
              {
                "iteration": 5,
                "syndrome_weight": 41
              },
              {
                "iteration": 6,
                "syndrome_weight": 35
              },
              {
                "iteration": 7,
                "syndrome_weight": 37
              },
              {
                "iteration": 8,
                "syndrome_weight": 36
              },
              {
                "iteration": 9,
                "syndrome_weight": 45
              },
              {
                "iteration": 10,
                "syndrome_weight": 35
              },
              {
                "iteration": 15,
                "syndrome_weight": 52
              },
              {
                "iteration": 20,
                "syndrome_weight": 28
              }
            ]
          },
          {
            "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "raw_msb",
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 107.578012,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 1.894503,
              "min_abs": 0.002971,
              "max_abs": 4.421458,
              "positive": 134,
              "negative": 40,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 29,
            "message91": null,
            "message91_sha256_16": "4efe4505857151c0",
            "codeword174_sha256_16": "c02f6c2e9489a106",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 42
              },
              {
                "iteration": 1,
                "syndrome_weight": 34
              },
              {
                "iteration": 2,
                "syndrome_weight": 43
              },
              {
                "iteration": 3,
                "syndrome_weight": 44
              },
              {
                "iteration": 4,
                "syndrome_weight": 46
              },
              {
                "iteration": 5,
                "syndrome_weight": 42
              },
              {
                "iteration": 6,
                "syndrome_weight": 43
              },
              {
                "iteration": 7,
                "syndrome_weight": 48
              },
              {
                "iteration": 8,
                "syndrome_weight": 34
              },
              {
                "iteration": 9,
                "syndrome_weight": 41
              },
              {
                "iteration": 10,
                "syndrome_weight": 39
              },
              {
                "iteration": 15,
                "syndrome_weight": 49
              },
              {
                "iteration": 20,
                "syndrome_weight": 38
              }
            ]
          },
          {
            "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "ft8_bitrev",
              "direction": "deinterleave_rx_to_codeword",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 106.932388,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 1.733097,
              "min_abs": 0.001731,
              "max_abs": 4.14242,
              "positive": 121,
              "negative": 53,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 29,
            "message91": null,
            "message91_sha256_16": "8273e7a70823945f",
            "codeword174_sha256_16": "073f6173cf08fd43",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 35
              },
              {
                "iteration": 1,
                "syndrome_weight": 43
              },
              {
                "iteration": 2,
                "syndrome_weight": 29
              },
              {
                "iteration": 3,
                "syndrome_weight": 44
              },
              {
                "iteration": 4,
                "syndrome_weight": 38
              },
              {
                "iteration": 5,
                "syndrome_weight": 35
              },
              {
                "iteration": 6,
                "syndrome_weight": 44
              },
              {
                "iteration": 7,
                "syndrome_weight": 47
              },
              {
                "iteration": 8,
                "syndrome_weight": 31
              },
              {
                "iteration": 9,
                "syndrome_weight": 41
              },
              {
                "iteration": 10,
                "syndrome_weight": 42
              },
              {
                "iteration": 15,
                "syndrome_weight": 36
              },
              {
                "iteration": 20,
                "syndrome_weight": 43
              }
            ]
          },
          {
            "variant": "reverse_symbol_order",
            "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 113.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 30,
            "message91": null,
            "message91_sha256_16": "e2c9a6affe28e3f2",
            "codeword174_sha256_16": "f3dfa6a0c41f9c0e",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 41
              },
              {
                "iteration": 1,
                "syndrome_weight": 42
              },
              {
                "iteration": 2,
                "syndrome_weight": 39
              },
              {
                "iteration": 3,
                "syndrome_weight": 42
              },
              {
                "iteration": 4,
                "syndrome_weight": 43
              },
              {
                "iteration": 5,
                "syndrome_weight": 32
              },
              {
                "iteration": 6,
                "syndrome_weight": 32
              },
              {
                "iteration": 7,
                "syndrome_weight": 41
              },
              {
                "iteration": 8,
                "syndrome_weight": 48
              },
              {
                "iteration": 9,
                "syndrome_weight": 38
              },
              {
                "iteration": 10,
                "syndrome_weight": 41
              },
              {
                "iteration": 15,
                "syndrome_weight": 36
              },
              {
                "iteration": 20,
                "syndrome_weight": 45
              }
            ]
          },
          {
            "variant": "reverse_full_bitstream",
            "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "raw_msb",
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 112.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 30,
            "message91": null,
            "message91_sha256_16": "7978ad3fe1d24184",
            "codeword174_sha256_16": "839966c9e07e1714",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 41
              },
              {
                "iteration": 1,
                "syndrome_weight": 30
              },
              {
                "iteration": 2,
                "syndrome_weight": 30
              },
              {
                "iteration": 3,
                "syndrome_weight": 44
              },
              {
                "iteration": 4,
                "syndrome_weight": 43
              },
              {
                "iteration": 5,
                "syndrome_weight": 43
              },
              {
                "iteration": 6,
                "syndrome_weight": 41
              },
              {
                "iteration": 7,
                "syndrome_weight": 39
              },
              {
                "iteration": 8,
                "syndrome_weight": 43
              },
              {
                "iteration": 9,
                "syndrome_weight": 48
              },
              {
                "iteration": 10,
                "syndrome_weight": 43
              },
              {
                "iteration": 15,
                "syndrome_weight": 35
              },
              {
                "iteration": 20,
                "syndrome_weight": 42
              }
            ]
          },
          {
            "variant": "lab_mask_xor_preview",
            "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "ft8_bitrev",
              "direction": "deinterleave_rx_to_codeword",
              "order_len": 174,
              "polarity": "inverted"
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 101.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 30,
            "message91": null,
            "message91_sha256_16": "210ed54aa2f6f2f5",
            "codeword174_sha256_16": "2656303585b5b258",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 31
              },
              {
                "iteration": 1,
                "syndrome_weight": 31
              },
              {
                "iteration": 2,
                "syndrome_weight": 30
              },
              {
                "iteration": 3,
                "syndrome_weight": 39
              },
              {
                "iteration": 4,
                "syndrome_weight": 31
              },
              {
                "iteration": 5,
                "syndrome_weight": 31
              },
              {
                "iteration": 6,
                "syndrome_weight": 46
              },
              {
                "iteration": 7,
                "syndrome_weight": 39
              },
              {
                "iteration": 8,
                "syndrome_weight": 45
              },
              {
                "iteration": 9,
                "syndrome_weight": 37
              },
              {
                "iteration": 10,
                "syndrome_weight": 39
              },
              {
                "iteration": 15,
                "syndrome_weight": 48
              },
              {
                "iteration": 20,
                "syndrome_weight": 34
              }
            ]
          },
          {
            "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "none",
              "polarity": "inverted"
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 109.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 31,
            "message91": null,
            "message91_sha256_16": "a232115d81b2083e",
            "codeword174_sha256_16": "989fdc400af2d00b",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 40
              },
              {
                "iteration": 1,
                "syndrome_weight": 48
              },
              {
                "iteration": 2,
                "syndrome_weight": 40
              },
              {
                "iteration": 3,
                "syndrome_weight": 43
              },
              {
                "iteration": 4,
                "syndrome_weight": 37
              },
              {
                "iteration": 5,
                "syndrome_weight": 37
              },
              {
                "iteration": 6,
                "syndrome_weight": 47
              },
              {
                "iteration": 7,
                "syndrome_weight": 41
              },
              {
                "iteration": 8,
                "syndrome_weight": 45
              },
              {
                "iteration": 9,
                "syndrome_weight": 33
              },
              {
                "iteration": 10,
                "syndrome_weight": 31
              },
              {
                "iteration": 15,
                "syndrome_weight": 34
              },
              {
                "iteration": 20,
                "syndrome_weight": 41
              }
            ]
          },
          {
            "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 109.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 31,
            "message91": null,
            "message91_sha256_16": "05fd73d89b6cac16",
            "codeword174_sha256_16": "a018589817ef1b1e",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 49
              },
              {
                "iteration": 1,
                "syndrome_weight": 50
              },
              {
                "iteration": 2,
                "syndrome_weight": 47
              },
              {
                "iteration": 3,
                "syndrome_weight": 40
              },
              {
                "iteration": 4,
                "syndrome_weight": 40
              },
              {
                "iteration": 5,
                "syndrome_weight": 42
              },
              {
                "iteration": 6,
                "syndrome_weight": 36
              },
              {
                "iteration": 7,
                "syndrome_weight": 34
              },
              {
                "iteration": 8,
                "syndrome_weight": 37
              },
              {
                "iteration": 9,
                "syndrome_weight": 47
              },
              {
                "iteration": 10,
                "syndrome_weight": 46
              },
              {
                "iteration": 15,
                "syndrome_weight": 40
              },
              {
                "iteration": 20,
                "syndrome_weight": 43
              }
            ]
          },
          {
            "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 107.708676,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 1.927169,
              "min_abs": 0.001731,
              "max_abs": 4.421458,
              "positive": 137,
              "negative": 37,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 31,
            "message91": null,
            "message91_sha256_16": "d41915263de40159",
            "codeword174_sha256_16": "2f18abe7c2266fc5",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 40
              },
              {
                "iteration": 1,
                "syndrome_weight": 38
              },
              {
                "iteration": 2,
                "syndrome_weight": 42
              },
              {
                "iteration": 3,
                "syndrome_weight": 45
              },
              {
                "iteration": 4,
                "syndrome_weight": 53
              },
              {
                "iteration": 5,
                "syndrome_weight": 44
              },
              {
                "iteration": 6,
                "syndrome_weight": 44
              },
              {
                "iteration": 7,
                "syndrome_weight": 45
              },
              {
                "iteration": 8,
                "syndrome_weight": 37
              },
              {
                "iteration": 9,
                "syndrome_weight": 34
              },
              {
                "iteration": 10,
                "syndrome_weight": 36
              },
              {
                "iteration": 15,
                "syndrome_weight": 40
              },
              {
                "iteration": 20,
                "syndrome_weight": 38
              }
            ]
          },
          {
            "variant": "lab_mask_xor_preview",
            "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "ft8_bitrev",
              "direction": "deinterleave_rx_to_codeword",
              "order_len": 174,
              "polarity": "inverted"
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 101.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 31,
            "message91": null,
            "message91_sha256_16": "210ed54aa2f6f2f5",
            "codeword174_sha256_16": "ef2bdd6a8b61576d",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 31
              },
              {
                "iteration": 1,
                "syndrome_weight": 31
              },
              {
                "iteration": 2,
                "syndrome_weight": 35
              },
              {
                "iteration": 3,
                "syndrome_weight": 39
              },
              {
                "iteration": 4,
                "syndrome_weight": 40
              },
              {
                "iteration": 5,
                "syndrome_weight": 46
              },
              {
                "iteration": 6,
                "syndrome_weight": 48
              },
              {
                "iteration": 7,
                "syndrome_weight": 48
              },
              {
                "iteration": 8,
                "syndrome_weight": 42
              },
              {
                "iteration": 9,
                "syndrome_weight": 39
              },
              {
                "iteration": 10,
                "syndrome_weight": 41
              },
              {
                "iteration": 15,
                "syndrome_weight": 38
              },
              {
                "iteration": 20,
                "syndrome_weight": 44
              }
            ]
          },
          {
            "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 109.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 32,
            "message91": null,
            "message91_sha256_16": "e8668f5cc7a6f478",
            "codeword174_sha256_16": "f1d436ecbef8e088",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 38
              },
              {
                "iteration": 1,
                "syndrome_weight": 38
              },
              {
                "iteration": 2,
                "syndrome_weight": 47
              },
              {
                "iteration": 3,
                "syndrome_weight": 43
              },
              {
                "iteration": 4,
                "syndrome_weight": 51
              },
              {
                "iteration": 5,
                "syndrome_weight": 48
              },
              {
                "iteration": 6,
                "syndrome_weight": 40
              },
              {
                "iteration": 7,
                "syndrome_weight": 39
              },
              {
                "iteration": 8,
                "syndrome_weight": 50
              },
              {
                "iteration": 9,
                "syndrome_weight": 33
              },
              {
                "iteration": 10,
                "syndrome_weight": 37
              },
              {
                "iteration": 15,
                "syndrome_weight": 41
              },
              {
                "iteration": 20,
                "syndrome_weight": 32
              }
            ]
          },
          {
            "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "none",
              "polarity": "inverted"
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 109.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 32,
            "message91": null,
            "message91_sha256_16": "f7edca62d63c8bf8",
            "codeword174_sha256_16": "77bf404572ba2050",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 42
              },
              {
                "iteration": 1,
                "syndrome_weight": 39
              },
              {
                "iteration": 2,
                "syndrome_weight": 41
              },
              {
                "iteration": 3,
                "syndrome_weight": 47
              },
              {
                "iteration": 4,
                "syndrome_weight": 40
              },
              {
                "iteration": 5,
                "syndrome_weight": 49
              },
              {
                "iteration": 6,
                "syndrome_weight": 34
              },
              {
                "iteration": 7,
                "syndrome_weight": 32
              },
              {
                "iteration": 8,
                "syndrome_weight": 33
              },
              {
                "iteration": 9,
                "syndrome_weight": 37
              },
              {
                "iteration": 10,
                "syndrome_weight": 35
              },
              {
                "iteration": 15,
                "syndrome_weight": 40
              },
              {
                "iteration": 20,
                "syndrome_weight": 40
              }
            ]
          },
          {
            "variant": "reverse_full_bitstream",
            "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "raw_msb",
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 112.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 33,
            "message91": null,
            "message91_sha256_16": "348bad2a3c8285da",
            "codeword174_sha256_16": "6b59017b641b4f24",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 41
              },
              {
                "iteration": 1,
                "syndrome_weight": 43
              },
              {
                "iteration": 2,
                "syndrome_weight": 35
              },
              {
                "iteration": 3,
                "syndrome_weight": 33
              },
              {
                "iteration": 4,
                "syndrome_weight": 36
              },
              {
                "iteration": 5,
                "syndrome_weight": 48
              },
              {
                "iteration": 6,
                "syndrome_weight": 43
              },
              {
                "iteration": 7,
                "syndrome_weight": 34
              },
              {
                "iteration": 8,
                "syndrome_weight": 37
              },
              {
                "iteration": 9,
                "syndrome_weight": 40
              },
              {
                "iteration": 10,
                "syndrome_weight": 34
              },
              {
                "iteration": 15,
                "syndrome_weight": 49
              },
              {
                "iteration": 20,
                "syndrome_weight": 46
              }
            ]
          },
          {
            "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 107.708676,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 1.927169,
              "min_abs": 0.001731,
              "max_abs": 4.421458,
              "positive": 137,
              "negative": 37,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 33,
            "message91": null,
            "message91_sha256_16": "458df79ba60a9328",
            "codeword174_sha256_16": "6d00dc7e03a960c9",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 40
              },
              {
                "iteration": 1,
                "syndrome_weight": 43
              },
              {
                "iteration": 2,
                "syndrome_weight": 42
              },
              {
                "iteration": 3,
                "syndrome_weight": 36
              },
              {
                "iteration": 4,
                "syndrome_weight": 55
              },
              {
                "iteration": 5,
                "syndrome_weight": 44
              },
              {
                "iteration": 6,
                "syndrome_weight": 33
              },
              {
                "iteration": 7,
                "syndrome_weight": 46
              },
              {
                "iteration": 8,
                "syndrome_weight": 41
              },
              {
                "iteration": 9,
                "syndrome_weight": 44
              },
              {
                "iteration": 10,
                "syndrome_weight": 33
              },
              {
                "iteration": 15,
                "syndrome_weight": 34
              },
              {
                "iteration": 20,
                "syndrome_weight": 43
              }
            ]
          },
          {
            "variant": "reverse_symbol_order",
            "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 113.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 34,
            "message91": null,
            "message91_sha256_16": "90c113192e91f005",
            "codeword174_sha256_16": "41b7858eaf726d78",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 41
              },
              {
                "iteration": 1,
                "syndrome_weight": 45
              },
              {
                "iteration": 2,
                "syndrome_weight": 34
              },
              {
                "iteration": 3,
                "syndrome_weight": 48
              },
              {
                "iteration": 4,
                "syndrome_weight": 38
              },
              {
                "iteration": 5,
                "syndrome_weight": 45
              },
              {
                "iteration": 6,
                "syndrome_weight": 47
              },
              {
                "iteration": 7,
                "syndrome_weight": 39
              },
              {
                "iteration": 8,
                "syndrome_weight": 36
              },
              {
                "iteration": 9,
                "syndrome_weight": 40
              },
              {
                "iteration": 10,
                "syndrome_weight": 43
              },
              {
                "iteration": 15,
                "syndrome_weight": 49
              },
              {
                "iteration": 20,
                "syndrome_weight": 47
              }
            ]
          },
          {
            "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "none",
              "polarity": "inverted"
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 109.195892,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 34,
            "message91": null,
            "message91_sha256_16": "23c3e63ea6054327",
            "codeword174_sha256_16": "37074cdf79522a3e",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 40
              },
              {
                "iteration": 1,
                "syndrome_weight": 48
              },
              {
                "iteration": 2,
                "syndrome_weight": 43
              },
              {
                "iteration": 3,
                "syndrome_weight": 44
              },
              {
                "iteration": 4,
                "syndrome_weight": 47
              },
              {
                "iteration": 5,
                "syndrome_weight": 35
              },
              {
                "iteration": 6,
                "syndrome_weight": 35
              },
              {
                "iteration": 7,
                "syndrome_weight": 39
              },
              {
                "iteration": 8,
                "syndrome_weight": 43
              },
              {
                "iteration": 9,
                "syndrome_weight": 45
              },
              {
                "iteration": 10,
                "syndrome_weight": 34
              },
              {
                "iteration": 15,
                "syndrome_weight": 37
              },
              {
                "iteration": 20,
                "syndrome_weight": 46
              }
            ]
          },
          {
            "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "raw_msb",
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "decoder_trial": {
              "llr_scale": 1.0,
              "alpha": 0.8
            },
            "source_rank_score": 107.578012,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 1.894503,
              "min_abs": 0.002971,
              "max_abs": 4.421458,
              "positive": 134,
              "negative": 40,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 34,
            "message91": null,
            "message91_sha256_16": "4c779f16eae4a194",
            "codeword174_sha256_16": "e5695a940150931b",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 42
              },
              {
                "iteration": 1,
                "syndrome_weight": 34
              },
              {
                "iteration": 2,
                "syndrome_weight": 38
              },
              {
                "iteration": 3,
                "syndrome_weight": 44
              },
              {
                "iteration": 4,
                "syndrome_weight": 36
              },
              {
                "iteration": 5,
                "syndrome_weight": 40
              },
              {
                "iteration": 6,
                "syndrome_weight": 39
              },
              {
                "iteration": 7,
                "syndrome_weight": 44
              },
              {
                "iteration": 8,
                "syndrome_weight": 41
              },
              {
                "iteration": 9,
                "syndrome_weight": 42
              },
              {
                "iteration": 10,
                "syndrome_weight": 39
              },
              {
                "iteration": 15,
                "syndrome_weight": 41
              },
              {
                "iteration": 20,
                "syndrome_weight": 44
              }
            ]
          },
          {
            "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "ft8_bitrev",
              "direction": "deinterleave_rx_to_codeword",
              "order_len": 174,
              "polarity": "inverted"
            },
            "decoder_trial": {
              "llr_scale": 0.75,
              "alpha": 0.7
            },
            "source_rank_score": 106.801724,
            "source_llr_stats": {
              "count": 174,
              "avg_abs": 1.700431,
              "min_abs": 0.002971,
              "max_abs": 4.14242,
              "positive": 118,
              "negative": 56,
              "zero": 0
            },
            "success": false,
            "iterations_used": 24,
            "final_syndrome_weight": 34,
            "message91": null,
            "message91_sha256_16": "64a178ece7f87012",
            "codeword174_sha256_16": "377fba097ea68f57",
            "trace": [
              {
                "iteration": 0,
                "syndrome_weight": 34
              },
              {
                "iteration": 1,
                "syndrome_weight": 34
              },
              {
                "iteration": 2,
                "syndrome_weight": 34
              },
              {
                "iteration": 3,
                "syndrome_weight": 36
              },
              {
                "iteration": 4,
                "syndrome_weight": 34
              },
              {
                "iteration": 5,
                "syndrome_weight": 41
              },
              {
                "iteration": 6,
                "syndrome_weight": 39
              },
              {
                "iteration": 7,
                "syndrome_weight": 36
              },
              {
                "iteration": 8,
                "syndrome_weight": 34
              },
              {
                "iteration": 9,
                "syndrome_weight": 34
              },
              {
                "iteration": 10,
                "syndrome_weight": 43
              },
              {
                "iteration": 15,
                "syndrome_weight": 38
              },
              {
                "iteration": 20,
                "syndrome_weight": 35
              }
            ]
          }
        ],
        "decodes": [],
        "outputs": {
          "ldpc_soft_decode_json": "/decoders/js8_decoder/runtime/ldpc_soft_decode/step35_ldpc_soft_decode.json"
        },
        "warnings": [
          "Step 35 runs bounded normalized-min-sum soft LDPC over the best-ranked FT8-style Gray/interleaver mapping candidates against the public (174,91) matrix contract.",
          "This still does not unpack JS8 text or validate CRC/message payloads.",
          "If success is true and syndrome_weight is 0, the next step can unpack the 91-bit message. Otherwise more timing, Costas/data-symbol boundary, deinterleaver/order or LLR tuning is required."
        ],
        "next_action": "Upload Step35 logs. If no valid codeword, inspect best mapping_meta/final_syndrome_weight and continue timing/interleaver/LLR tuning; if valid, add JS8 message unpack/CRC."
      }
    },
    "ldpc_matrix_probe": {
      "name": "20260526T181639Z_ldpc_matrix_probe_output.json",
      "path": "/decoders/js8_decoder/logs/20260526T181639Z_ldpc_matrix_probe_output.json",
      "url": "/logs/20260526T181639Z_ldpc_matrix_probe_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 36101,
        "mtime_utc": "2026-05-26T18:16:41Z"
      },
      "json_preview": {
        "ok": true,
        "mode": "JS8",
        "tool": "webftr-js8-real-ldpc-matrix-syndrome-probe",
        "tool_version": "step35-bounded-ldpc-ranking-guard",
        "input_wav": null,
        "candidate_json": "/decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.json",
        "rx_only": true,
        "safety": {
          "tx": false,
          "ptt": false,
          "tune": false,
          "send": false,
          "js8call_runtime_control": false
        },
        "implementation_stage": "step35_bounded_gray_interleaver_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": {
            "profile": "js8_near_6400",
            "nsps": 6400,
            "tone_spacing_hz": 1.875,
            "sync": {
              "start_sample": 57600,
              "start_seconds": 4.8,
              "base_freq_hz": 1025.0,
              "tone_spacing_hz": 1.875,
              "nsps": 6400,
              "candidate_score": 47.4,
              "costas_hits": 2,
              "avg_margin_db": 8.01
            },
            "rank_score": 225.085,
            "fec": {
              "soft_bit_count": 174,
              "missing_soft_bits": 0,
              "complete_ldpc_input_candidate": true,
              "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate"
            },
            "source_tool": "webftr-js8-auto-ldpc-probe"
          },
          "selected_variant": {
            "name": "raw_msb_symbol_order",
            "rank_score": 127.195892,
            "complete_174bit_candidate": true,
            "hard_bits_sha256_16": "c87312f86dbe74fc",
            "hard_weight_174": 36,
            "llr_stats": {
              "count": 174,
              "avg_abs": 2.298973,
              "min_abs": 0.012672,
              "max_abs": 4.421458,
              "positive": 141,
              "negative": 33,
              "zero": 0
            }
          }
        },
        "variant_probe_count": 72,
        "best_matrix_probe": {
          "variant": "reverse_symbol_order",
          "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
          "mapping_meta": {
            "tone_mapping": "lsb_within_each_tone",
            "interleaver": "ft8_bitrev",
            "direction": "interleave_codeword_to_rx_inverse",
            "order_len": 174
          },
          "hard_weight_174": 36,
          "llr_avg_abs": 2.29897311494253,
          "syndrome": {
            "bits_len": 174,
            "message91": "0000011101100000010000000000010100000000000100110000000010000011001100001000000000001000100",
            "parity83_observed": "01010001000010001101000000000000100001000110000000100010000101000100000000000010000",
            "parity83_expected": "00110001010000001001111110010110000100100111101100101000000100010000010100111000000",
            "syndrome83": "01100000010010000100111110010110100101100001101100001010000001010100010100111010000",
            "syndrome_weight": 32,
            "valid_codeword_hard_decision": false,
            "message91_sha256_16": "384c60e60980b42c",
            "codeword174_sha256_16": "d47743b04ac969bf"
          },
          "repair": {
            "attempted": true,
            "max_flips": 6,
            "candidate_pool": 12,
            "flip_count": 2,
            "repair_success": false,
            "final_syndrome_weight": 24,
            "trace": [
              {
                "flip_index": 60,
                "llr_abs": 0.012672,
                "gain": 7,
                "syndrome_weight_after": 25
              },
              {
                "flip_index": 104,
                "llr_abs": 0.300403,
                "gain": 1,
                "syndrome_weight_after": 24
              }
            ],
            "repaired_message91_sha256_16": "b120935d577150cf"
          }
        },
        "all_matrix_probes": [
          {
            "variant": "reverse_symbol_order",
            "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "hard_weight_174": 36,
            "llr_avg_abs": 2.29897311494253,
            "syndrome": {
              "bits_len": 174,
              "message91": "0000011101100000010000000000010100000000000100110000000010000011001100001000000000001000100",
              "parity83_observed": "01010001000010001101000000000000100001000110000000100010000101000100000000000010000",
              "parity83_expected": "00110001010000001001111110010110000100100111101100101000000100010000010100111000000",
              "syndrome83": "01100000010010000100111110010110100101100001101100001010000001010100010100111010000",
              "syndrome_weight": 32,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "384c60e60980b42c",
              "codeword174_sha256_16": "d47743b04ac969bf"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 2,
              "repair_success": false,
              "final_syndrome_weight": 24,
              "trace": [
                {
                  "flip_index": 60,
                  "llr_abs": 0.012672,
                  "gain": 7,
                  "syndrome_weight_after": 25
                },
                {
                  "flip_index": 104,
                  "llr_abs": 0.300403,
                  "gain": 1,
                  "syndrome_weight_after": 24
                }
              ],
              "repaired_message91_sha256_16": "b120935d577150cf"
            }
          },
          {
            "variant": "reverse_full_bitstream",
            "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "raw_msb",
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "hard_weight_174": 36,
            "llr_avg_abs": 2.2989731149425294,
            "syndrome": {
              "bits_len": 174,
              "message91": "0000011101100000010000000000010100000000000100110000000010000011001100001000000000001000100",
              "parity83_observed": "01010001000010001101000000000000100001000110000000100010000101000100000000000010000",
              "parity83_expected": "00110001010000001001111110010110000100100111101100101000000100010000010100111000000",
              "syndrome83": "01100000010010000100111110010110100101100001101100001010000001010100010100111010000",
              "syndrome_weight": 32,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "384c60e60980b42c",
              "codeword174_sha256_16": "d47743b04ac969bf"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 2,
              "repair_success": false,
              "final_syndrome_weight": 24,
              "trace": [
                {
                  "flip_index": 60,
                  "llr_abs": 0.012672,
                  "gain": 7,
                  "syndrome_weight_after": 25
                },
                {
                  "flip_index": 104,
                  "llr_abs": 0.300403,
                  "gain": 1,
                  "syndrome_weight_after": 24
                }
              ],
              "repaired_message91_sha256_16": "b120935d577150cf"
            }
          },
          {
            "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "ft8_bitrev",
              "direction": "deinterleave_rx_to_codeword",
              "order_len": 174
            },
            "hard_weight_174": 54,
            "llr_avg_abs": 1.7330972528735638,
            "syndrome": {
              "bits_len": 174,
              "message91": "0010000000110001000000000001001000100001100001001010001110000100001010010110001010010100000",
              "parity83_observed": "00001100010010100111100110000010000000101101111110001000110000110000000100001001000",
              "parity83_expected": "11100110110011100011010100100011000110011100101100110001111010100000100100101011000",
              "syndrome83": "11101010100001000100110010100001000110110001010010111001001010010000100000100010000",
              "syndrome_weight": 30,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "8c66b791ab80fa5f",
              "codeword174_sha256_16": "4d990be74fb87bae"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 1,
              "repair_success": false,
              "final_syndrome_weight": 29,
              "trace": [
                {
                  "flip_index": 154,
                  "llr_abs": 0.118003,
                  "gain": 1,
                  "syndrome_weight_after": 29
                }
              ],
              "repaired_message91_sha256_16": "8c66b791ab80fa5f"
            }
          },
          {
            "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "raw_msb",
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "hard_weight_174": 42,
            "llr_avg_abs": 1.894502597701149,
            "syndrome": {
              "bits_len": 174,
              "message91": "0011110000000000110000010100000110000011101001010010000000000100100100100000100100000001110",
              "parity83_observed": "00010000100000000000001100100000100010100011000010000000000000000100010000100010001",
              "parity83_expected": "11000010001001000011011101101100100110101100100010101001100000110100111101000010010",
              "syndrome83": "11010010101001000011010001001100000100001111100000101001100000110000101101100000011",
              "syndrome_weight": 32,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "e5731e4fede3fb18",
              "codeword174_sha256_16": "1dc701ee46577c18"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 3,
              "repair_success": false,
              "final_syndrome_weight": 29,
              "trace": [
                {
                  "flip_index": 110,
                  "llr_abs": 0.005053,
                  "gain": 1,
                  "syndrome_weight_after": 31
                },
                {
                  "flip_index": 116,
                  "llr_abs": 0.07304,
                  "gain": 1,
                  "syndrome_weight_after": 30
                },
                {
                  "flip_index": 94,
                  "llr_abs": 0.155455,
                  "gain": 1,
                  "syndrome_weight_after": 29
                }
              ],
              "repaired_message91_sha256_16": "e5731e4fede3fb18"
            }
          },
          {
            "variant": "lab_mask_xor_preview",
            "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "ft8_bitrev",
              "direction": "deinterleave_rx_to_codeword",
              "order_len": 174,
              "polarity": "inverted"
            },
            "hard_weight_174": 89,
            "llr_avg_abs": 1.7330972528735638,
            "syndrome": {
              "bits_len": 174,
              "message91": "1000001000110100110111110011101111101100011100100100001010111110010001110110111110001001101",
              "parity83_observed": "00010100010001000101011110001001100001111110111110101010010110111100011001000110010",
              "parity83_expected": "11110101110110001101011101001000111001011011011100001100000100001100011101110111110",
              "syndrome83": "11100001100111001000000011000001011000100101100010100110010010110000000100110001100",
              "syndrome_weight": 31,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "7880a2f86fd2bcbd",
              "codeword174_sha256_16": "49e0d840cf79204d"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 1,
              "repair_success": false,
              "final_syndrome_weight": 30,
              "trace": [
                {
                  "flip_index": 134,
                  "llr_abs": 0.001731,
                  "gain": 1,
                  "syndrome_weight_after": 30
                }
              ],
              "repaired_message91_sha256_16": "7880a2f86fd2bcbd"
            }
          },
          {
            "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "hard_weight_174": 47,
            "llr_avg_abs": 1.7612153735632188,
            "syndrome": {
              "bits_len": 174,
              "message91": "1001010010000000010000000000000001011001100100010010000100000010000011100000100001000101001",
              "parity83_observed": "01101001000001111000001001000101101100000000000110000000000001001000001010101000100",
              "parity83_expected": "01001101010100111000110101000111000100011011000011010101111011000100001111000010101",
              "syndrome83": "00100100010101000000111100000010101000011011000101010101111010001100000101101010001",
              "syndrome_weight": 33,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "dd95757cc3ee25c0",
              "codeword174_sha256_16": "d259414cbfbda6fb"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 3,
              "repair_success": false,
              "final_syndrome_weight": 30,
              "trace": [
                {
                  "flip_index": 147,
                  "llr_abs": 0.113332,
                  "gain": 1,
                  "syndrome_weight_after": 32
                },
                {
                  "flip_index": 151,
                  "llr_abs": 0.145602,
                  "gain": 1,
                  "syndrome_weight_after": 31
                },
                {
                  "flip_index": 111,
                  "llr_abs": 0.17487,
                  "gain": 1,
                  "syndrome_weight_after": 30
                }
              ],
              "repaired_message91_sha256_16": "dd95757cc3ee25c0"
            }
          },
          {
            "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "hard_weight_174": 52,
            "llr_avg_abs": 1.6970454827586203,
            "syndrome": {
              "bits_len": 174,
              "message91": "0111100000101000100010000001011101100000010000010101010000000000100001111100001011001100011",
              "parity83_observed": "10000000001000000000000011110110000001000100010000010000000010010010010000010110001",
              "parity83_expected": "10101100000111000010010111010011000000100011000011110110101011110110010000010101000",
              "syndrome83": "00101100001111000010010100100101000001100111010011100110101001100100000000000011001",
              "syndrome_weight": 32,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "0758421db7e99eb5",
              "codeword174_sha256_16": "01bbbd5dbf5c2f3d"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 1,
              "repair_success": false,
              "final_syndrome_weight": 31,
              "trace": [
                {
                  "flip_index": 120,
                  "llr_abs": 0.095766,
                  "gain": 1,
                  "syndrome_weight_after": 31
                }
              ],
              "repaired_message91_sha256_16": "0758421db7e99eb5"
            }
          },
          {
            "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "hard_weight_174": 52,
            "llr_avg_abs": 1.6320086724137932,
            "syndrome": {
              "bits_len": 174,
              "message91": "0111100000101000100010000001011101100000010000010101010000000000100001111100001011001100011",
              "parity83_observed": "10000000001000000000000011110110000001000100010000010000000010010010010000010110001",
              "parity83_expected": "10101100000111000010010111010011000000100011000011110110101011110110010000010101000",
              "syndrome83": "00101100001111000010010100100101000001100111010011100110101001100100000000000011001",
              "syndrome_weight": 32,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "0758421db7e99eb5",
              "codeword174_sha256_16": "01bbbd5dbf5c2f3d"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 1,
              "repair_success": false,
              "final_syndrome_weight": 31,
              "trace": [
                {
                  "flip_index": 147,
                  "llr_abs": 0.169509,
                  "gain": 1,
                  "syndrome_weight_after": 31
                }
              ],
              "repaired_message91_sha256_16": "0758421db7e99eb5"
            }
          },
          {
            "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "ft8_bitrev",
              "direction": "deinterleave_rx_to_codeword",
              "order_len": 174,
              "polarity": "inverted"
            },
            "hard_weight_174": 118,
            "llr_avg_abs": 1.7004307701149426,
            "syndrome": {
              "bits_len": 174,
              "message91": "1110111101111011000001111100111111001111110011001110001101001101110010111111110111101111110",
              "parity83_observed": "01000101101111011010111101111001101111101101101000111110111101110101111101101101011",
              "parity83_expected": "11001000101111111000111111110101011000000101010110101100111101101100101011100001010",
              "syndrome83": "10001101000000100010000010001100110111101000111110010010000000011001010110001100001",
              "syndrome_weight": 32,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "64a178ece7f87012",
              "codeword174_sha256_16": "39e7d6bfe9f3caa8"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 32,
              "trace": [],
              "repaired_message91_sha256_16": "64a178ece7f87012"
            }
          },
          {
            "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "none",
              "polarity": "inverted"
            },
            "hard_weight_174": 129,
            "llr_avg_abs": 1.7716979770114942,
            "syndrome": {
              "bits_len": 174,
              "message91": "1101110011100011111101111101100011110011110010011111110101100011111111111111110011011111011",
              "parity83_observed": "10111110101111110110111111100111110111110111111111000111111111001001111001110111111",
              "parity83_expected": "00110111101010100011101001110001110100101011001111101111011101101001101101100010001",
              "syndrome83": "10001001000101010101010110010110000011011100110000101000100010100000010100010101110",
              "syndrome_weight": 33,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "e98c05f03d40a834",
              "codeword174_sha256_16": "7bd1199f75d4b915"
            },
            "repair": {
              "attempted": true,
              "max_flips": 6,
              "candidate_pool": 12,
              "flip_count": 1,
              "repair_success": false,
              "final_syndrome_weight": 32,
              "trace": [
                {
                  "flip_index": 110,
                  "llr_abs": 0.225929,
                  "gain": 1,
                  "syndrome_weight_after": 32
                }
              ],
              "repaired_message91_sha256_16": "e98c05f03d40a834"
            }
          },
          {
            "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "none",
              "polarity": "inverted"
            },
            "hard_weight_174": 131,
            "llr_avg_abs": 1.7170600459770111,
            "syndrome": {
              "bits_len": 174,
              "message91": "1101110011100011111101111101100011110011110010011111110101100011111111111111110011011111011",
              "parity83_observed": "10111110101111110110111111100111110111110111111111011111111111001001111001110111111",
              "parity83_expected": "00110111101010100011101001110001110100101011001111101111011101101001101101100010001",
              "syndrome83": "10001001000101010101010110010110000011011100110000110000100010100000010100010101110",
              "syndrome_weight": 33,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "e98c05f03d40a834",
              "codeword174_sha256_16": "75ae86c1752e51f1"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 33,
              "trace": [],
              "repaired_message91_sha256_16": "e98c05f03d40a834"
            }
          },
          {
            "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "hard_weight_174": 53,
            "llr_avg_abs": 1.3529909827586213,
            "syndrome": {
              "bits_len": 174,
              "message91": "0000001000000000100110100110100100110001011100000100110000110110000010000000101101101000000",
              "parity83_observed": "00000000000000000000010001000010001101111001000001011010000011001011000011011010000",
              "parity83_expected": "00010101101110001000000101011011000000011101100100010110001111010011000001100010101",
              "syndrome83": "00010101101110001000010100011001001101100100100101001100001100011000000010111000101",
              "syndrome_weight": 33,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "d63f1a805e94cd08",
              "codeword174_sha256_16": "0862e4611b7ba452"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 33,
              "trace": [],
              "repaired_message91_sha256_16": "d63f1a805e94cd08"
            }
          },
          {
            "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword",
            "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_alt_high",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": false,
              "interleaver": "none"
            },
            "hard_weight_174": 53,
            "llr_avg_abs": 1.3529909827586208,
            "syndrome": {
              "bits_len": 174,
              "message91": "0001100000010001100010000010111100011100001100010011100010011100000000110000101100100000100",
              "parity83_observed": "01110001000011000011000000011000111000000000000011110000001000010000000001001001000",
              "parity83_expected": "11111000011010001110010111011010111000000011000101011111101110110110000001000100100",
              "syndrome83": "10001001011001001101010111000010000000000011000110101111100110100110000000001101100",
              "syndrome_weight": 33,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "321223ba015c242f",
              "codeword174_sha256_16": "480df928476c81fc"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 33,
              "trace": [],
              "repaired_message91_sha256_16": "321223ba015c242f"
            }
          },
          {
            "variant": "mapped_ft8_gray_alt_high_demap_msb_input+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
            },
            "hard_weight_174": 55,
            "llr_avg_abs": 1.3412421264367818,
            "syndrome": {
              "bits_len": 174,
              "message91": "0110110000000010111000011100000110000011101010010011000000000000100000000010100110010101100",
              "parity83_observed": "11010000100000000000011100110000101100000110001010000000000010000110010010110010001",
              "parity83_expected": "01010011111111001100111111110111001010000100111110000100001110100100010011010011100",
              "syndrome83": "10000011011111001100100011000111100110000010110100000100001100100010000001100001101",
              "syndrome_weight": 33,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "fda1bd1bee3ef270",
              "codeword174_sha256_16": "b72ed95eb3537964"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 33,
              "trace": [],
              "repaired_message91_sha256_16": "fda1bd1bee3ef270"
            }
          },
          {
            "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"
            },
            "hard_weight_174": 120,
            "llr_avg_abs": 1.9271690804597712,
            "syndrome": {
              "bits_len": 174,
              "message91": "1110110111100101110110111100101111110111110110011100110000100111111011111111101011001111011",
              "parity83_observed": "11111111100101110110111111110111010111110110111100000111101111001000111010110110110",
              "parity83_expected": "00010111100001000111100101010011010000100001010101010011110101001101111000010000110",
              "syndrome83": "11101000000100110001011010100100000111010111101001010100011010000101000010100110000",
              "syndrome_weight": 34,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "210ed54aa2f6f2f5",
              "codeword174_sha256_16": "88b752d7f508741d"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 34,
              "trace": [],
              "repaired_message91_sha256_16": "210ed54aa2f6f2f5"
            }
          },
          {
            "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "ft8_bitrev",
              "direction": "deinterleave_rx_to_codeword",
              "order_len": 174
            },
            "hard_weight_174": 40,
            "llr_avg_abs": 1.9271690804597712,
            "syndrome": {
              "bits_len": 174,
              "message91": "0001000001001000000010000010000000110000001000110000110010110010000010000000000100101000001",
              "parity83_observed": "01000000001010000001000010000000001001001011001001000000000010010010000011001010000",
              "parity83_expected": "10101001011011100000100001000110100011001111110101010110100011001100000110101010000",
              "syndrome83": "11101001010001100001100011000110101010000100111100010110100001011110000101100000000",
              "syndrome_weight": 34,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "dc6b3b99b0eefa3c",
              "codeword174_sha256_16": "abc3f6bc66ab0d95"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 34,
              "trace": [],
              "repaired_message91_sha256_16": "dc6b3b99b0eefa3c"
            }
          },
          {
            "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits",
            "mapping_meta": {
              "tone_mapping": "lsb_within_each_tone",
              "interleaver": "ft8_bitrev",
              "direction": "deinterleave_rx_to_codeword",
              "order_len": 174,
              "polarity": "inverted"
            },
            "hard_weight_174": 134,
            "llr_avg_abs": 1.9271690804597712,
            "syndrome": {
              "bits_len": 174,
              "message91": "1110111110110111111101111101111111001111110111001111001101001101111101111111111011010111110",
              "parity83_observed": "10111111110101111110111101111111110110110100110110111111111101101101111100110101111",
              "parity83_expected": "10101101010101110000010100101000110110111101100000100010100001100111010101101001110",
              "syndrome83": "00010010100000001110101001010111000000001001010110011101011100001010101001011100001",
              "syndrome_weight": 34,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "2b641aedbf9f6b1c",
              "codeword174_sha256_16": "70b34a4cd8422396"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 34,
              "trace": [],
              "repaired_message91_sha256_16": "2b641aedbf9f6b1c"
            }
          },
          {
            "variant": "reverse_full_bitstream",
            "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse",
            "mapping_meta": {
              "tone_mapping": "ft8_gray_primary",
              "gray_direction": "inverse_observed_to_plain",
              "reverse_bits_within_tone_before_gray": true,
              "interleaver": "ft8_bitrev",
              "direction": "interleave_codeword_to_rx_inverse",
              "order_len": 174
            },
            "hard_weight_174": 40,
            "llr_avg_abs": 1.927169080459771,
            "syndrome": {
              "bits_len": 174,
              "message91": "0001001000110000000000010000010110101000000100010000010000000110010100001000000000001000100",
              "parity83_observed": "01110010001000000100000001010000000000000011000000110010101110000000100000001010000",
              "parity83_expected": "01111010110100110101000000110110000101101100011010011000111110000111100001100011001",
              "syndrome83": "00001000111100110001000001100110000101101111011010101010010000000111000001101001001",
              "syndrome_weight": 34,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "703de01c7930a681",
              "codeword174_sha256_16": "728f877f162554f0"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 34,
              "trace": [],
              "repaired_message91_sha256_16": "703de01c7930a681"
            }
          },
          {
            "variant": "reverse_full_bitstream",
            "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"
            },
            "hard_weight_174": 40,
            "llr_avg_abs": 1.927169080459771,
            "syndrome": {
              "bits_len": 174,
              "message91": "0000000010010000110000110010000110110000010110010010110000010000000100000000000000000000000",
              "parity83_observed": "10010010000000001000011011000011010000100101000001000010011000011000000000000000000",
              "parity83_expected": "01010000001100101100100010111110001100000101000110001011100000011010111100010000000",
              "syndrome83": "11000010001100100100111001111101011100100000000111001001111000000010111100010000000",
              "syndrome_weight": 34,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "b9685faa51f2fee3",
              "codeword174_sha256_16": "6034031cb49b149b"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 34,
              "trace": [],
              "repaired_message91_sha256_16": "b9685faa51f2fee3"
            }
          },
          {
            "variant": "reverse_full_bitstream",
            "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
            },
            "hard_weight_174": 42,
            "llr_avg_abs": 1.8945025977011496,
            "syndrome": {
              "bits_len": 174,
              "message91": "0001001000110000000000010000010110101000000101010000010000000110010100001000000000001000100",
              "parity83_observed": "01110010001000000100000001010000000000000111000000110010101110000000100000001010000",
              "parity83_expected": "01001011000000100001010110010011110000101011001001100010100010101000010101001011111",
              "syndrome83": "00111001001000100101010111000011110000101100001001010000001100101000110101000001111",
              "syndrome_weight": 34,
              "valid_codeword_hard_decision": false,
              "message91_sha256_16": "d8aad96deb103b4f",
              "codeword174_sha256_16": "65d7f0c73aa808bc"
            },
            "repair": {
              "attempted": false,
              "flip_count": 0,
              "repair_success": false,
              "final_syndrome_weight": 34,
              "trace": [],
              "repaired_message91_sha256_16": "d8aad96deb103b4f"
            }
          }
        ],
        "decodes": [],
        "outputs": {
          "ldpc_matrix_probe_json": "/decoders/js8_decoder/runtime/ldpc_matrix_probe/step35_ldpc_matrix_probe.json"
        },
        "warnings": [
          "Step 35 keeps the Step 35 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": "20260526T180620Z_real_run_candidate_export_output.json",
      "path": "/decoders/js8_decoder/logs/20260526T180620Z_real_run_candidate_export_output.json",
      "url": "/logs/20260526T180620Z_real_run_candidate_export_output.json",
      "stat": {
        "exists": true,
        "is_file": true,
        "is_dir": false,
        "size": 1209,
        "mtime_utc": "2026-05-26T18:16:39Z"
      },
      "json_preview": {
        "ok": false,
        "error": "json_command_timeout_guard",
        "timeout_seconds": 60,
        "exit_code": 143,
        "command": [
          "python3",
          "-m",
          "webftr_js8_lab.js8_candidate_export",
          "--input",
          "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav",
          "--pretty",
          "--profile-scan-json",
          "/decoders/js8_decoder/logs/20260526T180620Z_real_run_profile_scan_output.json",
          "--anchor-json",
          "/decoders/js8_decoder/logs/20260526T180620Z_real_run_auto_ldpc_probe_output.json",
          "--max-seconds",
          "60",
          "--max-symbols",
          "96",
          "--max-starts",
          "1",
          "--max-base-candidates",
          "1",
          "--output-dir",
          "/decoders/js8_decoder/runtime/fec_candidates",
          "--prefer-js8"
        ],
        "stderr_log": "/decoders/js8_decoder/logs/20260526T180620Z_real_run_candidate_export_output.stderr.log",
        "stderr_tail": "",
        "rx_only": true,
        "safety": {
          "tx": false,
          "ptt": false,
          "tune": false,
          "send": false,
          "js8call_runtime_control": false
        },
        "next_action": "Step 35 timeout guard stopped this expensive probe. The real-run now continues with quick-window fallback when available; otherwise inspect stderr/log bundle."
      }
    }
  },
  "bundles": [
    {
      "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": 102263,
      "mtime_utc": "2026-05-26T21:46:43Z",
      "url": "/logs/js8_browser_server.log"
    },
    {
      "name": "js8_browser_report_latest.json",
      "size": 162763,
      "mtime_utc": "2026-05-26T21:46:43Z",
      "url": "/logs/js8_browser_report_latest.json"
    },
    {
      "name": "js8_start_diagnostics_latest.log",
      "size": 105580,
      "mtime_utc": "2026-05-26T18:17:40Z",
      "url": "/logs/js8_start_diagnostics_latest.log"
    },
    {
      "name": "20260526T180620Z_server-deep-run.log",
      "size": 105246,
      "mtime_utc": "2026-05-26T18:17:40Z",
      "url": "/logs/20260526T180620Z_server-deep-run.log"
    },
    {
      "name": "latest.log",
      "size": 105246,
      "mtime_utc": "2026-05-26T18:17:40Z",
      "url": "/logs/latest.log"
    },
    {
      "name": "20260526T180620Z_server-deep-run_manifest.json",
      "size": 1053,
      "mtime_utc": "2026-05-26T18:17:39Z",
      "url": "/logs/20260526T180620Z_server-deep-run_manifest.json"
    },
    {
      "name": "20260526T180620Z_real-run.log",
      "size": 104129,
      "mtime_utc": "2026-05-26T18:17:39Z",
      "url": "/logs/20260526T180620Z_real-run.log"
    },
    {
      "name": "20260526T180620Z_real-run_manifest.json",
      "size": 2092,
      "mtime_utc": "2026-05-26T18:17:39Z",
      "url": "/logs/20260526T180620Z_real-run_manifest.json"
    },
    {
      "name": "js8_decoder_lab_real_run_20260526T180620Z.zip",
      "size": 380494,
      "mtime_utc": "2026-05-26T18:17:38Z",
      "url": "/logs/js8_decoder_lab_real_run_20260526T180620Z.zip"
    },
    {
      "name": "20260526T180620Z_real_run_bundle_index.json",
      "size": 15728,
      "mtime_utc": "2026-05-26T18:17:38Z",
      "url": "/logs/20260526T180620Z_real_run_bundle_index.json"
    },
    {
      "name": "20260526T181643Z_ldpc-soft-decode.log",
      "size": 46446,
      "mtime_utc": "2026-05-26T18:17:38Z",
      "url": "/logs/20260526T181643Z_ldpc-soft-decode.log"
    },
    {
      "name": "20260526T181643Z_ldpc-soft-decode_manifest.json",
      "size": 919,
      "mtime_utc": "2026-05-26T18:17:38Z",
      "url": "/logs/20260526T181643Z_ldpc-soft-decode_manifest.json"
    },
    {
      "name": "20260526T181643Z_ldpc_soft_decode_output.json",
      "size": 45708,
      "mtime_utc": "2026-05-26T18:17:37Z",
      "url": "/logs/20260526T181643Z_ldpc_soft_decode_output.json"
    },
    {
      "name": "20260526T181643Z_ldpc_soft_decode_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T18:16:43Z",
      "url": "/logs/20260526T181643Z_ldpc_soft_decode_output.stderr.log"
    },
    {
      "name": "20260526T181639Z_ldpc-matrix-probe.log",
      "size": 36845,
      "mtime_utc": "2026-05-26T18:16:43Z",
      "url": "/logs/20260526T181639Z_ldpc-matrix-probe.log"
    },
    {
      "name": "20260526T181639Z_ldpc-matrix-probe_manifest.json",
      "size": 923,
      "mtime_utc": "2026-05-26T18:16:42Z",
      "url": "/logs/20260526T181639Z_ldpc-matrix-probe_manifest.json"
    },
    {
      "name": "20260526T181639Z_ldpc_matrix_probe_output.json",
      "size": 36101,
      "mtime_utc": "2026-05-26T18:16:41Z",
      "url": "/logs/20260526T181639Z_ldpc_matrix_probe_output.json"
    },
    {
      "name": "20260526T181639Z_ldpc_matrix_probe_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T18:16:39Z",
      "url": "/logs/20260526T181639Z_ldpc_matrix_probe_output.stderr.log"
    },
    {
      "name": "20260526T180620Z_real_run_candidate_export_output.json",
      "size": 1209,
      "mtime_utc": "2026-05-26T18:16:39Z",
      "url": "/logs/20260526T180620Z_real_run_candidate_export_output.json"
    },
    {
      "name": "20260526T180620Z_real_run_candidate_export_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T18:15:38Z",
      "url": "/logs/20260526T180620Z_real_run_candidate_export_output.stderr.log"
    },
    {
      "name": "20260526T180620Z_real_run_auto_ldpc_probe_output.json",
      "size": 865,
      "mtime_utc": "2026-05-26T18:15:38Z",
      "url": "/logs/20260526T180620Z_real_run_auto_ldpc_probe_output.json"
    },
    {
      "name": "20260526T180620Z_real_run_auto_ldpc_probe_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T18:12:38Z",
      "url": "/logs/20260526T180620Z_real_run_auto_ldpc_probe_output.stderr.log"
    },
    {
      "name": "20260526T180936Z_frame-recover.log",
      "size": 1592,
      "mtime_utc": "2026-05-26T18:12:38Z",
      "url": "/logs/20260526T180936Z_frame-recover.log"
    },
    {
      "name": "20260526T180936Z_frame-recover_manifest.json",
      "size": 675,
      "mtime_utc": "2026-05-26T18:12:37Z",
      "url": "/logs/20260526T180936Z_frame-recover_manifest.json"
    },
    {
      "name": "20260526T180936Z_frame_recover_output.json",
      "size": 852,
      "mtime_utc": "2026-05-26T18:12:36Z",
      "url": "/logs/20260526T180936Z_frame_recover_output.json"
    },
    {
      "name": "20260526T180936Z_frame_recover_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T18:09:36Z",
      "url": "/logs/20260526T180936Z_frame_recover_output.stderr.log"
    },
    {
      "name": "20260526T180620Z_real_run_profile_scan_output.json",
      "size": 859,
      "mtime_utc": "2026-05-26T18:09:36Z",
      "url": "/logs/20260526T180620Z_real_run_profile_scan_output.json"
    },
    {
      "name": "20260526T180620Z_real_run_profile_scan_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T18:07:35Z",
      "url": "/logs/20260526T180620Z_real_run_profile_scan_output.stderr.log"
    },
    {
      "name": "20260526T180620Z_real_run_dirty_window_scan_output.json",
      "size": 1223,
      "mtime_utc": "2026-05-26T18:07:35Z",
      "url": "/logs/20260526T180620Z_real_run_dirty_window_scan_output.json"
    },
    {
      "name": "20260526T180620Z_real_run_dirty_window_scan_output.stderr.log",
      "size": 168,
      "mtime_utc": "2026-05-26T18:06:35Z",
      "url": "/logs/20260526T180620Z_real_run_dirty_window_scan_output.stderr.log"
    },
    {
      "name": "20260526T180620Z_real_run_quick_prefilter_output.json",
      "size": 8807,
      "mtime_utc": "2026-05-26T18:06:35Z",
      "url": "/logs/20260526T180620Z_real_run_quick_prefilter_output.json"
    },
    {
      "name": "20260526T180620Z_real_run_quick_prefilter_output.stderr.log",
      "size": 168,
      "mtime_utc": "2026-05-26T18:06:22Z",
      "url": "/logs/20260526T180620Z_real_run_quick_prefilter_output.stderr.log"
    },
    {
      "name": "20260526T180621Z_input-check.log",
      "size": 1385,
      "mtime_utc": "2026-05-26T18:06:21Z",
      "url": "/logs/20260526T180621Z_input-check.log"
    },
    {
      "name": "20260526T180621Z_input-check_manifest.json",
      "size": 820,
      "mtime_utc": "2026-05-26T18:06:21Z",
      "url": "/logs/20260526T180621Z_input-check_manifest.json"
    },
    {
      "name": "20260526T180621Z_input_check_output.json",
      "size": 676,
      "mtime_utc": "2026-05-26T18:06:21Z",
      "url": "/logs/20260526T180621Z_input_check_output.json"
    },
    {
      "name": "20260526T180621Z_input_check_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T18:06:21Z",
      "url": "/logs/20260526T180621Z_input_check_output.stderr.log"
    },
    {
      "name": "20260526T161453Z_server-deep-run.log",
      "size": 162565,
      "mtime_utc": "2026-05-26T16:28:32Z",
      "url": "/logs/20260526T161453Z_server-deep-run.log"
    },
    {
      "name": "20260526T161453Z_server-deep-run_manifest.json",
      "size": 1058,
      "mtime_utc": "2026-05-26T16:28:32Z",
      "url": "/logs/20260526T161453Z_server-deep-run_manifest.json"
    },
    {
      "name": "20260526T161453Z_real-run.log",
      "size": 161448,
      "mtime_utc": "2026-05-26T16:28:31Z",
      "url": "/logs/20260526T161453Z_real-run.log"
    },
    {
      "name": "20260526T161453Z_real-run_manifest.json",
      "size": 2097,
      "mtime_utc": "2026-05-26T16:28:31Z",
      "url": "/logs/20260526T161453Z_real-run_manifest.json"
    },
    {
      "name": "js8_decoder_lab_real_run_20260526T161453Z.zip",
      "size": 330478,
      "mtime_utc": "2026-05-26T16:28:31Z",
      "url": "/logs/js8_decoder_lab_real_run_20260526T161453Z.zip"
    },
    {
      "name": "20260526T161453Z_real_run_bundle_index.json",
      "size": 12759,
      "mtime_utc": "2026-05-26T16:28:31Z",
      "url": "/logs/20260526T161453Z_real_run_bundle_index.json"
    },
    {
      "name": "20260526T162630Z_ldpc-soft-decode.log",
      "size": 1674,
      "mtime_utc": "2026-05-26T16:28:31Z",
      "url": "/logs/20260526T162630Z_ldpc-soft-decode.log"
    },
    {
      "name": "20260526T162630Z_ldpc-soft-decode_manifest.json",
      "size": 686,
      "mtime_utc": "2026-05-26T16:28:30Z",
      "url": "/logs/20260526T162630Z_ldpc-soft-decode_manifest.json"
    },
    {
      "name": "20260526T162630Z_ldpc_soft_decode_output.json",
      "size": 916,
      "mtime_utc": "2026-05-26T16:28:30Z",
      "url": "/logs/20260526T162630Z_ldpc_soft_decode_output.json"
    },
    {
      "name": "20260526T162630Z_ldpc_soft_decode_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T16:26:30Z",
      "url": "/logs/20260526T162630Z_ldpc_soft_decode_output.stderr.log"
    },
    {
      "name": "20260526T162329Z_ldpc-matrix-probe.log",
      "size": 1651,
      "mtime_utc": "2026-05-26T16:26:30Z",
      "url": "/logs/20260526T162329Z_ldpc-matrix-probe.log"
    },
    {
      "name": "20260526T162329Z_ldpc-matrix-probe_manifest.json",
      "size": 688,
      "mtime_utc": "2026-05-26T16:26:30Z",
      "url": "/logs/20260526T162329Z_ldpc-matrix-probe_manifest.json"
    },
    {
      "name": "20260526T162329Z_ldpc_matrix_probe_output.json",
      "size": 887,
      "mtime_utc": "2026-05-26T16:26:30Z",
      "url": "/logs/20260526T162329Z_ldpc_matrix_probe_output.json"
    },
    {
      "name": "20260526T162329Z_ldpc_matrix_probe_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T16:23:29Z",
      "url": "/logs/20260526T162329Z_ldpc_matrix_probe_output.stderr.log"
    },
    {
      "name": "20260526T161453Z_real_run_candidate_export_output.json",
      "size": 99313,
      "mtime_utc": "2026-05-26T16:23:29Z",
      "url": "/logs/20260526T161453Z_real_run_candidate_export_output.json"
    },
    {
      "name": "20260526T161453Z_real_run_candidate_export_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T16:23:27Z",
      "url": "/logs/20260526T161453Z_real_run_candidate_export_output.stderr.log"
    },
    {
      "name": "20260526T161453Z_real_run_auto_ldpc_probe_output.json",
      "size": 40038,
      "mtime_utc": "2026-05-26T16:23:27Z",
      "url": "/logs/20260526T161453Z_real_run_auto_ldpc_probe_output.json"
    },
    {
      "name": "20260526T161453Z_real_run_auto_ldpc_probe_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T16:21:19Z",
      "url": "/logs/20260526T161453Z_real_run_auto_ldpc_probe_output.stderr.log"
    },
    {
      "name": "20260526T161818Z_frame-recover.log",
      "size": 1592,
      "mtime_utc": "2026-05-26T16:21:19Z",
      "url": "/logs/20260526T161818Z_frame-recover.log"
    },
    {
      "name": "20260526T161818Z_frame-recover_manifest.json",
      "size": 680,
      "mtime_utc": "2026-05-26T16:21:18Z",
      "url": "/logs/20260526T161818Z_frame-recover_manifest.json"
    },
    {
      "name": "20260526T161818Z_frame_recover_output.json",
      "size": 852,
      "mtime_utc": "2026-05-26T16:21:18Z",
      "url": "/logs/20260526T161818Z_frame_recover_output.json"
    },
    {
      "name": "20260526T161818Z_frame_recover_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T16:18:18Z",
      "url": "/logs/20260526T161818Z_frame_recover_output.stderr.log"
    },
    {
      "name": "20260526T161453Z_real_run_profile_scan_output.json",
      "size": 859,
      "mtime_utc": "2026-05-26T16:18:18Z",
      "url": "/logs/20260526T161453Z_real_run_profile_scan_output.json"
    },
    {
      "name": "20260526T161453Z_real_run_profile_scan_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T16:16:17Z",
      "url": "/logs/20260526T161453Z_real_run_profile_scan_output.stderr.log"
    },
    {
      "name": "20260526T161453Z_real_run_dirty_window_scan_output.json",
      "size": 1223,
      "mtime_utc": "2026-05-26T16:16:17Z",
      "url": "/logs/20260526T161453Z_real_run_dirty_window_scan_output.json"
    },
    {
      "name": "20260526T161453Z_real_run_dirty_window_scan_output.stderr.log",
      "size": 168,
      "mtime_utc": "2026-05-26T16:15:16Z",
      "url": "/logs/20260526T161453Z_real_run_dirty_window_scan_output.stderr.log"
    },
    {
      "name": "20260526T161453Z_real_run_quick_prefilter_output.json",
      "size": 8812,
      "mtime_utc": "2026-05-26T16:15:16Z",
      "url": "/logs/20260526T161453Z_real_run_quick_prefilter_output.json"
    },
    {
      "name": "20260526T161453Z_real_run_quick_prefilter_output.stderr.log",
      "size": 168,
      "mtime_utc": "2026-05-26T16:14:54Z",
      "url": "/logs/20260526T161453Z_real_run_quick_prefilter_output.stderr.log"
    },
    {
      "name": "20260526T161453Z_input-check.log",
      "size": 1390,
      "mtime_utc": "2026-05-26T16:14:54Z",
      "url": "/logs/20260526T161453Z_input-check.log"
    },
    {
      "name": "20260526T161453Z_input-check_manifest.json",
      "size": 825,
      "mtime_utc": "2026-05-26T16:14:53Z",
      "url": "/logs/20260526T161453Z_input-check_manifest.json"
    },
    {
      "name": "20260526T161453Z_input_check_output.json",
      "size": 681,
      "mtime_utc": "2026-05-26T16:14:53Z",
      "url": "/logs/20260526T161453Z_input_check_output.json"
    },
    {
      "name": "20260526T161453Z_input_check_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T16:14:53Z",
      "url": "/logs/20260526T161453Z_input_check_output.stderr.log"
    },
    {
      "name": "20260526T155012Z_server-deep-run.log",
      "size": 126507,
      "mtime_utc": "2026-05-26T16:04:17Z",
      "url": "/logs/20260526T155012Z_server-deep-run.log"
    },
    {
      "name": "20260526T155012Z_server-deep-run_manifest.json",
      "size": 1058,
      "mtime_utc": "2026-05-26T16:04:17Z",
      "url": "/logs/20260526T155012Z_server-deep-run_manifest.json"
    },
    {
      "name": "20260526T155012Z_real-run.log",
      "size": 125390,
      "mtime_utc": "2026-05-26T16:04:16Z",
      "url": "/logs/20260526T155012Z_real-run.log"
    },
    {
      "name": "20260526T155012Z_real-run_manifest.json",
      "size": 2098,
      "mtime_utc": "2026-05-26T16:04:16Z",
      "url": "/logs/20260526T155012Z_real-run_manifest.json"
    },
    {
      "name": "js8_decoder_lab_real_run_20260526T155012Z.zip",
      "size": 251055,
      "mtime_utc": "2026-05-26T16:04:16Z",
      "url": "/logs/js8_decoder_lab_real_run_20260526T155012Z.zip"
    },
    {
      "name": "20260526T155012Z_real_run_bundle_index.json",
      "size": 9790,
      "mtime_utc": "2026-05-26T16:04:16Z",
      "url": "/logs/20260526T155012Z_real_run_bundle_index.json"
    },
    {
      "name": "20260526T160215Z_ldpc-soft-decode.log",
      "size": 1674,
      "mtime_utc": "2026-05-26T16:04:16Z",
      "url": "/logs/20260526T160215Z_ldpc-soft-decode.log"
    },
    {
      "name": "20260526T160215Z_ldpc-soft-decode_manifest.json",
      "size": 686,
      "mtime_utc": "2026-05-26T16:04:15Z",
      "url": "/logs/20260526T160215Z_ldpc-soft-decode_manifest.json"
    },
    {
      "name": "20260526T160215Z_ldpc_soft_decode_output.json",
      "size": 916,
      "mtime_utc": "2026-05-26T16:04:15Z",
      "url": "/logs/20260526T160215Z_ldpc_soft_decode_output.json"
    },
    {
      "name": "20260526T160215Z_ldpc_soft_decode_output.stderr.log",
      "size": 0,
      "mtime_utc": "2026-05-26T16:02:15Z",
      "url": "/logs/20260526T160215Z_ldpc_soft_decode_output.stderr.log"
    },
    {
      "name": "20260526T155914Z_ldpc-matrix-probe.log",
      "size": 1651,
      "mtime_utc": "2026-05-26T16:02:15Z",
      "url": "/logs/20260526T155914Z_ldpc-matrix-probe.log"
    },
    {
      "name": "20260526T155914Z_ldpc-matrix-probe_manifest.json",
      "size": 688,
      "mtime_utc": "2026-05-26T16:02:15Z",
      "url": "/logs/20260526T155914Z_ldpc-matrix-probe_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."
}