[js8.sh job] utc=2026-05-26T18:06:20Z [js8.sh job] build=step35-bounded-ldpc-ranking-guard [js8.sh job] root=/decoders/js8_decoder [js8.sh job] command=./run_js8_decoder_lab.sh server-deep-run /decoders/js8_test.wav [js8.sh job] rx-only: no TX / no PTT / no Tune / no Send [webftr-js8-lab] command=server-deep-run [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T180620Z_server-deep-run.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T180620Z_server-deep-run_manifest.json [webftr-js8-lab] utc=20260526T180620Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] server DEEP runner [webftr-js8-lab] requested path: /decoders/js8_test.wav [webftr-js8-lab] This does not touch WebFTR productive code; it only reads a WAV and writes JS8Lab logs. [webftr-js8-lab] Deep path: real-run = input-check + dirty-window-scan + profile-scan + frame-recover + auto-ldpc-probe + candidate-export + LDPC probes + bundle. [webftr-js8-lab] resolved WAV: /decoders/js8_test.wav [webftr-js8-lab] command=real-run [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T180620Z_real-run.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T180620Z_real-run_manifest.json [webftr-js8-lab] utc=20260526T180620Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] real-run for WAV: /decoders/js8_test.wav [webftr-js8-lab] This runs input-check, dirty-window-scan, profile-scan, frame-recover, auto-ldpc-probe, candidate-export, ldpc-matrix-probe, ldpc-soft-decode and creates a JS8Lab upload bundle. [webftr-js8-lab] Please upload the printed js8_decoder_lab_real_run_*.zip bundle. ========== REAL-RUN STEP 1/9: INPUT CHECK ========== [webftr-js8-lab] command=input-check [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T180621Z_input-check.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T180621Z_input-check_manifest.json [webftr-js8-lab] utc=20260526T180621Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T180621Z_input_check_output.json [webftr-js8-lab] JSON timeout guard: 180s { "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." } [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T180621Z_input-check.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T180621Z_input-check_manifest.json [webftr-js8-lab] input-check exit_code=0 ========== REAL-RUN STEP 2/9A: QUICK WINDOW PREFILTER ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T180620Z_real_run_quick_prefilter_output.json [webftr-js8-lab] JSON timeout guard: 60s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260526T180620Z_real_run_quick_prefilter_output.stderr.log /decoders/js8_decoder/src/webftr_js8_lab/js8_quick_window_scan.py:4: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13 import audioop { "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." } [webftr-js8-lab] quick-prefilter exit_code=0 [webftr-js8-lab] dirty-scan input WAV: /decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav ========== REAL-RUN STEP 2/9B: BOUNDED DIRTY WINDOW SCAN ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T180620Z_real_run_dirty_window_scan_output.json [webftr-js8-lab] JSON timeout guard: 60s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260526T180620Z_real_run_dirty_window_scan_output.stderr.log /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 import audioop { "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." } [webftr-js8-lab] dirty-window-scan exit_code=143 [webftr-js8-lab] dirty scan failed/timed out, continuing with quick-window fallback: /decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav [webftr-js8-lab] Step 35: dirty scan is non-fatal when quick-window fallback exists. [webftr-js8-lab] analysis WAV for next steps: /decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav ========== REAL-RUN STEP 3/9: PROFILE SCAN ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T180620Z_real_run_profile_scan_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": false, "error": "json_command_timeout_guard", "timeout_seconds": 120, "exit_code": 143, "command": [ "python3", "-m", "webftr_js8_lab.js8_profile_scan", "--input", "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "--pretty", "--max-seconds", "60", "--max-starts", "12", "--max-base-candidates", "8" ], "stderr_log": "/decoders/js8_decoder/logs/20260526T180620Z_real_run_profile_scan_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." } [webftr-js8-lab] profile-scan exit_code=143 [webftr-js8-lab] profile-scan JSON: /decoders/js8_decoder/logs/20260526T180620Z_real_run_profile_scan_output.json [webftr-js8-lab] Step 35: profile-scan timed out/failed, but this is non-fatal when Auto-LDPC anchor or candidate-export can continue. ========== REAL-RUN STEP 4/9: FRAME RECOVER ========== [webftr-js8-lab] command=frame-recover [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T180936Z_frame-recover.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T180936Z_frame-recover_manifest.json [webftr-js8-lab] utc=20260526T180936Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T180936Z_frame_recover_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": false, "error": "json_command_timeout_guard", "timeout_seconds": 180, "exit_code": 143, "command": [ "python3", "-m", "webftr_js8_lab.js8_frame_recover", "--input", "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "--pretty", "--max-seconds", "60", "--max-starts", "14", "--max-base-candidates", "8" ], "stderr_log": "/decoders/js8_decoder/logs/20260526T180936Z_frame_recover_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." } [webftr-js8-lab] FAILED exit_code=143 [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T180936Z_frame-recover.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T180936Z_frame-recover_manifest.json [webftr-js8-lab] frame-recover exit_code=143 [webftr-js8-lab] Step 35: frame-recover is a heavy diagnostic only; continuing with profile-anchor path. ========== REAL-RUN STEP 5/9: AUTO LDPC PROBE ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T180620Z_real_run_auto_ldpc_probe_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": false, "error": "json_command_timeout_guard", "timeout_seconds": 180, "exit_code": 143, "command": [ "python3", "-m", "webftr_js8_lab.js8_auto_ldpc_probe", "--input", "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "--pretty", "--max-seconds", "60", "--max-starts", "12", "--max-base-candidates", "8" ], "stderr_log": "/decoders/js8_decoder/logs/20260526T180620Z_real_run_auto_ldpc_probe_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." } [webftr-js8-lab] auto-ldpc-probe exit_code=143 [webftr-js8-lab] auto-ldpc-probe JSON: /decoders/js8_decoder/logs/20260526T180620Z_real_run_auto_ldpc_probe_output.json ========== REAL-RUN STEP 6/9: CANDIDATE EXPORT ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T180620Z_real_run_candidate_export_output.json [webftr-js8-lab] JSON timeout guard: 60s { "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." } [webftr-js8-lab] candidate-export exit_code=143 [webftr-js8-lab] candidate-export JSON: /decoders/js8_decoder/logs/20260526T180620Z_real_run_candidate_export_output.json [webftr-js8-lab] Step 35 LDPC probes reuse anchored candidate JSON: /decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.json ========== REAL-RUN STEP 7/9: LDPC MATRIX PROBE ========== [webftr-js8-lab] command=ldpc-matrix-probe [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T181639Z_ldpc-matrix-probe.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T181639Z_ldpc-matrix-probe_manifest.json [webftr-js8-lab] utc=20260526T181639Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T181639Z_ldpc_matrix_probe_output.json [webftr-js8-lab] JSON timeout guard: 60s { "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." } [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T181639Z_ldpc-matrix-probe.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T181639Z_ldpc-matrix-probe_manifest.json [webftr-js8-lab] ldpc-matrix-probe exit_code=0 ========== REAL-RUN STEP 8/9: LDPC SOFT DECODE ========== [webftr-js8-lab] command=ldpc-soft-decode [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T181643Z_ldpc-soft-decode.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T181643Z_ldpc-soft-decode_manifest.json [webftr-js8-lab] utc=20260526T181643Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T181643Z_ldpc_soft_decode_output.json [webftr-js8-lab] JSON timeout guard: 75s { "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." } [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T181643Z_ldpc-soft-decode.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T181643Z_ldpc-soft-decode_manifest.json [webftr-js8-lab] ldpc-soft-decode exit_code=0 ========== REAL-RUN STEP 9/9: JS8LAB LOG BUNDLE ========== [webftr-js8-lab] collecting JS8Lab logs from /decoders/js8_decoder/logs [webftr-js8-lab] upload this JS8Lab bundle: /decoders/js8_decoder/logs/js8_decoder_lab_real_run_20260526T180620Z.zip [webftr-js8-lab] real-run completed with errors, but JS8Lab log bundle was created. [webftr-js8-lab] upload bundle: /decoders/js8_decoder/logs/js8_decoder_lab_real_run_20260526T180620Z.zip [webftr-js8-lab] FAILED exit_code=143 [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T180620Z_real-run.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T180620Z_real-run_manifest.json [webftr-js8-lab] server-deep-run completed with errors, but logs/browser report were written. [webftr-js8-lab] FAILED exit_code=143 [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T180620Z_server-deep-run.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T180620Z_server-deep-run_manifest.json [js8.sh job] finished utc=2026-05-26T18:17:40Z exit_code=143