[webftr-js8-lab] command=real-run [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260527T035634Z_real-run.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T035634Z_real-run_manifest.json [webftr-js8-lab] utc=20260527T035634Z [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/20260527T035634Z_input-check.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T035634Z_input-check_manifest.json [webftr-js8-lab] utc=20260527T035634Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T035634Z_input_check_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-input-check", "tool_version": "step37-timing-best-candidate-softdecode", "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/20260527T035634Z_input-check.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T035634Z_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/20260527T035634Z_real_run_quick_prefilter_output.json [webftr-js8-lab] JSON timeout guard: 60s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260527T035634Z_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": "step37-timing-best-candidate-softdecode", "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 37." } [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/20260527T035634Z_real_run_dirty_window_scan_output.json [webftr-js8-lab] JSON timeout guard: 60s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260527T035634Z_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/20260527T035634Z_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 37 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 37: 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/20260527T035634Z_real_run_profile_scan_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "mode": "JS8", "tool": "webftr-js8-profile-scan", "tool_version": "step37-timing-best-candidate-softdecode", "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": "step37_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 37 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/20260527T035634Z_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/20260527T035913Z_frame-recover.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T035913Z_frame-recover_manifest.json [webftr-js8-lab] utc=20260527T035913Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T035913Z_frame_recover_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-frame-recover", "tool_version": "step37-timing-best-candidate-softdecode", "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": "step37_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": "step37-timing-best-candidate-softdecode", "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": "step37_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 37 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 37 selects the best timing/profile candidate only. It still does not decode final JS8 text.", "Step 37 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/20260527T035913Z_frame-recover.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T035913Z_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/20260527T035634Z_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": "step37-timing-best-candidate-softdecode", "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": "step37_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": "step37-timing-best-candidate-softdecode", "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": "step37_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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 selects the best timing/profile candidate only. It still does not decode final JS8 text.", "No JS8 text decode is expected in Step 37. 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 37. 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 37 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 37 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 37 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 37 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 37. 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/20260527T035634Z_real_run_auto_ldpc_probe_output.json ========== REAL-RUN STEP 6/9: CANDIDATE EXPORT ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T035634Z_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": "step37-timing-best-candidate-softdecode", "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": "step37_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/20260527T035634Z_real_run_profile_scan_output.json", "anchor_json": "/decoders/js8_decoder/logs/20260527T035634Z_real_run_auto_ldpc_probe_output.json", "anchor_selection": { "source": "profile_scan_json", "path": "/decoders/js8_decoder/logs/20260527T035634Z_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/20260527T035634Z_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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 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 37 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/20260527T035634Z_real_run_candidate_export_output.json [webftr-js8-lab] Step 37 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/20260527T035634Z_real_run_timing_boundary_sweep_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-timing-boundary-candidate-sweep", "tool_version": "step37-timing-best-candidate-softdecode", "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "profile_scan_json": "/decoders/js8_decoder/logs/20260527T035634Z_real_run_profile_scan_output.json", "anchor_json": "/decoders/js8_decoder/logs/20260527T035634Z_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": "step37_timing_boundary_syndrome_sweep_no_message_unpack", "anchor_selection": { "source": "profile_scan_json", "path": "/decoders/js8_decoder/logs/20260527T035634Z_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.24, 0.36, 0.48, 0.6, 0.72, 0.84 ], "base_freq_offsets_hz": [ 2.0, 3.0, 4.0, 5.0, 6.0 ], "tone_spacing_offsets_hz": [ 0.0 ], "max_combinations": 30, "actual_combinations": 30 }, "decode_found": false, "best_final_syndrome_weight": 24, "best_candidate": { "combination_index": 3, "offsets": { "start_offset_s": 0.24, "base_freq_offset_hz": 4.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.04, "base_freq_hz": 1029.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": 1029.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step37_timing_boundary_sweep:3" }, "best_row": { "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": 32, "llr_stats": { "count": 174, "avg_abs": 1.783717, "min_abs": 0.004438, "max_abs": 4.061714, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 107.134868, "syndrome_weight": 24, "valid_codeword_hard_decision": false, "message91_sha256_16": "400988287db337c2", "codeword174_sha256_16": "e737ddc1f2cfd29b" }, "top_rows": [ { "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": 32, "llr_stats": { "count": 174, "avg_abs": 1.783717, "min_abs": 0.004438, "max_abs": 4.061714, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 107.134868, "syndrome_weight": 24, "valid_codeword_hard_decision": false, "message91_sha256_16": "400988287db337c2", "codeword174_sha256_16": "e737ddc1f2cfd29b" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 60, "llr_stats": { "count": 174, "avg_abs": 1.045493, "min_abs": 0.001144, "max_abs": 3.190566, "positive": 117, "negative": 57, "zero": 0 }, "source_rank_score": 104.181972, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "b419e71920db3585", "codeword174_sha256_16": "8bccbb10bbbf4d88" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "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": 34, "llr_stats": { "count": 174, "avg_abs": 1.814251, "min_abs": 0.001652, "max_abs": 4.061714, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 107.257004, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "94f535c19abe8e97", "codeword174_sha256_16": "e050196dd1284fb0" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_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": 50, "llr_stats": { "count": 174, "avg_abs": 1.080621, "min_abs": 2.6e-05, "max_abs": 3.170302, "positive": 126, "negative": 48, "zero": 0 }, "source_rank_score": 104.322484, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "ef548b254868b745", "codeword174_sha256_16": "3d5161b1e316b16f" }, { "variant": "lab_mask_xor_preview", "transform": "raw_msb+no_interleaver", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 90, "llr_stats": { "count": 174, "avg_abs": 2.187161, "min_abs": 0.036806, "max_abs": 4.061714, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 100.748644, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "2d887c7972af6374", "codeword174_sha256_16": "e3a96fe6ad757407" }, { "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": 119, "llr_stats": { "count": 174, "avg_abs": 1.645352, "min_abs": 0.003492, "max_abs": 3.929378, "positive": 51, "negative": 123, "zero": 0 }, "source_rank_score": 106.581408, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "ad56c1db43052c18", "codeword174_sha256_16": "16aeb541b9fcee47" }, { "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", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 53, "llr_stats": { "count": 174, "avg_abs": 1.635183, "min_abs": 0.01965, "max_abs": 4.061714, "positive": 123, "negative": 51, "zero": 0 }, "source_rank_score": 106.540732, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "6a8d5bcbf434d857", "codeword174_sha256_16": "e5ec524c8f7f0cb9" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+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": 133, "llr_stats": { "count": 174, "avg_abs": 1.606337, "min_abs": 0.004599, "max_abs": 4.061714, "positive": 35, "negative": 139, "zero": 0 }, "source_rank_score": 106.425348, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "9c5c8e131830f6a9", "codeword174_sha256_16": "a799925e0e4517b4" } ], "warnings": [ "Step 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 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": 3, "offsets": { "start_offset_s": 0.24, "base_freq_offset_hz": 4.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.04, "base_freq_hz": 1029.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": 1029.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step37_timing_boundary_sweep:3" }, "best_row": { "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": 32, "llr_stats": { "count": 174, "avg_abs": 1.783717, "min_abs": 0.004438, "max_abs": 4.061714, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 107.134868, "syndrome_weight": 24, "valid_codeword_hard_decision": false, "message91_sha256_16": "400988287db337c2", "codeword174_sha256_16": "e737ddc1f2cfd29b" }, "top_rows": [ { "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": 32, "llr_stats": { "count": 174, "avg_abs": 1.783717, "min_abs": 0.004438, "max_abs": 4.061714, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 107.134868, "syndrome_weight": 24, "valid_codeword_hard_decision": false, "message91_sha256_16": "400988287db337c2", "codeword174_sha256_16": "e737ddc1f2cfd29b" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 60, "llr_stats": { "count": 174, "avg_abs": 1.045493, "min_abs": 0.001144, "max_abs": 3.190566, "positive": 117, "negative": 57, "zero": 0 }, "source_rank_score": 104.181972, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "b419e71920db3585", "codeword174_sha256_16": "8bccbb10bbbf4d88" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "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": 34, "llr_stats": { "count": 174, "avg_abs": 1.814251, "min_abs": 0.001652, "max_abs": 4.061714, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 107.257004, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "94f535c19abe8e97", "codeword174_sha256_16": "e050196dd1284fb0" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_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": 50, "llr_stats": { "count": 174, "avg_abs": 1.080621, "min_abs": 2.6e-05, "max_abs": 3.170302, "positive": 126, "negative": 48, "zero": 0 }, "source_rank_score": 104.322484, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "ef548b254868b745", "codeword174_sha256_16": "3d5161b1e316b16f" }, { "variant": "lab_mask_xor_preview", "transform": "raw_msb+no_interleaver", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 90, "llr_stats": { "count": 174, "avg_abs": 2.187161, "min_abs": 0.036806, "max_abs": 4.061714, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 100.748644, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "2d887c7972af6374", "codeword174_sha256_16": "e3a96fe6ad757407" }, { "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": 119, "llr_stats": { "count": 174, "avg_abs": 1.645352, "min_abs": 0.003492, "max_abs": 3.929378, "positive": 51, "negative": 123, "zero": 0 }, "source_rank_score": 106.581408, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "ad56c1db43052c18", "codeword174_sha256_16": "16aeb541b9fcee47" }, { "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", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 53, "llr_stats": { "count": 174, "avg_abs": 1.635183, "min_abs": 0.01965, "max_abs": 4.061714, "positive": 123, "negative": 51, "zero": 0 }, "source_rank_score": 106.540732, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "6a8d5bcbf434d857", "codeword174_sha256_16": "e5ec524c8f7f0cb9" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+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": 133, "llr_stats": { "count": 174, "avg_abs": 1.606337, "min_abs": 0.004599, "max_abs": 4.061714, "positive": 35, "negative": 139, "zero": 0 }, "source_rank_score": 106.425348, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "9c5c8e131830f6a9", "codeword174_sha256_16": "a799925e0e4517b4" } ], "warnings": [ "Step 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 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.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": "step37_timing_boundary_sweep:6" }, "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 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 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.48, "base_freq_offset_hz": 4.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.279999999999999, "base_freq_hz": 1029.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": 63360, "start_seconds": 5.28, "base_freq_hz": 1029.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step37_timing_boundary_sweep:13" }, "best_row": { "variant": "raw_msb_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": 130, "llr_stats": { "count": 174, "avg_abs": 1.337379, "min_abs": 0.001091, "max_abs": 3.985843, "positive": 35, "negative": 139, "zero": 0 }, "source_rank_score": 123.349516, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "6b9d3da0c42ad063", "codeword174_sha256_16": "155181154e8e8431" }, "top_rows": [ { "variant": "raw_msb_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": 130, "llr_stats": { "count": 174, "avg_abs": 1.337379, "min_abs": 0.001091, "max_abs": 3.985843, "positive": 35, "negative": 139, "zero": 0 }, "source_rank_score": 123.349516, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "6b9d3da0c42ad063", "codeword174_sha256_16": "155181154e8e8431" }, { "variant": "lsb_within_each_tone", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 130, "llr_stats": { "count": 174, "avg_abs": 1.643299, "min_abs": 0.001091, "max_abs": 4.355766, "positive": 24, "negative": 150, "zero": 0 }, "source_rank_score": 116.573196, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "6b9d3da0c42ad063", "codeword174_sha256_16": "155181154e8e8431" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "raw_msb+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 130, "llr_stats": { "count": 174, "avg_abs": 1.337379, "min_abs": 0.001091, "max_abs": 3.985843, "positive": 35, "negative": 139, "zero": 0 }, "source_rank_score": 105.349516, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "6b9d3da0c42ad063", "codeword174_sha256_16": "155181154e8e8431" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "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": 130, "llr_stats": { "count": 174, "avg_abs": 1.337379, "min_abs": 0.001091, "max_abs": 3.985843, "positive": 35, "negative": 139, "zero": 0 }, "source_rank_score": 105.349516, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "6b9d3da0c42ad063", "codeword174_sha256_16": "155181154e8e8431" }, { "variant": "mapped_lsb_within_each_tone+no_interleaver", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 130, "llr_stats": { "count": 174, "avg_abs": 1.337379, "min_abs": 0.001091, "max_abs": 3.985843, "positive": 35, "negative": 139, "zero": 0 }, "source_rank_score": 105.349516, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "6b9d3da0c42ad063", "codeword174_sha256_16": "155181154e8e8431" }, { "variant": "mapped_raw_msb+no_interleaver", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 130, "llr_stats": { "count": 174, "avg_abs": 1.337379, "min_abs": 0.001091, "max_abs": 3.985843, "positive": 35, "negative": 139, "zero": 0 }, "source_rank_score": 105.349516, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "6b9d3da0c42ad063", "codeword174_sha256_16": "155181154e8e8431" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 43, "llr_stats": { "count": 174, "avg_abs": 1.215547, "min_abs": 0.001496, "max_abs": 3.843423, "positive": 135, "negative": 39, "zero": 0 }, "source_rank_score": 104.862188, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "bf02d9f7f0faffc7", "codeword174_sha256_16": "72b3f8a61ed635bd" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "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": 144, "llr_stats": { "count": 174, "avg_abs": 1.982319, "min_abs": 0.028012, "max_abs": 4.355766, "positive": 28, "negative": 146, "zero": 0 }, "source_rank_score": 107.929276, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "9b90b2ba76e1e6df", "codeword174_sha256_16": "49224bf9726aa67c" } ], "warnings": [ "Step 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 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": 27, "offsets": { "start_offset_s": 0.84, "base_freq_offset_hz": 3.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.64, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 67680, "start_seconds": 5.64, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step37_timing_boundary_sweep:27" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 52, "llr_stats": { "count": 174, "avg_abs": 1.74199, "min_abs": 0.019203, "max_abs": 4.093505, "positive": 125, "negative": 49, "zero": 0 }, "source_rank_score": 106.96796, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "e18e3ca8448db477", "codeword174_sha256_16": "77bf49e19e3af101" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 52, "llr_stats": { "count": 174, "avg_abs": 1.74199, "min_abs": 0.019203, "max_abs": 4.093505, "positive": 125, "negative": 49, "zero": 0 }, "source_rank_score": 106.96796, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "e18e3ca8448db477", "codeword174_sha256_16": "77bf49e19e3af101" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 54, "llr_stats": { "count": 174, "avg_abs": 1.689704, "min_abs": 0.000968, "max_abs": 4.093505, "positive": 119, "negative": 55, "zero": 0 }, "source_rank_score": 106.758816, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "e18e3ca8448db477", "codeword174_sha256_16": "4da6436e9fd7eefb" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 114, "llr_stats": { "count": 174, "avg_abs": 1.159102, "min_abs": 0.000968, "max_abs": 4.06647, "positive": 61, "negative": 113, "zero": 0 }, "source_rank_score": 104.636408, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "261372a8692ebab6", "codeword174_sha256_16": "8fe43878b0c78364" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 33, "llr_stats": { "count": 174, "avg_abs": 1.859562, "min_abs": 0.000968, "max_abs": 3.942365, "positive": 140, "negative": 34, "zero": 0 }, "source_rank_score": 107.438248, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "6a3e0dde96128128", "codeword174_sha256_16": "195e9e5557198399" }, { "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": 141, "llr_stats": { "count": 174, "avg_abs": 1.859561, "min_abs": 0.000968, "max_abs": 3.942365, "positive": 34, "negative": 140, "zero": 0 }, "source_rank_score": 107.438244, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "ad9dabf0d729237f", "codeword174_sha256_16": "0a6a283e2f5a6c55" }, { "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "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": 47, "llr_stats": { "count": 174, "avg_abs": 1.646495, "min_abs": 0.007705, "max_abs": 4.093505, "positive": 124, "negative": 50, "zero": 0 }, "source_rank_score": 106.58598, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "c650027902edfed2", "codeword174_sha256_16": "70428a6b66c2170b" }, { "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+no_interleaver", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 30, "llr_stats": { "count": 174, "avg_abs": 2.272637, "min_abs": 0.01281, "max_abs": 4.093505, "positive": 142, "negative": 32, "zero": 0 }, "source_rank_score": 109.090548, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "86a83de50fbfd87d", "codeword174_sha256_16": "a5a957cd80c670ef" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 60, "llr_stats": { "count": 174, "avg_abs": 1.25004, "min_abs": 0.002028, "max_abs": 3.818918, "positive": 114, "negative": 60, "zero": 0 }, "source_rank_score": 105.00016, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "10a16fa04b89b6d8", "codeword174_sha256_16": "463b6b9598020284" } ], "warnings": [ "Step 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 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": 21, "offsets": { "start_offset_s": 0.72, "base_freq_offset_hz": 2.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.52, "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": 66240, "start_seconds": 5.52, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step37_timing_boundary_sweep:21" }, "best_row": { "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": 36, "llr_stats": { "count": 174, "avg_abs": 1.595615, "min_abs": 2e-06, "max_abs": 4.132977, "positive": 139, "negative": 35, "zero": 0 }, "source_rank_score": 106.38246, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "b56247f5d839233c", "codeword174_sha256_16": "1b1188bd5d65df53" }, "top_rows": [ { "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": 36, "llr_stats": { "count": 174, "avg_abs": 1.595615, "min_abs": 2e-06, "max_abs": 4.132977, "positive": 139, "negative": 35, "zero": 0 }, "source_rank_score": 106.38246, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "b56247f5d839233c", "codeword174_sha256_16": "1b1188bd5d65df53" }, { "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": 37, "llr_stats": { "count": 174, "avg_abs": 1.703806, "min_abs": 0.00085, "max_abs": 4.132977, "positive": 141, "negative": 33, "zero": 0 }, "source_rank_score": 106.815224, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "b56247f5d839233c", "codeword174_sha256_16": "952e982908166032" }, { "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": 37, "llr_stats": { "count": 174, "avg_abs": 1.644979, "min_abs": 0.000412, "max_abs": 4.132977, "positive": 143, "negative": 31, "zero": 0 }, "source_rank_score": 106.579916, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "b56247f5d839233c", "codeword174_sha256_16": "952e982908166032" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 38, "llr_stats": { "count": 174, "avg_abs": 1.628012, "min_abs": 0.001176, "max_abs": 4.132977, "positive": 140, "negative": 34, "zero": 0 }, "source_rank_score": 106.512048, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "b56247f5d839233c", "codeword174_sha256_16": "4b6a471e3213accb" }, { "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": 111, "llr_stats": { "count": 174, "avg_abs": 1.25811, "min_abs": 0.001176, "max_abs": 3.154569, "positive": 60, "negative": 114, "zero": 0 }, "source_rank_score": 105.03244, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "fc0187310f0afe33", "codeword174_sha256_16": "d0ccd1bf812200b9" }, { "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "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": 126, "llr_stats": { "count": 174, "avg_abs": 1.721357, "min_abs": 0.003171, "max_abs": 4.132977, "positive": 47, "negative": 127, "zero": 0 }, "source_rank_score": 106.885428, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "668bc0fbffbad57a", "codeword174_sha256_16": "42592b229a8b3b87" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 66, "llr_stats": { "count": 174, "avg_abs": 1.215703, "min_abs": 0.001225, "max_abs": 3.717259, "positive": 112, "negative": 62, "zero": 0 }, "source_rank_score": 104.862812, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "5c18868bcb455c8d", "codeword174_sha256_16": "1af6f5ae7d396f13" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_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": 104, "llr_stats": { "count": 174, "avg_abs": 1.117768, "min_abs": 0.006264, "max_abs": 3.717259, "positive": 65, "negative": 109, "zero": 0 }, "source_rank_score": 104.471072, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "0abcf67785d0c092", "codeword174_sha256_16": "31220aa3360cf1d6" } ], "warnings": [ "Step 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 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.48, "base_freq_offset_hz": 3.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.279999999999999, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 63360, "start_seconds": 5.28, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step37_timing_boundary_sweep:12" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 40, "llr_stats": { "count": 174, "avg_abs": 1.204412, "min_abs": 0.000227, "max_abs": 3.767671, "positive": 137, "negative": 37, "zero": 0 }, "source_rank_score": 104.817648, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "2e5d22cbd1cd718a", "codeword174_sha256_16": "f874967d98fa427f" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 40, "llr_stats": { "count": 174, "avg_abs": 1.204412, "min_abs": 0.000227, "max_abs": 3.767671, "positive": 137, "negative": 37, "zero": 0 }, "source_rank_score": 104.817648, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "2e5d22cbd1cd718a", "codeword174_sha256_16": "f874967d98fa427f" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 41, "llr_stats": { "count": 174, "avg_abs": 1.196453, "min_abs": 2e-06, "max_abs": 3.767671, "positive": 137, "negative": 37, "zero": 0 }, "source_rank_score": 104.785812, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "2e5d22cbd1cd718a", "codeword174_sha256_16": "5c793302e646ee17" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "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": 132, "llr_stats": { "count": 174, "avg_abs": 1.594482, "min_abs": 0.000324, "max_abs": 3.767671, "positive": 39, "negative": 135, "zero": 0 }, "source_rank_score": 106.377928, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "21f8a0f7fa749a28", "codeword174_sha256_16": "207b9da8d3d55952" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 42, "llr_stats": { "count": 174, "avg_abs": 1.8392, "min_abs": 0.000324, "max_abs": 4.150246, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 111.3568, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "3a1d11c20f26a49e", "codeword174_sha256_16": "73db19d93367172c" }, { "variant": "reverse_full_bitstream", "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": 42, "llr_stats": { "count": 174, "avg_abs": 1.594482, "min_abs": 0.000324, "max_abs": 3.767671, "positive": 135, "negative": 39, "zero": 0 }, "source_rank_score": 109.377928, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "3a1d11c20f26a49e", "codeword174_sha256_16": "73db19d93367172c" }, { "variant": "mapped_lsb_within_each_tone+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": 27, "llr_stats": { "count": 174, "avg_abs": 2.220369, "min_abs": 0.009342, "max_abs": 4.150246, "positive": 149, "negative": 25, "zero": 0 }, "source_rank_score": 108.881476, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "09546fc886e5ffaf", "codeword174_sha256_16": "0c84883d8ca3f350" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 49, "llr_stats": { "count": 174, "avg_abs": 1.175159, "min_abs": 0.000215, "max_abs": 3.993971, "positive": 128, "negative": 46, "zero": 0 }, "source_rank_score": 104.700636, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "086db735521feb5b", "codeword174_sha256_16": "9f1aa5f2aa243355" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 36, "llr_stats": { "count": 174, "avg_abs": 1.714649, "min_abs": 0.015184, "max_abs": 3.875722, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 106.858596, "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "52a6293e44720dde", "codeword174_sha256_16": "951c2bf0d6a702b6" } ], "warnings": [ "Step 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 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.36, "base_freq_offset_hz": 6.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.16, "base_freq_hz": 1031.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": 1031.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step37_timing_boundary_sweep:10" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 104, "llr_stats": { "count": 174, "avg_abs": 0.958361, "min_abs": 7.1e-05, "max_abs": 4.000238, "positive": 64, "negative": 110, "zero": 0 }, "source_rank_score": 103.833444, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "dd8d0c1a2fe76800", "codeword174_sha256_16": "5c18e421e69e1518" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 104, "llr_stats": { "count": 174, "avg_abs": 0.958361, "min_abs": 7.1e-05, "max_abs": 4.000238, "positive": 64, "negative": 110, "zero": 0 }, "source_rank_score": 103.833444, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "dd8d0c1a2fe76800", "codeword174_sha256_16": "5c18e421e69e1518" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 76, "llr_stats": { "count": 174, "avg_abs": 0.877949, "min_abs": 1.1e-05, "max_abs": 3.774078, "positive": 96, "negative": 78, "zero": 0 }, "source_rank_score": 103.511796, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "590cfa08afeff722", "codeword174_sha256_16": "9ee9a55b58951fa8" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_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": 101, "llr_stats": { "count": 174, "avg_abs": 1.180614, "min_abs": 7.9e-05, "max_abs": 3.822017, "positive": 72, "negative": 102, "zero": 0 }, "source_rank_score": 104.722456, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "d50b3a7b36865068", "codeword174_sha256_16": "3a0e5d7f6b979113" }, { "variant": "reverse_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": 128, "llr_stats": { "count": 174, "avg_abs": 1.831041, "min_abs": 0.001072, "max_abs": 4.000238, "positive": 45, "negative": 129, "zero": 0 }, "source_rank_score": 111.324164, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "cd3a5844ecbfb64c", "codeword174_sha256_16": "b7569394324444f4" }, { "variant": "reverse_symbol_order", "transform": "raw_msb+no_interleaver", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 46, "llr_stats": { "count": 174, "avg_abs": 1.831041, "min_abs": 0.001072, "max_abs": 4.000238, "positive": 129, "negative": 45, "zero": 0 }, "source_rank_score": 111.324164, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "98562575066874e1", "codeword174_sha256_16": "9172d9df5194386b" }, { "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": 46, "llr_stats": { "count": 174, "avg_abs": 1.831041, "min_abs": 0.001072, "max_abs": 4.000238, "positive": 129, "negative": 45, "zero": 0 }, "source_rank_score": 110.324164, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "98562575066874e1", "codeword174_sha256_16": "9172d9df5194386b" }, { "variant": "reverse_full_bitstream", "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": 128, "llr_stats": { "count": 174, "avg_abs": 1.831041, "min_abs": 0.001072, "max_abs": 4.000238, "positive": 45, "negative": 129, "zero": 0 }, "source_rank_score": 110.324164, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "cd3a5844ecbfb64c", "codeword174_sha256_16": "b7569394324444f4" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 46, "llr_stats": { "count": 174, "avg_abs": 1.831041, "min_abs": 0.001072, "max_abs": 4.000238, "positive": 129, "negative": 45, "zero": 0 }, "source_rank_score": 107.324164, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "a0085229b6c78ebd", "codeword174_sha256_16": "ac267048c2750dfc" } ], "warnings": [ "Step 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 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": 30, "offsets": { "start_offset_s": 0.84, "base_freq_offset_hz": 6.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.64, "base_freq_hz": 1031.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": 67680, "start_seconds": 5.64, "base_freq_hz": 1031.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step37_timing_boundary_sweep:30" }, "best_row": { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 104, "llr_stats": { "count": 174, "avg_abs": 0.777342, "min_abs": 0.0, "max_abs": 2.968035, "positive": 69, "negative": 104, "zero": 1 }, "source_rank_score": 103.109368, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "134d8595552340a3", "codeword174_sha256_16": "782cb372442b4b8b" }, "top_rows": [ { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 104, "llr_stats": { "count": 174, "avg_abs": 0.777342, "min_abs": 0.0, "max_abs": 2.968035, "positive": 69, "negative": 104, "zero": 1 }, "source_rank_score": 103.109368, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "134d8595552340a3", "codeword174_sha256_16": "782cb372442b4b8b" }, { "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", "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": 74, "llr_stats": { "count": 174, "avg_abs": 0.840869, "min_abs": 0.000319, "max_abs": 3.13714, "positive": 102, "negative": 72, "zero": 0 }, "source_rank_score": 103.363476, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "b22fc54578121357", "codeword174_sha256_16": "886d45ceede031d5" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "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": 70, "llr_stats": { "count": 174, "avg_abs": 1.212245, "min_abs": 0.000723, "max_abs": 3.984668, "positive": 103, "negative": 71, "zero": 0 }, "source_rank_score": 104.84898, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "96409723092f5837", "codeword174_sha256_16": "f889e617852040e5" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+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": 126, "llr_stats": { "count": 174, "avg_abs": 1.208223, "min_abs": 0.000118, "max_abs": 3.928004, "positive": 52, "negative": 122, "zero": 0 }, "source_rank_score": 104.832892, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "4cb3369c98dae7c2", "codeword174_sha256_16": "64b152d54f8f1365" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_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": 102, "llr_stats": { "count": 174, "avg_abs": 0.891101, "min_abs": 0.000126, "max_abs": 3.519051, "positive": 77, "negative": 97, "zero": 0 }, "source_rank_score": 103.564404, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "23149e565b880b0c", "codeword174_sha256_16": "3d67630628b3dfc9" }, { "variant": "mapped_raw_msb+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": 111, "llr_stats": { "count": 174, "avg_abs": 1.206915, "min_abs": 0.000996, "max_abs": 3.519051, "positive": 62, "negative": 112, "zero": 0 }, "source_rank_score": 104.82766, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "4345d3c578d5c90a", "codeword174_sha256_16": "541fc940bc96d565" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 75, "llr_stats": { "count": 174, "avg_abs": 0.827523, "min_abs": 0.000319, "max_abs": 3.984668, "positive": 99, "negative": 75, "zero": 0 }, "source_rank_score": 103.310092, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "db225458dfe9219d", "codeword174_sha256_16": "ddc2ec2a7ab2dbe3" }, { "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": 91, "llr_stats": { "count": 174, "avg_abs": 0.721538, "min_abs": 0.000124, "max_abs": 3.984668, "positive": 85, "negative": 89, "zero": 0 }, "source_rank_score": 102.886152, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "24f9543314b22061", "codeword174_sha256_16": "92fac9d35bd4e846" } ], "warnings": [ "Step 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 7, "offsets": { "start_offset_s": 0.36, "base_freq_offset_hz": 3.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.16, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 61920, "start_seconds": 5.16, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step37_timing_boundary_sweep:7" }, "best_row": { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 27, "llr_stats": { "count": 174, "avg_abs": 2.135166, "min_abs": 0.030716, "max_abs": 4.279308, "positive": 146, "negative": 28, "zero": 0 }, "source_rank_score": 108.540664, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "6af7d27fccf41e78", "codeword174_sha256_16": "2a2e6ee5c17fc6a7" }, "top_rows": [ { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 27, "llr_stats": { "count": 174, "avg_abs": 2.135166, "min_abs": 0.030716, "max_abs": 4.279308, "positive": 146, "negative": 28, "zero": 0 }, "source_rank_score": 108.540664, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "6af7d27fccf41e78", "codeword174_sha256_16": "2a2e6ee5c17fc6a7" }, { "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 }, "bit_count": 174, "hard_weight_174": 39, "llr_stats": { "count": 174, "avg_abs": 1.561178, "min_abs": 0.024407, "max_abs": 3.909521, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 106.244712, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "0d958705ade463a4", "codeword174_sha256_16": "32942bf9b5cbd0a8" }, { "variant": "mapped_ft8_gray_alt_high_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 }, "bit_count": 174, "hard_weight_174": 39, "llr_stats": { "count": 174, "avg_abs": 1.509122, "min_abs": 0.011947, "max_abs": 3.909521, "positive": 134, "negative": 40, "zero": 0 }, "source_rank_score": 106.036488, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "0d958705ade463a4", "codeword174_sha256_16": "32942bf9b5cbd0a8" }, { "variant": "mapped_ft8_gray_primary_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": 135, "llr_stats": { "count": 174, "avg_abs": 1.182045, "min_abs": 0.00755, "max_abs": 3.351448, "positive": 31, "negative": 143, "zero": 0 }, "source_rank_score": 104.72818, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "e257437bdc688091", "codeword174_sha256_16": "f478a3303e1ea104" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "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": 133, "llr_stats": { "count": 174, "avg_abs": 1.134429, "min_abs": 0.000466, "max_abs": 3.112514, "positive": 30, "negative": 144, "zero": 0 }, "source_rank_score": 104.537716, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "e257437bdc688091", "codeword174_sha256_16": "cff144d73d67769b" }, { "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": 135, "llr_stats": { "count": 174, "avg_abs": 1.132122, "min_abs": 0.005105, "max_abs": 2.993348, "positive": 34, "negative": 140, "zero": 0 }, "source_rank_score": 104.528488, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "e257437bdc688091", "codeword174_sha256_16": "f478a3303e1ea104" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "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": 133, "llr_stats": { "count": 174, "avg_abs": 1.100678, "min_abs": 0.000291, "max_abs": 2.993348, "positive": 40, "negative": 134, "zero": 0 }, "source_rank_score": 104.402712, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "e257437bdc688091", "codeword174_sha256_16": "cff144d73d67769b" }, { "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 }, "bit_count": 174, "hard_weight_174": 37, "llr_stats": { "count": 174, "avg_abs": 1.63486, "min_abs": 0.006652, "max_abs": 4.279308, "positive": 137, "negative": 37, "zero": 0 }, "source_rank_score": 106.53944, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "170579202ba4fd01", "codeword174_sha256_16": "c51740bbee705cfa" } ], "warnings": [ "Step 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 2, "offsets": { "start_offset_s": 0.24, "base_freq_offset_hz": 3.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.04, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 60480, "start_seconds": 5.04, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step37_timing_boundary_sweep:2" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "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": 39, "llr_stats": { "count": 174, "avg_abs": 1.541222, "min_abs": 1.6e-05, "max_abs": 4.477513, "positive": 143, "negative": 31, "zero": 0 }, "source_rank_score": 106.164888, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "0d978b9a72686ac0", "codeword174_sha256_16": "519e5469c99fcb70" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "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": 39, "llr_stats": { "count": 174, "avg_abs": 1.541222, "min_abs": 1.6e-05, "max_abs": 4.477513, "positive": 143, "negative": 31, "zero": 0 }, "source_rank_score": 106.164888, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "0d978b9a72686ac0", "codeword174_sha256_16": "519e5469c99fcb70" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 39, "llr_stats": { "count": 174, "avg_abs": 1.491462, "min_abs": 0.000227, "max_abs": 4.477513, "positive": 139, "negative": 35, "zero": 0 }, "source_rank_score": 105.965848, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "0d978b9a72686ac0", "codeword174_sha256_16": "519e5469c99fcb70" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "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": 39, "llr_stats": { "count": 174, "avg_abs": 1.488726, "min_abs": 0.001552, "max_abs": 4.477513, "positive": 132, "negative": 42, "zero": 0 }, "source_rank_score": 105.954904, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "0d978b9a72686ac0", "codeword174_sha256_16": "519e5469c99fcb70" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 39, "llr_stats": { "count": 174, "avg_abs": 1.458218, "min_abs": 4.4e-05, "max_abs": 4.477513, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 105.832872, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "0d978b9a72686ac0", "codeword174_sha256_16": "519e5469c99fcb70" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_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": 120, "llr_stats": { "count": 174, "avg_abs": 1.365677, "min_abs": 0.002808, "max_abs": 3.752602, "positive": 45, "negative": 129, "zero": 0 }, "source_rank_score": 105.462708, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "a7de088c5776ee4c", "codeword174_sha256_16": "48e697d4e924baaf" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_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": 120, "llr_stats": { "count": 174, "avg_abs": 1.29832, "min_abs": 0.001373, "max_abs": 3.752602, "positive": 52, "negative": 122, "zero": 0 }, "source_rank_score": 105.19328, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "a7de088c5776ee4c", "codeword174_sha256_16": "48e697d4e924baaf" }, { "variant": "mapped_lsb_within_each_tone+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": 141, "llr_stats": { "count": 174, "avg_abs": 2.035905, "min_abs": 0.01297, "max_abs": 4.477513, "positive": 32, "negative": 142, "zero": 0 }, "source_rank_score": 108.14362, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "ca41f125d3d51da3", "codeword174_sha256_16": "19a24fdc96d8b86a" }, { "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": 134, "llr_stats": { "count": 174, "avg_abs": 1.726608, "min_abs": 0.002808, "max_abs": 4.477513, "positive": 32, "negative": 142, "zero": 0 }, "source_rank_score": 106.906432, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "ccf98b56e2b7d3b5", "codeword174_sha256_16": "a0709a0b831a9951" } ], "warnings": [ "Step 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 24, "offsets": { "start_offset_s": 0.72, "base_freq_offset_hz": 5.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.52, "base_freq_hz": 1030.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 66240, "start_seconds": 5.52, "base_freq_hz": 1030.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step37_timing_boundary_sweep:24" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_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": 45, "llr_stats": { "count": 174, "avg_abs": 1.285644, "min_abs": 0.005783, "max_abs": 3.811853, "positive": 134, "negative": 40, "zero": 0 }, "source_rank_score": 105.142576, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "21fef934b7ea1239", "codeword174_sha256_16": "8a5dcc77d2218918" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_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": 45, "llr_stats": { "count": 174, "avg_abs": 1.285644, "min_abs": 0.005783, "max_abs": 3.811853, "positive": 134, "negative": 40, "zero": 0 }, "source_rank_score": 105.142576, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "21fef934b7ea1239", "codeword174_sha256_16": "8a5dcc77d2218918" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+no_interleaver", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 47, "llr_stats": { "count": 174, "avg_abs": 1.516479, "min_abs": 0.004222, "max_abs": 3.954649, "positive": 129, "negative": 45, "zero": 0 }, "source_rank_score": 106.065916, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "9f805f54fdc77a1f", "codeword174_sha256_16": "15b2d2793da1db6d" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+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": 133, "llr_stats": { "count": 174, "avg_abs": 1.314436, "min_abs": 0.015697, "max_abs": 3.970707, "positive": 38, "negative": 136, "zero": 0 }, "source_rank_score": 105.257744, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "4b167f7df5c51509", "codeword174_sha256_16": "1772246f7777b51e" }, { "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": 125, "llr_stats": { "count": 174, "avg_abs": 1.198175, "min_abs": 0.00288, "max_abs": 3.811853, "positive": 44, "negative": 130, "zero": 0 }, "source_rank_score": 104.7927, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "253deeae1430be52", "codeword174_sha256_16": "37660ea01956a6f5" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 52, "llr_stats": { "count": 174, "avg_abs": 1.195525, "min_abs": 0.005151, "max_abs": 3.833579, "positive": 129, "negative": 45, "zero": 0 }, "source_rank_score": 104.7821, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "34a759dcdbb7894d", "codeword174_sha256_16": "779f7504ec1ebfcb" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_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": 46, "llr_stats": { "count": 174, "avg_abs": 1.078343, "min_abs": 0.0001, "max_abs": 3.186186, "positive": 130, "negative": 44, "zero": 0 }, "source_rank_score": 104.313372, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "ecc3490a020333b2", "codeword174_sha256_16": "6bf84c7cd2e6f56c" }, { "variant": "mapped_ft8_gray_alt_high_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 }, "bit_count": 174, "hard_weight_174": 47, "llr_stats": { "count": 174, "avg_abs": 1.516479, "min_abs": 0.004222, "max_abs": 3.954649, "positive": 129, "negative": 45, "zero": 0 }, "source_rank_score": 106.065916, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "dbf9d72197977fc8", "codeword174_sha256_16": "b49d6a6f890bfbc2" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+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": 133, "llr_stats": { "count": 174, "avg_abs": 1.35069, "min_abs": 0.02101, "max_abs": 3.970707, "positive": 37, "negative": 137, "zero": 0 }, "source_rank_score": 105.40276, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "e350ff3245c41ffa", "codeword174_sha256_16": "870b18dc46b3200f" } ], "warnings": [ "Step 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 25, "offsets": { "start_offset_s": 0.72, "base_freq_offset_hz": 6.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 5.52, "base_freq_hz": 1031.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": 66240, "start_seconds": 5.52, "base_freq_hz": 1031.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step37_timing_boundary_sweep:25" }, "best_row": { "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": 105, "llr_stats": { "count": 174, "avg_abs": 1.263236, "min_abs": 0.003396, "max_abs": 4.053991, "positive": 65, "negative": 109, "zero": 0 }, "source_rank_score": 105.052944, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "f76a79414f1b8ddb", "codeword174_sha256_16": "224c42865c325d8a" }, "top_rows": [ { "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": 105, "llr_stats": { "count": 174, "avg_abs": 1.263236, "min_abs": 0.003396, "max_abs": 4.053991, "positive": 65, "negative": 109, "zero": 0 }, "source_rank_score": 105.052944, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "f76a79414f1b8ddb", "codeword174_sha256_16": "224c42865c325d8a" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "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": 103, "llr_stats": { "count": 174, "avg_abs": 0.769284, "min_abs": 1.9e-05, "max_abs": 2.462506, "positive": 64, "negative": 110, "zero": 0 }, "source_rank_score": 103.077136, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "ef7eccc2f78c5191", "codeword174_sha256_16": "848e7876230a1c0d" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "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": 128, "llr_stats": { "count": 174, "avg_abs": 1.834433, "min_abs": 0.003396, "max_abs": 4.349393, "positive": 41, "negative": 133, "zero": 0 }, "source_rank_score": 107.337732, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "a2a946eef87a2491", "codeword174_sha256_16": "144f4835b75ffcc3" }, { "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.320972, "min_abs": 0.001911, "max_abs": 4.053991, "positive": 126, "negative": 48, "zero": 0 }, "source_rank_score": 105.283888, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "0bda7f7b333e2c46", "codeword174_sha256_16": "884becb33bd506ac" }, { "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+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": 111, "llr_stats": { "count": 174, "avg_abs": 1.242177, "min_abs": 0.002244, "max_abs": 4.223276, "positive": 60, "negative": 114, "zero": 0 }, "source_rank_score": 104.968708, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "b9014d42f0c2c245", "codeword174_sha256_16": "08c64c0b4932570a" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 127, "llr_stats": { "count": 174, "avg_abs": 1.209123, "min_abs": 1.9e-05, "max_abs": 4.223276, "positive": 40, "negative": 134, "zero": 0 }, "source_rank_score": 104.836492, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "80407faf6d1a1705", "codeword174_sha256_16": "38b950708776c704" }, { "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": 71, "llr_stats": { "count": 174, "avg_abs": 0.769284, "min_abs": 1.9e-05, "max_abs": 2.462506, "positive": 110, "negative": 64, "zero": 0 }, "source_rank_score": 103.077136, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "0ac01e0b305b9cfa", "codeword174_sha256_16": "99fcb433a8efd133" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 81, "llr_stats": { "count": 174, "avg_abs": 0.760033, "min_abs": 2e-06, "max_abs": 2.8447, "positive": 92, "negative": 82, "zero": 0 }, "source_rank_score": 103.040132, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "bf55efef383656ea", "codeword174_sha256_16": "d5276956bc4d4bcc" } ], "warnings": [ "Step 37 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 37 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 37 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 37 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/step37_timing_boundary_sweep.json", "timing_best_candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step37_best_timing_fec_candidate.json" }, "decodes": [], "warnings": [ "Step 37 expands the Step36 edge hit and exports the best timing candidate for downstream LDPC soft-decode.", "No JS8 text unpack or CRC validation is performed yet.", "No valid LDPC codeword found is a diagnostic warning, not a hard command failure." ], "next_action": "Use outputs.timing_best_candidate_json for LDPC matrix/soft decode. If syndrome is still far from 0, continue interleaver/LLR and symbol-boundary tuning around the best_candidate." } [webftr-js8-lab] timing-boundary-sweep exit_code=0 [webftr-js8-lab] timing-boundary-sweep JSON: /decoders/js8_decoder/logs/20260527T035634Z_real_run_timing_boundary_sweep_output.json [webftr-js8-lab] Step 37 LDPC probes now use timing-best candidate JSON: /decoders/js8_decoder/runtime/timing_boundary_sweep/step37_best_timing_fec_candidate.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/20260527T040519Z_ldpc-matrix-probe.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T040519Z_ldpc-matrix-probe_manifest.json [webftr-js8-lab] utc=20260527T040519Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T040519Z_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": "step37-timing-best-candidate-softdecode", "input_wav": null, "candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step37_best_timing_fec_candidate.json", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step37_bounded_gray_interleaver_matrix_ranking_no_message_unpack", "matrix": { "code": "(174,91) LDPC generator matrix", "generator_rows": 83, "generator_cols": 91, "message_bits": 91, "parity_bits": 83, "source_file": "ldpc_174_91_c_generator.f90" }, "bounds": { "total_transform_rows_before_limit": 828, "max_rows": 72, "repair_rows": 10, "max_flips": 6, "candidate_pool": 12 }, "candidate_context": { "nsps_used": 6400, "nsps_is_js8_realistic": true, "selected_profile": null, "selected_variant": { "name": "raw_msb_symbol_order", "rank_score": 126.748644, "complete_174bit_candidate": true, "hard_bits_sha256_16": "a0f5d6c517051f17", "hard_weight_174": 39, "llr_stats": { "count": 174, "avg_abs": 2.187161, "min_abs": 0.036806, "max_abs": 4.061714, "positive": 136, "negative": 38, "zero": 0 } } }, "variant_probe_count": 72, "best_matrix_probe": { "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 }, "hard_weight_174": 32, "llr_avg_abs": 1.7837172241379295, "syndrome": { "bits_len": 174, "message91": "0010000000001100000000010000010001111000000101000000000010000000100000000001000110100010000", "parity83_observed": "00001100000100100001010001000000000001010000011000000001000000000100000000001000000", "parity83_expected": "10001100110100100111010011001100000100010000111101010001000100001101100110111001010", "syndrome83": "10000000110000000110000010001100000101000000100101010000000100001001100110110001010", "syndrome_weight": 24, "valid_codeword_hard_decision": false, "message91_sha256_16": "400988287db337c2", "codeword174_sha256_16": "e737ddc1f2cfd29b" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 24, "trace": [], "repaired_message91_sha256_16": "400988287db337c2" } }, "all_matrix_probes": [ { "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 }, "hard_weight_174": 32, "llr_avg_abs": 1.7837172241379295, "syndrome": { "bits_len": 174, "message91": "0010000000001100000000010000010001111000000101000000000010000000100000000001000110100010000", "parity83_observed": "00001100000100100001010001000000000001010000011000000001000000000100000000001000000", "parity83_expected": "10001100110100100111010011001100000100010000111101010001000100001101100110111001010", "syndrome83": "10000000110000000110000010001100000101000000100101010000000100001001100110110001010", "syndrome_weight": 24, "valid_codeword_hard_decision": false, "message91_sha256_16": "400988287db337c2", "codeword174_sha256_16": "e737ddc1f2cfd29b" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 24, "trace": [], "repaired_message91_sha256_16": "400988287db337c2" } }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "hard_weight_174": 60, "llr_avg_abs": 1.0454926149425285, "syndrome": { "bits_len": 174, "message91": "1000100110111100010000100010001100000000000100100010000000011000000000101000100010100001100", "parity83_observed": "10000110010001000011110101001011110101000101110110100110011000000000000010101100101", "parity83_expected": "01101101100011010110110101001001100101000110110100010011011000000001100001100110001", "syndrome83": "11101011110010010101000000000010010000000011000010110101000000000001100011001010100", "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "b419e71920db3585", "codeword174_sha256_16": "8bccbb10bbbf4d88" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 3, "repair_success": false, "final_syndrome_weight": 25, "trace": [ { "flip_index": 103, "llr_abs": 0.008536, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 167, "llr_abs": 0.02524, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 100, "llr_abs": 0.036806, "gain": 1, "syndrome_weight_after": 25 } ], "repaired_message91_sha256_16": "b419e71920db3585" } }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_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 }, "hard_weight_174": 50, "llr_avg_abs": 1.08062106321839, "syndrome": { "bits_len": 174, "message91": "0010000001001011000000010101110000111100000101000010110000010010100101000000000010001000110", "parity83_observed": "00000100110100001000010000000101100000000100001100001100000011010000000100010010011", "parity83_expected": "00000011110111001000000100000010011000101110001000000001100000010001000000101000010", "syndrome83": "00000111000011000000010100000111111000101010000100001101100011000001000100111010001", "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "ef548b254868b745", "codeword174_sha256_16": "3d5161b1e316b16f" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 4, "repair_success": false, "final_syndrome_weight": 26, "trace": [ { "flip_index": 114, "llr_abs": 0.000665, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 143, "llr_abs": 0.002608, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 173, "llr_abs": 0.025153, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 167, "llr_abs": 0.051006, "gain": 1, "syndrome_weight_after": 26 } ], "repaired_message91_sha256_16": "ef548b254868b745" } }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "hard_weight_174": 125, "llr_avg_abs": 1.568964528735632, "syndrome": { "bits_len": 174, "message91": "1111111111111001110101111111111001110101001100110101111000101110101111111000101001001111111", "parity83_observed": "11100111100111111111111111111111011100010001010101111111011111100111111111111010100", "parity83_expected": "01010000000011101110111110110100011101010111010111111010010100100100111001011111101", "syndrome83": "10110111100100010001000001001011000001000110000010000101001011000011000110100101001", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "9a6e72196d49d4ec", "codeword174_sha256_16": "5f766d9b3db3fe7a" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 5, "repair_success": false, "final_syndrome_weight": 26, "trace": [ { "flip_index": 128, "llr_abs": 0.036806, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 99, "llr_abs": 0.065169, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 132, "llr_abs": 0.106633, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 139, "llr_abs": 0.133856, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 133, "llr_abs": 0.147215, "gain": 1, "syndrome_weight_after": 26 } ], "repaired_message91_sha256_16": "9a6e72196d49d4ec" } }, { "variant": "lab_mask_xor_preview", "transform": "raw_msb+no_interleaver", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none" }, "hard_weight_174": 90, "llr_avg_abs": 2.187161362068966, "syndrome": { "bits_len": 174, "message91": "1000001100110111001000011110110110001100110000101111010011011110111111111010101111101001011", "parity83_observed": "00101100001010001001100010111010010111011001010011010011000111100101000010101000110", "parity83_expected": "01100101110111001101010110001000100111001101010011011000101111100100000110010100110", "syndrome83": "01001001111101000100110100110010110000010100000000001011101000000001000100111100000", "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "2d887c7972af6374", "codeword174_sha256_16": "e3a96fe6ad757407" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 3, "repair_success": false, "final_syndrome_weight": 27, "trace": [ { "flip_index": 100, "llr_abs": 0.075079, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 101, "llr_abs": 0.1889, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 104, "llr_abs": 0.435761, "gain": 1, "syndrome_weight_after": 27 } ], "repaired_message91_sha256_16": "2d887c7972af6374" } }, { "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" }, "hard_weight_174": 119, "llr_avg_abs": 1.6453519080459769, "syndrome": { "bits_len": 174, "message91": "1101111110010100011111111001111110000011111110011101111111001111001111111110011001001101001", "parity83_observed": "11110001111001011110100110111111111110100111101111110000111111100001111111110111100", "parity83_expected": "11011110000000111110100110011111110110001110000111010001110011001101001011011111111", "syndrome83": "00101111111001100000000000100000001000101001101000100001001100101100110100101000011", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "ad56c1db43052c18", "codeword174_sha256_16": "16aeb541b9fcee47" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 2, "repair_success": false, "final_syndrome_weight": 29, "trace": [ { "flip_index": 137, "llr_abs": 0.003492, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 97, "llr_abs": 0.262041, "gain": 1, "syndrome_weight_after": 29 } ], "repaired_message91_sha256_16": "ad56c1db43052c18" } }, { "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", "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.6351825689655177, "syndrome": { "bits_len": 174, "message91": "0001000000111000001100001011001100001101001110011100001001100001100000001001101000000100000", "parity83_observed": "00100000000000010000000000100000011000000011010011100010001110100000100110100110100", "parity83_expected": "01100100000000100111010000100110000000110101011010101101011001100100000100000110110", "syndrome83": "01000100000000110111010000000110011000110110001001001111010111000100100010100000010", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "6a8d5bcbf434d857", "codeword174_sha256_16": "e5ec524c8f7f0cb9" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 2, "repair_success": false, "final_syndrome_weight": 29, "trace": [ { "flip_index": 106, "llr_abs": 0.0695, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 133, "llr_abs": 0.096509, "gain": 1, "syndrome_weight_after": 29 } ], "repaired_message91_sha256_16": "6a8d5bcbf434d857" } }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "hard_weight_174": 34, "llr_avg_abs": 1.8142508448275845, "syndrome": { "bits_len": 174, "message91": "1010000000100000100000000000000010100010000100010110000000000000101001000101010100000001001", "parity83_observed": "00010000000000000010000000000000010000010010010100001110010010010000000000001000000", "parity83_expected": "10010000101110001010101101001000110010000100110000101111010000010000111100111011010", "syndrome83": "10000000101110001000101101001000100010010110100100100001000010000000111100110011010", "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "94f535c19abe8e97", "codeword174_sha256_16": "e050196dd1284fb0" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 30, "trace": [], "repaired_message91_sha256_16": "94f535c19abe8e97" } }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+no_interleaver", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none" }, "hard_weight_174": 49, "llr_avg_abs": 1.5689645287356309, "syndrome": { "bits_len": 174, "message91": "0000010100101001000110100001100011100000001000000000101010000110010100001110000011000010000", "parity83_observed": "01100000000000000111001001000100000000000000111000010010000101100011001011000100000", "parity83_expected": "11000000010001100011111111000101000101111000111001000100101101101010011111001111101", "syndrome83": "10100000010001100100110110000001000101111000000001010110101000001001010100001011101", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "53e2d678efaa9275", "codeword174_sha256_16": "7bbcf9fb91843ebc" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 1, "repair_success": false, "final_syndrome_weight": 30, "trace": [ { "flip_index": 27, "llr_abs": 0.036806, "gain": 1, "syndrome_weight_after": 30 } ], "repaired_message91_sha256_16": "13c359fe186f84d4" } }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+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" }, "hard_weight_174": 133, "llr_avg_abs": 1.6063374252873568, "syndrome": { "bits_len": 174, "message91": "1100111111111101110011111111111011011111000110011111111101010111111011101111111110111101011", "parity83_observed": "10011110011111110001111110101110100101101111111011111111011111110110011111111110101", "parity83_expected": "10011100010101111101100010101000010101001100011010011100111010111001101101111100101", "syndrome83": "00000010001010001100011100000110110000100011100001100011100101001111110010000010000", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "9c5c8e131830f6a9", "codeword174_sha256_16": "a799925e0e4517b4" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 31, "trace": [], "repaired_message91_sha256_16": "9c5c8e131830f6a9" } }, { "variant": "lab_mask_xor_preview", "transform": "lsb_within_each_tone+no_interleaver", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none" }, "hard_weight_174": 90, "llr_avg_abs": 2.187161362068966, "syndrome": { "bits_len": 174, "message91": "0010000111101100010011001111101100000111100000101111011001011111101111111010101110110011010", "parity83_observed": "01101001100010100100001010111010010111110100010110010110000111001101000010101000011", "parity83_expected": "10100001000010001100100111000100110000110110010110110010010010100100000011101110010", "syndrome83": "11001000100000101000101101111110100111000010000000100100010101101001000001000110001", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "601cdb16e6f74276", "codeword174_sha256_16": "326d27f1d67791f5" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "601cdb16e6f74276" } }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "raw_msb+no_interleaver", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none" }, "hard_weight_174": 32, "llr_avg_abs": 1.7837172241379298, "syndrome": { "bits_len": 174, "message91": "0111000010001000000010000000010000110000000101000000000011100000100100000000010010000000000", "parity83_observed": "00000100001100000001010100000000110000000000001110000000001001000000000000000000100", "parity83_expected": "00011001011001100110110110000000011100000000101010100010110011011110000101000110100", "syndrome83": "00011101010101100111100010000000101100000000100100100010111010011110000101000110000", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "1ef6c5c26dfbc68b", "codeword174_sha256_16": "d96e8c7a3ce0490d" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "1ef6c5c26dfbc68b" } }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "hard_weight_174": 32, "llr_avg_abs": 1.7837172241379298, "syndrome": { "bits_len": 174, "message91": "0111000010001000000010000000010000110000000101000000000011100000100100000000010010000000000", "parity83_observed": "00000100001100000001010100000000110000000000001110000000001001000000000000000000100", "parity83_expected": "00011001011001100110110110000000011100000000101010100010110011011110000101000110100", "syndrome83": "00011101010101100111100010000000101100000000100100100010111010011110000101000110000", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "1ef6c5c26dfbc68b", "codeword174_sha256_16": "d96e8c7a3ce0490d" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "1ef6c5c26dfbc68b" } }, { "variant": "mapped_lsb_within_each_tone+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 }, "hard_weight_174": 32, "llr_avg_abs": 1.7837172241379298, "syndrome": { "bits_len": 174, "message91": "0111000010001000000010000000010000110000000101000000000011100000100100000000010010000000000", "parity83_observed": "00000100001100000001010100000000110000000000001110000000001001000000000000000000100", "parity83_expected": "00011001011001100110110110000000011100000000101010100010110011011110000101000110100", "syndrome83": "00011101010101100111100010000000101100000000100100100010111010011110000101000110000", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "1ef6c5c26dfbc68b", "codeword174_sha256_16": "d96e8c7a3ce0490d" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "1ef6c5c26dfbc68b" } }, { "variant": "mapped_raw_msb+no_interleaver", "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": 32, "llr_avg_abs": 1.7837172241379298, "syndrome": { "bits_len": 174, "message91": "0111000010001000000010000000010000110000000101000000000011100000100100000000010010000000000", "parity83_observed": "00000100001100000001010100000000110000000000001110000000001001000000000000000000100", "parity83_expected": "00011001011001100110110110000000011100000000101010100010110011011110000101000110100", "syndrome83": "00011101010101100111100010000000101100000000100100100010111010011110000101000110000", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "1ef6c5c26dfbc68b", "codeword174_sha256_16": "d96e8c7a3ce0490d" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "1ef6c5c26dfbc68b" } }, { "variant": "raw_msb_symbol_order", "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": 32, "llr_avg_abs": 1.7837172241379298, "syndrome": { "bits_len": 174, "message91": "0111000010001000000010000000010000110000000101000000000011100000100100000000010010000000000", "parity83_observed": "00000100001100000001010100000000110000000000001110000000001001000000000000000000100", "parity83_expected": "00011001011001100110110110000000011100000000101010100010110011011110000101000110100", "syndrome83": "00011101010101100111100010000000101100000000100100100010111010011110000101000110000", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "1ef6c5c26dfbc68b", "codeword174_sha256_16": "d96e8c7a3ce0490d" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "1ef6c5c26dfbc68b" } }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "hard_weight_174": 134, "llr_avg_abs": 1.5783320287356328, "syndrome": { "bits_len": 174, "message91": "1000111101110111111101111111011111101111111110111111101100001111011110111111101111111111101", "parity83_observed": "11111011010011111110101010111110001111101011110001111101110100111111111111110111011", "parity83_expected": "00111101001101011010011010110110001111011001101100111001110101111010000001111101010", "syndrome83": "11000110011110100100110000001000000000110010011101000100000001000101111110001010001", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "7fcb9ce8ce209d99", "codeword174_sha256_16": "fffaa3a9661b23ea" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "7fcb9ce8ce209d99" } }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "hard_weight_174": 40, "llr_avg_abs": 1.5783320287356315, "syndrome": { "bits_len": 174, "message91": "0001000000000010001100000000000100100000111001100000000010101000000100010000000001000010100", "parity83_observed": "01100001100000001110000001010001011010010000000100000000100000001001100000000001010", "parity83_expected": "11011011100000001111010110100011011010001100000100000111000000110100010001101001100", "syndrome83": "10111010000000000001010111110010000000011100000000000111100000111101110001101000110", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "eeb4d939762c19d7", "codeword174_sha256_16": "a064e1b9f911fff9" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "eeb4d939762c19d7" } }, { "variant": "lsb_within_each_tone", "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": 32, "llr_avg_abs": 1.5689645287356313, "syndrome": { "bits_len": 174, "message91": "0111000010001000000010000000010000110000000101000000000011100000100100000000010010000000000", "parity83_observed": "00000100001100000001010100000000110000000000001110000000001001000000000000000000100", "parity83_expected": "00011001011001100110110110000000011100000000101010100010110011011110000101000110100", "syndrome83": "00011101010101100111100010000000101100000000100100100010111010011110000101000110000", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "1ef6c5c26dfbc68b", "codeword174_sha256_16": "d96e8c7a3ce0490d" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "1ef6c5c26dfbc68b" } }, { "variant": "mapped_raw_msb+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" }, "hard_weight_174": 122, "llr_avg_abs": 1.5576050229885054, "syndrome": { "bits_len": 174, "message91": "0101100011111101110011111111001110011101111111101110010010111111001111101110011111111110011", "parity83_observed": "11111110000110111001100110111001101111111110001101001100001010111111111111111111110", "parity83_expected": "11111101000110001011000010011101101111100100010011000000110110010101110111100001011", "syndrome83": "00000011000000110010100100100100000000011010011110001100111100101010001000011110101", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "6b1e08b5e23278be", "codeword174_sha256_16": "2ebc0e51aa0056a9" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "6b1e08b5e23278be" } } ], "decodes": [], "outputs": { "ldpc_matrix_probe_json": "/decoders/js8_decoder/runtime/ldpc_matrix_probe/step37_ldpc_matrix_probe.json" }, "warnings": [ "Step 37 keeps the Step 37 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/20260527T040519Z_ldpc-matrix-probe.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T040519Z_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/20260527T040522Z_ldpc-soft-decode.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T040522Z_ldpc-soft-decode_manifest.json [webftr-js8-lab] utc=20260527T040522Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T040522Z_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": "step37-timing-best-candidate-softdecode", "input_wav": null, "candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step37_best_timing_fec_candidate.json", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step37_bounded_gray_interleaver_llr_minsum_probe_no_message_unpack", "matrix": { "code": "(174,91)", "message_bits": 91, "parity_bits": 83, "codeword_bits": 174, "check_count": 83 }, "decoder": { "algorithm": "normalized_min_sum_multi_trial", "max_iterations": 24, "default_alpha": 0.8, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely", "mapping_expansion": "ft8_gray_demap_plus_bitrev_interleaver_candidates", "max_decode_rows": 12, "fast_trials": true, "trial_count": 2 }, "candidate_context": { "nsps_used": 6400, "nsps_is_js8_realistic": true, "selected_profile": null, "selected_variant": { "name": "raw_msb_symbol_order", "rank_score": 126.748644, "complete_174bit_candidate": true, "hard_bits_sha256_16": "a0f5d6c517051f17", "hard_weight_174": 39, "llr_stats": { "count": 174, "avg_abs": 2.187161, "min_abs": 0.036806, "max_abs": 4.061714, "positive": 136, "negative": 38, "zero": 0 } } }, "candidate_mapping_rows": 828, "probe_count": 24, "best_soft_decode": { "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 }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 107.134868, "source_llr_stats": { "count": 174, "avg_abs": 1.783717, "min_abs": 0.004438, "max_abs": 4.061714, "positive": 144, "negative": 30, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 11, "message91": null, "message91_sha256_16": "400988287db337c2", "codeword174_sha256_16": "c46ba1370eef0d61", "trace": [ { "iteration": 0, "syndrome_weight": 36 }, { "iteration": 1, "syndrome_weight": 35 }, { "iteration": 2, "syndrome_weight": 43 }, { "iteration": 3, "syndrome_weight": 39 }, { "iteration": 4, "syndrome_weight": 43 }, { "iteration": 5, "syndrome_weight": 42 }, { "iteration": 6, "syndrome_weight": 46 }, { "iteration": 7, "syndrome_weight": 38 }, { "iteration": 8, "syndrome_weight": 40 }, { "iteration": 9, "syndrome_weight": 34 }, { "iteration": 10, "syndrome_weight": 34 }, { "iteration": 15, "syndrome_weight": 36 }, { "iteration": 20, "syndrome_weight": 24 } ] }, "soft_decode_results": [ { "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 }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 107.134868, "source_llr_stats": { "count": 174, "avg_abs": 1.783717, "min_abs": 0.004438, "max_abs": 4.061714, "positive": 144, "negative": 30, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 11, "message91": null, "message91_sha256_16": "400988287db337c2", "codeword174_sha256_16": "c46ba1370eef0d61", "trace": [ { "iteration": 0, "syndrome_weight": 36 }, { "iteration": 1, "syndrome_weight": 35 }, { "iteration": 2, "syndrome_weight": 43 }, { "iteration": 3, "syndrome_weight": 39 }, { "iteration": 4, "syndrome_weight": 43 }, { "iteration": 5, "syndrome_weight": 42 }, { "iteration": 6, "syndrome_weight": 46 }, { "iteration": 7, "syndrome_weight": 38 }, { "iteration": 8, "syndrome_weight": 40 }, { "iteration": 9, "syndrome_weight": 34 }, { "iteration": 10, "syndrome_weight": 34 }, { "iteration": 15, "syndrome_weight": 36 }, { "iteration": 20, "syndrome_weight": 24 } ] }, { "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" }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 108.748644, "source_llr_stats": { "count": 174, "avg_abs": 2.187161, "min_abs": 0.036806, "max_abs": 4.061714, "positive": 136, "negative": 38, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 24, "message91": null, "message91_sha256_16": "12da459d82631058", "codeword174_sha256_16": "960f0cc7237b0dc8", "trace": [ { "iteration": 0, "syndrome_weight": 51 }, { "iteration": 1, "syndrome_weight": 41 }, { "iteration": 2, "syndrome_weight": 43 }, { "iteration": 3, "syndrome_weight": 49 }, { "iteration": 4, "syndrome_weight": 44 }, { "iteration": 5, "syndrome_weight": 43 }, { "iteration": 6, "syndrome_weight": 43 }, { "iteration": 7, "syndrome_weight": 51 }, { "iteration": 8, "syndrome_weight": 35 }, { "iteration": 9, "syndrome_weight": 37 }, { "iteration": 10, "syndrome_weight": 43 }, { "iteration": 15, "syndrome_weight": 50 }, { "iteration": 20, "syndrome_weight": 44 } ] }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "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": 107.257004, "source_llr_stats": { "count": 174, "avg_abs": 1.814251, "min_abs": 0.001652, "max_abs": 4.061714, "positive": 144, "negative": 30, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 27, "message91": null, "message91_sha256_16": "4b731c0dfe5ea20a", "codeword174_sha256_16": "c74493b94aa5d55e", "trace": [ { "iteration": 0, "syndrome_weight": 34 }, { "iteration": 1, "syndrome_weight": 44 }, { "iteration": 2, "syndrome_weight": 36 }, { "iteration": 3, "syndrome_weight": 39 }, { "iteration": 4, "syndrome_weight": 40 }, { "iteration": 5, "syndrome_weight": 36 }, { "iteration": 6, "syndrome_weight": 43 }, { "iteration": 7, "syndrome_weight": 47 }, { "iteration": 8, "syndrome_weight": 46 }, { "iteration": 9, "syndrome_weight": 46 }, { "iteration": 10, "syndrome_weight": 43 }, { "iteration": 15, "syndrome_weight": 42 }, { "iteration": 20, "syndrome_weight": 27 } ] }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+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" }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 107.257004, "source_llr_stats": { "count": 174, "avg_abs": 1.814251, "min_abs": 0.001652, "max_abs": 4.061714, "positive": 144, "negative": 30, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 29, "message91": null, "message91_sha256_16": "3b0993ae252f5d59", "codeword174_sha256_16": "c58a3a30ef6d3303", "trace": [ { "iteration": 0, "syndrome_weight": 43 }, { "iteration": 1, "syndrome_weight": 35 }, { "iteration": 2, "syndrome_weight": 41 }, { "iteration": 3, "syndrome_weight": 33 }, { "iteration": 4, "syndrome_weight": 45 }, { "iteration": 5, "syndrome_weight": 46 }, { "iteration": 6, "syndrome_weight": 45 }, { "iteration": 7, "syndrome_weight": 41 }, { "iteration": 8, "syndrome_weight": 41 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 31 }, { "iteration": 15, "syndrome_weight": 43 }, { "iteration": 20, "syndrome_weight": 39 } ] }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+no_interleaver", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none" }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 106.27586, "source_llr_stats": { "count": 174, "avg_abs": 1.568965, "min_abs": 0.004438, "max_abs": 3.929378, "positive": 127, "negative": 47, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 29, "message91": null, "message91_sha256_16": "700ff27d783dc744", "codeword174_sha256_16": "2d62ec563c3489ce", "trace": [ { "iteration": 0, "syndrome_weight": 45 }, { "iteration": 1, "syndrome_weight": 48 }, { "iteration": 2, "syndrome_weight": 41 }, { "iteration": 3, "syndrome_weight": 43 }, { "iteration": 4, "syndrome_weight": 37 }, { "iteration": 5, "syndrome_weight": 42 }, { "iteration": 6, "syndrome_weight": 39 }, { "iteration": 7, "syndrome_weight": 36 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 41 }, { "iteration": 10, "syndrome_weight": 30 }, { "iteration": 15, "syndrome_weight": 38 }, { "iteration": 20, "syndrome_weight": 40 } ] }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 106.27586, "source_llr_stats": { "count": 174, "avg_abs": 1.568965, "min_abs": 0.004438, "max_abs": 3.929378, "positive": 127, "negative": 47, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 29, "message91": null, "message91_sha256_16": "9a6e72196d49d4ec", "codeword174_sha256_16": "fe380491be8a1e5a", "trace": [ { "iteration": 0, "syndrome_weight": 29 }, { "iteration": 1, "syndrome_weight": 42 }, { "iteration": 2, "syndrome_weight": 36 }, { "iteration": 3, "syndrome_weight": 29 }, { "iteration": 4, "syndrome_weight": 29 }, { "iteration": 5, "syndrome_weight": 33 }, { "iteration": 6, "syndrome_weight": 35 }, { "iteration": 7, "syndrome_weight": 32 }, { "iteration": 8, "syndrome_weight": 39 }, { "iteration": 9, "syndrome_weight": 49 }, { "iteration": 10, "syndrome_weight": 44 }, { "iteration": 15, "syndrome_weight": 40 }, { "iteration": 20, "syndrome_weight": 41 } ] }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 106.27586, "source_llr_stats": { "count": 174, "avg_abs": 1.568965, "min_abs": 0.004438, "max_abs": 3.929378, "positive": 127, "negative": 47, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 29, "message91": null, "message91_sha256_16": "9a6e72196d49d4ec", "codeword174_sha256_16": "fe380491be8a1e5a", "trace": [ { "iteration": 0, "syndrome_weight": 29 }, { "iteration": 1, "syndrome_weight": 41 }, { "iteration": 2, "syndrome_weight": 42 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 48 }, { "iteration": 5, "syndrome_weight": 36 }, { "iteration": 6, "syndrome_weight": 42 }, { "iteration": 7, "syndrome_weight": 39 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 42 }, { "iteration": 15, "syndrome_weight": 34 }, { "iteration": 20, "syndrome_weight": 42 } ] }, { "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", "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": 108.748644, "source_llr_stats": { "count": 174, "avg_abs": 2.187161, "min_abs": 0.036806, "max_abs": 4.061714, "positive": 136, "negative": 38, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 30, "message91": null, "message91_sha256_16": "0a6e3d783a753e3d", "codeword174_sha256_16": "969bcf80fc357250", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 30 }, { "iteration": 2, "syndrome_weight": 30 }, { "iteration": 3, "syndrome_weight": 45 }, { "iteration": 4, "syndrome_weight": 51 }, { "iteration": 5, "syndrome_weight": 32 }, { "iteration": 6, "syndrome_weight": 36 }, { "iteration": 7, "syndrome_weight": 46 }, { "iteration": 8, "syndrome_weight": 41 }, { "iteration": 9, "syndrome_weight": 39 }, { "iteration": 10, "syndrome_weight": 35 }, { "iteration": 15, "syndrome_weight": 39 }, { "iteration": 20, "syndrome_weight": 42 } ] }, { "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", "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": 108.748644, "source_llr_stats": { "count": 174, "avg_abs": 2.187161, "min_abs": 0.036806, "max_abs": 4.061714, "positive": 136, "negative": 38, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 30, "message91": null, "message91_sha256_16": "0a6e3d783a753e3d", "codeword174_sha256_16": "969bcf80fc357250", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 30 }, { "iteration": 2, "syndrome_weight": 31 }, { "iteration": 3, "syndrome_weight": 50 }, { "iteration": 4, "syndrome_weight": 39 }, { "iteration": 5, "syndrome_weight": 43 }, { "iteration": 6, "syndrome_weight": 34 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 40 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 38 }, { "iteration": 15, "syndrome_weight": 42 }, { "iteration": 20, "syndrome_weight": 39 } ] }, { "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" }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 108.748644, "source_llr_stats": { "count": 174, "avg_abs": 2.187161, "min_abs": 0.036806, "max_abs": 4.061714, "positive": 136, "negative": 38, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 30, "message91": null, "message91_sha256_16": "87ea223fabb39ea1", "codeword174_sha256_16": "f795063279c15de8", "trace": [ { "iteration": 0, "syndrome_weight": 51 }, { "iteration": 1, "syndrome_weight": 41 }, { "iteration": 2, "syndrome_weight": 43 }, { "iteration": 3, "syndrome_weight": 48 }, { "iteration": 4, "syndrome_weight": 39 }, { "iteration": 5, "syndrome_weight": 39 }, { "iteration": 6, "syndrome_weight": 40 }, { "iteration": 7, "syndrome_weight": 43 }, { "iteration": 8, "syndrome_weight": 43 }, { "iteration": 9, "syndrome_weight": 41 }, { "iteration": 10, "syndrome_weight": 47 }, { "iteration": 15, "syndrome_weight": 32 }, { "iteration": 20, "syndrome_weight": 30 } ] }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_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 }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 106.27586, "source_llr_stats": { "count": 174, "avg_abs": 1.568965, "min_abs": 0.004438, "max_abs": 3.929378, "positive": 127, "negative": 47, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 30, "message91": null, "message91_sha256_16": "b5c11bb6e06a2d3b", "codeword174_sha256_16": "9e5217d20a7d5e34", "trace": [ { "iteration": 0, "syndrome_weight": 32 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 34 }, { "iteration": 3, "syndrome_weight": 42 }, { "iteration": 4, "syndrome_weight": 41 }, { "iteration": 5, "syndrome_weight": 34 }, { "iteration": 6, "syndrome_weight": 33 }, { "iteration": 7, "syndrome_weight": 34 }, { "iteration": 8, "syndrome_weight": 43 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 45 }, { "iteration": 15, "syndrome_weight": 38 }, { "iteration": 20, "syndrome_weight": 33 } ] }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+no_interleaver", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none" }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 106.27586, "source_llr_stats": { "count": 174, "avg_abs": 1.568965, "min_abs": 0.004438, "max_abs": 3.929378, "positive": 127, "negative": 47, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 30, "message91": null, "message91_sha256_16": "700ff27d783dc744", "codeword174_sha256_16": "03733fdd80fa7c90", "trace": [ { "iteration": 0, "syndrome_weight": 45 }, { "iteration": 1, "syndrome_weight": 48 }, { "iteration": 2, "syndrome_weight": 41 }, { "iteration": 3, "syndrome_weight": 38 }, { "iteration": 4, "syndrome_weight": 41 }, { "iteration": 5, "syndrome_weight": 45 }, { "iteration": 6, "syndrome_weight": 41 }, { "iteration": 7, "syndrome_weight": 36 }, { "iteration": 8, "syndrome_weight": 35 }, { "iteration": 9, "syndrome_weight": 30 }, { "iteration": 10, "syndrome_weight": 37 }, { "iteration": 15, "syndrome_weight": 36 }, { "iteration": 20, "syndrome_weight": 44 } ] }, { "variant": "lsb_within_each_tone", "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": 118.748644, "source_llr_stats": { "count": 174, "avg_abs": 2.187161, "min_abs": 0.036806, "max_abs": 4.061714, "positive": 136, "negative": 38, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "8c2dc90a31ba234b", "codeword174_sha256_16": "12727e866a14d7b9", "trace": [ { "iteration": 0, "syndrome_weight": 39 }, { "iteration": 1, "syndrome_weight": 38 }, { "iteration": 2, "syndrome_weight": 50 }, { "iteration": 3, "syndrome_weight": 45 }, { "iteration": 4, "syndrome_weight": 47 }, { "iteration": 5, "syndrome_weight": 36 }, { "iteration": 6, "syndrome_weight": 42 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 43 }, { "iteration": 9, "syndrome_weight": 52 }, { "iteration": 10, "syndrome_weight": 35 }, { "iteration": 15, "syndrome_weight": 38 }, { "iteration": 20, "syndrome_weight": 43 } ] }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 106.397992, "source_llr_stats": { "count": 174, "avg_abs": 1.599498, "min_abs": 0.001652, "max_abs": 3.929378, "positive": 127, "negative": 47, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "decf562057b79be1", "codeword174_sha256_16": "de49caa3e03a2faa", "trace": [ { "iteration": 0, "syndrome_weight": 37 }, { "iteration": 1, "syndrome_weight": 35 }, { "iteration": 2, "syndrome_weight": 34 }, { "iteration": 3, "syndrome_weight": 39 }, { "iteration": 4, "syndrome_weight": 51 }, { "iteration": 5, "syndrome_weight": 40 }, { "iteration": 6, "syndrome_weight": 41 }, { "iteration": 7, "syndrome_weight": 40 }, { "iteration": 8, "syndrome_weight": 39 }, { "iteration": 9, "syndrome_weight": 42 }, { "iteration": 10, "syndrome_weight": 36 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 32 } ] }, { "variant": "lab_mask_xor_preview", "transform": "raw_msb+no_interleaver", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none" }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 100.748644, "source_llr_stats": { "count": 174, "avg_abs": 2.187161, "min_abs": 0.036806, "max_abs": 4.061714, "positive": 136, "negative": 38, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "257e8990965e7ac7", "codeword174_sha256_16": "ba82cc5d9219f781", "trace": [ { "iteration": 0, "syndrome_weight": 50 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 39 }, { "iteration": 3, "syndrome_weight": 45 }, { "iteration": 4, "syndrome_weight": 33 }, { "iteration": 5, "syndrome_weight": 41 }, { "iteration": 6, "syndrome_weight": 40 }, { "iteration": 7, "syndrome_weight": 33 }, { "iteration": 8, "syndrome_weight": 32 }, { "iteration": 9, "syndrome_weight": 41 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 32 }, { "iteration": 20, "syndrome_weight": 43 } ] }, { "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 }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 107.134868, "source_llr_stats": { "count": 174, "avg_abs": 1.783717, "min_abs": 0.004438, "max_abs": 4.061714, "positive": 144, "negative": 30, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 32, "message91": null, "message91_sha256_16": "600a6150e235a3dd", "codeword174_sha256_16": "68d762d766bea430", "trace": [ { "iteration": 0, "syndrome_weight": 36 }, { "iteration": 1, "syndrome_weight": 35 }, { "iteration": 2, "syndrome_weight": 38 }, { "iteration": 3, "syndrome_weight": 32 }, { "iteration": 4, "syndrome_weight": 41 }, { "iteration": 5, "syndrome_weight": 41 }, { "iteration": 6, "syndrome_weight": 43 }, { "iteration": 7, "syndrome_weight": 36 }, { "iteration": 8, "syndrome_weight": 47 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 38 }, { "iteration": 20, "syndrome_weight": 45 } ] }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 106.397992, "source_llr_stats": { "count": 174, "avg_abs": 1.599498, "min_abs": 0.001652, "max_abs": 3.929378, "positive": 127, "negative": 47, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 32, "message91": null, "message91_sha256_16": "65deb427cf8b7eb7", "codeword174_sha256_16": "8909c76f3afe3ed9", "trace": [ { "iteration": 0, "syndrome_weight": 37 }, { "iteration": 1, "syndrome_weight": 35 }, { "iteration": 2, "syndrome_weight": 47 }, { "iteration": 3, "syndrome_weight": 46 }, { "iteration": 4, "syndrome_weight": 44 }, { "iteration": 5, "syndrome_weight": 42 }, { "iteration": 6, "syndrome_weight": 44 }, { "iteration": 7, "syndrome_weight": 40 }, { "iteration": 8, "syndrome_weight": 41 }, { "iteration": 9, "syndrome_weight": 50 }, { "iteration": 10, "syndrome_weight": 46 }, { "iteration": 15, "syndrome_weight": 49 }, { "iteration": 20, "syndrome_weight": 46 } ] }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_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 }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 106.27586, "source_llr_stats": { "count": 174, "avg_abs": 1.568965, "min_abs": 0.004438, "max_abs": 3.929378, "positive": 127, "negative": 47, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 32, "message91": null, "message91_sha256_16": "6af866dd5526ddc4", "codeword174_sha256_16": "0617e26ca1de397c", "trace": [ { "iteration": 0, "syndrome_weight": 32 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 35 }, { "iteration": 3, "syndrome_weight": 35 }, { "iteration": 4, "syndrome_weight": 36 }, { "iteration": 5, "syndrome_weight": 44 }, { "iteration": 6, "syndrome_weight": 44 }, { "iteration": 7, "syndrome_weight": 44 }, { "iteration": 8, "syndrome_weight": 46 }, { "iteration": 9, "syndrome_weight": 36 }, { "iteration": 10, "syndrome_weight": 44 }, { "iteration": 15, "syndrome_weight": 33 }, { "iteration": 20, "syndrome_weight": 41 } ] }, { "variant": "raw_msb_symbol_order", "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": 126.748644, "source_llr_stats": { "count": 174, "avg_abs": 2.187161, "min_abs": 0.036806, "max_abs": 4.061714, "positive": 136, "negative": 38, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "c9336ed25ba7b177", "codeword174_sha256_16": "acafc3a93e8d22a4", "trace": [ { "iteration": 0, "syndrome_weight": 42 }, { "iteration": 1, "syndrome_weight": 35 }, { "iteration": 2, "syndrome_weight": 44 }, { "iteration": 3, "syndrome_weight": 47 }, { "iteration": 4, "syndrome_weight": 50 }, { "iteration": 5, "syndrome_weight": 43 }, { "iteration": 6, "syndrome_weight": 37 }, { "iteration": 7, "syndrome_weight": 43 }, { "iteration": 8, "syndrome_weight": 39 }, { "iteration": 9, "syndrome_weight": 37 }, { "iteration": 10, "syndrome_weight": 38 }, { "iteration": 15, "syndrome_weight": 49 }, { "iteration": 20, "syndrome_weight": 35 } ] }, { "variant": "raw_msb_symbol_order", "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": 126.748644, "source_llr_stats": { "count": 174, "avg_abs": 2.187161, "min_abs": 0.036806, "max_abs": 4.061714, "positive": 136, "negative": 38, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "89e5f7f1fec395a3", "codeword174_sha256_16": "f775ced5a5f7c68f", "trace": [ { "iteration": 0, "syndrome_weight": 42 }, { "iteration": 1, "syndrome_weight": 36 }, { "iteration": 2, "syndrome_weight": 44 }, { "iteration": 3, "syndrome_weight": 45 }, { "iteration": 4, "syndrome_weight": 36 }, { "iteration": 5, "syndrome_weight": 34 }, { "iteration": 6, "syndrome_weight": 33 }, { "iteration": 7, "syndrome_weight": 46 }, { "iteration": 8, "syndrome_weight": 41 }, { "iteration": 9, "syndrome_weight": 34 }, { "iteration": 10, "syndrome_weight": 46 }, { "iteration": 15, "syndrome_weight": 45 }, { "iteration": 20, "syndrome_weight": 38 } ] } ], "decodes": [], "outputs": { "ldpc_soft_decode_json": "/decoders/js8_decoder/runtime/ldpc_soft_decode/step37_ldpc_soft_decode.json" }, "warnings": [ "Step 37 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/20260527T040522Z_ldpc-soft-decode.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T040522Z_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_20260527T035634Z.zip [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260527T035634Z_real-run.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T035634Z_real-run_manifest.json