[webftr-js8-lab] command=server-deep-run [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260527T033514Z_server-deep-run.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T033514Z_server-deep-run_manifest.json [webftr-js8-lab] utc=20260527T033514Z [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 + timing-boundary-sweep + 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/20260527T033514Z_real-run.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T033514Z_real-run_manifest.json [webftr-js8-lab] utc=20260527T033514Z [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, timing-boundary-sweep, 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/20260527T033514Z_input-check.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T033514Z_input-check_manifest.json [webftr-js8-lab] utc=20260527T033514Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T033514Z_input_check_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-input-check", "tool_version": "step36-timing-boundary-candidate-sweep", "input_wav": "/decoders/js8_test.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "decodes": [], "warnings": [], "wav": { "path": "/decoders/js8_test.wav", "channels": 1, "sample_rate": 12000, "sample_width_bytes": 2, "frames": 2304199, "duration_seconds": 192.016583, "rms_dbfs": -9.14, "peak_dbfs": -0.72, "clipped": false }, "next_action": "Run profile-scan, then auto-ldpc-probe on this WAV." } [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260527T033514Z_input-check.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T033514Z_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/20260527T033514Z_real_run_quick_prefilter_output.json [webftr-js8-lab] JSON timeout guard: 60s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260527T033514Z_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": "step36-timing-boundary-candidate-sweep", "input_wav": "/decoders/js8_test.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "wav": { "sample_rate": 12000, "duration_seconds": 192.016583, "frames": 2304199, "rms_dbfs": -9.164808449038551, "peak_dbfs": -0.7246929351669301, "clipped": false }, "scan_params": { "window_seconds": 60.0, "hop_seconds": 12.0, "max_seconds": 180.0, "output_dir": "/decoders/js8_decoder/runtime/quick_prefilter_windows" }, "selected_window": { "start_seconds": 24.0, "end_seconds": 84.0, "duration_seconds": 60.0, "avg_activity_score": -6.2272, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2728, "window_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "tone_candidates": [ { "freq_hz": 1025.0, "relative_db": 0.0, "power": 7.98385996 }, { "freq_hz": 1000.0, "relative_db": -0.38, "power": 7.31762699 }, { "freq_hz": 2025.0, "relative_db": -9.29, "power": 0.93974646 }, { "freq_hz": 975.0, "relative_db": -13.3, "power": 0.37314359 }, { "freq_hz": 1050.0, "relative_db": -25.6, "power": 0.02199227 }, { "freq_hz": 1775.0, "relative_db": -27.4, "power": 0.01453049 }, { "freq_hz": 1150.0, "relative_db": -27.44, "power": 0.01439727 }, { "freq_hz": 1425.0, "relative_db": -28.11, "power": 0.01233556 }, { "freq_hz": 1250.0, "relative_db": -29.08, "power": 0.00987629 }, { "freq_hz": 1825.0, "relative_db": -29.2, "power": 0.00959995 }, { "freq_hz": 1950.0, "relative_db": -29.78, "power": 0.00840634 }, { "freq_hz": 950.0, "relative_db": -29.91, "power": 0.00814511 } ] }, "selected_window_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "top_windows": [ { "start_seconds": 24.0, "end_seconds": 84.0, "duration_seconds": 60.0, "avg_activity_score": -6.2272, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2728, "window_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "tone_candidates": [ { "freq_hz": 1025.0, "relative_db": 0.0, "power": 7.98385996 }, { "freq_hz": 1000.0, "relative_db": -0.38, "power": 7.31762699 }, { "freq_hz": 2025.0, "relative_db": -9.29, "power": 0.93974646 }, { "freq_hz": 975.0, "relative_db": -13.3, "power": 0.37314359 }, { "freq_hz": 1050.0, "relative_db": -25.6, "power": 0.02199227 }, { "freq_hz": 1775.0, "relative_db": -27.4, "power": 0.01453049 }, { "freq_hz": 1150.0, "relative_db": -27.44, "power": 0.01439727 }, { "freq_hz": 1425.0, "relative_db": -28.11, "power": 0.01233556 }, { "freq_hz": 1250.0, "relative_db": -29.08, "power": 0.00987629 }, { "freq_hz": 1825.0, "relative_db": -29.2, "power": 0.00959995 }, { "freq_hz": 1950.0, "relative_db": -29.78, "power": 0.00840634 }, { "freq_hz": 950.0, "relative_db": -29.91, "power": 0.00814511 } ] }, { "start_seconds": 12.0, "end_seconds": 72.0, "duration_seconds": 60.0, "avg_activity_score": -6.2278, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2722 }, { "start_seconds": 36.0, "end_seconds": 96.0, "duration_seconds": 60.0, "avg_activity_score": -6.2346, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2654 }, { "start_seconds": 48.0, "end_seconds": 108.0, "duration_seconds": 60.0, "avg_activity_score": -6.2483, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2517 }, { "start_seconds": 0.0, "end_seconds": 60.0, "duration_seconds": 60.0, "avg_activity_score": -6.2606, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2394 }, { "start_seconds": 60.0, "end_seconds": 120.0, "duration_seconds": 60.0, "avg_activity_score": -6.2619, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2381 }, { "start_seconds": 108.0, "end_seconds": 168.0, "duration_seconds": 60.0, "avg_activity_score": -6.2716, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2284 }, { "start_seconds": 72.0, "end_seconds": 132.0, "duration_seconds": 60.0, "avg_activity_score": -6.2752, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2248 } ], "chunk_preview": [ { "chunk_index": 0, "start_seconds": 0.0, "end_seconds": 12.0, "rms_dbfs": -9.07, "peak_dbfs": -3.22, "activity_score": -6.2351 }, { "chunk_index": 1, "start_seconds": 12.0, "end_seconds": 24.0, "rms_dbfs": -9.27, "peak_dbfs": -3.01, "activity_score": -6.4225 }, { "chunk_index": 2, "start_seconds": 24.0, "end_seconds": 36.0, "rms_dbfs": -9.24, "peak_dbfs": -2.73, "activity_score": -6.3769 }, { "chunk_index": 3, "start_seconds": 36.0, "end_seconds": 48.0, "rms_dbfs": -9.24, "peak_dbfs": -2.39, "activity_score": -6.3632 }, { "chunk_index": 4, "start_seconds": 48.0, "end_seconds": 60.0, "rms_dbfs": -8.87, "peak_dbfs": -0.72, "activity_score": -5.9054 }, { "chunk_index": 5, "start_seconds": 60.0, "end_seconds": 72.0, "rms_dbfs": -9.03, "peak_dbfs": -0.72, "activity_score": -6.0711 }, { "chunk_index": 6, "start_seconds": 72.0, "end_seconds": 84.0, "rms_dbfs": -9.26, "peak_dbfs": -3.1, "activity_score": -6.4194 }, { "chunk_index": 7, "start_seconds": 84.0, "end_seconds": 96.0, "rms_dbfs": -9.29, "peak_dbfs": -2.42, "activity_score": -6.4141 } ], "chunk_tail_preview": [ { "chunk_index": 7, "start_seconds": 84.0, "end_seconds": 96.0, "rms_dbfs": -9.29, "peak_dbfs": -2.42, "activity_score": -6.4141 }, { "chunk_index": 8, "start_seconds": 96.0, "end_seconds": 108.0, "rms_dbfs": -9.3, "peak_dbfs": -2.65, "activity_score": -6.4314 }, { "chunk_index": 9, "start_seconds": 108.0, "end_seconds": 120.0, "rms_dbfs": -8.87, "peak_dbfs": -2.1, "activity_score": -5.9734 }, { "chunk_index": 10, "start_seconds": 120.0, "end_seconds": 132.0, "rms_dbfs": -9.02, "peak_dbfs": -2.36, "activity_score": -6.1378 }, { "chunk_index": 11, "start_seconds": 132.0, "end_seconds": 144.0, "rms_dbfs": -9.41, "peak_dbfs": -0.72, "activity_score": -6.4474 }, { "chunk_index": 12, "start_seconds": 144.0, "end_seconds": 156.0, "rms_dbfs": -9.3, "peak_dbfs": -2.31, "activity_score": -6.4185 }, { "chunk_index": 13, "start_seconds": 156.0, "end_seconds": 168.0, "rms_dbfs": -9.34, "peak_dbfs": -0.89, "activity_score": -6.3807 }, { "chunk_index": 14, "start_seconds": 168.0, "end_seconds": 180.0, "rms_dbfs": -8.99, "peak_dbfs": -3.03, "activity_score": -6.1457 } ], "decodes": [], "warnings": [ "Quick-window-scan only selects a likely analysis window; it is not a JS8 text decoder." ], "next_action": "Run sync/soft-symbol/FEC probes on selected_window_wav. Message unpack is not implemented in Step 36." } [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/20260527T033514Z_real_run_dirty_window_scan_output.json [webftr-js8-lab] JSON timeout guard: 60s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260527T033514Z_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/20260527T033514Z_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 36 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 36: 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/20260527T033514Z_real_run_profile_scan_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "mode": "JS8", "tool": "webftr-js8-profile-scan", "tool_version": "step36-timing-boundary-candidate-sweep", "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step36_fast_profile_scan_guard_no_message_unpack", "wav": { "sample_rate": 12000, "duration_seconds": 60.0, "frames": 720000 }, "profile_count": 4, "scan_limits": { "max_seconds": 60.0, "max_starts": 12, "max_base_candidates": 8, "deep": false }, "profiles": [ { "profile": "js8_near_6400", "nsps": 6400, "symbol_duration_seconds": 0.533333, "tone_spacing_hz": 1.875, "note": "0.533 s timing guard candidate", "ok": true, "sync": { "start_seconds": 4.8, "base_freq_hz": 1025.0, "candidate_score": 47.4, "costas_hits": 2, "avg_margin_db": 8.01, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 103, "data_symbol_count_estimate": 58, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "complete_ldpc_input_candidate_estimate": true }, "rank_score": 225.085 }, { "profile": "js8_normal_6192", "nsps": 6192, "symbol_duration_seconds": 0.516, "tone_spacing_hz": 1.937984, "note": "0.516 s symbols, 1.938 Hz spacing candidate used in earlier lab steps", "ok": true, "sync": { "start_seconds": 38.184, "base_freq_hz": 1012.5, "candidate_score": 44.78, "costas_hits": 3, "avg_margin_db": 4.05, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 42, "data_symbol_count_estimate": 35, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 105, "missing_soft_bits_estimate": 69, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 131.617793 }, { "profile": "mid_3840", "nsps": 3840, "symbol_duration_seconds": 0.32, "tone_spacing_hz": 3.125, "note": "0.320 s symbols, 3.125 Hz spacing candidate", "ok": true, "sync": { "start_seconds": 48.8, "base_freq_hz": 1015.0, "candidate_score": 47.2, "costas_hits": 3, "avg_margin_db": 3.8, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 35, "data_symbol_count_estimate": 28, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 84, "missing_soft_bits_estimate": 90, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 116.341034 }, { "profile": "js8_near_6000", "nsps": 6000, "symbol_duration_seconds": 0.5, "tone_spacing_hz": 2.0, "note": "0.500 s timing guard candidate", "ok": true, "sync": { "start_seconds": 52.25, "base_freq_hz": 1010.0, "candidate_score": 38.27, "costas_hits": 2, "avg_margin_db": 5.7, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 15, "data_symbol_count_estimate": 8, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 24, "missing_soft_bits_estimate": 150, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 61.900224 } ], "selected_profile": { "profile": "js8_near_6400", "nsps": 6400, "rank_score": 225.085, "complete_ldpc_input_candidate_estimate": true, "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0 }, "decodes": [], "warnings": [ "Step 36 selects the best timing/profile candidate only. It still does not decode final JS8 text." ], "next_action": "Run auto-ldpc-probe on the same WAV so the selected timing profile is fed into the LDPC probe harness." } [webftr-js8-lab] profile-scan exit_code=0 [webftr-js8-lab] profile-scan JSON: /decoders/js8_decoder/logs/20260527T033514Z_real_run_profile_scan_output.json ========== 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/20260527T033802Z_frame-recover.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T033802Z_frame-recover_manifest.json [webftr-js8-lab] utc=20260527T033802Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T033802Z_frame_recover_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-frame-recover", "tool_version": "step36-timing-boundary-candidate-sweep", "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step36_frame_recovery_guard_no_message_unpack", "wav": { "sample_rate": 12000, "duration_seconds": 60.0, "frames": 720000, "rms_dbfs": -9.127580437334753, "peak_dbfs": -0.7246929351669301, "clipped": false }, "frame_requirements": { "expected_bits": 174, "expected_data_symbols": 58, "leading_costas_symbols": 7, "minimum_symbols_for_174bit_candidate": 65, "full_ft8_like_symbols_reference": 79 }, "profile_scan": { "ok": true, "mode": "JS8", "tool": "webftr-js8-profile-scan", "tool_version": "step36-timing-boundary-candidate-sweep", "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step36_fast_profile_scan_guard_no_message_unpack", "wav": { "sample_rate": 12000, "duration_seconds": 60.0, "frames": 720000 }, "profile_count": 6, "scan_limits": { "max_seconds": 60.0, "max_starts": 14, "max_base_candidates": 8, "deep": true }, "profiles": [ { "profile": "js8_near_6000", "nsps": 6000, "symbol_duration_seconds": 0.5, "tone_spacing_hz": 2.0, "note": "0.500 s timing guard candidate", "ok": true, "sync": { "start_seconds": 8.25, "base_freq_hz": 1010.0, "candidate_score": 49.22, "costas_hits": 4, "avg_margin_db": 3.86, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 103, "data_symbol_count_estimate": 58, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "complete_ldpc_input_candidate_estimate": true }, "rank_score": 231.861 }, { "profile": "ft8_like_fast_1920", "nsps": 1920, "symbol_duration_seconds": 0.16, "tone_spacing_hz": 6.25, "note": "0.160 s symbols, 6.25 Hz spacing candidate", "ok": true, "sync": { "start_seconds": 29.68, "base_freq_hz": 980.0, "candidate_score": 47.58, "costas_hits": 3, "avg_margin_db": 5.94, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 189, "data_symbol_count_estimate": 58, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "complete_ldpc_input_candidate_estimate": true }, "rank_score": 228.079 }, { "profile": "js8_normal_6192", "nsps": 6192, "symbol_duration_seconds": 0.516, "tone_spacing_hz": 1.937984, "note": "0.516 s symbols, 1.938 Hz spacing candidate used in earlier lab steps", "ok": true, "sync": { "start_seconds": 33.024, "base_freq_hz": 1020.0, "candidate_score": 46.67, "costas_hits": 3, "avg_margin_db": 3.13, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 52, "data_symbol_count_estimate": 45, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 135, "missing_soft_bits_estimate": 39, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 154.466948 }, { "profile": "mid_3840", "nsps": 3840, "symbol_duration_seconds": 0.32, "tone_spacing_hz": 3.125, "note": "0.320 s symbols, 3.125 Hz spacing candidate", "ok": true, "sync": { "start_seconds": 45.76, "base_freq_hz": 1005.0, "candidate_score": 44.86, "costas_hits": 2, "avg_margin_db": 5.02, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 44, "data_symbol_count_estimate": 37, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 111, "missing_soft_bits_estimate": 63, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 131.754724 }, { "profile": "js8_near_6400", "nsps": 6400, "symbol_duration_seconds": 0.533333, "tone_spacing_hz": 1.875, "note": "0.533 s timing guard candidate", "ok": true, "sync": { "start_seconds": 45.466667, "base_freq_hz": 1000.0, "candidate_score": 40.55, "costas_hits": 2, "avg_margin_db": 8.4, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 27, "data_symbol_count_estimate": 20, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 60, "missing_soft_bits_estimate": 114, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 95.03181 }, { "profile": "slow_7680", "nsps": 7680, "symbol_duration_seconds": 0.64, "tone_spacing_hz": 1.5625, "note": "0.640 s symbols, 1.5625 Hz spacing candidate", "ok": true, "sync": { "start_seconds": 52.0, "base_freq_hz": 1017.5, "candidate_score": 46.55, "costas_hits": 4, "avg_margin_db": 1.01, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 12, "data_symbol_count_estimate": 5, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 15, "missing_soft_bits_estimate": 159, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 64.462328 } ], "selected_profile": { "profile": "js8_near_6000", "nsps": 6000, "rank_score": 231.861, "complete_ldpc_input_candidate_estimate": true, "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0 }, "decodes": [], "warnings": [ "Step 36 selects the best timing/profile candidate only. It still does not decode final JS8 text." ], "next_action": "Run auto-ldpc-probe on the same WAV so the selected timing profile is fed into the LDPC probe harness." }, "profile_guards": [ { "profile": "js8_near_6000", "nsps": 6000, "protocol_family": "js8_normal_candidate", "symbol_duration_seconds": 0.5, "tone_spacing_hz": 2.0, "sync": { "start_seconds": 8.25, "base_freq_hz": 1010.0, "candidate_score": 49.22, "costas_hits": 4, "avg_margin_db": 3.86, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 103, "data_symbol_count_estimate": 58, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "complete_ldpc_input_candidate_estimate": true }, "rank_score": 231.861, "guard_score": 306.861, "available_after_start_seconds": 51.75, "minimum_symbols_for_174bit_candidate": 65, "minimum_seconds_after_start_for_174bit_candidate": 32.5, "missing_seconds_for_174bit_candidate": 0.0, "full_frame_symbols_reference": 79, "missing_seconds_for_full_ft8_like_frame": 0.0, "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "enough_audio_for_174bit_candidate": true, "enough_audio_for_full_frame_reference": true, "guard_note": "Protocol-realistic JS8 timing candidate." }, { "profile": "ft8_like_fast_1920", "nsps": 1920, "protocol_family": "fast_diagnostic_candidate", "symbol_duration_seconds": 0.16, "tone_spacing_hz": 6.25, "sync": { "start_seconds": 29.68, "base_freq_hz": 980.0, "candidate_score": 47.58, "costas_hits": 3, "avg_margin_db": 5.94, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 189, "data_symbol_count_estimate": 58, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "complete_ldpc_input_candidate_estimate": true }, "rank_score": 228.079, "guard_score": 230.079, "available_after_start_seconds": 30.32, "minimum_symbols_for_174bit_candidate": 65, "minimum_seconds_after_start_for_174bit_candidate": 10.4, "missing_seconds_for_174bit_candidate": 0.0, "full_frame_symbols_reference": 79, "missing_seconds_for_full_ft8_like_frame": 0.0, "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "enough_audio_for_174bit_candidate": true, "enough_audio_for_full_frame_reference": true, "guard_note": "Diagnostic timing candidate. A short WAV can make this look better than real JS8 timing." }, { "profile": "js8_normal_6192", "nsps": 6192, "protocol_family": "js8_normal_candidate", "symbol_duration_seconds": 0.516, "tone_spacing_hz": 1.937984, "sync": { "start_seconds": 33.024, "base_freq_hz": 1020.0, "candidate_score": 46.67, "costas_hits": 3, "avg_margin_db": 3.13, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 52, "data_symbol_count_estimate": 45, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 135, "missing_soft_bits_estimate": 39, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 154.466948, "guard_score": 209.61481, "available_after_start_seconds": 26.976, "minimum_symbols_for_174bit_candidate": 65, "minimum_seconds_after_start_for_174bit_candidate": 33.54, "missing_seconds_for_174bit_candidate": 6.564, "full_frame_symbols_reference": 79, "missing_seconds_for_full_ft8_like_frame": 13.788, "soft_bit_count_estimate": 135, "missing_soft_bits_estimate": 39, "enough_audio_for_174bit_candidate": false, "enough_audio_for_full_frame_reference": false, "guard_note": "Protocol-realistic JS8 timing candidate." }, { "profile": "mid_3840", "nsps": 3840, "protocol_family": "mid_speed_diagnostic_candidate", "symbol_duration_seconds": 0.32, "tone_spacing_hz": 3.125, "sync": { "start_seconds": 45.76, "base_freq_hz": 1005.0, "candidate_score": 44.86, "costas_hits": 2, "avg_margin_db": 5.02, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 44, "data_symbol_count_estimate": 37, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 111, "missing_soft_bits_estimate": 63, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 131.754724, "guard_score": 119.772655, "available_after_start_seconds": 14.24, "minimum_symbols_for_174bit_candidate": 65, "minimum_seconds_after_start_for_174bit_candidate": 20.8, "missing_seconds_for_174bit_candidate": 6.56, "full_frame_symbols_reference": 79, "missing_seconds_for_full_ft8_like_frame": 11.04, "soft_bit_count_estimate": 111, "missing_soft_bits_estimate": 63, "enough_audio_for_174bit_candidate": false, "enough_audio_for_full_frame_reference": false, "guard_note": "Diagnostic timing candidate. A short WAV can make this look better than real JS8 timing." }, { "profile": "js8_near_6400", "nsps": 6400, "protocol_family": "js8_normal_candidate", "symbol_duration_seconds": 0.533333, "tone_spacing_hz": 1.875, "sync": { "start_seconds": 45.466667, "base_freq_hz": 1000.0, "candidate_score": 40.55, "costas_hits": 2, "avg_margin_db": 8.4, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 27, "data_symbol_count_estimate": 20, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 60, "missing_soft_bits_estimate": 114, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 95.03181, "guard_score": 110.10997, "available_after_start_seconds": 14.533333, "minimum_symbols_for_174bit_candidate": 65, "minimum_seconds_after_start_for_174bit_candidate": 34.666667, "missing_seconds_for_174bit_candidate": 20.133334, "full_frame_symbols_reference": 79, "missing_seconds_for_full_ft8_like_frame": 27.6, "soft_bit_count_estimate": 60, "missing_soft_bits_estimate": 114, "enough_audio_for_174bit_candidate": false, "enough_audio_for_full_frame_reference": false, "guard_note": "Protocol-realistic JS8 timing candidate." }, { "profile": "slow_7680", "nsps": 7680, "protocol_family": "slow_diagnostic_candidate", "symbol_duration_seconds": 0.64, "tone_spacing_hz": 1.5625, "sync": { "start_seconds": 52.0, "base_freq_hz": 1017.5, "candidate_score": 46.55, "costas_hits": 4, "avg_margin_db": 1.01, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 12, "data_symbol_count_estimate": 5, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 15, "missing_soft_bits_estimate": 159, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 64.462328, "guard_score": -28.151465, "available_after_start_seconds": 8.0, "minimum_symbols_for_174bit_candidate": 65, "minimum_seconds_after_start_for_174bit_candidate": 41.6, "missing_seconds_for_174bit_candidate": 33.6, "full_frame_symbols_reference": 79, "missing_seconds_for_full_ft8_like_frame": 42.56, "soft_bit_count_estimate": 15, "missing_soft_bits_estimate": 159, "enough_audio_for_174bit_candidate": false, "enough_audio_for_full_frame_reference": false, "guard_note": "Diagnostic timing candidate. A short WAV can make this look better than real JS8 timing." } ], "selected_guard_profile": { "profile": "js8_near_6000", "nsps": 6000, "protocol_family": "js8_normal_candidate", "symbol_duration_seconds": 0.5, "tone_spacing_hz": 2.0, "sync": { "start_seconds": 8.25, "base_freq_hz": 1010.0, "candidate_score": 49.22, "costas_hits": 4, "avg_margin_db": 3.86, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 103, "data_symbol_count_estimate": 58, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "complete_ldpc_input_candidate_estimate": true }, "rank_score": 231.861, "guard_score": 306.861, "available_after_start_seconds": 51.75, "minimum_symbols_for_174bit_candidate": 65, "minimum_seconds_after_start_for_174bit_candidate": 32.5, "missing_seconds_for_174bit_candidate": 0.0, "full_frame_symbols_reference": 79, "missing_seconds_for_full_ft8_like_frame": 0.0, "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "enough_audio_for_174bit_candidate": true, "enough_audio_for_full_frame_reference": true, "guard_note": "Protocol-realistic JS8 timing candidate." }, "selected_ldpc_probe": { "ok": true, "sync_candidate": { "start_sample": 99000, "start_seconds": 8.25, "base_freq_hz": 1010.0, "tone_spacing_hz": 2.0, "nsps": 6000, "candidate_score": 49.22, "costas_hits": 4, "avg_margin_db": 3.86 }, "frame_candidate": { "input_symbol_count": 96, "excluded_costas_symbol_count": 0, "detected_costas_blocks": [], "data_symbol_count_available": 96, "data_symbol_count_used": 58, "expected_data_symbols_candidate": 58, "costas_policy": "js8_leading_only" }, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "selected_variant": "reverse_full_bitstream", "ready_for_real_ldpc_matrix": true }, "decodes": [], "warnings": [ "Step 36 selects the best timing/profile candidate only. It still does not decode final JS8 text.", "Step 36 is still RX-only and diagnostic: it guards profile selection and frame length before final LDPC/message work." ], "next_action": "If selected_guard_profile.enough_audio_for_174bit_candidate is false, make a longer WAV capture. If true, the next lab step can move to real LDPC/FEC matrix integration and JS8 message unpacking." } [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260527T033802Z_frame-recover.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T033802Z_frame-recover_manifest.json [webftr-js8-lab] frame-recover exit_code=0 ========== REAL-RUN STEP 5/9: AUTO LDPC PROBE ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T033514Z_real_run_auto_ldpc_probe_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-auto-ldpc-probe", "tool_version": "step36-timing-boundary-candidate-sweep", "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step36_auto_profile_to_ldpc_probe_no_message_unpack", "selected_profile": { "profile": "js8_near_6400", "nsps": 6400, "rank_score": 225.085, "complete_ldpc_input_candidate_estimate": true, "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0 }, "profile_scan": { "ok": true, "mode": "JS8", "tool": "webftr-js8-profile-scan", "tool_version": "step36-timing-boundary-candidate-sweep", "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step36_fast_profile_scan_guard_no_message_unpack", "wav": { "sample_rate": 12000, "duration_seconds": 60.0, "frames": 720000 }, "profile_count": 4, "scan_limits": { "max_seconds": 60.0, "max_starts": 12, "max_base_candidates": 8, "deep": false }, "profiles": [ { "profile": "js8_near_6400", "nsps": 6400, "symbol_duration_seconds": 0.533333, "tone_spacing_hz": 1.875, "note": "0.533 s timing guard candidate", "ok": true, "sync": { "start_seconds": 4.8, "base_freq_hz": 1025.0, "candidate_score": 47.4, "costas_hits": 2, "avg_margin_db": 8.01, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 103, "data_symbol_count_estimate": 58, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "complete_ldpc_input_candidate_estimate": true }, "rank_score": 225.085 }, { "profile": "js8_normal_6192", "nsps": 6192, "symbol_duration_seconds": 0.516, "tone_spacing_hz": 1.937984, "note": "0.516 s symbols, 1.938 Hz spacing candidate used in earlier lab steps", "ok": true, "sync": { "start_seconds": 38.184, "base_freq_hz": 1012.5, "candidate_score": 44.78, "costas_hits": 3, "avg_margin_db": 4.05, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 42, "data_symbol_count_estimate": 35, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 105, "missing_soft_bits_estimate": 69, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 131.617793 }, { "profile": "mid_3840", "nsps": 3840, "symbol_duration_seconds": 0.32, "tone_spacing_hz": 3.125, "note": "0.320 s symbols, 3.125 Hz spacing candidate", "ok": true, "sync": { "start_seconds": 48.8, "base_freq_hz": 1015.0, "candidate_score": 47.2, "costas_hits": 3, "avg_margin_db": 3.8, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 35, "data_symbol_count_estimate": 28, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 84, "missing_soft_bits_estimate": 90, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 116.341034 }, { "profile": "js8_near_6000", "nsps": 6000, "symbol_duration_seconds": 0.5, "tone_spacing_hz": 2.0, "note": "0.500 s timing guard candidate", "ok": true, "sync": { "start_seconds": 52.25, "base_freq_hz": 1010.0, "candidate_score": 38.27, "costas_hits": 2, "avg_margin_db": 5.7, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 15, "data_symbol_count_estimate": 8, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 24, "missing_soft_bits_estimate": 150, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 61.900224 } ], "selected_profile": { "profile": "js8_near_6400", "nsps": 6400, "rank_score": 225.085, "complete_ldpc_input_candidate_estimate": true, "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0 }, "decodes": [], "warnings": [ "Step 36 selects the best timing/profile candidate only. It still does not decode final JS8 text." ], "next_action": "Run auto-ldpc-probe on the same WAV so the selected timing profile is fed into the LDPC probe harness." }, "ldpc_probe": { "expected_bits": 174, "matrix": { "provided": false, "real_protocol_matrix": false, "status": "no_external_h_matrix_supplied", "note": "No JS8/FT8 LDPC H matrix was supplied. Step 36 therefore reports readiness/LLR quality and a prototype parity probe only; it does not claim real FEC decode." }, "prototype_parity_rows_used": true, "prototype_row_count": 32, "variant_count": 23, "variants": [ { "name": "raw_msb_symbol_order", "description": "Current FEC bridge: Costas-stripped symbols, MSB-first tone bits.", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 36, "hard_zero_preview": 138, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive_llr_count": 141, "negative_llr_count": 33, "zero_llr_count": 0, "sign_balance": 0.62069 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 19, "satisfied_rows": 13, "unsatisfied_ratio": 0.59375, "syndrome_preview": [ 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 94.352142 }, { "name": "lsb_within_each_tone", "description": "Same symbols, but each 3-bit tone value reversed for bit-order comparison.", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 36, "hard_zero_preview": 138, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive_llr_count": 141, "negative_llr_count": 33, "zero_llr_count": 0, "sign_balance": 0.62069 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 17, "satisfied_rows": 15, "unsatisfied_ratio": 0.53125, "syndrome_preview": [ 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 95.914642 }, { "name": "reverse_symbol_order", "description": "Same 3-bit symbols in reverse order; diagnostic only.", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 36, "hard_zero_preview": 138, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive_llr_count": 141, "negative_llr_count": 33, "zero_llr_count": 0, "sign_balance": 0.62069 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 18, "satisfied_rows": 14, "unsatisfied_ratio": 0.5625, "syndrome_preview": [ 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 95.133392 }, { "name": "reverse_full_bitstream", "description": "Full hard-bit stream reversed; diagnostic only.", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 36, "hard_zero_preview": 138, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive_llr_count": 141, "negative_llr_count": 33, "zero_llr_count": 0, "sign_balance": 0.62069 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 16, "satisfied_rows": 16, "unsatisfied_ratio": 0.5, "syndrome_preview": [ 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 96.695892 }, { "name": "lab_mask_xor_preview", "description": "Deterministic lab-only XOR mask preview; not the real JS8 whitening polynomial.", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 85, "hard_zero_preview": 89, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive_llr_count": 141, "negative_llr_count": 33, "zero_llr_count": 0, "sign_balance": 0.62069 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 14, "satisfied_rows": 18, "unsatisfied_ratio": 0.4375, "syndrome_preview": [ 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 98.258392 }, { "name": "mapped_raw_msb+no_interleaver", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'none'}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 36, "hard_zero_preview": 138, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive_llr_count": 141, "negative_llr_count": 33, "zero_llr_count": 0, "sign_balance": 0.62069 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 19, "satisfied_rows": 13, "unsatisfied_ratio": 0.59375, "syndrome_preview": [ 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 94.352142 }, { "name": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 36, "hard_zero_preview": 138, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive_llr_count": 141, "negative_llr_count": 33, "zero_llr_count": 0, "sign_balance": 0.62069 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 19, "satisfied_rows": 13, "unsatisfied_ratio": 0.59375, "syndrome_preview": [ 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 94.352142 }, { "name": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 36, "hard_zero_preview": 138, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive_llr_count": 141, "negative_llr_count": 33, "zero_llr_count": 0, "sign_balance": 0.62069 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 11, "satisfied_rows": 21, "unsatisfied_ratio": 0.34375, "syndrome_preview": [ 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 100.602142 }, { "name": "mapped_lsb_within_each_tone+no_interleaver", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'none'}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 36, "hard_zero_preview": 138, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive_llr_count": 141, "negative_llr_count": 33, "zero_llr_count": 0, "sign_balance": 0.62069 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 17, "satisfied_rows": 15, "unsatisfied_ratio": 0.53125, "syndrome_preview": [ 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 95.914642 }, { "name": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 36, "hard_zero_preview": 138, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive_llr_count": 141, "negative_llr_count": 33, "zero_llr_count": 0, "sign_balance": 0.62069 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 18, "satisfied_rows": 14, "unsatisfied_ratio": 0.5625, "syndrome_preview": [ 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 95.133392 }, { "name": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 36, "hard_zero_preview": 138, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive_llr_count": 141, "negative_llr_count": 33, "zero_llr_count": 0, "sign_balance": 0.62069 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 16, "satisfied_rows": 16, "unsatisfied_ratio": 0.5, "syndrome_preview": [ 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 96.695892 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 40, "hard_zero_preview": 134, "llr_stats": { "count": 174, "avg_abs": 1.927169, "min_abs": 0.001731, "max_abs": 4.421458, "positive_llr_count": 137, "negative_llr_count": 37, "zero_llr_count": 0, "sign_balance": 0.574713 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 14, "satisfied_rows": 18, "unsatisfied_ratio": 0.4375, "syndrome_preview": [ 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 96.771176 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 40, "hard_zero_preview": 134, "llr_stats": { "count": 174, "avg_abs": 1.927169, "min_abs": 0.001731, "max_abs": 4.421458, "positive_llr_count": 137, "negative_llr_count": 37, "zero_llr_count": 0, "sign_balance": 0.574713 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 16, "satisfied_rows": 16, "unsatisfied_ratio": 0.5, "syndrome_preview": [ 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 95.208676 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 40, "hard_zero_preview": 134, "llr_stats": { "count": 174, "avg_abs": 1.927169, "min_abs": 0.001731, "max_abs": 4.421458, "positive_llr_count": 137, "negative_llr_count": 37, "zero_llr_count": 0, "sign_balance": 0.574713 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 9, "satisfied_rows": 23, "unsatisfied_ratio": 0.28125, "syndrome_preview": [ 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 100.677426 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 54, "hard_zero_preview": 120, "llr_stats": { "count": 174, "avg_abs": 1.733097, "min_abs": 0.001731, "max_abs": 4.14242, "positive_llr_count": 121, "negative_llr_count": 53, "zero_llr_count": 0, "sign_balance": 0.390805 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 19, "satisfied_rows": 13, "unsatisfied_ratio": 0.59375, "syndrome_preview": [ 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 92.088638 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 54, "hard_zero_preview": 120, "llr_stats": { "count": 174, "avg_abs": 1.733097, "min_abs": 0.001731, "max_abs": 4.14242, "positive_llr_count": 121, "negative_llr_count": 53, "zero_llr_count": 0, "sign_balance": 0.390805 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 16, "satisfied_rows": 16, "unsatisfied_ratio": 0.5, "syndrome_preview": [ 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 94.432388 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 54, "hard_zero_preview": 120, "llr_stats": { "count": 174, "avg_abs": 1.733097, "min_abs": 0.001731, "max_abs": 4.14242, "positive_llr_count": 121, "negative_llr_count": 53, "zero_llr_count": 0, "sign_balance": 0.390805 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 17, "satisfied_rows": 15, "unsatisfied_ratio": 0.53125, "syndrome_preview": [ 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 93.651138 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 42, "hard_zero_preview": 132, "llr_stats": { "count": 174, "avg_abs": 1.894503, "min_abs": 0.002971, "max_abs": 4.421458, "positive_llr_count": 134, "negative_llr_count": 40, "zero_llr_count": 0, "sign_balance": 0.54023 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 15, "satisfied_rows": 17, "unsatisfied_ratio": 0.46875, "syndrome_preview": [ 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 95.859262 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 42, "hard_zero_preview": 132, "llr_stats": { "count": 174, "avg_abs": 1.894503, "min_abs": 0.002971, "max_abs": 4.421458, "positive_llr_count": 134, "negative_llr_count": 40, "zero_llr_count": 0, "sign_balance": 0.54023 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 15, "satisfied_rows": 17, "unsatisfied_ratio": 0.46875, "syndrome_preview": [ 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 95.859262 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 42, "hard_zero_preview": 132, "llr_stats": { "count": 174, "avg_abs": 1.894503, "min_abs": 0.002971, "max_abs": 4.421458, "positive_llr_count": 134, "negative_llr_count": 40, "zero_llr_count": 0, "sign_balance": 0.54023 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 10, "satisfied_rows": 22, "unsatisfied_ratio": 0.3125, "syndrome_preview": [ 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 99.765512 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 56, "hard_zero_preview": 118, "llr_stats": { "count": 174, "avg_abs": 1.700431, "min_abs": 0.002971, "max_abs": 4.14242, "positive_llr_count": 118, "negative_llr_count": 56, "zero_llr_count": 0, "sign_balance": 0.356322 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 20, "satisfied_rows": 12, "unsatisfied_ratio": 0.625, "syndrome_preview": [ 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 91.176724 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 56, "hard_zero_preview": 118, "llr_stats": { "count": 174, "avg_abs": 1.700431, "min_abs": 0.002971, "max_abs": 4.14242, "positive_llr_count": 118, "negative_llr_count": 56, "zero_llr_count": 0, "sign_balance": 0.356322 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 15, "satisfied_rows": 17, "unsatisfied_ratio": 0.46875, "syndrome_preview": [ 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 95.082974 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "complete_174bit_candidate": true, "preview_bits_available": 174, "hard_weight_preview": 56, "hard_zero_preview": 118, "llr_stats": { "count": 174, "avg_abs": 1.700431, "min_abs": 0.002971, "max_abs": 4.14242, "positive_llr_count": 118, "negative_llr_count": 56, "zero_llr_count": 0, "sign_balance": 0.356322 }, "syndrome_probe": { "available": true, "row_count": 32, "unsatisfied_rows": 18, "satisfied_rows": 14, "unsatisfied_ratio": 0.5625, "syndrome_preview": [ 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1 ] }, "real_ldpc_decode_attempted": false, "real_ldpc_decode_success": false, "rank_score": 92.739224 } ], "selected_variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "selected_variant_rank_score": 100.677426, "ready_for_real_ldpc_matrix": true, "real_ldpc_decode": false, "message_unpack": false }, "sync_candidate": { "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 }, "frame_candidate": { "input_symbol_count": 96, "excluded_costas_symbol_count": 0, "detected_costas_blocks": [], "data_symbol_count_available": 96, "data_symbol_count_used": 58, "expected_data_symbols_candidate": 58, "costas_policy": "js8_leading_only" }, "soft_symbol_summary": { "symbol_count": 96, "avg_confidence_db": 3.08, "min_confidence_db": 0.01, "strong_symbol_count": 28, "weak_symbol_count": 29, "tone_histogram": { "0": 48, "1": 22, "2": 14, "3": 6, "4": 4, "5": 1, "6": 1, "7": 0 } }, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "decodes": [], "warnings": [ "Step 36 selects the best timing/profile candidate only. It still does not decode final JS8 text.", "No JS8 text decode is expected in Step 36. Final real LDPC/FEC and Varicode/message unpack are not implemented yet.", "Costas7 scoring is a lab candidate extractor; real decoder validation requires actual JS8 WAV samples.", "No JS8 text decode is expected in Step 36. Final real LDPC/FEC and Varicode/message unpack are still not implemented.", "hard_bits_msb_candidate is a lab preview only; real JS8 requires deinterleaving, whitening and LDPC/FEC.", "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation.", "Step 36 LDPC probe harness is wired, but no real JS8/FT8 H matrix is supplied yet; prototype parity rows are diagnostic only.", "No JS8 message text is decoded in Step 36. Next step must connect/extract the real LDPC matrix/decoder and then the JS8 message unpacker." ], "next_action": "Next step should connect a confirmed JS8/FT8 LDPC matrix/decoder and then message unpacking after the timing profile is stable." } [webftr-js8-lab] auto-ldpc-probe exit_code=0 [webftr-js8-lab] auto-ldpc-probe JSON: /decoders/js8_decoder/logs/20260527T033514Z_real_run_auto_ldpc_probe_output.json ========== REAL-RUN STEP 6/9: CANDIDATE EXPORT ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T033514Z_real_run_candidate_export_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "mode": "JS8", "tool": "webftr-js8-fec-candidate-export", "tool_version": "step36-timing-boundary-candidate-sweep", "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step36_profile_anchor_candidate_export_no_message_unpack", "selected_profile": { "profile": "js8_near_6400", "nsps": 6400, "symbol_duration_seconds": 0.533333, "tone_spacing_hz": 1.875, "note": "0.533 s timing guard candidate", "ok": true, "sync": { "start_seconds": 4.8, "base_freq_hz": 1025.0, "candidate_score": 47.4, "costas_hits": 2, "avg_margin_db": 8.01, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 103, "data_symbol_count_estimate": 58, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "complete_ldpc_input_candidate_estimate": true }, "rank_score": 225.085 }, "profile_selection_source": "profile_scan_json_anchor", "profile_scan_json": "/decoders/js8_decoder/logs/20260527T033514Z_real_run_profile_scan_output.json", "anchor_json": "/decoders/js8_decoder/logs/20260527T033514Z_real_run_auto_ldpc_probe_output.json", "anchor_selection": { "source": "profile_scan_json", "path": "/decoders/js8_decoder/logs/20260527T033514Z_real_run_profile_scan_output.json", "selection": "profile_scan_selected_profile", "nsps": 6400, "start_seconds": 4.8, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875 }, "anchor_attempts": [ { "source": "profile_scan_json", "path": "/decoders/js8_decoder/logs/20260527T033514Z_real_run_profile_scan_output.json", "selection": "profile_scan_selected_profile", "nsps": 6400, "start_seconds": 4.8, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875 } ], "anchor_expected_enabled": true, "prefer_js8_realistic_profile": true, "nsps_used": 6400, "nsps_is_js8_realistic": true, "wav": { "path": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "channels": 1, "sample_rate": 12000, "sample_width_bytes": 2, "frames": 720000, "duration_seconds": 60.0, "rms_dbfs": -9.13, "peak_dbfs": -0.72, "clipped": false }, "sync_candidate": { "start_sample": 57600, "start_seconds": 4.8, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "profile_scan_json" }, "frame_candidate": { "input_symbol_count": 96, "excluded_costas_symbol_count": 0, "detected_costas_blocks": [], "data_symbol_count_available": 96, "data_symbol_count_used": 58, "expected_data_symbols_candidate": 58, "costas_policy": "js8_leading_only" }, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "anchor_context": { "enabled": true, "source": "profile_scan_json", "start_seconds": 4.8, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875, "nsps": 6400, "symbol_count_extracted": 96 }, "variant_count": 23, "selected_variant": { "name": "raw_msb_symbol_order", "rank_score": 127.195892, "complete_174bit_candidate": true, "hard_bits_sha256_16": "c87312f86dbe74fc", "hard_weight_174": 36, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 } }, "variants": [ { "name": "raw_msb_symbol_order", "description": "Current FEC bridge: Costas-stripped symbols, MSB-first tone bits.", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000000000000000010000010011000001000110101000011010000010010000001000000011011011000000000000000000000011000000001000010001001010001000010010000001010000010000001001000000", "hard_bits_sha256_16": "c87312f86dbe74fc", "hard_weight_174": 36, "llr_full_174": [ 4.145349, 4.116374, 3.511245, 4.180269, 4.169674, 4.14242, 4.168008, 4.153984, 4.12139, 4.168076, 4.135428, 4.11961, 4.07648, 4.076237, 4.08862, 2.756476, 2.742424, 3.003457, 2.955568, -1.875523, 1.978199, 2.658519, 0.652185, 1.080854, 3.045159, -2.198749, 1.333744, 0.789541, 0.471669, -0.473047, 2.454295, 1.837215, 1.942431, 3.352145, 2.163158, -2.926977, 3.300296, 1.818615, 2.678266, 0.27805, -1.765651, 0.507303, 0.384955, 0.866369, -0.118003, 3.200765, 2.063815, 1.87262, 1.0381, -1.355162, -1.599648, 3.332469, -2.249717, 1.748972, 3.56793, 3.262649, 3.617447, 2.319559, -1.211827, 1.719706, 3.019019, -3.210486, 3.575036, 2.726546, 0.281133, 1.361861, 0.844266, 0.012672, -0.477879, 2.427052, 0.927501, 2.023583, 1.640172, 0.441842, 1.473774, 0.724531, -1.103418, -1.264035, 0.966046, -0.916188, -0.820746, 2.920695, -1.395798, -1.732909, 4.123045, 3.154533, 1.694026, 4.167475, 4.14333, 4.094062, 4.166411, 4.137106, 4.073255, 4.16641, 4.1509, 4.091336, 4.16914, 4.045318, 3.8423, 4.098287, 3.599922, 1.677122, 3.447718, 0.044719, 2.01941, 3.666068, -1.085865, -1.807547, 2.689748, 0.585744, 2.065345, 3.083072, 2.617179, 1.346997, 2.548193, 2.264806, -0.571842, 2.351419, 1.247615, 1.499097, 3.383096, -3.47555, 3.593033, 0.355702, 2.45095, -3.635826, 2.165497, 2.132701, -2.226011, 2.192378, -1.921746, 1.999342, 3.137893, 2.980057, -2.621792, 3.666644, 0.533081, 1.582817, 3.285701, -3.283029, 3.223063, 2.568732, -0.251398, 0.268492, 1.534973, 1.692448, 1.48451, 3.152828, 0.300403, -0.280146, 1.052121, -0.948727, 1.008293, 0.777135, 0.891886, 0.17487, 2.402306, -2.356355, 2.750596, 1.575325, 0.833633, 2.006609, 1.914037, 2.633553, -1.988459, 1.730599, 1.570304, -1.598288, 4.421458, 0.617935, 1.642426, 3.964669, 3.566732, 3.449224 ], "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "rank_score": 127.195892 }, { "name": "lsb_within_each_tone", "description": "Same symbols, but each 3-bit tone value reversed for bit-order comparison.", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000000000000000010000010110000100000011101000110010000010010000100000000110110110000000000000000000000110000000100000010100100010100000010010000100010000010000100100000000", "hard_bits_sha256_16": "1caf67e82a3cc0f1", "hard_weight_174": 36, "llr_full_174": [ 4.145349, 4.116374, 3.511245, 4.180269, 4.169674, 4.14242, 4.168008, 4.153984, 4.12139, 4.168076, 4.135428, 4.11961, 4.07648, 4.076237, 4.08862, 2.756476, 2.742424, 3.003457, 2.955568, -1.875523, 1.978199, 2.658519, 0.652185, 1.080854, 3.045159, -2.198749, 1.333744, 0.789541, 0.471669, -0.473047, 2.454295, 1.837215, 1.942431, 3.352145, 2.163158, -2.926977, 3.300296, 1.818615, 2.678266, 0.27805, -1.765651, 0.507303, 0.384955, 0.866369, -0.118003, 3.200765, 2.063815, 1.87262, 1.0381, -1.355162, -1.599648, 3.332469, -2.249717, 1.748972, 3.56793, 3.262649, 3.617447, 2.319559, -1.211827, 1.719706, 3.019019, -3.210486, 3.575036, 2.726546, 0.281133, 1.361861, 0.844266, 0.012672, -0.477879, 2.427052, 0.927501, 2.023583, 1.640172, 0.441842, 1.473774, 0.724531, -1.103418, -1.264035, 0.966046, -0.916188, -0.820746, 2.920695, -1.395798, -1.732909, 4.123045, 3.154533, 1.694026, 4.167475, 4.14333, 4.094062, 4.166411, 4.137106, 4.073255, 4.16641, 4.1509, 4.091336, 4.16914, 4.045318, 3.8423, 4.098287, 3.599922, 1.677122, 3.447718, 0.044719, 2.01941, 3.666068, -1.085865, -1.807547, 2.689748, 0.585744, 2.065345, 3.083072, 2.617179, 1.346997, 2.548193, 2.264806, -0.571842, 2.351419, 1.247615, 1.499097, 3.383096, -3.47555, 3.593033, 0.355702, 2.45095, -3.635826, 2.165497, 2.132701, -2.226011, 2.192378, -1.921746, 1.999342, 3.137893, 2.980057, -2.621792, 3.666644, 0.533081, 1.582817, 3.285701, -3.283029, 3.223063, 2.568732, -0.251398, 0.268492, 1.534973, 1.692448, 1.48451, 3.152828, 0.300403, -0.280146, 1.052121, -0.948727, 1.008293, 0.777135, 0.891886, 0.17487, 2.402306, -2.356355, 2.750596, 1.575325, 0.833633, 2.006609, 1.914037, 2.633553, -1.988459, 1.730599, 1.570304, -1.598288, 4.421458, 0.617935, 1.642426, 3.964669, 3.566732, 3.449224 ], "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "rank_score": 119.195892 }, { "name": "reverse_symbol_order", "description": "Same 3-bit symbols in reverse order; diagnostic only.", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000001001000010000010001000010010000001010001001010000001000000011000000000000000000000011011011000000001000010010000010011000101110000001000011010000010000000000000000000", "hard_bits_sha256_16": "1c72d827ce8d55e5", "hard_weight_174": 36, "llr_full_174": [ 3.449224, 3.566732, 3.964669, 1.642426, 0.617935, 4.421458, -1.598288, 1.570304, 1.730599, -1.988459, 2.633553, 1.914037, 2.006609, 0.833633, 1.575325, 2.750596, -2.356355, 2.402306, 0.17487, 0.891886, 0.777135, 1.008293, -0.948727, 1.052121, -0.280146, 0.300403, 3.152828, 1.48451, 1.692448, 1.534973, 0.268492, -0.251398, 2.568732, 3.223063, -3.283029, 3.285701, 1.582817, 0.533081, 3.666644, -2.621792, 2.980057, 3.137893, 1.999342, -1.921746, 2.192378, -2.226011, 2.132701, 2.165497, -3.635826, 2.45095, 0.355702, 3.593033, -3.47555, 3.383096, 1.499097, 1.247615, 2.351419, -0.571842, 2.264806, 2.548193, 1.346997, 2.617179, 3.083072, 2.065345, 0.585744, 2.689748, -1.807547, -1.085865, 3.666068, 2.01941, 0.044719, 3.447718, 1.677122, 3.599922, 4.098287, 3.8423, 4.045318, 4.16914, 4.091336, 4.1509, 4.16641, 4.073255, 4.137106, 4.166411, 4.094062, 4.14333, 4.167475, 1.694026, 3.154533, 4.123045, -1.732909, -1.395798, 2.920695, -0.820746, -0.916188, 0.966046, -1.264035, -1.103418, 0.724531, 1.473774, 0.441842, 1.640172, 2.023583, 0.927501, 2.427052, -0.477879, 0.012672, 0.844266, 1.361861, 0.281133, 2.726546, 3.575036, -3.210486, 3.019019, 1.719706, -1.211827, 2.319559, 3.617447, 3.262649, 3.56793, 1.748972, -2.249717, 3.332469, -1.599648, -1.355162, 1.0381, 1.87262, 2.063815, 3.200765, -0.118003, 0.866369, 0.384955, 0.507303, -1.765651, 0.27805, 2.678266, 1.818615, 3.300296, -2.926977, 2.163158, 3.352145, 1.942431, 1.837215, 2.454295, -0.473047, 0.471669, 0.789541, 1.333744, -2.198749, 3.045159, 1.080854, 0.652185, 2.658519, 1.978199, -1.875523, 2.955568, 3.003457, 2.742424, 2.756476, 4.08862, 4.076237, 4.07648, 4.11961, 4.135428, 4.168076, 4.12139, 4.153984, 4.168008, 4.14242, 4.169674, 4.180269, 3.511245, 4.116374, 4.145349 ], "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "rank_score": 113.195892 }, { "name": "reverse_full_bitstream", "description": "Full hard-bit stream reversed; diagnostic only.", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000100100000010000010100000010010000100010100100010000100000000110000000000000000000000110110110000000100000010010000010110000101011000100000110010000010000000000000000000", "hard_bits_sha256_16": "99d197b705881255", "hard_weight_174": 36, "llr_full_174": [ 3.449224, 3.566732, 3.964669, 1.642426, 0.617935, 4.421458, -1.598288, 1.570304, 1.730599, -1.988459, 2.633553, 1.914037, 2.006609, 0.833633, 1.575325, 2.750596, -2.356355, 2.402306, 0.17487, 0.891886, 0.777135, 1.008293, -0.948727, 1.052121, -0.280146, 0.300403, 3.152828, 1.48451, 1.692448, 1.534973, 0.268492, -0.251398, 2.568732, 3.223063, -3.283029, 3.285701, 1.582817, 0.533081, 3.666644, -2.621792, 2.980057, 3.137893, 1.999342, -1.921746, 2.192378, -2.226011, 2.132701, 2.165497, -3.635826, 2.45095, 0.355702, 3.593033, -3.47555, 3.383096, 1.499097, 1.247615, 2.351419, -0.571842, 2.264806, 2.548193, 1.346997, 2.617179, 3.083072, 2.065345, 0.585744, 2.689748, -1.807547, -1.085865, 3.666068, 2.01941, 0.044719, 3.447718, 1.677122, 3.599922, 4.098287, 3.8423, 4.045318, 4.16914, 4.091336, 4.1509, 4.16641, 4.073255, 4.137106, 4.166411, 4.094062, 4.14333, 4.167475, 1.694026, 3.154533, 4.123045, -1.732909, -1.395798, 2.920695, -0.820746, -0.916188, 0.966046, -1.264035, -1.103418, 0.724531, 1.473774, 0.441842, 1.640172, 2.023583, 0.927501, 2.427052, -0.477879, 0.012672, 0.844266, 1.361861, 0.281133, 2.726546, 3.575036, -3.210486, 3.019019, 1.719706, -1.211827, 2.319559, 3.617447, 3.262649, 3.56793, 1.748972, -2.249717, 3.332469, -1.599648, -1.355162, 1.0381, 1.87262, 2.063815, 3.200765, -0.118003, 0.866369, 0.384955, 0.507303, -1.765651, 0.27805, 2.678266, 1.818615, 3.300296, -2.926977, 2.163158, 3.352145, 1.942431, 1.837215, 2.454295, -0.473047, 0.471669, 0.789541, 1.333744, -2.198749, 3.045159, 1.080854, 0.652185, 2.658519, 1.978199, -1.875523, 2.955568, 3.003457, 2.742424, 2.756476, 4.08862, 4.076237, 4.07648, 4.11961, 4.135428, 4.168076, 4.12139, 4.153984, 4.168008, 4.14242, 4.169674, 4.180269, 3.511245, 4.116374, 4.145349 ], "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "rank_score": 112.195892 }, { "name": "mapped_raw_msb+no_interleaver", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000000000000000010000010011000001000110101000011010000010010000001000000011011011000000000000000000000011000000001000010001001010001000010010000001010000010000001001000000", "hard_bits_sha256_16": "c87312f86dbe74fc", "hard_weight_174": 36, "llr_full_174": [ 4.145349, 4.116374, 3.511245, 4.180269, 4.169674, 4.14242, 4.168008, 4.153984, 4.12139, 4.168076, 4.135428, 4.11961, 4.07648, 4.076237, 4.08862, 2.756476, 2.742424, 3.003457, 2.955568, -1.875523, 1.978199, 2.658519, 0.652185, 1.080854, 3.045159, -2.198749, 1.333744, 0.789541, 0.471669, -0.473047, 2.454295, 1.837215, 1.942431, 3.352145, 2.163158, -2.926977, 3.300296, 1.818615, 2.678266, 0.27805, -1.765651, 0.507303, 0.384955, 0.866369, -0.118003, 3.200765, 2.063815, 1.87262, 1.0381, -1.355162, -1.599648, 3.332469, -2.249717, 1.748972, 3.56793, 3.262649, 3.617447, 2.319559, -1.211827, 1.719706, 3.019019, -3.210486, 3.575036, 2.726546, 0.281133, 1.361861, 0.844266, 0.012672, -0.477879, 2.427052, 0.927501, 2.023583, 1.640172, 0.441842, 1.473774, 0.724531, -1.103418, -1.264035, 0.966046, -0.916188, -0.820746, 2.920695, -1.395798, -1.732909, 4.123045, 3.154533, 1.694026, 4.167475, 4.14333, 4.094062, 4.166411, 4.137106, 4.073255, 4.16641, 4.1509, 4.091336, 4.16914, 4.045318, 3.8423, 4.098287, 3.599922, 1.677122, 3.447718, 0.044719, 2.01941, 3.666068, -1.085865, -1.807547, 2.689748, 0.585744, 2.065345, 3.083072, 2.617179, 1.346997, 2.548193, 2.264806, -0.571842, 2.351419, 1.247615, 1.499097, 3.383096, -3.47555, 3.593033, 0.355702, 2.45095, -3.635826, 2.165497, 2.132701, -2.226011, 2.192378, -1.921746, 1.999342, 3.137893, 2.980057, -2.621792, 3.666644, 0.533081, 1.582817, 3.285701, -3.283029, 3.223063, 2.568732, -0.251398, 0.268492, 1.534973, 1.692448, 1.48451, 3.152828, 0.300403, -0.280146, 1.052121, -0.948727, 1.008293, 0.777135, 0.891886, 0.17487, 2.402306, -2.356355, 2.750596, 1.575325, 0.833633, 2.006609, 1.914037, 2.633553, -1.988459, 1.730599, 1.570304, -1.598288, 4.421458, 0.617935, 1.642426, 3.964669, 3.566732, 3.449224 ], "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "rank_score": 109.195892 }, { "name": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001000000001001100101000001010100001100000100011000000000101100000000010000010100011000011000100001000000000010000000010000001000000000000000100000011000001101000000001000000", "hard_bits_sha256_16": "3c11aac3c214ac9f", "hard_weight_174": 36, "llr_full_174": [ 4.145349, 4.167475, -0.118003, 1.999342, 0.652185, 0.585744, 0.844266, 0.777135, 4.11961, 3.8423, 3.262649, -0.251398, 3.352145, 3.383096, -1.264035, -1.988459, 4.168008, 4.16641, -1.599648, 1.582817, 0.471669, 2.264806, 1.640172, 1.575325, 3.003457, 2.01941, -3.210486, 0.300403, 0.27805, 2.165497, -1.395798, 0.617935, 4.180269, 4.166411, 1.87262, -2.621792, -2.198749, 2.617179, 2.427052, 2.402306, 4.08862, 1.677122, -1.211827, 1.692448, 3.300296, 0.355702, -0.820746, -1.598288, 4.168076, 4.16914, 1.748972, 3.223063, 1.837215, 1.247615, 0.724531, 1.914037, 1.978199, -1.807547, 0.281133, -0.948727, 0.384955, 2.192378, 3.154533, 3.566732, 3.511245, 4.094062, 2.063815, 2.980057, 3.045159, 3.083072, -0.477879, 0.17487, 4.076237, 3.599922, 2.319559, 1.534973, -2.926977, 3.593033, -0.916188, 1.570304, 4.12139, 4.091336, -2.249717, -3.283029, 2.454295, 2.351419, 1.473774, 2.006609, -1.875523, -1.085865, 2.726546, 1.052121, 0.507303, -2.226011, 4.123045, 3.964669, 4.14242, 4.073255, -1.355162, 0.533081, 0.789541, 2.548193, 2.023583, 2.750596, 2.742424, 0.044719, 3.019019, 3.152828, 2.678266, -3.635826, 2.920695, 4.421458, 4.135428, 4.045318, 3.56793, 2.568732, 1.942431, 1.499097, -1.103418, 2.633553, 2.658519, 2.689748, 1.361861, 1.008293, 0.866369, -1.921746, 1.694026, 3.449224, 4.116374, 4.14333, 3.200765, 3.137893, 1.080854, 2.065345, 0.012672, 0.891886, 4.07648, 4.098287, 3.617447, 0.268492, 2.163158, -3.47555, 0.966046, 1.730599, 4.153984, 4.1509, 3.332469, 3.285701, -0.473047, -0.571842, 0.441842, 0.833633, 2.955568, 3.666068, 3.575036, -0.280146, -1.765651, 2.132701, -1.732909, 1.642426, 4.169674, 4.137106, 1.0381, 3.666644, 1.333744, 1.346997, 0.927501, -2.356355, 2.756476, 3.447718, 1.719706, 1.48451, 1.818615, 2.45095 ], "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "rank_score": 109.195892 }, { "name": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "010000001000001000000000101000011001100100000100000011000010100010010000000000100000000000000000100000001000100000001000001000110110001001010001000100000000110010000010000000", "hard_bits_sha256_16": "3eca32111a82bfa5", "hard_weight_174": 36, "llr_full_174": [ 4.145349, -2.226011, 0.281133, 1.942431, 0.833633, 4.16914, 2.742424, 1.534973, -0.820746, 1.0381, 2.617179, 4.12139, 0.533081, 1.640172, -1.765651, 4.421458, 2.01941, 3.045159, 1.008293, 4.14333, 3.617447, 3.383096, 4.169674, 3.137893, -0.477879, 3.300296, -1.988459, 3.599922, 1.978199, 0.300403, 4.123045, -2.249717, -0.571842, 4.07648, 3.223063, -1.103418, -0.118003, 3.566732, 2.689748, 0.471669, 2.402306, 4.073255, 3.019019, 2.45095, 3.511245, -1.921746, 0.844266, 2.163158, 1.914037, 3.8423, 2.955568, 1.48451, -1.395798, -1.599648, 2.548193, 4.135428, 3.285701, 1.473774, 0.384955, 1.642426, -1.085865, 1.333744, 0.891886, 4.166411, -1.211827, 3.593033, 4.168008, -2.621792, 0.927501, 2.678266, 1.570304, 3.447718, 0.652185, 1.052121, 1.694026, 3.56793, 1.247615, 4.08862, -0.251398, 0.966046, 2.063815, 2.065345, 2.454295, 2.750596, 4.1509, 3.575036, 2.165497, 4.116374, 2.192378, 1.361861, 3.352145, 2.006609, 4.045318, 3.003457, 1.692448, 2.920695, -1.355162, 1.346997, 4.168076, 1.582817, 0.441842, 0.507303, 0.617935, 3.666068, -2.198749, 0.777135, 4.094062, 2.319559, -3.47555, 4.14242, 2.980057, 2.427052, 1.818615, 1.730599, 1.677122, 2.658519, -0.280146, 3.154533, 1.748972, 2.351419, 4.076237, 2.568732, -1.264035, 3.200765, 3.449224, 0.585744, -0.473047, -2.356355, 4.16641, -3.210486, -3.635826, 4.180269, 1.999342, 0.012672, -2.926977, 2.633553, 4.098287, -1.875523, 3.152828, -1.732909, 3.332469, 2.264806, 4.11961, -3.283029, 0.724531, 0.866369, 3.964669, -1.807547, 0.789541, 0.17487, 4.137106, 1.719706, 0.355702, 4.153984, 3.666644, 2.023583, 0.27805, -1.598288, 0.044719, 1.080854, -0.948727, 4.167475, 3.262649, 1.499097, 2.756476, 0.268492, -0.916188, 1.87262, 3.083072, 1.837215, 1.575325, 4.091336, 2.726546, 2.132701 ], "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "rank_score": 109.195892 }, { "name": "mapped_lsb_within_each_tone+no_interleaver", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000000000000000010000010110000100000011101000110010000010010000100000000110110110000000000000000000000110000000100000010100100010100000010010000100010000010000100100000000", "hard_bits_sha256_16": "1caf67e82a3cc0f1", "hard_weight_174": 36, "llr_full_174": [ 3.511245, 4.116374, 4.145349, 4.14242, 4.169674, 4.180269, 4.12139, 4.153984, 4.168008, 4.11961, 4.135428, 4.168076, 4.08862, 4.076237, 4.07648, 3.003457, 2.742424, 2.756476, 1.978199, -1.875523, 2.955568, 1.080854, 0.652185, 2.658519, 1.333744, -2.198749, 3.045159, -0.473047, 0.471669, 0.789541, 1.942431, 1.837215, 2.454295, -2.926977, 2.163158, 3.352145, 2.678266, 1.818615, 3.300296, 0.507303, -1.765651, 0.27805, -0.118003, 0.866369, 0.384955, 1.87262, 2.063815, 3.200765, -1.599648, -1.355162, 1.0381, 1.748972, -2.249717, 3.332469, 3.617447, 3.262649, 3.56793, 1.719706, -1.211827, 2.319559, 3.575036, -3.210486, 3.019019, 1.361861, 0.281133, 2.726546, -0.477879, 0.012672, 0.844266, 2.023583, 0.927501, 2.427052, 1.473774, 0.441842, 1.640172, -1.264035, -1.103418, 0.724531, -0.820746, -0.916188, 0.966046, -1.732909, -1.395798, 2.920695, 1.694026, 3.154533, 4.123045, 4.094062, 4.14333, 4.167475, 4.073255, 4.137106, 4.166411, 4.091336, 4.1509, 4.16641, 3.8423, 4.045318, 4.16914, 1.677122, 3.599922, 4.098287, 2.01941, 0.044719, 3.447718, -1.807547, -1.085865, 3.666068, 2.065345, 0.585744, 2.689748, 1.346997, 2.617179, 3.083072, -0.571842, 2.264806, 2.548193, 1.499097, 1.247615, 2.351419, 3.593033, -3.47555, 3.383096, -3.635826, 2.45095, 0.355702, -2.226011, 2.132701, 2.165497, 1.999342, -1.921746, 2.192378, -2.621792, 2.980057, 3.137893, 1.582817, 0.533081, 3.666644, 3.223063, -3.283029, 3.285701, 0.268492, -0.251398, 2.568732, 1.48451, 1.692448, 1.534973, -0.280146, 0.300403, 3.152828, 1.008293, -0.948727, 1.052121, 0.17487, 0.891886, 0.777135, 2.750596, -2.356355, 2.402306, 2.006609, 0.833633, 1.575325, -1.988459, 2.633553, 1.914037, -1.598288, 1.570304, 1.730599, 1.642426, 0.617935, 4.421458, 3.449224, 3.566732, 3.964669 ], "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "rank_score": 109.195892 }, { "name": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001000100001100000001000001001100000100000100100000000110001100000000000000000100011000011001000001011000001001000000010000001000001000000000111000000000100100000100001000000", "hard_bits_sha256_16": "c16db5c46eb49777", "hard_weight_174": 36, "llr_full_174": [ 3.511245, 4.094062, 0.384955, 2.192378, 0.652185, 0.585744, -0.477879, 0.17487, 4.168076, 4.16914, 3.262649, -0.251398, -2.926977, 3.593033, 0.724531, 1.914037, 4.12139, 4.091336, 1.0381, 3.666644, 0.471669, 2.264806, 1.473774, 2.006609, 2.756476, 3.447718, -3.210486, 0.300403, 0.507303, -2.226011, -1.395798, 0.617935, 4.14242, 4.073255, 3.200765, 3.137893, -2.198749, 2.617179, 2.023583, 2.750596, 4.07648, 4.098287, -1.211827, 1.692448, 2.678266, -3.635826, 0.966046, 1.730599, 4.11961, 3.8423, 3.332469, 3.285701, 1.837215, 1.247615, -1.264035, -1.988459, 2.955568, 3.666068, 0.281133, -0.948727, -0.118003, 1.999342, 3.154533, 3.566732, 4.145349, 4.167475, 2.063815, 2.980057, 1.333744, 1.346997, 0.844266, 0.777135, 4.076237, 3.599922, 1.719706, 1.48451, 3.352145, 3.383096, -0.916188, 1.570304, 4.168008, 4.16641, -2.249717, -3.283029, 1.942431, 1.499097, 1.640172, 1.575325, -1.875523, -1.085865, 1.361861, 1.008293, 0.27805, 2.165497, 1.694026, 3.449224, 4.180269, 4.166411, -1.355162, 0.533081, -0.473047, -0.571842, 2.427052, 2.402306, 2.742424, 0.044719, 3.575036, -0.280146, 3.300296, 0.355702, -1.732909, 1.642426, 4.135428, 4.045318, 3.617447, 0.268492, 2.454295, 2.351419, -1.103418, 2.633553, 1.080854, 2.065345, 2.726546, 1.052121, 0.866369, -1.921746, 4.123045, 3.964669, 4.116374, 4.14333, 1.87262, -2.621792, 2.658519, 2.689748, 0.012672, 0.891886, 4.08862, 1.677122, 3.56793, 2.568732, 2.163158, -3.47555, -0.820746, -1.598288, 4.153984, 4.1509, 1.748972, 3.223063, 0.789541, 2.548193, 0.441842, 0.833633, 1.978199, -1.807547, 3.019019, 3.152828, -1.765651, 2.132701, 2.920695, 4.421458, 4.169674, 4.137106, -1.599648, 1.582817, 3.045159, 3.083072, 0.927501, -2.356355, 3.003457, 2.01941, 2.319559, 1.534973, 1.818615, 2.45095 ], "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "rank_score": 109.195892 }, { "name": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000000100001000000001000000010001100100000110100010100010100010000000000000110000001000100001100001011000100001000000000000010100000001100001100010001000000010000010000000", "hard_bits_sha256_16": "2349237a6c1ad4a1", "hard_weight_174": 36, "llr_full_174": [ 3.511245, 2.165497, 0.281133, 2.454295, 0.833633, 3.8423, 2.742424, 1.48451, 0.966046, -1.599648, 2.617179, 4.168008, 0.533081, 1.473774, -1.765651, 1.642426, 3.447718, 1.333744, 1.052121, 4.14333, 3.56793, 3.593033, 4.169674, -2.621792, 0.844266, 2.678266, 1.914037, 3.599922, 2.955568, 0.300403, 1.694026, -2.249717, 2.548193, 4.08862, 3.285701, -1.103418, 0.384955, 3.566732, 2.065345, 0.471669, 2.750596, 4.166411, 3.575036, 2.45095, 4.145349, -1.921746, -0.477879, 2.163158, -1.988459, 4.16914, 1.978199, 1.534973, -1.395798, 1.0381, -0.571842, 4.135428, 3.223063, 1.640172, -0.118003, 4.421458, -1.085865, 3.045159, 0.891886, 4.073255, -1.211827, 3.383096, 4.12139, 3.137893, 0.927501, 3.300296, 1.570304, 2.01941, 0.652185, 1.008293, 4.123045, 3.617447, 1.247615, 4.07648, -0.251398, -0.820746, 2.063815, 2.689748, 1.942431, 2.402306, 4.1509, 3.019019, -2.226011, 4.116374, 1.999342, 2.726546, -2.926977, 1.575325, 4.045318, 2.756476, 1.692448, -1.732909, -1.355162, 3.083072, 4.11961, 3.666644, 0.441842, 0.27805, 0.617935, -1.807547, -2.198749, 0.17487, 4.167475, 1.719706, -3.47555, 4.180269, 2.980057, 2.023583, 1.818615, -1.598288, 4.098287, 1.080854, 3.152828, 3.154533, 3.332469, 1.499097, 4.076237, 0.268492, 0.724531, 1.87262, 3.964669, 0.585744, 0.789541, -2.356355, 4.091336, -3.210486, 0.355702, 4.14242, 2.192378, 0.012672, 3.352145, 2.633553, 1.677122, -1.875523, -0.280146, 2.920695, 1.748972, 2.264806, 4.168076, -3.283029, -1.264035, 0.866369, 3.449224, 3.666068, -0.473047, 0.777135, 4.137106, 2.319559, -3.635826, 4.153984, 1.582817, 2.427052, 0.507303, 1.730599, 0.044719, 2.658519, -0.948727, 4.094062, 3.262649, 2.351419, 3.003457, 2.568732, -0.916188, 3.200765, 1.346997, 1.837215, 2.006609, 4.16641, 1.361861, 2.132701 ], "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "rank_score": 109.195892 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000000000000000011000011010000001000101100000010011000011011000001000000010010010000000000000000000000010000000001000011001001011001000011011000001011000011000001001000000", "hard_bits_sha256_16": "df16269c1fa0fa06", "hard_weight_174": 40, "llr_full_174": [ 4.145349, 3.452473, 3.086486, 4.180269, 3.489968, 3.470833, 4.168008, 3.476142, 3.45256, 4.168076, 3.466732, 3.442433, 4.07648, 3.391909, 3.398004, 2.756476, 2.085357, 2.201863, 2.955568, -1.622839, -1.279105, 2.658519, 0.584512, 0.334781, 3.045159, -1.913077, -1.05028, 0.789541, 0.355787, 0.070686, 2.454295, 1.465874, 1.259168, 3.352145, 2.148484, -1.593118, 3.300296, 1.631791, 1.487633, 0.27805, -0.679046, -0.859382, 0.384955, 0.516186, 0.304115, 3.200765, 1.8241, 1.313865, 1.0381, -1.202946, 0.271605, 3.332469, -2.000617, -1.317992, 3.56793, 2.723053, 2.74392, 2.319559, -0.99225, -0.827198, 3.019019, -2.4347, -2.703961, 2.726546, 0.253328, 0.172804, 0.844266, 0.009756, 0.001731, 2.427052, 0.7793, 0.708649, 1.640172, 0.322631, 0.301313, 0.724531, -0.918917, 0.050637, 0.966046, -0.745342, 0.005093, 2.920695, -1.36693, 0.77557, 4.123045, 2.877556, 1.508338, 4.167475, 3.470682, 3.433481, 4.166411, 3.467154, 3.419835, 4.16641, 3.474034, 3.435811, 4.16914, 3.422479, 3.254487, 4.098287, 3.187851, 1.562671, 3.447718, 0.042283, 0.03456, 3.666068, -1.076662, 0.695554, 2.689748, 0.516457, 0.457348, 3.083072, 2.218749, 1.160866, 2.548193, 2.037409, -0.303721, 2.351419, 1.033145, 0.774902, 3.383096, -2.750704, -2.856231, 0.355702, 2.334924, -0.246542, 2.165497, 2.051906, -1.067205, 2.192378, -1.42718, -1.339671, 3.137893, 2.926083, -1.778059, 3.666644, 0.510044, 0.351311, 3.285701, -2.612578, -2.58036, 2.568732, -0.230927, -0.048807, 1.534973, 1.07191, 1.044958, 3.152828, 0.289654, -0.027576, 1.052121, -0.562778, -0.546582, 0.777135, 0.565054, 0.316264, 2.402306, -1.726242, -1.882543, 1.575325, 0.564689, 0.656222, 1.914037, 2.436748, -0.998732, 1.730599, 1.457999, -0.555668, 4.421458, 0.604867, 0.41283, 3.964669, 3.066087, 2.824202 ], "llr_stats": { "count": 174, "avg_abs": 1.927169, "min_abs": 0.001731, "max_abs": 4.421458, "positive": 137, "negative": 37, "zero": 0 }, "rank_score": 107.708676 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000100000001000100001000001010100001100000100001001100001001100000000010000011100011000011001100001000010000010000000010000101000000000000010100000001000011000000001001001000", "hard_bits_sha256_16": "ae82c24c7b38f3d2", "hard_weight_174": 40, "llr_full_174": [ 4.145349, 4.167475, 0.304115, -1.339671, 0.584512, 0.516457, 0.844266, 0.777135, 3.442433, 3.254487, 2.723053, -0.230927, 3.352145, 3.383096, 0.050637, -0.998732, 4.168008, 4.16641, 0.271605, 0.351311, 0.355787, 2.037409, 1.640172, 1.575325, 2.201863, 0.03456, -2.4347, 0.289654, 0.27805, 2.165497, -1.36693, 0.604867, 4.180269, 4.166411, 1.313865, -1.778059, -1.913077, 2.218749, 2.427052, 2.402306, 3.398004, 1.562671, -0.99225, 1.07191, 3.300296, 0.355702, 0.005093, -0.555668, 4.168076, 4.16914, -1.317992, -2.58036, 1.465874, 1.033145, 0.724531, 1.914037, -1.279105, 0.695554, 0.253328, -0.562778, 0.384955, 2.192378, 2.877556, 3.066087, 3.086486, 3.433481, 1.8241, 2.926083, 3.045159, 3.083072, 0.001731, 0.316264, 3.391909, 3.187851, 2.319559, 1.534973, -1.593118, -2.856231, -0.745342, 1.457999, 3.45256, 3.435811, -2.000617, -2.612578, 2.454295, 2.351419, 0.301313, 0.656222, -1.622839, -1.076662, 2.726546, 1.052121, -0.859382, -1.067205, 4.123045, 3.964669, 3.470833, 3.419835, -1.202946, 0.510044, 0.789541, 2.548193, 0.708649, -1.882543, 2.085357, 0.042283, 3.019019, 3.152828, 1.487633, -0.246542, 2.920695, 4.421458, 3.466732, 3.422479, 3.56793, 2.568732, 1.259168, 0.774902, -0.918917, 2.436748, 2.658519, 2.689748, 0.172804, -0.546582, 0.516186, -1.42718, 1.508338, 2.824202, 3.452473, 3.470682, 3.200765, 3.137893, 0.334781, 0.457348, 0.009756, 0.565054, 4.07648, 4.098287, 2.74392, -0.048807, 2.148484, -2.750704, 0.966046, 1.730599, 3.476142, 3.474034, 3.332469, 3.285701, 0.070686, -0.303721, 0.322631, 0.564689, 2.955568, 3.666068, -2.703961, -0.027576, -0.679046, 2.051906, 0.77557, 0.41283, 3.489968, 3.467154, 1.0381, 3.666644, -1.05028, 1.160866, 0.7793, -1.726242, 2.756476, 3.447718, -0.827198, 1.044958, 1.631791, 2.334924 ], "llr_stats": { "count": 174, "avg_abs": 1.927169, "min_abs": 0.001731, "max_abs": 4.421458, "positive": 137, "negative": 37, "zero": 0 }, "rank_score": 107.708676 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "010000000000000000100000101010011011000100000100000010000010110011010000000000100001010000000000100001001000100000001010000000010110101001000001000000010000110010000110000000", "hard_bits_sha256_16": "295f8a69db86c215", "hard_weight_174": 40, "llr_full_174": [ 4.145349, -1.067205, 0.253328, 1.259168, 0.564689, 4.16914, 2.085357, 1.534973, 0.005093, 1.0381, 2.218749, 3.45256, 0.510044, 1.640172, -0.679046, 4.421458, 0.03456, 3.045159, -0.546582, 3.470682, 2.74392, 3.383096, 3.489968, 3.137893, 0.001731, 3.300296, -0.998732, 3.187851, -1.279105, 0.289654, 4.123045, -2.000617, -0.303721, 4.07648, -2.58036, -0.918917, 0.304115, 3.066087, 2.689748, 0.355787, 2.402306, 3.419835, 3.019019, 2.334924, 3.086486, -1.42718, 0.844266, 2.148484, 1.914037, 3.254487, 2.955568, 1.044958, -1.36693, 0.271605, 2.548193, 3.466732, 3.285701, 0.301313, 0.384955, 0.41283, -1.076662, -1.05028, 0.565054, 4.166411, -0.99225, -2.856231, 4.168008, -1.778059, 0.7793, 1.487633, 1.457999, 3.447718, 0.584512, 1.052121, 1.508338, 3.56793, 1.033145, 3.398004, -0.230927, 0.966046, 1.8241, 0.457348, 2.454295, -1.882543, 3.474034, -2.703961, 2.165497, 3.452473, 2.192378, 0.172804, 3.352145, 0.656222, 3.422479, 2.201863, 1.07191, 2.920695, -1.202946, 1.160866, 4.168076, 0.351311, 0.322631, -0.859382, 0.604867, 3.666068, -1.913077, 0.777135, 3.433481, 2.319559, -2.750704, 3.470833, 2.926083, 2.427052, 1.631791, 1.730599, 1.562671, 2.658519, -0.027576, 2.877556, -1.317992, 2.351419, 3.391909, 2.568732, 0.050637, 3.200765, 2.824202, 0.516457, 0.070686, -1.726242, 4.16641, -2.4347, -0.246542, 4.180269, -1.339671, 0.009756, -1.593118, 2.436748, 4.098287, -1.622839, 3.152828, 0.77557, 3.332469, 2.037409, 3.442433, -2.612578, 0.724531, 0.516186, 3.964669, 0.695554, 0.789541, 0.316264, 3.467154, -0.827198, 0.355702, 3.476142, 3.666644, 0.708649, 0.27805, -0.555668, 0.042283, 0.334781, -0.562778, 4.167475, 2.723053, 0.774902, 2.756476, -0.048807, -0.745342, 1.313865, 3.083072, 1.465874, 1.575325, 3.435811, 2.726546, 2.051906 ], "llr_stats": { "count": 174, "avg_abs": 1.927169, "min_abs": 0.001731, "max_abs": 4.421458, "positive": 137, "negative": 37, "zero": 0 }, "rank_score": 107.708676 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000000000000000011000011010000001000101111000010011000011011000001000000010010010000000000000000000000010000000001000011001001011001000011011000001011000011000001001000000", "hard_bits_sha256_16": "ca523696fc2e0440", "hard_weight_174": 42, "llr_full_174": [ 4.145349, 3.437868, 3.076058, 4.180269, 3.482047, 3.463052, 4.168008, 3.468067, 3.444662, 4.168076, 3.458719, 3.4346, 4.07648, 3.383499, 3.389547, 2.756476, 2.060361, 2.174491, 2.955568, -1.591113, -1.253376, 2.658519, 0.56185, 0.31333, 3.045159, -1.847073, -1.011161, 0.789541, 0.174324, -0.107643, 2.454295, 1.419337, 1.217867, 3.352145, 1.901332, -1.786838, 3.300296, 1.619799, 1.476712, 0.27805, -0.196181, -0.355267, 0.384955, 0.155455, -0.048096, 3.200765, 1.790739, 1.289837, 1.0381, -0.578368, 0.827582, 3.332469, -1.961803, -1.29335, 3.56793, 2.711617, 2.732275, 2.319559, -0.955261, -0.79266, 3.019019, -2.418998, -2.684222, 2.726546, 0.246221, 0.165756, 0.844266, 0.005053, -0.002971, 2.427052, 0.760335, 0.690148, 1.640172, 0.29567, 0.274437, 0.724531, -0.352049, 0.576942, 0.966046, -0.389375, 0.336351, 2.920695, -1.212139, 0.899911, 4.123045, 2.833396, 1.4931, 4.167475, 3.462428, 3.42551, 4.166411, 3.458752, 3.411796, 4.16641, 3.465722, 3.427791, 4.16914, 3.412437, 3.245894, 4.098287, 3.125681, 1.545767, 3.447718, 0.04196, 0.034236, 3.666068, -1.021437, 0.743729, 2.689748, 0.507762, 0.448774, 3.083072, 2.133428, 1.118333, 2.548193, 1.711438, -0.459934, 2.351419, 0.988211, 0.73449, 3.383096, -2.736158, -2.840271, 0.355702, 0.298316, -2.186416, 2.165497, 1.469319, -1.497835, 2.192378, -1.370996, -1.28627, 3.137893, 2.364918, -2.095502, 3.666644, 0.505329, 0.346751, 3.285701, -2.59262, -2.560943, 2.568732, -0.215309, -0.033375, 1.534973, 0.95636, 0.930803, 3.152828, 0.275455, -0.0415, 1.052121, -0.432768, -0.417069, 0.777135, 0.312353, 0.07304, 2.402306, -1.69446, -1.847061, 1.575325, 0.530183, 0.620799, 1.914037, 1.527821, -1.576503, 1.730599, 0.990283, -0.932253, 4.421458, 0.602345, 0.410424, 3.964669, 3.053424, 2.814003 ], "llr_stats": { "count": 174, "avg_abs": 1.894503, "min_abs": 0.002971, "max_abs": 4.421458, "positive": 134, "negative": 40, "zero": 0 }, "rank_score": 107.578012 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001100000001000100001000001010100001100000100001001100001001100000000010000011100011000011001100001000010000010000000010000111000000000000010100000001000011000000001001001000", "hard_bits_sha256_16": "2663b8086b53d8ff", "hard_weight_174": 42, "llr_full_174": [ 4.145349, 4.167475, -0.048096, -1.28627, 0.56185, 0.507762, 0.844266, 0.777135, 3.4346, 3.245894, 2.711617, -0.215309, 3.352145, 3.383096, 0.576942, -1.576503, 4.168008, 4.16641, 0.827582, 0.346751, 0.174324, 1.711438, 1.640172, 1.575325, 2.174491, 0.034236, -2.418998, 0.275455, 0.27805, 2.165497, -1.212139, 0.602345, 4.180269, 4.166411, 1.289837, -2.095502, -1.847073, 2.133428, 2.427052, 2.402306, 3.389547, 1.545767, -0.955261, 0.95636, 3.300296, 0.355702, 0.336351, -0.932253, 4.168076, 4.16914, -1.29335, -2.560943, 1.419337, 0.988211, 0.724531, 1.914037, -1.253376, 0.743729, 0.246221, -0.432768, 0.384955, 2.192378, 2.833396, 3.053424, 3.076058, 3.42551, 1.790739, 2.364918, 3.045159, 3.083072, -0.002971, 0.07304, 3.383499, 3.125681, 2.319559, 1.534973, -1.786838, -2.840271, -0.389375, 0.990283, 3.444662, 3.427791, -1.961803, -2.59262, 2.454295, 2.351419, 0.274437, 0.620799, -1.591113, -1.021437, 2.726546, 1.052121, -0.355267, -1.497835, 4.123045, 3.964669, 3.463052, 3.411796, -0.578368, 0.505329, 0.789541, 2.548193, 0.690148, -1.847061, 2.060361, 0.04196, 3.019019, 3.152828, 1.476712, -2.186416, 2.920695, 4.421458, 3.458719, 3.412437, 3.56793, 2.568732, 1.217867, 0.73449, -0.352049, 1.527821, 2.658519, 2.689748, 0.165756, -0.417069, 0.155455, -1.370996, 1.4931, 2.814003, 3.437868, 3.462428, 3.200765, 3.137893, 0.31333, 0.448774, 0.005053, 0.312353, 4.07648, 4.098287, 2.732275, -0.033375, 1.901332, -2.736158, 0.966046, 1.730599, 3.468067, 3.465722, 3.332469, 3.285701, -0.107643, -0.459934, 0.29567, 0.530183, 2.955568, 3.666068, -2.684222, -0.0415, -0.196181, 1.469319, 0.899911, 0.410424, 3.482047, 3.458752, 1.0381, 3.666644, -1.011161, 1.118333, 0.760335, -1.69446, 2.756476, 3.447718, -0.79266, 0.930803, 1.619799, 0.298316 ], "llr_stats": { "count": 174, "avg_abs": 1.894503, "min_abs": 0.002971, "max_abs": 4.421458, "positive": 134, "negative": 40, "zero": 0 }, "rank_score": 107.578012 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "010000000000000000100000101010011011100100000100000010000010110011010000000000100001010000000000100001001000100000001010000000010110101001000001010000010000110010000110000000", "hard_bits_sha256_16": "cd7e0a7d331a9605", "hard_weight_174": 42, "llr_full_174": [ 4.145349, -1.497835, 0.246221, 1.217867, 0.530183, 4.16914, 2.060361, 1.534973, 0.336351, 1.0381, 2.133428, 3.444662, 0.505329, 1.640172, -0.196181, 4.421458, 0.034236, 3.045159, -0.417069, 3.462428, 2.732275, 3.383096, 3.482047, 3.137893, -0.002971, 3.300296, -1.576503, 3.125681, -1.253376, 0.275455, 4.123045, -1.961803, -0.459934, 4.07648, -2.560943, -0.352049, -0.048096, 3.053424, 2.689748, 0.174324, 2.402306, 3.411796, 3.019019, 0.298316, 3.076058, -1.370996, 0.844266, 1.901332, 1.914037, 3.245894, 2.955568, 0.930803, -1.212139, 0.827582, 2.548193, 3.458719, 3.285701, 0.274437, 0.384955, 0.410424, -1.021437, -1.011161, 0.312353, 4.166411, -0.955261, -2.840271, 4.168008, -2.095502, 0.760335, 1.476712, 0.990283, 3.447718, 0.56185, 1.052121, 1.4931, 3.56793, 0.988211, 3.389547, -0.215309, 0.966046, 1.790739, 0.448774, 2.454295, -1.847061, 3.465722, -2.684222, 2.165497, 3.437868, 2.192378, 0.165756, 3.352145, 0.620799, 3.412437, 2.174491, 0.95636, 2.920695, -0.578368, 1.118333, 4.168076, 0.346751, 0.29567, -0.355267, 0.602345, 3.666068, -1.847073, 0.777135, 3.42551, 2.319559, -2.736158, 3.463052, 2.364918, 2.427052, 1.619799, 1.730599, 1.545767, 2.658519, -0.0415, 2.833396, -1.29335, 2.351419, 3.383499, 2.568732, 0.576942, 3.200765, 2.814003, 0.507762, -0.107643, -1.69446, 4.16641, -2.418998, -2.186416, 4.180269, -1.28627, 0.005053, -1.786838, 1.527821, 4.098287, -1.591113, 3.152828, 0.899911, 3.332469, 1.711438, 3.4346, -2.59262, 0.724531, 0.155455, 3.964669, 0.743729, 0.789541, 0.07304, 3.458752, -0.79266, 0.355702, 3.468067, 3.666644, 0.690148, 0.27805, -0.932253, 0.04196, 0.31333, -0.432768, 4.167475, 2.711617, 0.73449, 2.756476, -0.033375, -0.389375, 1.289837, 3.083072, 1.419337, 1.575325, 3.427791, 2.726546, 1.469319 ], "llr_stats": { "count": 174, "avg_abs": 1.894503, "min_abs": 0.002971, "max_abs": 4.421458, "positive": 134, "negative": 40, "zero": 0 }, "rank_score": 107.578012 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000000000000000011000011101000110000010100000101011000011011000110000000101101101000000000000000000000101000000110000011110110011110000011011000110011000011000110110000000", "hard_bits_sha256_16": "11a8af0598c33a55", "hard_weight_174": 54, "llr_full_174": [ 3.511245, 3.086486, 3.452473, 4.14242, 3.470833, 3.489968, 4.12139, 3.45256, 3.476142, 4.11961, 3.442433, 3.466732, 4.08862, 3.398004, 3.391909, 3.003457, 2.201863, 2.085357, 1.978199, -1.279105, -1.622839, 1.080854, 0.334781, 0.584512, 1.333744, -1.05028, -1.913077, -0.473047, 0.070686, 0.355787, 1.942431, 1.259168, 1.465874, -2.926977, -1.593118, 2.148484, 2.678266, 1.487633, 1.631791, 0.507303, -0.859382, -0.679046, -0.118003, 0.304115, 0.516186, 1.87262, 1.313865, 1.8241, -1.599648, 0.271605, -1.202946, 1.748972, -1.317992, -2.000617, 3.617447, 2.74392, 2.723053, 1.719706, -0.827198, -0.99225, 3.575036, -2.703961, -2.4347, 1.361861, 0.172804, 0.253328, -0.477879, 0.001731, 0.009756, 2.023583, 0.708649, 0.7793, 1.473774, 0.301313, 0.322631, -1.264035, 0.050637, -0.918917, -0.820746, 0.005093, -0.745342, -1.732909, 0.77557, -1.36693, 1.694026, 1.508338, 2.877556, 4.094062, 3.433481, 3.470682, 4.073255, 3.419835, 3.467154, 4.091336, 3.435811, 3.474034, 3.8423, 3.254487, 3.422479, 1.677122, 1.562671, 3.187851, 2.01941, 0.03456, 0.042283, -1.807547, 0.695554, -1.076662, 2.065345, 0.457348, 0.516457, 1.346997, 1.160866, 2.218749, -0.571842, -0.303721, 2.037409, 1.499097, 0.774902, 1.033145, 3.593033, -2.856231, -2.750704, -3.635826, -0.246542, 2.334924, -2.226011, -1.067205, 2.051906, 1.999342, -1.339671, -1.42718, -2.621792, -1.778059, 2.926083, 1.582817, 0.351311, 0.510044, 3.223063, -2.58036, -2.612578, 0.268492, -0.048807, -0.230927, 1.48451, 1.044958, 1.07191, -0.280146, -0.027576, 0.289654, 1.008293, -0.546582, -0.562778, 0.17487, 0.316264, 0.565054, 2.750596, -1.882543, -1.726242, 2.006609, 0.656222, 0.564689, -1.988459, -0.998732, 2.436748, -1.598288, -0.555668, 1.457999, 1.642426, 0.41283, 0.604867, 3.449224, 2.824202, 3.066087 ], "llr_stats": { "count": 174, "avg_abs": 1.733097, "min_abs": 0.001731, "max_abs": 4.14242, "positive": 121, "negative": 53, "zero": 0 }, "rank_score": 106.932388 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000100100001101000100100001101000000100000100110001100111101100000010000000001010011000010000000000011010001001000000001000101000001001000011111000010000110111000101001001001", "hard_bits_sha256_16": "cf6690c1042ed612", "hard_weight_174": 54, "llr_full_174": [ 3.511245, 4.094062, 0.516186, -1.42718, 0.334781, 0.457348, -0.477879, 0.17487, 3.466732, 3.422479, 2.74392, -0.048807, -2.926977, 3.593033, -0.918917, 2.436748, 4.12139, 4.091336, -1.202946, 0.510044, 0.070686, -0.303721, 1.473774, 2.006609, 2.085357, 0.042283, -2.703961, -0.027576, 0.507303, -2.226011, 0.77557, 0.41283, 4.14242, 4.073255, 1.8241, 2.926083, -1.05028, 1.160866, 2.023583, 2.750596, 3.391909, 3.187851, -0.827198, 1.044958, 2.678266, -3.635826, -0.745342, 1.457999, 4.11961, 3.8423, -2.000617, -2.612578, 1.259168, 0.774902, -1.264035, -1.988459, -1.622839, -1.076662, 0.172804, -0.546582, -0.118003, 1.999342, 1.508338, 2.824202, 3.452473, 3.470682, 1.313865, -1.778059, 1.333744, 1.346997, 0.009756, 0.565054, 3.398004, 1.562671, 1.719706, 1.48451, 2.148484, -2.750704, 0.005093, -0.555668, 3.476142, 3.474034, -1.317992, -2.58036, 1.942431, 1.499097, 0.322631, 0.564689, -1.279105, 0.695554, 1.361861, 1.008293, -0.679046, 2.051906, 1.694026, 3.449224, 3.489968, 3.467154, 0.271605, 0.351311, -0.473047, -0.571842, 0.7793, -1.726242, 2.201863, 0.03456, 3.575036, -0.280146, 1.631791, 2.334924, -1.732909, 1.642426, 3.442433, 3.254487, 3.617447, 0.268492, 1.465874, 1.033145, 0.050637, -0.998732, 1.080854, 2.065345, 0.253328, -0.562778, 0.304115, -1.339671, 2.877556, 3.066087, 3.086486, 3.433481, 1.87262, -2.621792, 0.584512, 0.516457, 0.001731, 0.316264, 4.08862, 1.677122, 2.723053, -0.230927, -1.593118, -2.856231, -0.820746, -1.598288, 3.45256, 3.435811, 1.748972, 3.223063, 0.355787, 2.037409, 0.301313, 0.656222, 1.978199, -1.807547, -2.4347, 0.289654, -0.859382, -1.067205, -1.36693, 0.604867, 3.470833, 3.419835, -1.599648, 1.582817, -1.913077, 2.218749, 0.708649, -1.882543, 3.003457, 2.01941, -0.99225, 1.07191, 1.487633, -0.246542 ], "llr_stats": { "count": 174, "avg_abs": 1.733097, "min_abs": 0.001731, "max_abs": 4.14242, "positive": 121, "negative": 53, "zero": 0 }, "rank_score": 106.932388 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000001100001000100001000011010010000000010111100001100010010011000010000000110001011000100001000000011000101001000010001000110100110101110101100110011000000010000100000001", "hard_bits_sha256_16": "677c5f0295abfd3d", "hard_weight_174": 54, "llr_full_174": [ 3.511245, 2.051906, 0.172804, 1.465874, 0.656222, 3.8423, 2.201863, 1.48451, -0.745342, -1.599648, 1.160866, 3.476142, 0.351311, 1.473774, -0.859382, 1.642426, 0.042283, 1.333744, -0.562778, 3.433481, 2.723053, 3.593033, 3.470833, -2.621792, 0.009756, 2.678266, 2.436748, 1.562671, -1.622839, -0.027576, 1.694026, -1.317992, 2.037409, 4.08862, -2.612578, 0.050637, 0.516186, 2.824202, 2.065345, 0.070686, 2.750596, 3.467154, 3.575036, -0.246542, 3.452473, -1.339671, -0.477879, -1.593118, -1.988459, 3.422479, 1.978199, 1.07191, 0.77557, -1.202946, -0.571842, 3.442433, 3.223063, 0.322631, -0.118003, 0.604867, 0.695554, -1.913077, 0.316264, 4.073255, -0.827198, -2.750704, 4.12139, 2.926083, 0.708649, 1.631791, -0.555668, 2.01941, 0.334781, 1.008293, 2.877556, 3.617447, 0.774902, 3.391909, -0.048807, -0.820746, 1.313865, 0.516457, 1.942431, -1.726242, 3.435811, -2.4347, -2.226011, 3.086486, 1.999342, 0.253328, -2.926977, 0.564689, 3.254487, 2.085357, 1.044958, -1.732909, 0.271605, 2.218749, 4.11961, 0.510044, 0.301313, -0.679046, 0.41283, -1.807547, -1.05028, 0.17487, 3.470682, 1.719706, -2.856231, 3.489968, -1.778059, 2.023583, 1.487633, -1.598288, 3.187851, 1.080854, 0.289654, 1.508338, -2.000617, 1.499097, 3.398004, 0.268492, -0.918917, 1.87262, 3.066087, 0.457348, 0.355787, -1.882543, 4.091336, -2.703961, 2.334924, 4.14242, -1.42718, 0.001731, 2.148484, -0.998732, 1.677122, -1.279105, -0.280146, -1.36693, 1.748972, -0.303721, 3.466732, -2.58036, -1.264035, 0.304115, 3.449224, -1.076662, -0.473047, 0.565054, 3.419835, -0.99225, -3.635826, 3.45256, 1.582817, 0.7793, 0.507303, 1.457999, 0.03456, 0.584512, -0.546582, 4.094062, 2.74392, 1.033145, 3.003457, -0.230927, 0.005093, 1.8241, 1.346997, 1.259168, 2.006609, 3.474034, 1.361861, -1.067205 ], "llr_stats": { "count": 174, "avg_abs": 1.733097, "min_abs": 0.001731, "max_abs": 4.14242, "positive": 121, "negative": 53, "zero": 0 }, "rank_score": 106.932388 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000000000000000011000011101000110000010111000101011000011011000110000000101101101000000000000000000000101000000110000011110110011110000011011000110011000011000110110000000", "hard_bits_sha256_16": "59ffe501f1e043cb", "hard_weight_174": 56, "llr_full_174": [ 3.511245, 3.076058, 3.437868, 4.14242, 3.463052, 3.482047, 4.12139, 3.444662, 3.468067, 4.11961, 3.4346, 3.458719, 4.08862, 3.389547, 3.383499, 3.003457, 2.174491, 2.060361, 1.978199, -1.253376, -1.591113, 1.080854, 0.31333, 0.56185, 1.333744, -1.011161, -1.847073, -0.473047, -0.107643, 0.174324, 1.942431, 1.217867, 1.419337, -2.926977, -1.786838, 1.901332, 2.678266, 1.476712, 1.619799, 0.507303, -0.355267, -0.196181, -0.118003, -0.048096, 0.155455, 1.87262, 1.289837, 1.790739, -1.599648, 0.827582, -0.578368, 1.748972, -1.29335, -1.961803, 3.617447, 2.732275, 2.711617, 1.719706, -0.79266, -0.955261, 3.575036, -2.684222, -2.418998, 1.361861, 0.165756, 0.246221, -0.477879, -0.002971, 0.005053, 2.023583, 0.690148, 0.760335, 1.473774, 0.274437, 0.29567, -1.264035, 0.576942, -0.352049, -0.820746, 0.336351, -0.389375, -1.732909, 0.899911, -1.212139, 1.694026, 1.4931, 2.833396, 4.094062, 3.42551, 3.462428, 4.073255, 3.411796, 3.458752, 4.091336, 3.427791, 3.465722, 3.8423, 3.245894, 3.412437, 1.677122, 1.545767, 3.125681, 2.01941, 0.034236, 0.04196, -1.807547, 0.743729, -1.021437, 2.065345, 0.448774, 0.507762, 1.346997, 1.118333, 2.133428, -0.571842, -0.459934, 1.711438, 1.499097, 0.73449, 0.988211, 3.593033, -2.840271, -2.736158, -3.635826, -2.186416, 0.298316, -2.226011, -1.497835, 1.469319, 1.999342, -1.28627, -1.370996, -2.621792, -2.095502, 2.364918, 1.582817, 0.346751, 0.505329, 3.223063, -2.560943, -2.59262, 0.268492, -0.033375, -0.215309, 1.48451, 0.930803, 0.95636, -0.280146, -0.0415, 0.275455, 1.008293, -0.417069, -0.432768, 0.17487, 0.07304, 0.312353, 2.750596, -1.847061, -1.69446, 2.006609, 0.620799, 0.530183, -1.988459, -1.576503, 1.527821, -1.598288, -0.932253, 0.990283, 1.642426, 0.410424, 0.602345, 3.449224, 2.814003, 3.053424 ], "llr_stats": { "count": 174, "avg_abs": 1.700431, "min_abs": 0.002971, "max_abs": 4.14242, "positive": 118, "negative": 56, "zero": 0 }, "rank_score": 106.801724 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001100100001101000100100001101000000100000100110001100111101100000010000000001010011000010000000000011010001001000000001000111000001001000011111000010000110111000101001001001", "hard_bits_sha256_16": "ff8640fb5870e924", "hard_weight_174": 56, "llr_full_174": [ 3.511245, 4.094062, 0.155455, -1.370996, 0.31333, 0.448774, -0.477879, 0.17487, 3.458719, 3.412437, 2.732275, -0.033375, -2.926977, 3.593033, -0.352049, 1.527821, 4.12139, 4.091336, -0.578368, 0.505329, -0.107643, -0.459934, 1.473774, 2.006609, 2.060361, 0.04196, -2.684222, -0.0415, 0.507303, -2.226011, 0.899911, 0.410424, 4.14242, 4.073255, 1.790739, 2.364918, -1.011161, 1.118333, 2.023583, 2.750596, 3.383499, 3.125681, -0.79266, 0.930803, 2.678266, -3.635826, -0.389375, 0.990283, 4.11961, 3.8423, -1.961803, -2.59262, 1.217867, 0.73449, -1.264035, -1.988459, -1.591113, -1.021437, 0.165756, -0.417069, -0.118003, 1.999342, 1.4931, 2.814003, 3.437868, 3.462428, 1.289837, -2.095502, 1.333744, 1.346997, 0.005053, 0.312353, 3.389547, 1.545767, 1.719706, 1.48451, 1.901332, -2.736158, 0.336351, -0.932253, 3.468067, 3.465722, -1.29335, -2.560943, 1.942431, 1.499097, 0.29567, 0.530183, -1.253376, 0.743729, 1.361861, 1.008293, -0.196181, 1.469319, 1.694026, 3.449224, 3.482047, 3.458752, 0.827582, 0.346751, -0.473047, -0.571842, 0.760335, -1.69446, 2.174491, 0.034236, 3.575036, -0.280146, 1.619799, 0.298316, -1.732909, 1.642426, 3.4346, 3.245894, 3.617447, 0.268492, 1.419337, 0.988211, 0.576942, -1.576503, 1.080854, 2.065345, 0.246221, -0.432768, -0.048096, -1.28627, 2.833396, 3.053424, 3.076058, 3.42551, 1.87262, -2.621792, 0.56185, 0.507762, -0.002971, 0.07304, 4.08862, 1.677122, 2.711617, -0.215309, -1.786838, -2.840271, -0.820746, -1.598288, 3.444662, 3.427791, 1.748972, 3.223063, 0.174324, 1.711438, 0.274437, 0.620799, 1.978199, -1.807547, -2.418998, 0.275455, -0.355267, -1.497835, -1.212139, 0.602345, 3.463052, 3.411796, -1.599648, 1.582817, -1.847073, 2.133428, 0.690148, -1.847061, 3.003457, 2.01941, -0.955261, 0.95636, 1.476712, -2.186416 ], "llr_stats": { "count": 174, "avg_abs": 1.700431, "min_abs": 0.002971, "max_abs": 4.14242, "positive": 118, "negative": 56, "zero": 0 }, "rank_score": 106.801724 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 36 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000001100001000100001000011010010100000010111100001100010010011000010000000110001011000100001000000011000101001000010001000110100110101110101110110011000000010000100000001", "hard_bits_sha256_16": "bfb5977abc51e8a1", "hard_weight_174": 56, "llr_full_174": [ 3.511245, 1.469319, 0.165756, 1.419337, 0.620799, 3.8423, 2.174491, 1.48451, -0.389375, -1.599648, 1.118333, 3.468067, 0.346751, 1.473774, -0.355267, 1.642426, 0.04196, 1.333744, -0.432768, 3.42551, 2.711617, 3.593033, 3.463052, -2.621792, 0.005053, 2.678266, 1.527821, 1.545767, -1.591113, -0.0415, 1.694026, -1.29335, 1.711438, 4.08862, -2.59262, 0.576942, 0.155455, 2.814003, 2.065345, -0.107643, 2.750596, 3.458752, 3.575036, -2.186416, 3.437868, -1.28627, -0.477879, -1.786838, -1.988459, 3.412437, 1.978199, 0.95636, 0.899911, -0.578368, -0.571842, 3.4346, 3.223063, 0.29567, -0.118003, 0.602345, 0.743729, -1.847073, 0.07304, 4.073255, -0.79266, -2.736158, 4.12139, 2.364918, 0.690148, 1.619799, -0.932253, 2.01941, 0.31333, 1.008293, 2.833396, 3.617447, 0.73449, 3.383499, -0.033375, -0.820746, 1.289837, 0.507762, 1.942431, -1.69446, 3.427791, -2.418998, -2.226011, 3.076058, 1.999342, 0.246221, -2.926977, 0.530183, 3.245894, 2.060361, 0.930803, -1.732909, 0.827582, 2.133428, 4.11961, 0.505329, 0.274437, -0.196181, 0.410424, -1.807547, -1.011161, 0.17487, 3.462428, 1.719706, -2.840271, 3.482047, -2.095502, 2.023583, 1.476712, -1.598288, 3.125681, 1.080854, 0.275455, 1.4931, -1.961803, 1.499097, 3.389547, 0.268492, -0.352049, 1.87262, 3.053424, 0.448774, 0.174324, -1.847061, 4.091336, -2.684222, 0.298316, 4.14242, -1.370996, -0.002971, 1.901332, -1.576503, 1.677122, -1.253376, -0.280146, -1.212139, 1.748972, -0.459934, 3.458719, -2.560943, -1.264035, -0.048096, 3.449224, -1.021437, -0.473047, 0.312353, 3.411796, -0.955261, -3.635826, 3.444662, 1.582817, 0.760335, 0.507303, 0.990283, 0.034236, 0.56185, -0.417069, 4.094062, 2.732275, 0.988211, 3.003457, -0.215309, 0.336351, 1.790739, 1.346997, 1.217867, 2.006609, 3.465722, 1.361861, -1.497835 ], "llr_stats": { "count": 174, "avg_abs": 1.700431, "min_abs": 0.002971, "max_abs": 4.14242, "positive": 118, "negative": 56, "zero": 0 }, "rank_score": 106.801724 }, { "name": "lab_mask_xor_preview", "description": "Deterministic lab-only XOR mask preview; not the real JS8 whitening polynomial.", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100000110011010100101001101000010001101100010110111111000100101000110111100010101100100101100100100000010010001100011111000111111010010001111000011101101101111000011100011111", "hard_bits_sha256_16": "b1bb86c852f0f4ca", "hard_weight_174": 85, "llr_full_174": [ 4.145349, 4.116374, 3.511245, 4.180269, 4.169674, 4.14242, 4.168008, 4.153984, 4.12139, 4.168076, 4.135428, 4.11961, 4.07648, 4.076237, 4.08862, 2.756476, 2.742424, 3.003457, 2.955568, -1.875523, 1.978199, 2.658519, 0.652185, 1.080854, 3.045159, -2.198749, 1.333744, 0.789541, 0.471669, -0.473047, 2.454295, 1.837215, 1.942431, 3.352145, 2.163158, -2.926977, 3.300296, 1.818615, 2.678266, 0.27805, -1.765651, 0.507303, 0.384955, 0.866369, -0.118003, 3.200765, 2.063815, 1.87262, 1.0381, -1.355162, -1.599648, 3.332469, -2.249717, 1.748972, 3.56793, 3.262649, 3.617447, 2.319559, -1.211827, 1.719706, 3.019019, -3.210486, 3.575036, 2.726546, 0.281133, 1.361861, 0.844266, 0.012672, -0.477879, 2.427052, 0.927501, 2.023583, 1.640172, 0.441842, 1.473774, 0.724531, -1.103418, -1.264035, 0.966046, -0.916188, -0.820746, 2.920695, -1.395798, -1.732909, 4.123045, 3.154533, 1.694026, 4.167475, 4.14333, 4.094062, 4.166411, 4.137106, 4.073255, 4.16641, 4.1509, 4.091336, 4.16914, 4.045318, 3.8423, 4.098287, 3.599922, 1.677122, 3.447718, 0.044719, 2.01941, 3.666068, -1.085865, -1.807547, 2.689748, 0.585744, 2.065345, 3.083072, 2.617179, 1.346997, 2.548193, 2.264806, -0.571842, 2.351419, 1.247615, 1.499097, 3.383096, -3.47555, 3.593033, 0.355702, 2.45095, -3.635826, 2.165497, 2.132701, -2.226011, 2.192378, -1.921746, 1.999342, 3.137893, 2.980057, -2.621792, 3.666644, 0.533081, 1.582817, 3.285701, -3.283029, 3.223063, 2.568732, -0.251398, 0.268492, 1.534973, 1.692448, 1.48451, 3.152828, 0.300403, -0.280146, 1.052121, -0.948727, 1.008293, 0.777135, 0.891886, 0.17487, 2.402306, -2.356355, 2.750596, 1.575325, 0.833633, 2.006609, 1.914037, 2.633553, -1.988459, 1.730599, 1.570304, -1.598288, 4.421458, 0.617935, 1.642426, 3.964669, 3.566732, 3.449224 ], "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "rank_score": 101.195892 } ], "outputs": { "candidate_json": "/decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.json", "selected_bits_file": "/decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.bits" }, "decodes": [], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation.", "Step 36 locks candidate export to JS8-realistic timing and reuses the selected profile sync anchor for FEC symbol extraction where available.", "It still does not perform real LDPC/FEC decode or message unpack.", "Next step can tune real JS8/FT8 LDPC matrix/deinterleaver/message unpack against this anchored candidate contract." ], "next_action": "Run collect-logs and upload the JS8Lab bundle. If selected_variant.complete_174bit_candidate is true, proceed to LDPC/deinterleaver/message-unpack tuning." } [webftr-js8-lab] candidate-export exit_code=0 [webftr-js8-lab] candidate-export JSON: /decoders/js8_decoder/logs/20260527T033514Z_real_run_candidate_export_output.json [webftr-js8-lab] Step 36 LDPC probes reuse anchored candidate JSON: /decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.json ========== REAL-RUN STEP 7/10: TIMING / BOUNDARY SWEEP ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T033514Z_real_run_timing_boundary_sweep_output.json [webftr-js8-lab] JSON timeout guard: 90s { "ok": true, "mode": "JS8", "tool": "webftr-js8-timing-boundary-candidate-sweep", "tool_version": "step36-timing-boundary-candidate-sweep", "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "profile_scan_json": "/decoders/js8_decoder/logs/20260527T033514Z_real_run_profile_scan_output.json", "anchor_json": "/decoders/js8_decoder/logs/20260527T033514Z_real_run_auto_ldpc_probe_output.json", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step36_timing_boundary_syndrome_sweep_no_message_unpack", "anchor_selection": { "source": "profile_scan_json", "path": "/decoders/js8_decoder/logs/20260527T033514Z_real_run_profile_scan_output.json", "selection": "profile_scan_selected_profile", "nsps": 6400, "start_seconds": 4.8, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875 }, "sweep_grid": { "start_offsets_s": [ -0.36, -0.24, -0.12, 0.0, 0.12, 0.24, 0.36 ], "base_freq_offsets_hz": [ -2.0, 0.0, 2.0 ], "tone_spacing_offsets_hz": [ 0.0 ], "max_combinations": 21, "actual_combinations": 21 }, "decode_found": false, "best_final_syndrome_weight": 25, "best_candidate": { "combination_index": 21, "offsets": { "start_offset_s": 0.36, "base_freq_offset_hz": 2.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.16, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 61920, "start_seconds": 5.16, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:21" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 33, "llr_stats": { "count": 174, "avg_abs": 2.014762, "min_abs": 0.107688, "max_abs": 4.123238, "positive": 140, "negative": 34, "zero": 0 }, "source_rank_score": 108.059048, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "b77562fbffe40746", "codeword174_sha256_16": "52671d4b53d0963f" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 33, "llr_stats": { "count": 174, "avg_abs": 2.014762, "min_abs": 0.107688, "max_abs": 4.123238, "positive": 140, "negative": 34, "zero": 0 }, "source_rank_score": 108.059048, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "b77562fbffe40746", "codeword174_sha256_16": "52671d4b53d0963f" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 33, "llr_stats": { "count": 174, "avg_abs": 1.963551, "min_abs": 0.013238, "max_abs": 4.123238, "positive": 140, "negative": 34, "zero": 0 }, "source_rank_score": 107.854204, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "b77562fbffe40746", "codeword174_sha256_16": "52671d4b53d0963f" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 40, "llr_stats": { "count": 174, "avg_abs": 1.514423, "min_abs": 0.000556, "max_abs": 4.039481, "positive": 135, "negative": 39, "zero": 0 }, "source_rank_score": 106.057692, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "a4df3b03aa7ea8e7", "codeword174_sha256_16": "731f43802ba966c2" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 40, "llr_stats": { "count": 174, "avg_abs": 1.476366, "min_abs": 0.009537, "max_abs": 4.039481, "positive": 134, "negative": 40, "zero": 0 }, "source_rank_score": 105.905464, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "a4df3b03aa7ea8e7", "codeword174_sha256_16": "731f43802ba966c2" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 141, "llr_stats": { "count": 174, "avg_abs": 1.861558, "min_abs": 0.094608, "max_abs": 4.061809, "positive": 42, "negative": 132, "zero": 0 }, "source_rank_score": 111.446232, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "62bb3605b9d593cd", "codeword174_sha256_16": "2fa0886d87167654" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 141, "llr_stats": { "count": 174, "avg_abs": 1.810348, "min_abs": 0.013238, "max_abs": 4.046739, "positive": 42, "negative": 132, "zero": 0 }, "source_rank_score": 111.241392, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "62bb3605b9d593cd", "codeword174_sha256_16": "2fa0886d87167654" }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 141, "llr_stats": { "count": 174, "avg_abs": 2.014762, "min_abs": 0.107688, "max_abs": 4.123238, "positive": 34, "negative": 140, "zero": 0 }, "source_rank_score": 111.059048, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "62bb3605b9d593cd", "codeword174_sha256_16": "2fa0886d87167654" }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 141, "llr_stats": { "count": 174, "avg_abs": 1.963551, "min_abs": 0.013238, "max_abs": 4.123238, "positive": 34, "negative": 140, "zero": 0 }, "source_rank_score": 110.854204, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "62bb3605b9d593cd", "codeword174_sha256_16": "2fa0886d87167654" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, "top_candidates": [ { "combination_index": 21, "offsets": { "start_offset_s": 0.36, "base_freq_offset_hz": 2.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.16, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 61920, "start_seconds": 5.16, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:21" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 33, "llr_stats": { "count": 174, "avg_abs": 2.014762, "min_abs": 0.107688, "max_abs": 4.123238, "positive": 140, "negative": 34, "zero": 0 }, "source_rank_score": 108.059048, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "b77562fbffe40746", "codeword174_sha256_16": "52671d4b53d0963f" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 33, "llr_stats": { "count": 174, "avg_abs": 2.014762, "min_abs": 0.107688, "max_abs": 4.123238, "positive": 140, "negative": 34, "zero": 0 }, "source_rank_score": 108.059048, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "b77562fbffe40746", "codeword174_sha256_16": "52671d4b53d0963f" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 33, "llr_stats": { "count": 174, "avg_abs": 1.963551, "min_abs": 0.013238, "max_abs": 4.123238, "positive": 140, "negative": 34, "zero": 0 }, "source_rank_score": 107.854204, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "b77562fbffe40746", "codeword174_sha256_16": "52671d4b53d0963f" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 40, "llr_stats": { "count": 174, "avg_abs": 1.514423, "min_abs": 0.000556, "max_abs": 4.039481, "positive": 135, "negative": 39, "zero": 0 }, "source_rank_score": 106.057692, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "a4df3b03aa7ea8e7", "codeword174_sha256_16": "731f43802ba966c2" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 40, "llr_stats": { "count": 174, "avg_abs": 1.476366, "min_abs": 0.009537, "max_abs": 4.039481, "positive": 134, "negative": 40, "zero": 0 }, "source_rank_score": 105.905464, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "a4df3b03aa7ea8e7", "codeword174_sha256_16": "731f43802ba966c2" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 141, "llr_stats": { "count": 174, "avg_abs": 1.861558, "min_abs": 0.094608, "max_abs": 4.061809, "positive": 42, "negative": 132, "zero": 0 }, "source_rank_score": 111.446232, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "62bb3605b9d593cd", "codeword174_sha256_16": "2fa0886d87167654" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 141, "llr_stats": { "count": 174, "avg_abs": 1.810348, "min_abs": 0.013238, "max_abs": 4.046739, "positive": 42, "negative": 132, "zero": 0 }, "source_rank_score": 111.241392, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "62bb3605b9d593cd", "codeword174_sha256_16": "2fa0886d87167654" }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 141, "llr_stats": { "count": 174, "avg_abs": 2.014762, "min_abs": 0.107688, "max_abs": 4.123238, "positive": 34, "negative": 140, "zero": 0 }, "source_rank_score": 111.059048, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "62bb3605b9d593cd", "codeword174_sha256_16": "2fa0886d87167654" }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 141, "llr_stats": { "count": 174, "avg_abs": 1.963551, "min_abs": 0.013238, "max_abs": 4.123238, "positive": 34, "negative": 140, "zero": 0 }, "source_rank_score": 110.854204, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "62bb3605b9d593cd", "codeword174_sha256_16": "2fa0886d87167654" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 20, "offsets": { "start_offset_s": 0.36, "base_freq_offset_hz": -2.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.16, "base_freq_hz": 1023.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 61920, "start_seconds": 5.16, "base_freq_hz": 1023.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:20" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 131, "llr_stats": { "count": 174, "avg_abs": 2.068593, "min_abs": 0.04246, "max_abs": 4.539778, "positive": 42, "negative": 132, "zero": 0 }, "source_rank_score": 108.274372, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "42d75f2760da614b", "codeword174_sha256_16": "f23672f7201526c3" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 131, "llr_stats": { "count": 174, "avg_abs": 2.068593, "min_abs": 0.04246, "max_abs": 4.539778, "positive": 42, "negative": 132, "zero": 0 }, "source_rank_score": 108.274372, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "42d75f2760da614b", "codeword174_sha256_16": "f23672f7201526c3" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 131, "llr_stats": { "count": 174, "avg_abs": 2.02727, "min_abs": 0.010869, "max_abs": 4.539778, "positive": 43, "negative": 131, "zero": 0 }, "source_rank_score": 108.10908, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "42d75f2760da614b", "codeword174_sha256_16": "f23672f7201526c3" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 131, "llr_stats": { "count": 174, "avg_abs": 2.068593, "min_abs": 0.04246, "max_abs": 4.539778, "positive": 42, "negative": 132, "zero": 0 }, "source_rank_score": 108.274372, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "a80dc0e840650133", "codeword174_sha256_16": "15150f5b17833fb7" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 131, "llr_stats": { "count": 174, "avg_abs": 2.02727, "min_abs": 0.010869, "max_abs": 4.539778, "positive": 43, "negative": 131, "zero": 0 }, "source_rank_score": 108.10908, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "a80dc0e840650133", "codeword174_sha256_16": "15150f5b17833fb7" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 108, "llr_stats": { "count": 174, "avg_abs": 1.763007, "min_abs": 0.04246, "max_abs": 4.202135, "positive": 63, "negative": 111, "zero": 0 }, "source_rank_score": 107.052028, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "ed00fbf0ad2ceaef", "codeword174_sha256_16": "1c4acc67bfdd84db" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 108, "llr_stats": { "count": 174, "avg_abs": 1.721684, "min_abs": 0.010869, "max_abs": 4.202135, "positive": 64, "negative": 110, "zero": 0 }, "source_rank_score": 106.886736, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "ed00fbf0ad2ceaef", "codeword174_sha256_16": "1c4acc67bfdd84db" }, { "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+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 122, "llr_stats": { "count": 174, "avg_abs": 1.477894, "min_abs": 0.008806, "max_abs": 4.178922, "positive": 52, "negative": 122, "zero": 0 }, "source_rank_score": 105.911576, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "a11f0b5c8584e36a", "codeword174_sha256_16": "eb93c60fb218e981" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 122, "llr_stats": { "count": 174, "avg_abs": 1.443707, "min_abs": 0.005814, "max_abs": 4.178922, "positive": 51, "negative": 123, "zero": 0 }, "source_rank_score": 105.774828, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "a11f0b5c8584e36a", "codeword174_sha256_16": "eb93c60fb218e981" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 4, "offsets": { "start_offset_s": -0.12, "base_freq_offset_hz": 0.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 4.68, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 56160, "start_seconds": 4.68, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:4" }, "best_row": { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 47, "llr_stats": { "count": 174, "avg_abs": 1.717826, "min_abs": 0.006652, "max_abs": 4.177106, "positive": 128, "negative": 46, "zero": 0 }, "source_rank_score": 106.871304, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "2133a22c79771fa1", "codeword174_sha256_16": "dbfdacb7732c1b05" }, "top_rows": [ { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 47, "llr_stats": { "count": 174, "avg_abs": 1.717826, "min_abs": 0.006652, "max_abs": 4.177106, "positive": 128, "negative": 46, "zero": 0 }, "source_rank_score": 106.871304, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "2133a22c79771fa1", "codeword174_sha256_16": "dbfdacb7732c1b05" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 78, "llr_stats": { "count": 174, "avg_abs": 0.985594, "min_abs": 0.000398, "max_abs": 4.147499, "positive": 96, "negative": 78, "zero": 0 }, "source_rank_score": 103.942376, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "55575078087097c6", "codeword174_sha256_16": "99fdab089f91b3f3" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 115, "llr_stats": { "count": 174, "avg_abs": 1.281456, "min_abs": 0.000497, "max_abs": 4.17014, "positive": 58, "negative": 116, "zero": 0 }, "source_rank_score": 105.125824, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "8c5d0161031c2072", "codeword174_sha256_16": "d2b416fecdf6de0f" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 61, "llr_stats": { "count": 174, "avg_abs": 1.189368, "min_abs": 2.1e-05, "max_abs": 3.47997, "positive": 116, "negative": 58, "zero": 0 }, "source_rank_score": 104.757472, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "a2c5300e4b10e062", "codeword174_sha256_16": "334cf409927514b0" }, { "variant": "raw_msb_symbol_order", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 136, "llr_stats": { "count": 174, "avg_abs": 2.240602, "min_abs": 0.028638, "max_abs": 4.177106, "positive": 38, "negative": 136, "zero": 0 }, "source_rank_score": 126.962408, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "4ca1749440aecba2", "codeword174_sha256_16": "a4410c19374c3b9f" }, { "variant": "lsb_within_each_tone", "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 136, "llr_stats": { "count": 174, "avg_abs": 2.240602, "min_abs": 0.028638, "max_abs": 4.177106, "positive": 38, "negative": 136, "zero": 0 }, "source_rank_score": 118.962408, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "4ca1749440aecba2", "codeword174_sha256_16": "a4410c19374c3b9f" }, { "variant": "reverse_symbol_order", "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 38, "llr_stats": { "count": 174, "avg_abs": 2.240602, "min_abs": 0.028638, "max_abs": 4.177106, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 112.962408, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "a9812590b96aee02", "codeword174_sha256_16": "7c3920465b65bd9c" }, { "variant": "reverse_full_bitstream", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 38, "llr_stats": { "count": 174, "avg_abs": 2.240602, "min_abs": 0.028638, "max_abs": 4.177106, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 111.962408, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "a9812590b96aee02", "codeword174_sha256_16": "7c3920465b65bd9c" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 19, "offsets": { "start_offset_s": -0.36, "base_freq_offset_hz": 2.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 4.4399999999999995, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 53280, "start_seconds": 4.44, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:19" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 59, "llr_stats": { "count": 174, "avg_abs": 1.270128, "min_abs": 0.004979, "max_abs": 4.048161, "positive": 130, "negative": 44, "zero": 0 }, "source_rank_score": 105.080512, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "ba770538bbab4bdc", "codeword174_sha256_16": "d65c69bc7182051d" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 59, "llr_stats": { "count": 174, "avg_abs": 1.270128, "min_abs": 0.004979, "max_abs": 4.048161, "positive": 130, "negative": 44, "zero": 0 }, "source_rank_score": 105.080512, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "ba770538bbab4bdc", "codeword174_sha256_16": "d65c69bc7182051d" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 59, "llr_stats": { "count": 174, "avg_abs": 1.21513, "min_abs": 0.004848, "max_abs": 4.048161, "positive": 124, "negative": 50, "zero": 0 }, "source_rank_score": 104.86052, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "ba770538bbab4bdc", "codeword174_sha256_16": "d65c69bc7182051d" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 126, "llr_stats": { "count": 174, "avg_abs": 1.58822, "min_abs": 0.004391, "max_abs": 4.048161, "positive": 46, "negative": 128, "zero": 0 }, "source_rank_score": 106.35288, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "9b81c67184361316", "codeword174_sha256_16": "91a07916264497e2" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+no_interleaver", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 31, "llr_stats": { "count": 174, "avg_abs": 2.179758, "min_abs": 0.01066, "max_abs": 4.298935, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 108.719032, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "5925b8a09f0a651d", "codeword174_sha256_16": "4f01788b4e4a8373" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 143, "llr_stats": { "count": 174, "avg_abs": 2.179758, "min_abs": 0.01066, "max_abs": 4.298935, "positive": 30, "negative": 144, "zero": 0 }, "source_rank_score": 108.719032, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "de123599da8a2dd2", "codeword174_sha256_16": "99a3f954bc189f0d" }, { "variant": "raw_msb_symbol_order", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 31, "llr_stats": { "count": 174, "avg_abs": 2.179758, "min_abs": 0.01066, "max_abs": 4.298935, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 126.719032, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "c0d9f64afd4d7204", "codeword174_sha256_16": "e166d103cda18988" }, { "variant": "lsb_within_each_tone", "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 31, "llr_stats": { "count": 174, "avg_abs": 2.179758, "min_abs": 0.01066, "max_abs": 4.298935, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 118.719032, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "c0d9f64afd4d7204", "codeword174_sha256_16": "e166d103cda18988" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "raw_msb+no_interleaver", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 31, "llr_stats": { "count": 174, "avg_abs": 2.179758, "min_abs": 0.01066, "max_abs": 4.298935, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 108.719032, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "c0d9f64afd4d7204", "codeword174_sha256_16": "e166d103cda18988" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 10, "offsets": { "start_offset_s": -0.24, "base_freq_offset_hz": 0.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 4.56, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 54720, "start_seconds": 4.56, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:10" }, "best_row": { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 105, "llr_stats": { "count": 174, "avg_abs": 1.214701, "min_abs": 0.001911, "max_abs": 4.129378, "positive": 74, "negative": 100, "zero": 0 }, "source_rank_score": 104.858804, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "95bfba769a32aac5", "codeword174_sha256_16": "59a6d02bb65be636" }, "top_rows": [ { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 105, "llr_stats": { "count": 174, "avg_abs": 1.214701, "min_abs": 0.001911, "max_abs": 4.129378, "positive": 74, "negative": 100, "zero": 0 }, "source_rank_score": 104.858804, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "95bfba769a32aac5", "codeword174_sha256_16": "59a6d02bb65be636" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 38, "llr_stats": { "count": 174, "avg_abs": 1.763222, "min_abs": 0.002581, "max_abs": 4.174556, "positive": 142, "negative": 32, "zero": 0 }, "source_rank_score": 107.052888, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "7655f6eedd977cdc", "codeword174_sha256_16": "3029abc64d3111ed" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 38, "llr_stats": { "count": 174, "avg_abs": 1.724801, "min_abs": 0.001029, "max_abs": 4.174556, "positive": 137, "negative": 37, "zero": 0 }, "source_rank_score": 106.899204, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "7655f6eedd977cdc", "codeword174_sha256_16": "3029abc64d3111ed" }, { "variant": "reverse_symbol_order", "transform": "raw_msb+no_interleaver", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 37, "llr_stats": { "count": 174, "avg_abs": 2.315851, "min_abs": 0.019945, "max_abs": 4.174556, "positive": 137, "negative": 37, "zero": 0 }, "source_rank_score": 113.263404, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "538c91f1f501ae46", "codeword174_sha256_16": "33529348f3e87094" }, { "variant": "reverse_full_bitstream", "transform": "lsb_within_each_tone+no_interleaver", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 37, "llr_stats": { "count": 174, "avg_abs": 2.315851, "min_abs": 0.019945, "max_abs": 4.174556, "positive": 137, "negative": 37, "zero": 0 }, "source_rank_score": 112.263404, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "538c91f1f501ae46", "codeword174_sha256_16": "33529348f3e87094" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 105, "llr_stats": { "count": 174, "avg_abs": 1.270435, "min_abs": 0.001911, "max_abs": 3.456134, "positive": 68, "negative": 106, "zero": 0 }, "source_rank_score": 105.08174, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "70d51e3d23c2a0a2", "codeword174_sha256_16": "4709530e204f9b96" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 52, "llr_stats": { "count": 174, "avg_abs": 1.978328, "min_abs": 0.01153, "max_abs": 4.174556, "positive": 124, "negative": 50, "zero": 0 }, "source_rank_score": 107.913312, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "322b5f50d7de1b6e", "codeword174_sha256_16": "9e9b8986bc113250" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 118, "llr_stats": { "count": 174, "avg_abs": 1.93126, "min_abs": 0.001911, "max_abs": 4.174556, "positive": 56, "negative": 118, "zero": 0 }, "source_rank_score": 107.72504, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "ffec6f824352d01a", "codeword174_sha256_16": "abe5b94cadeee99e" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 6, "offsets": { "start_offset_s": -0.12, "base_freq_offset_hz": -2.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 4.68, "base_freq_hz": 1023.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 56160, "start_seconds": 4.68, "base_freq_hz": 1023.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:6" }, "best_row": { "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 56, "llr_stats": { "count": 174, "avg_abs": 1.762791, "min_abs": 0.007355, "max_abs": 4.170276, "positive": 124, "negative": 50, "zero": 0 }, "source_rank_score": 107.051164, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "b83b0bd1585c7502", "codeword174_sha256_16": "9c6cb651f3b295b9" }, "top_rows": [ { "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 56, "llr_stats": { "count": 174, "avg_abs": 1.762791, "min_abs": 0.007355, "max_abs": 4.170276, "positive": 124, "negative": 50, "zero": 0 }, "source_rank_score": 107.051164, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "b83b0bd1585c7502", "codeword174_sha256_16": "9c6cb651f3b295b9" }, { "variant": "lab_mask_xor_preview", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 94, "llr_stats": { "count": 174, "avg_abs": 2.359056, "min_abs": 0.035666, "max_abs": 4.755126, "positive": 134, "negative": 40, "zero": 0 }, "source_rank_score": 101.436224, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "7f7517e6063fa902", "codeword174_sha256_16": "c94c711ab36fce1c" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 68, "llr_stats": { "count": 174, "avg_abs": 2.035223, "min_abs": 0.016462, "max_abs": 4.755126, "positive": 134, "negative": 40, "zero": 0 }, "source_rank_score": 112.140892, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "d2c7522aab35cd7e", "codeword174_sha256_16": "46923d4bec19842e" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 66, "llr_stats": { "count": 174, "avg_abs": 1.990808, "min_abs": 0.009704, "max_abs": 4.755126, "positive": 139, "negative": 35, "zero": 0 }, "source_rank_score": 111.963232, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "d2c7522aab35cd7e", "codeword174_sha256_16": "ff5ded2b016a8f5d" }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 68, "llr_stats": { "count": 174, "avg_abs": 1.735868, "min_abs": 0.016462, "max_abs": 4.153445, "positive": 108, "negative": 66, "zero": 0 }, "source_rank_score": 109.943472, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "d2c7522aab35cd7e", "codeword174_sha256_16": "46923d4bec19842e" }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 66, "llr_stats": { "count": 174, "avg_abs": 1.691453, "min_abs": 0.009704, "max_abs": 4.149002, "positive": 113, "negative": 61, "zero": 0 }, "source_rank_score": 109.765812, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "d2c7522aab35cd7e", "codeword174_sha256_16": "ff5ded2b016a8f5d" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 130, "llr_stats": { "count": 174, "avg_abs": 1.861164, "min_abs": 0.002542, "max_abs": 4.755126, "positive": 38, "negative": 136, "zero": 0 }, "source_rank_score": 107.444656, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "5c787525f9c9ffad", "codeword174_sha256_16": "fa867c5e90c87cd3" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 106, "llr_stats": { "count": 174, "avg_abs": 1.735868, "min_abs": 0.016462, "max_abs": 4.153445, "positive": 66, "negative": 108, "zero": 0 }, "source_rank_score": 106.943472, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "8c0e40d2316dd9bc", "codeword174_sha256_16": "059a5fea8f8f24c8" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 12, "offsets": { "start_offset_s": -0.24, "base_freq_offset_hz": -2.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 4.56, "base_freq_hz": 1023.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 54720, "start_seconds": 4.56, "base_freq_hz": 1023.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:12" }, "best_row": { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 66, "llr_stats": { "count": 174, "avg_abs": 1.319401, "min_abs": 0.001905, "max_abs": 4.099659, "positive": 109, "negative": 65, "zero": 0 }, "source_rank_score": 105.277604, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "0a595810f7aa8110", "codeword174_sha256_16": "e1bfa9542afb970f" }, "top_rows": [ { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 66, "llr_stats": { "count": 174, "avg_abs": 1.319401, "min_abs": 0.001905, "max_abs": 4.099659, "positive": 109, "negative": 65, "zero": 0 }, "source_rank_score": 105.277604, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "0a595810f7aa8110", "codeword174_sha256_16": "e1bfa9542afb970f" }, { "variant": "lab_mask_xor_preview", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 76, "llr_stats": { "count": 174, "avg_abs": 2.165866, "min_abs": 0.004283, "max_abs": 4.379134, "positive": 36, "negative": 138, "zero": 0 }, "source_rank_score": 100.663464, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "67eb665933879e96", "codeword174_sha256_16": "d79fb5e17ca62608" }, { "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 139, "llr_stats": { "count": 174, "avg_abs": 2.504845, "min_abs": 0.01489, "max_abs": 4.379134, "positive": 34, "negative": 140, "zero": 0 }, "source_rank_score": 110.01938, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "3748d4aa3dd00351", "codeword174_sha256_16": "88d09c98e73e2064" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 127, "llr_stats": { "count": 174, "avg_abs": 1.902952, "min_abs": 0.003833, "max_abs": 4.379134, "positive": 46, "negative": 128, "zero": 0 }, "source_rank_score": 107.611808, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "de210a8538fb6d23", "codeword174_sha256_16": "d436dc01f87a22f4" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 45, "llr_stats": { "count": 174, "avg_abs": 1.549603, "min_abs": 0.001906, "max_abs": 4.118467, "positive": 123, "negative": 51, "zero": 0 }, "source_rank_score": 106.198412, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "f537ab92ddb26e97", "codeword174_sha256_16": "522253a40eb0b347" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 115, "llr_stats": { "count": 174, "avg_abs": 1.46156, "min_abs": 0.001121, "max_abs": 3.456405, "positive": 61, "negative": 113, "zero": 0 }, "source_rank_score": 105.84624, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "a9c6b0563fe15e84", "codeword174_sha256_16": "cd20db39238b1f55" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 97, "llr_stats": { "count": 174, "avg_abs": 1.256916, "min_abs": 0.001679, "max_abs": 4.118467, "positive": 74, "negative": 100, "zero": 0 }, "source_rank_score": 105.027664, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "fcbef645aa99b7e4", "codeword174_sha256_16": "c7ef9ff926776b70" }, { "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 126, "llr_stats": { "count": 174, "avg_abs": 1.896403, "min_abs": 0.01489, "max_abs": 4.262673, "positive": 47, "negative": 127, "zero": 0 }, "source_rank_score": 107.585612, "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "f0a1a0c946283d09", "codeword174_sha256_16": "a7db92c1c589382d" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 17, "offsets": { "start_offset_s": 0.36, "base_freq_offset_hz": 0.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.16, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 61920, "start_seconds": 5.16, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:17" }, "best_row": { "variant": "lab_mask_xor_preview", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 84, "llr_stats": { "count": 174, "avg_abs": 1.882017, "min_abs": 0.000991, "max_abs": 4.150443, "positive": 68, "negative": 106, "zero": 0 }, "source_rank_score": 99.528068, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "9465185c6b896977", "codeword174_sha256_16": "1f3caba3487af76b" }, "top_rows": [ { "variant": "lab_mask_xor_preview", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 84, "llr_stats": { "count": 174, "avg_abs": 1.882017, "min_abs": 0.000991, "max_abs": 4.150443, "positive": 68, "negative": 106, "zero": 0 }, "source_rank_score": 99.528068, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "9465185c6b896977", "codeword174_sha256_16": "1f3caba3487af76b" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 127, "llr_stats": { "count": 174, "avg_abs": 2.108052, "min_abs": 0.02432, "max_abs": 4.17825, "positive": 45, "negative": 129, "zero": 0 }, "source_rank_score": 108.432208, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "adf1ce5ccc1beb92", "codeword174_sha256_16": "11d03d60641ed1a6" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 77, "llr_stats": { "count": 174, "avg_abs": 1.363262, "min_abs": 0.003641, "max_abs": 4.077091, "positive": 98, "negative": 76, "zero": 0 }, "source_rank_score": 105.453048, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "6223e27bf1aca77e", "codeword174_sha256_16": "dea7272dea94e2eb" }, { "variant": "raw_msb_symbol_order", "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 39, "llr_stats": { "count": 174, "avg_abs": 2.468865, "min_abs": 0.00735, "max_abs": 4.17825, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 127.87546, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "5dc82da7e676583f", "codeword174_sha256_16": "89a89ba327a0b13a" }, { "variant": "lsb_within_each_tone", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 39, "llr_stats": { "count": 174, "avg_abs": 2.468865, "min_abs": 0.00735, "max_abs": 4.17825, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 119.87546, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "5dc82da7e676583f", "codeword174_sha256_16": "89a89ba327a0b13a" }, { "variant": "mapped_lsb_within_each_tone+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 39, "llr_stats": { "count": 174, "avg_abs": 2.468865, "min_abs": 0.00735, "max_abs": 4.17825, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 109.87546, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "5dc82da7e676583f", "codeword174_sha256_16": "89a89ba327a0b13a" }, { "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "raw_msb+no_interleaver", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 39, "llr_stats": { "count": 174, "avg_abs": 2.468865, "min_abs": 0.00735, "max_abs": 4.17825, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 109.87546, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "5dc82da7e676583f", "codeword174_sha256_16": "89a89ba327a0b13a" }, { "variant": "mapped_raw_msb+no_interleaver", "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 39, "llr_stats": { "count": 174, "avg_abs": 2.468865, "min_abs": 0.00735, "max_abs": 4.17825, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 109.87546, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "5dc82da7e676583f", "codeword174_sha256_16": "89a89ba327a0b13a" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 11, "offsets": { "start_offset_s": 0.24, "base_freq_offset_hz": 0.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.04, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 60480, "start_seconds": 5.04, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:11" }, "best_row": { "variant": "raw_msb_symbol_order", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 123, "llr_stats": { "count": 174, "avg_abs": 1.990773, "min_abs": 0.027342, "max_abs": 4.174556, "positive": 54, "negative": 120, "zero": 0 }, "source_rank_score": 125.963092, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "986b7b319136fe80", "codeword174_sha256_16": "d1b7b4f4bd24244a" }, "top_rows": [ { "variant": "raw_msb_symbol_order", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 123, "llr_stats": { "count": 174, "avg_abs": 1.990773, "min_abs": 0.027342, "max_abs": 4.174556, "positive": 54, "negative": 120, "zero": 0 }, "source_rank_score": 125.963092, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "986b7b319136fe80", "codeword174_sha256_16": "d1b7b4f4bd24244a" }, { "variant": "lsb_within_each_tone", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 123, "llr_stats": { "count": 174, "avg_abs": 1.86692, "min_abs": 0.012132, "max_abs": 4.155694, "positive": 64, "negative": 110, "zero": 0 }, "source_rank_score": 117.46768, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "986b7b319136fe80", "codeword174_sha256_16": "d1b7b4f4bd24244a" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "raw_msb+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 123, "llr_stats": { "count": 174, "avg_abs": 1.990773, "min_abs": 0.027342, "max_abs": 4.174556, "positive": 54, "negative": 120, "zero": 0 }, "source_rank_score": 107.963092, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "986b7b319136fe80", "codeword174_sha256_16": "d1b7b4f4bd24244a" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 123, "llr_stats": { "count": 174, "avg_abs": 1.990773, "min_abs": 0.027342, "max_abs": 4.174556, "positive": 54, "negative": 120, "zero": 0 }, "source_rank_score": 107.963092, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "986b7b319136fe80", "codeword174_sha256_16": "d1b7b4f4bd24244a" }, { "variant": "mapped_lsb_within_each_tone+no_interleaver", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 123, "llr_stats": { "count": 174, "avg_abs": 1.990773, "min_abs": 0.027342, "max_abs": 4.174556, "positive": 54, "negative": 120, "zero": 0 }, "source_rank_score": 107.963092, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "986b7b319136fe80", "codeword174_sha256_16": "d1b7b4f4bd24244a" }, { "variant": "mapped_raw_msb+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 123, "llr_stats": { "count": 174, "avg_abs": 1.990773, "min_abs": 0.027342, "max_abs": 4.174556, "positive": 54, "negative": 120, "zero": 0 }, "source_rank_score": 107.963092, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "986b7b319136fe80", "codeword174_sha256_16": "d1b7b4f4bd24244a" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 39, "llr_stats": { "count": 174, "avg_abs": 1.689113, "min_abs": 6e-06, "max_abs": 4.174556, "positive": 134, "negative": 40, "zero": 0 }, "source_rank_score": 106.756452, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "29a8f0f862213419", "codeword174_sha256_16": "0fac222e404ca090" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 131, "llr_stats": { "count": 174, "avg_abs": 1.531124, "min_abs": 0.001179, "max_abs": 4.155694, "positive": 51, "negative": 123, "zero": 0 }, "source_rank_score": 106.124496, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "143c60ed37309835", "codeword174_sha256_16": "5f1f8d3a98e2f84f" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 14, "offsets": { "start_offset_s": 0.24, "base_freq_offset_hz": -2.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.04, "base_freq_hz": 1023.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 60480, "start_seconds": 5.04, "base_freq_hz": 1023.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:14" }, "best_row": { "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 139, "llr_stats": { "count": 174, "avg_abs": 2.146734, "min_abs": 0.005464, "max_abs": 4.179595, "positive": 35, "negative": 139, "zero": 0 }, "source_rank_score": 108.586936, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "52cd8b8f4cab2c9f", "codeword174_sha256_16": "1ea81f8f1eb1ada1" }, "top_rows": [ { "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 139, "llr_stats": { "count": 174, "avg_abs": 2.146734, "min_abs": 0.005464, "max_abs": 4.179595, "positive": 35, "negative": 139, "zero": 0 }, "source_rank_score": 108.586936, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "52cd8b8f4cab2c9f", "codeword174_sha256_16": "1ea81f8f1eb1ada1" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 137, "llr_stats": { "count": 174, "avg_abs": 2.132218, "min_abs": 0.015805, "max_abs": 4.207381, "positive": 37, "negative": 137, "zero": 0 }, "source_rank_score": 108.528872, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "f8a0090e81f599e2", "codeword174_sha256_16": "5037cab94c8e4d27" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 143, "llr_stats": { "count": 174, "avg_abs": 2.33319, "min_abs": 0.015802, "max_abs": 4.207381, "positive": 30, "negative": 144, "zero": 0 }, "source_rank_score": 109.33276, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "e90d1e7b6b44d3c0", "codeword174_sha256_16": "6ecce9237cb7d8ac" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 143, "llr_stats": { "count": 174, "avg_abs": 2.291874, "min_abs": 0.003125, "max_abs": 4.207381, "positive": 29, "negative": 145, "zero": 0 }, "source_rank_score": 109.167496, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "e90d1e7b6b44d3c0", "codeword174_sha256_16": "6ecce9237cb7d8ac" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 31, "llr_stats": { "count": 174, "avg_abs": 2.174978, "min_abs": 0.028715, "max_abs": 4.177174, "positive": 141, "negative": 33, "zero": 0 }, "source_rank_score": 108.699912, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "045a478d8afce2b5", "codeword174_sha256_16": "90769477af29eb4b" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 143, "llr_stats": { "count": 174, "avg_abs": 2.174978, "min_abs": 0.028715, "max_abs": 4.177174, "positive": 33, "negative": 141, "zero": 0 }, "source_rank_score": 108.699912, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "1b1eb0492c98d156", "codeword174_sha256_16": "e1406082b68b43f6" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 117, "llr_stats": { "count": 174, "avg_abs": 1.567675, "min_abs": 0.00328, "max_abs": 4.15083, "positive": 60, "negative": 114, "zero": 0 }, "source_rank_score": 106.2707, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "881560ac19810b07", "codeword174_sha256_16": "ac35c0e8c2ece543" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 117, "llr_stats": { "count": 174, "avg_abs": 1.552439, "min_abs": 0.002749, "max_abs": 4.114855, "positive": 57, "negative": 117, "zero": 0 }, "source_rank_score": 106.209756, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "881560ac19810b07", "codeword174_sha256_16": "ac35c0e8c2ece543" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 9, "offsets": { "start_offset_s": 0.12, "base_freq_offset_hz": 2.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 4.92, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 59040, "start_seconds": 4.92, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:9" }, "best_row": { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 125, "llr_stats": { "count": 174, "avg_abs": 1.956401, "min_abs": 0.018809, "max_abs": 4.06635, "positive": 48, "negative": 126, "zero": 0 }, "source_rank_score": 107.825604, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "bf03e3162238b0d8", "codeword174_sha256_16": "6365329de472029f" }, "top_rows": [ { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 125, "llr_stats": { "count": 174, "avg_abs": 1.956401, "min_abs": 0.018809, "max_abs": 4.06635, "positive": 48, "negative": 126, "zero": 0 }, "source_rank_score": 107.825604, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "bf03e3162238b0d8", "codeword174_sha256_16": "6365329de472029f" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 48, "llr_stats": { "count": 174, "avg_abs": 1.852523, "min_abs": 0.042696, "max_abs": 4.06635, "positive": 129, "negative": 45, "zero": 0 }, "source_rank_score": 107.410092, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "b4a413745f871d90", "codeword174_sha256_16": "19fd7514963a674a" }, { "variant": "raw_msb_symbol_order", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 101, "llr_stats": { "count": 174, "avg_abs": 1.881764, "min_abs": 0.017122, "max_abs": 4.06635, "positive": 70, "negative": 104, "zero": 0 }, "source_rank_score": 125.527056, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "572002aaccb9fa25", "codeword174_sha256_16": "569fd6bd5b9ac121" }, { "variant": "raw_msb_symbol_order", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 101, "llr_stats": { "count": 174, "avg_abs": 1.820825, "min_abs": 0.015237, "max_abs": 4.06635, "positive": 71, "negative": 103, "zero": 0 }, "source_rank_score": 125.2833, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "572002aaccb9fa25", "codeword174_sha256_16": "569fd6bd5b9ac121" }, { "variant": "lsb_within_each_tone", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 101, "llr_stats": { "count": 174, "avg_abs": 2.117947, "min_abs": 0.017122, "max_abs": 4.116056, "positive": 45, "negative": 129, "zero": 0 }, "source_rank_score": 118.471788, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "572002aaccb9fa25", "codeword174_sha256_16": "569fd6bd5b9ac121" }, { "variant": "lsb_within_each_tone", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 101, "llr_stats": { "count": 174, "avg_abs": 2.057008, "min_abs": 0.015237, "max_abs": 4.116056, "positive": 46, "negative": 128, "zero": 0 }, "source_rank_score": 118.228032, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "572002aaccb9fa25", "codeword174_sha256_16": "569fd6bd5b9ac121" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 101, "llr_stats": { "count": 174, "avg_abs": 2.117947, "min_abs": 0.017122, "max_abs": 4.116056, "positive": 45, "negative": 129, "zero": 0 }, "source_rank_score": 112.471788, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "35944828f557ab0f", "codeword174_sha256_16": "852eb0fd597419c2" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 101, "llr_stats": { "count": 174, "avg_abs": 2.057008, "min_abs": 0.015237, "max_abs": 4.116056, "positive": 46, "negative": 128, "zero": 0 }, "source_rank_score": 112.228032, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "35944828f557ab0f", "codeword174_sha256_16": "852eb0fd597419c2" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 13, "offsets": { "start_offset_s": -0.24, "base_freq_offset_hz": 2.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 4.56, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 54720, "start_seconds": 4.56, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step36_timing_boundary_sweep:13" }, "best_row": { "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 127, "llr_stats": { "count": 174, "avg_abs": 1.839567, "min_abs": 0.014051, "max_abs": 4.067802, "positive": 46, "negative": 128, "zero": 0 }, "source_rank_score": 107.358268, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "3765a659a1f04728", "codeword174_sha256_16": "11b38d92bec46c61" }, "top_rows": [ { "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 127, "llr_stats": { "count": 174, "avg_abs": 1.839567, "min_abs": 0.014051, "max_abs": 4.067802, "positive": 46, "negative": 128, "zero": 0 }, "source_rank_score": 107.358268, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "3765a659a1f04728", "codeword174_sha256_16": "11b38d92bec46c61" }, { "variant": "lab_mask_xor_preview", "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 99, "llr_stats": { "count": 174, "avg_abs": 2.412891, "min_abs": 0.040786, "max_abs": 4.067802, "positive": 139, "negative": 35, "zero": 0 }, "source_rank_score": 101.651564, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "9584126aebdac73f", "codeword174_sha256_16": "ae36a52c0c63fe54" }, { "variant": "raw_msb_symbol_order", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 41, "llr_stats": { "count": 174, "avg_abs": 2.06524, "min_abs": 0.031381, "max_abs": 4.067802, "positive": 131, "negative": 43, "zero": 0 }, "source_rank_score": 126.26096, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "c8d1fa217a5eaa70", "codeword174_sha256_16": "f290920de9b0c2db" }, { "variant": "raw_msb_symbol_order", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 41, "llr_stats": { "count": 174, "avg_abs": 2.004445, "min_abs": 0.012061, "max_abs": 4.067802, "positive": 133, "negative": 41, "zero": 0 }, "source_rank_score": 126.01778, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "c8d1fa217a5eaa70", "codeword174_sha256_16": "f290920de9b0c2db" }, { "variant": "lsb_within_each_tone", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 41, "llr_stats": { "count": 174, "avg_abs": 1.859295, "min_abs": 0.031381, "max_abs": 3.963522, "positive": 116, "negative": 58, "zero": 0 }, "source_rank_score": 117.43718, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "c8d1fa217a5eaa70", "codeword174_sha256_16": "f290920de9b0c2db" }, { "variant": "lsb_within_each_tone", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 41, "llr_stats": { "count": 174, "avg_abs": 1.7985, "min_abs": 0.012061, "max_abs": 3.963522, "positive": 118, "negative": 56, "zero": 0 }, "source_rank_score": 117.194, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "c8d1fa217a5eaa70", "codeword174_sha256_16": "f290920de9b0c2db" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 41, "llr_stats": { "count": 174, "avg_abs": 2.06524, "min_abs": 0.031381, "max_abs": 4.067802, "positive": 131, "negative": 43, "zero": 0 }, "source_rank_score": 108.26096, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "c8d1fa217a5eaa70", "codeword174_sha256_16": "f290920de9b0c2db" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 41, "llr_stats": { "count": 174, "avg_abs": 2.06524, "min_abs": 0.031381, "max_abs": 4.067802, "positive": 131, "negative": 43, "zero": 0 }, "source_rank_score": 108.26096, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "c8d1fa217a5eaa70", "codeword174_sha256_16": "f290920de9b0c2db" } ], "warnings": [ "Step 36 JS8 Costas guard uses leading-only Costas exclusion by default to preserve 58 data symbols / 174 soft bits on JS8Lab windows; full FT8 middle/trailing exclusion remains diagnostic-only.", "Step 36 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 36 prepares LDPC/FEC input candidates and an LDPC probe harness only; it does not yet run final real JS8 LDPC decode or unpack text.", "Step 36 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] } ], "outputs": { "timing_boundary_sweep_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step36_timing_boundary_sweep.json" }, "decodes": [], "warnings": [ "Step 36 is a bounded RX-only timing/boundary sweep around the selected profile/Auto-LDPC anchor.", "No JS8 text unpack or CRC validation is performed yet.", "No valid LDPC codeword found is a diagnostic warning, not a hard command failure." ], "next_action": "If best_final_syndrome_weight is still far from 0, tune Costas/data-symbol boundary, interleaver order, bit polarity or LLR scaling around the best_candidate offsets." } [webftr-js8-lab] timing-boundary-sweep exit_code=0 [webftr-js8-lab] timing-boundary-sweep JSON: /decoders/js8_decoder/logs/20260527T033514Z_real_run_timing_boundary_sweep_output.json ========== REAL-RUN STEP 8/10: 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/20260527T034331Z_ldpc-matrix-probe.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T034331Z_ldpc-matrix-probe_manifest.json [webftr-js8-lab] utc=20260527T034331Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T034331Z_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": "step36-timing-boundary-candidate-sweep", "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": "step36_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, "symbol_duration_seconds": 0.533333, "tone_spacing_hz": 1.875, "note": "0.533 s timing guard candidate", "ok": true, "sync": { "start_seconds": 4.8, "base_freq_hz": 1025.0, "candidate_score": 47.4, "costas_hits": 2, "avg_margin_db": 8.01, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 103, "data_symbol_count_estimate": 58, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "complete_ldpc_input_candidate_estimate": true }, "rank_score": 225.085 }, "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/step36_ldpc_matrix_probe.json" }, "warnings": [ "Step 36 keeps the Step 36 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/20260527T034331Z_ldpc-matrix-probe.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T034331Z_ldpc-matrix-probe_manifest.json [webftr-js8-lab] ldpc-matrix-probe exit_code=0 ========== REAL-RUN STEP 9/10: 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/20260527T034334Z_ldpc-soft-decode.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T034334Z_ldpc-soft-decode_manifest.json [webftr-js8-lab] utc=20260527T034334Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T034334Z_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": "step36-timing-boundary-candidate-sweep", "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": "step36_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, "symbol_duration_seconds": 0.533333, "tone_spacing_hz": 1.875, "note": "0.533 s timing guard candidate", "ok": true, "sync": { "start_seconds": 4.8, "base_freq_hz": 1025.0, "candidate_score": 47.4, "costas_hits": 2, "avg_margin_db": 8.01, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 103, "data_symbol_count_estimate": 58, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "complete_ldpc_input_candidate_estimate": true }, "rank_score": 225.085 }, "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/step36_ldpc_soft_decode.json" }, "warnings": [ "Step 36 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/20260527T034334Z_ldpc-soft-decode.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T034334Z_ldpc-soft-decode_manifest.json [webftr-js8-lab] ldpc-soft-decode exit_code=0 ========== REAL-RUN STEP 10/10: 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_20260527T033514Z.zip [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260527T033514Z_real-run.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T033514Z_real-run_manifest.json [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260527T033514Z_server-deep-run.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T033514Z_server-deep-run_manifest.json