[js8.sh job] utc=2026-05-27T05:07:23Z [js8.sh job] build=step40-checkpointed-ridge-sweep-guard [js8.sh job] root=/decoders/js8_decoder [js8.sh job] command=./run_js8_decoder_lab.sh server-deep-run /decoders/js8_test.wav [js8.sh job] rx-only: no TX / no PTT / no Tune / no Send [webftr-js8-lab] command=server-deep-run [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260527T050723Z_server-deep-run.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T050723Z_server-deep-run_manifest.json [webftr-js8-lab] utc=20260527T050723Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] server DEEP runner [webftr-js8-lab] requested path: /decoders/js8_test.wav [webftr-js8-lab] This does not touch WebFTR productive code; it only reads a WAV and writes JS8Lab logs. [webftr-js8-lab] Deep path: real-run = input-check + dirty-window-scan + profile-scan + frame-recover + auto-ldpc-probe + candidate-export + fine timing-ridge sweep + LDPC probes + bundle. [webftr-js8-lab] resolved WAV: /decoders/js8_test.wav [webftr-js8-lab] command=real-run [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260527T050723Z_real-run.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T050723Z_real-run_manifest.json [webftr-js8-lab] utc=20260527T050723Z [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, fine timing-ridge 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/20260527T050723Z_input-check.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T050723Z_input-check_manifest.json [webftr-js8-lab] utc=20260527T050723Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T050723Z_input_check_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-input-check", "tool_version": "step40-checkpointed-ridge-sweep-guard", "input_wav": "/decoders/js8_test.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "decodes": [], "warnings": [], "wav": { "path": "/decoders/js8_test.wav", "channels": 1, "sample_rate": 12000, "sample_width_bytes": 2, "frames": 2304199, "duration_seconds": 192.016583, "rms_dbfs": -9.14, "peak_dbfs": -0.72, "clipped": false }, "next_action": "Run profile-scan, then auto-ldpc-probe on this WAV." } [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260527T050723Z_input-check.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T050723Z_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/20260527T050723Z_real_run_quick_prefilter_output.json [webftr-js8-lab] JSON timeout guard: 60s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260527T050723Z_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": "step40-checkpointed-ridge-sweep-guard", "input_wav": "/decoders/js8_test.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "wav": { "sample_rate": 12000, "duration_seconds": 192.016583, "frames": 2304199, "rms_dbfs": -9.164808449038551, "peak_dbfs": -0.7246929351669301, "clipped": false }, "scan_params": { "window_seconds": 60.0, "hop_seconds": 12.0, "max_seconds": 180.0, "output_dir": "/decoders/js8_decoder/runtime/quick_prefilter_windows" }, "selected_window": { "start_seconds": 24.0, "end_seconds": 84.0, "duration_seconds": 60.0, "avg_activity_score": -6.2272, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2728, "window_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "tone_candidates": [ { "freq_hz": 1025.0, "relative_db": 0.0, "power": 7.98385996 }, { "freq_hz": 1000.0, "relative_db": -0.38, "power": 7.31762699 }, { "freq_hz": 2025.0, "relative_db": -9.29, "power": 0.93974646 }, { "freq_hz": 975.0, "relative_db": -13.3, "power": 0.37314359 }, { "freq_hz": 1050.0, "relative_db": -25.6, "power": 0.02199227 }, { "freq_hz": 1775.0, "relative_db": -27.4, "power": 0.01453049 }, { "freq_hz": 1150.0, "relative_db": -27.44, "power": 0.01439727 }, { "freq_hz": 1425.0, "relative_db": -28.11, "power": 0.01233556 }, { "freq_hz": 1250.0, "relative_db": -29.08, "power": 0.00987629 }, { "freq_hz": 1825.0, "relative_db": -29.2, "power": 0.00959995 }, { "freq_hz": 1950.0, "relative_db": -29.78, "power": 0.00840634 }, { "freq_hz": 950.0, "relative_db": -29.91, "power": 0.00814511 } ] }, "selected_window_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "top_windows": [ { "start_seconds": 24.0, "end_seconds": 84.0, "duration_seconds": 60.0, "avg_activity_score": -6.2272, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2728, "window_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "tone_candidates": [ { "freq_hz": 1025.0, "relative_db": 0.0, "power": 7.98385996 }, { "freq_hz": 1000.0, "relative_db": -0.38, "power": 7.31762699 }, { "freq_hz": 2025.0, "relative_db": -9.29, "power": 0.93974646 }, { "freq_hz": 975.0, "relative_db": -13.3, "power": 0.37314359 }, { "freq_hz": 1050.0, "relative_db": -25.6, "power": 0.02199227 }, { "freq_hz": 1775.0, "relative_db": -27.4, "power": 0.01453049 }, { "freq_hz": 1150.0, "relative_db": -27.44, "power": 0.01439727 }, { "freq_hz": 1425.0, "relative_db": -28.11, "power": 0.01233556 }, { "freq_hz": 1250.0, "relative_db": -29.08, "power": 0.00987629 }, { "freq_hz": 1825.0, "relative_db": -29.2, "power": 0.00959995 }, { "freq_hz": 1950.0, "relative_db": -29.78, "power": 0.00840634 }, { "freq_hz": 950.0, "relative_db": -29.91, "power": 0.00814511 } ] }, { "start_seconds": 12.0, "end_seconds": 72.0, "duration_seconds": 60.0, "avg_activity_score": -6.2278, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2722 }, { "start_seconds": 36.0, "end_seconds": 96.0, "duration_seconds": 60.0, "avg_activity_score": -6.2346, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2654 }, { "start_seconds": 48.0, "end_seconds": 108.0, "duration_seconds": 60.0, "avg_activity_score": -6.2483, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2517 }, { "start_seconds": 0.0, "end_seconds": 60.0, "duration_seconds": 60.0, "avg_activity_score": -6.2606, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2394 }, { "start_seconds": 60.0, "end_seconds": 120.0, "duration_seconds": 60.0, "avg_activity_score": -6.2619, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2381 }, { "start_seconds": 108.0, "end_seconds": 168.0, "duration_seconds": 60.0, "avg_activity_score": -6.2716, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2284 }, { "start_seconds": 72.0, "end_seconds": 132.0, "duration_seconds": 60.0, "avg_activity_score": -6.2752, "active_chunks": 5, "chunk_count": 5, "selection_score": 11.2248 } ], "chunk_preview": [ { "chunk_index": 0, "start_seconds": 0.0, "end_seconds": 12.0, "rms_dbfs": -9.07, "peak_dbfs": -3.22, "activity_score": -6.2351 }, { "chunk_index": 1, "start_seconds": 12.0, "end_seconds": 24.0, "rms_dbfs": -9.27, "peak_dbfs": -3.01, "activity_score": -6.4225 }, { "chunk_index": 2, "start_seconds": 24.0, "end_seconds": 36.0, "rms_dbfs": -9.24, "peak_dbfs": -2.73, "activity_score": -6.3769 }, { "chunk_index": 3, "start_seconds": 36.0, "end_seconds": 48.0, "rms_dbfs": -9.24, "peak_dbfs": -2.39, "activity_score": -6.3632 }, { "chunk_index": 4, "start_seconds": 48.0, "end_seconds": 60.0, "rms_dbfs": -8.87, "peak_dbfs": -0.72, "activity_score": -5.9054 }, { "chunk_index": 5, "start_seconds": 60.0, "end_seconds": 72.0, "rms_dbfs": -9.03, "peak_dbfs": -0.72, "activity_score": -6.0711 }, { "chunk_index": 6, "start_seconds": 72.0, "end_seconds": 84.0, "rms_dbfs": -9.26, "peak_dbfs": -3.1, "activity_score": -6.4194 }, { "chunk_index": 7, "start_seconds": 84.0, "end_seconds": 96.0, "rms_dbfs": -9.29, "peak_dbfs": -2.42, "activity_score": -6.4141 } ], "chunk_tail_preview": [ { "chunk_index": 7, "start_seconds": 84.0, "end_seconds": 96.0, "rms_dbfs": -9.29, "peak_dbfs": -2.42, "activity_score": -6.4141 }, { "chunk_index": 8, "start_seconds": 96.0, "end_seconds": 108.0, "rms_dbfs": -9.3, "peak_dbfs": -2.65, "activity_score": -6.4314 }, { "chunk_index": 9, "start_seconds": 108.0, "end_seconds": 120.0, "rms_dbfs": -8.87, "peak_dbfs": -2.1, "activity_score": -5.9734 }, { "chunk_index": 10, "start_seconds": 120.0, "end_seconds": 132.0, "rms_dbfs": -9.02, "peak_dbfs": -2.36, "activity_score": -6.1378 }, { "chunk_index": 11, "start_seconds": 132.0, "end_seconds": 144.0, "rms_dbfs": -9.41, "peak_dbfs": -0.72, "activity_score": -6.4474 }, { "chunk_index": 12, "start_seconds": 144.0, "end_seconds": 156.0, "rms_dbfs": -9.3, "peak_dbfs": -2.31, "activity_score": -6.4185 }, { "chunk_index": 13, "start_seconds": 156.0, "end_seconds": 168.0, "rms_dbfs": -9.34, "peak_dbfs": -0.89, "activity_score": -6.3807 }, { "chunk_index": 14, "start_seconds": 168.0, "end_seconds": 180.0, "rms_dbfs": -8.99, "peak_dbfs": -3.03, "activity_score": -6.1457 } ], "decodes": [], "warnings": [ "Quick-window-scan only selects a likely analysis window; it is not a JS8 text decoder." ], "next_action": "Run sync/soft-symbol/FEC probes on selected_window_wav. Message unpack is not implemented in Step 40." } [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/20260527T050723Z_real_run_dirty_window_scan_output.json [webftr-js8-lab] JSON timeout guard: 60s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260527T050723Z_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/20260527T050723Z_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 40 timeout guard stopped this expensive probe; preserved partial timing JSON when available. 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 40: 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/20260527T050723Z_real_run_profile_scan_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "mode": "JS8", "tool": "webftr-js8-profile-scan", "tool_version": "step40-checkpointed-ridge-sweep-guard", "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": "step40_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 40 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/20260527T050723Z_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/20260527T051000Z_frame-recover.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T051000Z_frame-recover_manifest.json [webftr-js8-lab] utc=20260527T051000Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T051000Z_frame_recover_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-frame-recover", "tool_version": "step40-checkpointed-ridge-sweep-guard", "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": "step40_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": "step40-checkpointed-ridge-sweep-guard", "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": "step40_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 40 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 40 selects the best timing/profile candidate only. It still does not decode final JS8 text.", "Step 40 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/20260527T051000Z_frame-recover.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T051000Z_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/20260527T050723Z_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": "step40-checkpointed-ridge-sweep-guard", "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": "step40_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": "step40-checkpointed-ridge-sweep-guard", "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": "step40_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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 selects the best timing/profile candidate only. It still does not decode final JS8 text.", "No JS8 text decode is expected in Step 40. 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 40. 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 40 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 40 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 40 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 40 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 40. 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/20260527T050723Z_real_run_auto_ldpc_probe_output.json ========== REAL-RUN STEP 6/9: CANDIDATE EXPORT ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T050723Z_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": "step40-checkpointed-ridge-sweep-guard", "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": "step40_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/20260527T050723Z_real_run_profile_scan_output.json", "anchor_json": "/decoders/js8_decoder/logs/20260527T050723Z_real_run_auto_ldpc_probe_output.json", "anchor_selection": { "source": "profile_scan_json", "path": "/decoders/js8_decoder/logs/20260527T050723Z_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/20260527T050723Z_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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 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 40 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/20260527T050723Z_real_run_candidate_export_output.json [webftr-js8-lab] Step 40 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/20260527T050723Z_real_run_timing_boundary_sweep_output.json [webftr-js8-lab] JSON timeout guard: 300s { "ok": true, "mode": "JS8", "tool": "webftr-js8-timing-boundary-candidate-sweep", "tool_version": "step40-checkpointed-ridge-sweep-guard", "input_wav": "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "profile_scan_json": "/decoders/js8_decoder/logs/20260527T050723Z_real_run_profile_scan_output.json", "anchor_json": "/decoders/js8_decoder/logs/20260527T050723Z_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": "step40_timing_boundary_syndrome_sweep_no_message_unpack", "anchor_selection": { "source": "profile_scan_json", "path": "/decoders/js8_decoder/logs/20260527T050723Z_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 }, "partial": true, "partial_reason": "time_budget_reached", "sweep_elapsed_seconds": 252.08, "sweep_grid": { "start_offsets_s": [ 0.0, 0.03, 0.06, 0.09, 0.12, 0.15, 0.18 ], "base_freq_offsets_hz": [ 1.5, 2.0, 2.5, 3.0, 3.5 ], "tone_spacing_offsets_hz": [ 0.0, 0.03, 0.06, 0.09, 0.12 ], "max_combinations": 175, "actual_combinations": 175, "processed_combinations": 70, "time_budget_seconds": 245.0 }, "decode_found": false, "best_final_syndrome_weight": 22, "best_candidate": { "combination_index": 67, "offsets": { "start_offset_s": 0.06, "base_freq_offset_hz": 3.0, "tone_spacing_offset_hz": 0.03 }, "anchor_applied": { "start_seconds": 4.859999999999999, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.905, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 58320, "start_seconds": 4.86, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.905, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:67" }, "best_row": { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 140, "llr_stats": { "count": 174, "avg_abs": 1.827784, "min_abs": 0.008053, "max_abs": 4.126624, "positive": 36, "negative": 138, "zero": 0 }, "source_rank_score": 107.311136, "syndrome_weight": 22, "valid_codeword_hard_decision": false, "message91_sha256_16": "67b59638aa8882d6", "codeword174_sha256_16": "0228efbd612c9092" }, "top_rows": [ { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 140, "llr_stats": { "count": 174, "avg_abs": 1.827784, "min_abs": 0.008053, "max_abs": 4.126624, "positive": 36, "negative": 138, "zero": 0 }, "source_rank_score": 107.311136, "syndrome_weight": 22, "valid_codeword_hard_decision": false, "message91_sha256_16": "67b59638aa8882d6", "codeword174_sha256_16": "0228efbd612c9092" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 127, "llr_stats": { "count": 174, "avg_abs": 1.67241, "min_abs": 0.015278, "max_abs": 4.092886, "positive": 43, "negative": 131, "zero": 0 }, "source_rank_score": 106.68964, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "6a76c3f6f4855f72", "codeword174_sha256_16": "e94fe0f75c74d230" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 35, "llr_stats": { "count": 174, "avg_abs": 1.591212, "min_abs": 0.003661, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "source_rank_score": 106.364848, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "4f673c96b1f1de5c", "codeword174_sha256_16": "90bdd003a67ea079" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 36, "llr_stats": { "count": 174, "avg_abs": 1.64278, "min_abs": 0.002394, "max_abs": 4.126624, "positive": 148, "negative": 26, "zero": 0 }, "source_rank_score": 106.57112, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "4f673c96b1f1de5c", "codeword174_sha256_16": "eb17c3d482c6c1fa" }, { "variant": "lab_mask_xor_preview", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 83, "llr_stats": { "count": 174, "avg_abs": 1.882468, "min_abs": 0.003299, "max_abs": 4.126624, "positive": 26, "negative": 148, "zero": 0 }, "source_rank_score": 99.529872, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "e3f175dd3a2c81b2", "codeword174_sha256_16": "d5da07ca10be5a38" }, { "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 138, "llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 35, "negative": 139, "zero": 0 }, "source_rank_score": 109.063032, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "d5fd881ddc0d6fa3", "codeword174_sha256_16": "524f6b31360d4b54" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 121, "llr_stats": { "count": 174, "avg_abs": 1.882468, "min_abs": 0.003299, "max_abs": 4.126624, "positive": 26, "negative": 148, "zero": 0 }, "source_rank_score": 111.529872, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "b5db807c301847ac", "codeword174_sha256_16": "eaf8f2e0f46bfa41" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 123, "llr_stats": { "count": 174, "avg_abs": 1.827784, "min_abs": 0.008053, "max_abs": 4.126624, "positive": 36, "negative": 138, "zero": 0 }, "source_rank_score": 111.311136, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "b5db807c301847ac", "codeword174_sha256_16": "3bc0238a33865be3" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 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": 67, "offsets": { "start_offset_s": 0.06, "base_freq_offset_hz": 3.0, "tone_spacing_offset_hz": 0.03 }, "anchor_applied": { "start_seconds": 4.859999999999999, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.905, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 58320, "start_seconds": 4.86, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.905, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:67" }, "best_row": { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 140, "llr_stats": { "count": 174, "avg_abs": 1.827784, "min_abs": 0.008053, "max_abs": 4.126624, "positive": 36, "negative": 138, "zero": 0 }, "source_rank_score": 107.311136, "syndrome_weight": 22, "valid_codeword_hard_decision": false, "message91_sha256_16": "67b59638aa8882d6", "codeword174_sha256_16": "0228efbd612c9092" }, "top_rows": [ { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 140, "llr_stats": { "count": 174, "avg_abs": 1.827784, "min_abs": 0.008053, "max_abs": 4.126624, "positive": 36, "negative": 138, "zero": 0 }, "source_rank_score": 107.311136, "syndrome_weight": 22, "valid_codeword_hard_decision": false, "message91_sha256_16": "67b59638aa8882d6", "codeword174_sha256_16": "0228efbd612c9092" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 127, "llr_stats": { "count": 174, "avg_abs": 1.67241, "min_abs": 0.015278, "max_abs": 4.092886, "positive": 43, "negative": 131, "zero": 0 }, "source_rank_score": 106.68964, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "6a76c3f6f4855f72", "codeword174_sha256_16": "e94fe0f75c74d230" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 35, "llr_stats": { "count": 174, "avg_abs": 1.591212, "min_abs": 0.003661, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "source_rank_score": 106.364848, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "4f673c96b1f1de5c", "codeword174_sha256_16": "90bdd003a67ea079" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 36, "llr_stats": { "count": 174, "avg_abs": 1.64278, "min_abs": 0.002394, "max_abs": 4.126624, "positive": 148, "negative": 26, "zero": 0 }, "source_rank_score": 106.57112, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "4f673c96b1f1de5c", "codeword174_sha256_16": "eb17c3d482c6c1fa" }, { "variant": "lab_mask_xor_preview", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 83, "llr_stats": { "count": 174, "avg_abs": 1.882468, "min_abs": 0.003299, "max_abs": 4.126624, "positive": 26, "negative": 148, "zero": 0 }, "source_rank_score": 99.529872, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "e3f175dd3a2c81b2", "codeword174_sha256_16": "d5da07ca10be5a38" }, { "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 138, "llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 35, "negative": 139, "zero": 0 }, "source_rank_score": 109.063032, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "d5fd881ddc0d6fa3", "codeword174_sha256_16": "524f6b31360d4b54" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 121, "llr_stats": { "count": 174, "avg_abs": 1.882468, "min_abs": 0.003299, "max_abs": 4.126624, "positive": 26, "negative": 148, "zero": 0 }, "source_rank_score": 111.529872, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "b5db807c301847ac", "codeword174_sha256_16": "eaf8f2e0f46bfa41" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 123, "llr_stats": { "count": 174, "avg_abs": 1.827784, "min_abs": 0.008053, "max_abs": 4.126624, "positive": 36, "negative": 138, "zero": 0 }, "source_rank_score": 111.311136, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "b5db807c301847ac", "codeword174_sha256_16": "3bc0238a33865be3" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 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.0, "base_freq_offset_hz": 2.5, "tone_spacing_offset_hz": 0.06 }, "anchor_applied": { "start_seconds": 4.8, "base_freq_hz": 1027.5, "tone_spacing_hz": 1.935, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 57600, "start_seconds": 4.8, "base_freq_hz": 1027.5, "tone_spacing_hz": 1.935, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:13" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 43, "llr_stats": { "count": 174, "avg_abs": 1.925787, "min_abs": 0.002425, "max_abs": 4.244362, "positive": 131, "negative": 43, "zero": 0 }, "source_rank_score": 107.703148, "syndrome_weight": 23, "valid_codeword_hard_decision": false, "message91_sha256_16": "a56c432dc8f00fc9", "codeword174_sha256_16": "a17207e1ef99415e" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 43, "llr_stats": { "count": 174, "avg_abs": 1.925787, "min_abs": 0.002425, "max_abs": 4.244362, "positive": 131, "negative": 43, "zero": 0 }, "source_rank_score": 107.703148, "syndrome_weight": 23, "valid_codeword_hard_decision": false, "message91_sha256_16": "a56c432dc8f00fc9", "codeword174_sha256_16": "a17207e1ef99415e" }, { "variant": "raw_msb_symbol_order", "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": 43, "llr_stats": { "count": 174, "avg_abs": 1.925787, "min_abs": 0.002425, "max_abs": 4.244362, "positive": 131, "negative": 43, "zero": 0 }, "source_rank_score": 125.703148, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "79849ae5b5761b64", "codeword174_sha256_16": "96993e6b8502171e" }, { "variant": "lsb_within_each_tone", "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": 43, "llr_stats": { "count": 174, "avg_abs": 1.673104, "min_abs": 0.002425, "max_abs": 3.935317, "positive": 107, "negative": 67, "zero": 0 }, "source_rank_score": 116.692416, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "79849ae5b5761b64", "codeword174_sha256_16": "96993e6b8502171e" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "raw_msb+no_interleaver", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 43, "llr_stats": { "count": 174, "avg_abs": 1.925787, "min_abs": 0.002425, "max_abs": 4.244362, "positive": 131, "negative": 43, "zero": 0 }, "source_rank_score": 107.703148, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "79849ae5b5761b64", "codeword174_sha256_16": "96993e6b8502171e" }, { "variant": "mapped_ft8_gray_primary_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 }, "bit_count": 174, "hard_weight_174": 43, "llr_stats": { "count": 174, "avg_abs": 1.925787, "min_abs": 0.002425, "max_abs": 4.244362, "positive": 131, "negative": 43, "zero": 0 }, "source_rank_score": 107.703148, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "79849ae5b5761b64", "codeword174_sha256_16": "96993e6b8502171e" }, { "variant": "mapped_lsb_within_each_tone+no_interleaver", "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": 43, "llr_stats": { "count": 174, "avg_abs": 1.925787, "min_abs": 0.002425, "max_abs": 4.244362, "positive": 131, "negative": 43, "zero": 0 }, "source_rank_score": 107.703148, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "79849ae5b5761b64", "codeword174_sha256_16": "96993e6b8502171e" }, { "variant": "mapped_raw_msb+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 43, "llr_stats": { "count": 174, "avg_abs": 1.925787, "min_abs": 0.002425, "max_abs": 4.244362, "positive": 131, "negative": 43, "zero": 0 }, "source_rank_score": 107.703148, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "79849ae5b5761b64", "codeword174_sha256_16": "96993e6b8502171e" }, { "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": 67, "llr_stats": { "count": 174, "avg_abs": 1.690296, "min_abs": 0.002075, "max_abs": 4.244362, "positive": 105, "negative": 69, "zero": 0 }, "source_rank_score": 106.761184, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "bc3f1d8ea30b78f6", "codeword174_sha256_16": "8e06f867b9a3cc1f" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 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": 26, "offsets": { "start_offset_s": 0.03, "base_freq_offset_hz": 1.5, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 4.83, "base_freq_hz": 1026.5, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 57960, "start_seconds": 4.83, "base_freq_hz": 1026.5, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:26" }, "best_row": { "variant": "reverse_symbol_order", "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": 144, "llr_stats": { "count": 174, "avg_abs": 2.315831, "min_abs": 0.071036, "max_abs": 4.413731, "positive": 28, "negative": 146, "zero": 0 }, "source_rank_score": 113.263324, "syndrome_weight": 24, "valid_codeword_hard_decision": false, "message91_sha256_16": "28dea9dc01caee31", "codeword174_sha256_16": "b0298b985174f75f" }, "top_rows": [ { "variant": "reverse_symbol_order", "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": 144, "llr_stats": { "count": 174, "avg_abs": 2.315831, "min_abs": 0.071036, "max_abs": 4.413731, "positive": 28, "negative": 146, "zero": 0 }, "source_rank_score": 113.263324, "syndrome_weight": 24, "valid_codeword_hard_decision": false, "message91_sha256_16": "28dea9dc01caee31", "codeword174_sha256_16": "b0298b985174f75f" }, { "variant": "reverse_full_bitstream", "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": 144, "llr_stats": { "count": 174, "avg_abs": 2.315831, "min_abs": 0.071036, "max_abs": 4.413731, "positive": 28, "negative": 146, "zero": 0 }, "source_rank_score": 112.263324, "syndrome_weight": 24, "valid_codeword_hard_decision": false, "message91_sha256_16": "28dea9dc01caee31", "codeword174_sha256_16": "b0298b985174f75f" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+no_interleaver", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 41, "llr_stats": { "count": 174, "avg_abs": 1.969087, "min_abs": 0.011057, "max_abs": 4.413731, "positive": 138, "negative": 36, "zero": 0 }, "source_rank_score": 107.876348, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "f73b97a818484b0d", "codeword174_sha256_16": "7d421fd64b92c3f8" }, { "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": 113, "llr_stats": { "count": 174, "avg_abs": 1.217554, "min_abs": 0.002095, "max_abs": 3.613059, "positive": 61, "negative": 113, "zero": 0 }, "source_rank_score": 104.870216, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "4be8af46f6e2e9ff", "codeword174_sha256_16": "b11f8fbf5002ea6e" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 131, "llr_stats": { "count": 174, "avg_abs": 1.917139, "min_abs": 0.012258, "max_abs": 4.413731, "positive": 39, "negative": 135, "zero": 0 }, "source_rank_score": 107.668556, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "aa7b8443764ea551", "codeword174_sha256_16": "600335467de09838" }, { "variant": "mapped_raw_msb+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": 30, "llr_stats": { "count": 174, "avg_abs": 2.315831, "min_abs": 0.071036, "max_abs": 4.413731, "positive": 146, "negative": 28, "zero": 0 }, "source_rank_score": 109.263324, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "a90693326079518a", "codeword174_sha256_16": "91a9ac02cd407b0a" }, { "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": 32, "llr_stats": { "count": 174, "avg_abs": 1.757628, "min_abs": 0.005004, "max_abs": 4.413731, "positive": 150, "negative": 24, "zero": 0 }, "source_rank_score": 107.030512, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "8f05005b55aea890", "codeword174_sha256_16": "0673504acba3da76" }, { "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": 32, "llr_stats": { "count": 174, "avg_abs": 1.704037, "min_abs": 0.001054, "max_abs": 4.413731, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 106.816148, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "8f05005b55aea890", "codeword174_sha256_16": "0673504acba3da76" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 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": 62, "offsets": { "start_offset_s": 0.06, "base_freq_offset_hz": 2.5, "tone_spacing_offset_hz": 0.03 }, "anchor_applied": { "start_seconds": 4.859999999999999, "base_freq_hz": 1027.5, "tone_spacing_hz": 1.905, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 58320, "start_seconds": 4.86, "base_freq_hz": 1027.5, "tone_spacing_hz": 1.905, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:62" }, "best_row": { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 130, "llr_stats": { "count": 174, "avg_abs": 1.889166, "min_abs": 0.023337, "max_abs": 4.389904, "positive": 34, "negative": 140, "zero": 0 }, "source_rank_score": 111.556664, "syndrome_weight": 24, "valid_codeword_hard_decision": false, "message91_sha256_16": "339b76da8237e87f", "codeword174_sha256_16": "89e62c1df19546da" }, "top_rows": [ { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 130, "llr_stats": { "count": 174, "avg_abs": 1.889166, "min_abs": 0.023337, "max_abs": 4.389904, "positive": 34, "negative": 140, "zero": 0 }, "source_rank_score": 111.556664, "syndrome_weight": 24, "valid_codeword_hard_decision": false, "message91_sha256_16": "339b76da8237e87f", "codeword174_sha256_16": "89e62c1df19546da" }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 130, "llr_stats": { "count": 174, "avg_abs": 1.699718, "min_abs": 0.023337, "max_abs": 3.983109, "positive": 45, "negative": 129, "zero": 0 }, "source_rank_score": 109.798872, "syndrome_weight": 24, "valid_codeword_hard_decision": false, "message91_sha256_16": "339b76da8237e87f", "codeword174_sha256_16": "89e62c1df19546da" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 128, "llr_stats": { "count": 174, "avg_abs": 1.958645, "min_abs": 0.001909, "max_abs": 4.389904, "positive": 28, "negative": 146, "zero": 0 }, "source_rank_score": 111.83458, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "339b76da8237e87f", "codeword174_sha256_16": "7f5e77fbd6502d39" }, { "variant": "reverse_full_bitstream", "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": 128, "llr_stats": { "count": 174, "avg_abs": 1.769196, "min_abs": 0.001909, "max_abs": 3.983109, "positive": 39, "negative": 135, "zero": 0 }, "source_rank_score": 110.076784, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "339b76da8237e87f", "codeword174_sha256_16": "7f5e77fbd6502d39" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 139, "llr_stats": { "count": 174, "avg_abs": 1.958645, "min_abs": 0.001909, "max_abs": 4.389904, "positive": 28, "negative": 146, "zero": 0 }, "source_rank_score": 107.83458, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "c6a1e6c5b701ae09", "codeword174_sha256_16": "a5675f82762f2950" }, { "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": 35, "llr_stats": { "count": 174, "avg_abs": 1.958645, "min_abs": 0.001909, "max_abs": 4.389904, "positive": 146, "negative": 28, "zero": 0 }, "source_rank_score": 107.83458, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "967cb52d8f49fa2f", "codeword174_sha256_16": "4e74d4ad99e81b39" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 141, "llr_stats": { "count": 174, "avg_abs": 1.889166, "min_abs": 0.023337, "max_abs": 4.389904, "positive": 34, "negative": 140, "zero": 0 }, "source_rank_score": 107.556664, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "75d9cca113318b71", "codeword174_sha256_16": "5b3a16c7d8de82d0" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 141, "llr_stats": { "count": 174, "avg_abs": 1.889166, "min_abs": 0.023337, "max_abs": 4.389904, "positive": 34, "negative": 140, "zero": 0 }, "source_rank_score": 107.556664, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "c6a1e6c5b701ae09", "codeword174_sha256_16": "92bf3b362ca2fc1d" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 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": 50, "offsets": { "start_offset_s": 0.03, "base_freq_offset_hz": 3.5, "tone_spacing_offset_hz": 0.12 }, "anchor_applied": { "start_seconds": 4.83, "base_freq_hz": 1028.5, "tone_spacing_hz": 1.995, "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": 57960, "start_seconds": 4.83, "base_freq_hz": 1028.5, "tone_spacing_hz": 1.995, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:50" }, "best_row": { "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": 41, "llr_stats": { "count": 174, "avg_abs": 1.529046, "min_abs": 1.4e-05, "max_abs": 4.19043, "positive": 135, "negative": 39, "zero": 0 }, "source_rank_score": 106.116184, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "07b291c6f0285713", "codeword174_sha256_16": "36e5228ce4617de6" }, "top_rows": [ { "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": 41, "llr_stats": { "count": 174, "avg_abs": 1.529046, "min_abs": 1.4e-05, "max_abs": 4.19043, "positive": 135, "negative": 39, "zero": 0 }, "source_rank_score": 106.116184, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "07b291c6f0285713", "codeword174_sha256_16": "36e5228ce4617de6" }, { "variant": "mapped_ft8_gray_primary_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": 108, "llr_stats": { "count": 174, "avg_abs": 1.110198, "min_abs": 0.007285, "max_abs": 3.637548, "positive": 52, "negative": 122, "zero": 0 }, "source_rank_score": 104.440792, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "1ee9dcf7f7156abf", "codeword174_sha256_16": "76c05db2564abe38" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+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": 55, "llr_stats": { "count": 174, "avg_abs": 1.250607, "min_abs": 0.000722, "max_abs": 4.044608, "positive": 127, "negative": 47, "zero": 0 }, "source_rank_score": 105.002428, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "ea180d9a187404af", "codeword174_sha256_16": "a3d0b91652588c66" }, { "variant": "lab_mask_xor_preview", "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": 78, "llr_stats": { "count": 174, "avg_abs": 2.109753, "min_abs": 0.007356, "max_abs": 4.19043, "positive": 41, "negative": 133, "zero": 0 }, "source_rank_score": 100.439012, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "ff63f01f6b43dadd", "codeword174_sha256_16": "2a584e44de2e34c6" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "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": 63, "llr_stats": { "count": 174, "avg_abs": 1.566058, "min_abs": 0.020839, "max_abs": 4.19043, "positive": 124, "negative": 50, "zero": 0 }, "source_rank_score": 106.264232, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "c2069b9bc8d3e942", "codeword174_sha256_16": "d903d4bc9c9a0132" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 117, "llr_stats": { "count": 174, "avg_abs": 1.417679, "min_abs": 0.00175, "max_abs": 4.044608, "positive": 57, "negative": 117, "zero": 0 }, "source_rank_score": 105.670716, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "992bc03b492d3766", "codeword174_sha256_16": "757ea935f1890bc6" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 52, "llr_stats": { "count": 174, "avg_abs": 1.50121, "min_abs": 0.003624, "max_abs": 3.742912, "positive": 124, "negative": 50, "zero": 0 }, "source_rank_score": 106.00484, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "5848a879842a4630", "codeword174_sha256_16": "04754275e2348e69" }, { "variant": "mapped_raw_msb+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": 56, "llr_stats": { "count": 174, "avg_abs": 1.462665, "min_abs": 0.000729, "max_abs": 4.061534, "positive": 119, "negative": 55, "zero": 0 }, "source_rank_score": 105.85066, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "5d74af2be109882b", "codeword174_sha256_16": "942655234941db2d" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 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": 68, "offsets": { "start_offset_s": 0.06, "base_freq_offset_hz": 3.0, "tone_spacing_offset_hz": 0.06 }, "anchor_applied": { "start_seconds": 4.859999999999999, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.935, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 58320, "start_seconds": 4.86, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.935, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:68" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_lsb_input+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": 111, "llr_stats": { "count": 174, "avg_abs": 1.203085, "min_abs": 5.8e-05, "max_abs": 3.777959, "positive": 57, "negative": 117, "zero": 0 }, "source_rank_score": 104.81234, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "82d99c2b1b723f51", "codeword174_sha256_16": "d0ec881b907683a5" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_lsb_input+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": 111, "llr_stats": { "count": 174, "avg_abs": 1.203085, "min_abs": 5.8e-05, "max_abs": 3.777959, "positive": 57, "negative": 117, "zero": 0 }, "source_rank_score": 104.81234, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "82d99c2b1b723f51", "codeword174_sha256_16": "d0ec881b907683a5" }, { "variant": "raw_msb_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": 55, "llr_stats": { "count": 174, "avg_abs": 1.669485, "min_abs": 0.00791, "max_abs": 4.059493, "positive": 121, "negative": 53, "zero": 0 }, "source_rank_score": 124.67794, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "99256669e7b474b7", "codeword174_sha256_16": "50a0f1d99c91e565" }, { "variant": "lsb_within_each_tone", "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": 55, "llr_stats": { "count": 174, "avg_abs": 1.83464, "min_abs": 0.00791, "max_abs": 4.149461, "positive": 139, "negative": 35, "zero": 0 }, "source_rank_score": 117.33856, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "99256669e7b474b7", "codeword174_sha256_16": "50a0f1d99c91e565" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "raw_msb+no_interleaver", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 55, "llr_stats": { "count": 174, "avg_abs": 1.669485, "min_abs": 0.00791, "max_abs": 4.059493, "positive": 121, "negative": 53, "zero": 0 }, "source_rank_score": 106.67794, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "99256669e7b474b7", "codeword174_sha256_16": "50a0f1d99c91e565" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 55, "llr_stats": { "count": 174, "avg_abs": 1.669485, "min_abs": 0.00791, "max_abs": 4.059493, "positive": 121, "negative": 53, "zero": 0 }, "source_rank_score": 106.67794, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "99256669e7b474b7", "codeword174_sha256_16": "50a0f1d99c91e565" }, { "variant": "mapped_lsb_within_each_tone+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": 55, "llr_stats": { "count": 174, "avg_abs": 1.669485, "min_abs": 0.00791, "max_abs": 4.059493, "positive": 121, "negative": 53, "zero": 0 }, "source_rank_score": 106.67794, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "99256669e7b474b7", "codeword174_sha256_16": "50a0f1d99c91e565" }, { "variant": "mapped_raw_msb+no_interleaver", "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": 55, "llr_stats": { "count": 174, "avg_abs": 1.669485, "min_abs": 0.00791, "max_abs": 4.059493, "positive": 121, "negative": 53, "zero": 0 }, "source_rank_score": 106.67794, "syndrome_weight": 27, "valid_codeword_hard_decision": false, "message91_sha256_16": "99256669e7b474b7", "codeword174_sha256_16": "50a0f1d99c91e565" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 66, "llr_stats": { "count": 174, "avg_abs": 1.165555, "min_abs": 0.002829, "max_abs": 3.777959, "positive": 109, "negative": 65, "zero": 0 }, "source_rank_score": 104.66222, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "8ade1bd26657e4c0", "codeword174_sha256_16": "a813f8fff6dc6c1c" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 3, "offsets": { "start_offset_s": 0.0, "base_freq_offset_hz": 1.5, "tone_spacing_offset_hz": 0.06 }, "anchor_applied": { "start_seconds": 4.8, "base_freq_hz": 1026.5, "tone_spacing_hz": 1.935, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 57600, "start_seconds": 4.8, "base_freq_hz": 1026.5, "tone_spacing_hz": 1.935, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:3" }, "best_row": { "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": 71, "llr_stats": { "count": 174, "avg_abs": 1.167229, "min_abs": 0.000194, "max_abs": 3.978218, "positive": 99, "negative": 75, "zero": 0 }, "source_rank_score": 104.668916, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "ab1107736d468b40", "codeword174_sha256_16": "02cdff0a19f0b07b" }, "top_rows": [ { "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": 71, "llr_stats": { "count": 174, "avg_abs": 1.167229, "min_abs": 0.000194, "max_abs": 3.978218, "positive": 99, "negative": 75, "zero": 0 }, "source_rank_score": 104.668916, "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "ab1107736d468b40", "codeword174_sha256_16": "02cdff0a19f0b07b" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+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": 102, "llr_stats": { "count": 174, "avg_abs": 1.180885, "min_abs": 5.6e-05, "max_abs": 4.326376, "positive": 69, "negative": 105, "zero": 0 }, "source_rank_score": 104.72354, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "95a49480ab593457", "codeword174_sha256_16": "9355f26c73404d7b" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 113, "llr_stats": { "count": 174, "avg_abs": 1.809402, "min_abs": 0.004648, "max_abs": 4.45525, "positive": 57, "negative": 117, "zero": 0 }, "source_rank_score": 107.237608, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "a91f226bdc1b96cf", "codeword174_sha256_16": "af6535d26ca5403d" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 110, "llr_stats": { "count": 174, "avg_abs": 1.386362, "min_abs": 0.000992, "max_abs": 4.45525, "positive": 61, "negative": 113, "zero": 0 }, "source_rank_score": 105.545448, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "40123cf0ff16a873", "codeword174_sha256_16": "83689b1c0c79b43d" }, { "variant": "raw_msb_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": 69, "llr_stats": { "count": 174, "avg_abs": 1.665248, "min_abs": 0.005237, "max_abs": 4.326376, "positive": 106, "negative": 68, "zero": 0 }, "source_rank_score": 124.660992, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "25d09f2c869fb113", "codeword174_sha256_16": "0392e0db33f1396f" }, { "variant": "lsb_within_each_tone", "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": 69, "llr_stats": { "count": 174, "avg_abs": 1.922521, "min_abs": 0.005237, "max_abs": 4.45525, "positive": 124, "negative": 50, "zero": 0 }, "source_rank_score": 117.690084, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "25d09f2c869fb113", "codeword174_sha256_16": "0392e0db33f1396f" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 121, "llr_stats": { "count": 174, "avg_abs": 1.922521, "min_abs": 0.005237, "max_abs": 4.45525, "positive": 50, "negative": 124, "zero": 0 }, "source_rank_score": 107.690084, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "785b20f85a0bdf13", "codeword174_sha256_16": "0951d1dd2a7adca7" }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "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": 61, "llr_stats": { "count": 174, "avg_abs": 1.809402, "min_abs": 0.004648, "max_abs": 4.45525, "positive": 117, "negative": 57, "zero": 0 }, "source_rank_score": 107.237608, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "9f578b5ceda2b24e", "codeword174_sha256_16": "23c813f47e1e036b" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation." ] }, { "combination_index": 17, "offsets": { "start_offset_s": 0.0, "base_freq_offset_hz": 3.0, "tone_spacing_offset_hz": 0.03 }, "anchor_applied": { "start_seconds": 4.8, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.905, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 57600, "start_seconds": 4.8, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.905, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:17" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 38, "llr_stats": { "count": 174, "avg_abs": 1.883273, "min_abs": 0.004668, "max_abs": 4.206963, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 107.533092, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "9dc92bc8076d3453", "codeword174_sha256_16": "69589423fe420ec9" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 38, "llr_stats": { "count": 174, "avg_abs": 1.883273, "min_abs": 0.004668, "max_abs": 4.206963, "positive": 144, "negative": 30, "zero": 0 }, "source_rank_score": 107.533092, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "9dc92bc8076d3453", "codeword174_sha256_16": "69589423fe420ec9" }, { "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 63, "llr_stats": { "count": 174, "avg_abs": 1.495211, "min_abs": 0.006001, "max_abs": 4.206963, "positive": 115, "negative": 59, "zero": 0 }, "source_rank_score": 105.980844, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "980fa2c313a59ed7", "codeword174_sha256_16": "94f3aa758feed897" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 113, "llr_stats": { "count": 174, "avg_abs": 1.171359, "min_abs": 0.000261, "max_abs": 3.142279, "positive": 62, "negative": 112, "zero": 0 }, "source_rank_score": 104.685436, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "d347312390ff5cf2", "codeword174_sha256_16": "6dd8473311877d6b" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 55, "llr_stats": { "count": 174, "avg_abs": 1.140102, "min_abs": 1e-06, "max_abs": 2.987177, "positive": 121, "negative": 53, "zero": 0 }, "source_rank_score": 104.560408, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "a17885ef99d8871e", "codeword174_sha256_16": "9d7026f93f1641b5" }, { "variant": "raw_msb_symbol_order", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 40, "llr_stats": { "count": 174, "avg_abs": 1.826466, "min_abs": 0.000261, "max_abs": 4.206963, "positive": 132, "negative": 42, "zero": 0 }, "source_rank_score": 125.305864, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "2713ced8ec42e2ee", "codeword174_sha256_16": "df1c85af54cc4761" }, { "variant": "lsb_within_each_tone", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 40, "llr_stats": { "count": 174, "avg_abs": 1.520682, "min_abs": 0.000261, "max_abs": 3.761123, "positive": 113, "negative": 61, "zero": 0 }, "source_rank_score": 116.082728, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "2713ced8ec42e2ee", "codeword174_sha256_16": "df1c85af54cc4761" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 40, "llr_stats": { "count": 174, "avg_abs": 1.826466, "min_abs": 0.000261, "max_abs": 4.206963, "positive": 132, "negative": 42, "zero": 0 }, "source_rank_score": 107.305864, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "2713ced8ec42e2ee", "codeword174_sha256_16": "df1c85af54cc4761" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 40, "llr_stats": { "count": 174, "avg_abs": 1.826466, "min_abs": 0.000261, "max_abs": 4.206963, "positive": 132, "negative": 42, "zero": 0 }, "source_rank_score": 107.305864, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "2713ced8ec42e2ee", "codeword174_sha256_16": "df1c85af54cc4761" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 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": 34, "offsets": { "start_offset_s": 0.03, "base_freq_offset_hz": 2.0, "tone_spacing_offset_hz": 0.09 }, "anchor_applied": { "start_seconds": 4.83, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.965, "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": 57960, "start_seconds": 4.83, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.965, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:34" }, "best_row": { "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+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": 124, "llr_stats": { "count": 174, "avg_abs": 1.840438, "min_abs": 0.004782, "max_abs": 4.024881, "positive": 50, "negative": 124, "zero": 0 }, "source_rank_score": 107.361752, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "661287b4e47b0fe7", "codeword174_sha256_16": "77c52a1fac001ca6" }, "top_rows": [ { "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+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": 124, "llr_stats": { "count": 174, "avg_abs": 1.840438, "min_abs": 0.004782, "max_abs": 4.024881, "positive": 50, "negative": 124, "zero": 0 }, "source_rank_score": 107.361752, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "661287b4e47b0fe7", "codeword174_sha256_16": "77c52a1fac001ca6" }, { "variant": "mapped_raw_msb+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": 59, "llr_stats": { "count": 174, "avg_abs": 1.74117, "min_abs": 0.04949, "max_abs": 4.031044, "positive": 118, "negative": 56, "zero": 0 }, "source_rank_score": 106.96468, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "7fd963513317f7a3", "codeword174_sha256_16": "91b40eb31ebf0c3b" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_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": 53, "llr_stats": { "count": 174, "avg_abs": 1.34407, "min_abs": 0.000646, "max_abs": 3.998258, "positive": 124, "negative": 50, "zero": 0 }, "source_rank_score": 105.37628, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "c6fa8a7d42e310bc", "codeword174_sha256_16": "00b1969134e12bd8" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 55, "llr_stats": { "count": 174, "avg_abs": 1.319931, "min_abs": 0.000646, "max_abs": 3.025505, "positive": 122, "negative": 52, "zero": 0 }, "source_rank_score": 105.279724, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "dedbfee70e56874b", "codeword174_sha256_16": "de6385718f7344f2" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 124, "llr_stats": { "count": 174, "avg_abs": 1.472908, "min_abs": 0.013589, "max_abs": 4.024881, "positive": 47, "negative": 127, "zero": 0 }, "source_rank_score": 105.891632, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "cd23495f71d7c9fb", "codeword174_sha256_16": "950a21d093438831" }, { "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": 119, "llr_stats": { "count": 174, "avg_abs": 1.319931, "min_abs": 0.000646, "max_abs": 3.025505, "positive": 52, "negative": 122, "zero": 0 }, "source_rank_score": 105.279724, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "75921a9852852bb6", "codeword174_sha256_16": "73389c2ca5f49723" }, { "variant": "raw_msb_symbol_order", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 40, "llr_stats": { "count": 174, "avg_abs": 2.411249, "min_abs": 0.053689, "max_abs": 4.135944, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 127.644996, "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "18439566d34bad98", "codeword174_sha256_16": "26b038fa37e29fd8" }, { "variant": "raw_msb_symbol_order", "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 40, "llr_stats": { "count": 174, "avg_abs": 2.411249, "min_abs": 0.053689, "max_abs": 4.135944, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 127.644996, "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "d3a0604db6bcb3ff", "codeword174_sha256_16": "7f61bafbc487a614" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 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": 33, "offsets": { "start_offset_s": 0.03, "base_freq_offset_hz": 2.0, "tone_spacing_offset_hz": 0.06 }, "anchor_applied": { "start_seconds": 4.83, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.935, "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": 57960, "start_seconds": 4.83, "base_freq_hz": 1027.0, "tone_spacing_hz": 1.935, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:33" }, "best_row": { "variant": "mapped_raw_msb+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": 58, "llr_stats": { "count": 174, "avg_abs": 1.795918, "min_abs": 0.026221, "max_abs": 4.074897, "positive": 118, "negative": 56, "zero": 0 }, "source_rank_score": 107.183672, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "7fd963513317f7a3", "codeword174_sha256_16": "4223cf0ea9c55c96" }, "top_rows": [ { "variant": "mapped_raw_msb+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": 58, "llr_stats": { "count": 174, "avg_abs": 1.795918, "min_abs": 0.026221, "max_abs": 4.074897, "positive": 118, "negative": 56, "zero": 0 }, "source_rank_score": 107.183672, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "7fd963513317f7a3", "codeword174_sha256_16": "4223cf0ea9c55c96" }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 54, "llr_stats": { "count": 174, "avg_abs": 1.368751, "min_abs": 0.000358, "max_abs": 3.025554, "positive": 124, "negative": 50, "zero": 0 }, "source_rank_score": 105.475004, "syndrome_weight": 28, "valid_codeword_hard_decision": false, "message91_sha256_16": "dedbfee70e56874b", "codeword174_sha256_16": "e003ffc2c2468301" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_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": 52, "llr_stats": { "count": 174, "avg_abs": 1.397522, "min_abs": 0.00055, "max_abs": 3.984446, "positive": 125, "negative": 49, "zero": 0 }, "source_rank_score": 105.590088, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "c6fa8a7d42e310bc", "codeword174_sha256_16": "be96f853ff240076" }, { "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": 120, "llr_stats": { "count": 174, "avg_abs": 1.368751, "min_abs": 0.000358, "max_abs": 3.025554, "positive": 50, "negative": 124, "zero": 0 }, "source_rank_score": 105.475004, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "75921a9852852bb6", "codeword174_sha256_16": "3dc4e896cdd15730" }, { "variant": "lab_mask_xor_preview", "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": 81, "llr_stats": { "count": 174, "avg_abs": 2.452732, "min_abs": 0.033909, "max_abs": 4.114346, "positive": 37, "negative": 137, "zero": 0 }, "source_rank_score": 101.810928, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "a6dfc58f24c6a031", "codeword174_sha256_16": "f1ddf241307f3555" }, { "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": 134, "llr_stats": { "count": 174, "avg_abs": 2.452732, "min_abs": 0.033909, "max_abs": 4.114346, "positive": 37, "negative": 137, "zero": 0 }, "source_rank_score": 113.810928, "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "41a713e1b3bebc5e", "codeword174_sha256_16": "a0977e7f1f502a73" }, { "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": 134, "llr_stats": { "count": 174, "avg_abs": 2.452732, "min_abs": 0.033909, "max_abs": 4.114346, "positive": 37, "negative": 137, "zero": 0 }, "source_rank_score": 112.810928, "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "41a713e1b3bebc5e", "codeword174_sha256_16": "a0977e7f1f502a73" }, { "variant": "mapped_ft8_gray_alt_high_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": 42, "llr_stats": { "count": 174, "avg_abs": 2.026443, "min_abs": 0.015986, "max_abs": 4.114346, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 108.105772, "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "287ee969686af460", "codeword174_sha256_16": "372243b6f4f4b05f" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 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": 37, "offsets": { "start_offset_s": 0.03, "base_freq_offset_hz": 2.5, "tone_spacing_offset_hz": 0.03 }, "anchor_applied": { "start_seconds": 4.83, "base_freq_hz": 1027.5, "tone_spacing_hz": 1.905, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 57960, "start_seconds": 4.83, "base_freq_hz": 1027.5, "tone_spacing_hz": 1.905, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:37" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_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": 38, "llr_stats": { "count": 174, "avg_abs": 1.435602, "min_abs": 0.001426, "max_abs": 4.091276, "positive": 141, "negative": 33, "zero": 0 }, "source_rank_score": 105.742408, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "5f214ae2f0fb2f36", "codeword174_sha256_16": "64ae541c28b71f69" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_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": 38, "llr_stats": { "count": 174, "avg_abs": 1.435602, "min_abs": 0.001426, "max_abs": 4.091276, "positive": 141, "negative": 33, "zero": 0 }, "source_rank_score": 105.742408, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "5f214ae2f0fb2f36", "codeword174_sha256_16": "64ae541c28b71f69" }, { "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", "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": 38, "llr_stats": { "count": 174, "avg_abs": 1.384195, "min_abs": 0.000995, "max_abs": 4.091276, "positive": 139, "negative": 35, "zero": 0 }, "source_rank_score": 105.53678, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "5f214ae2f0fb2f36", "codeword174_sha256_16": "64ae541c28b71f69" }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 123, "llr_stats": { "count": 174, "avg_abs": 1.194786, "min_abs": 0.000574, "max_abs": 3.71937, "positive": 55, "negative": 119, "zero": 0 }, "source_rank_score": 104.779144, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "df9a107315483691", "codeword174_sha256_16": "9987222aa18746e4" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 123, "llr_stats": { "count": 174, "avg_abs": 1.137638, "min_abs": 0.000202, "max_abs": 3.575371, "positive": 58, "negative": 116, "zero": 0 }, "source_rank_score": 104.550552, "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "df9a107315483691", "codeword174_sha256_16": "9987222aa18746e4" }, { "variant": "raw_msb_symbol_order", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 26, "llr_stats": { "count": 174, "avg_abs": 1.971302, "min_abs": 0.003869, "max_abs": 4.310037, "positive": 150, "negative": 24, "zero": 0 }, "source_rank_score": 125.885208, "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "7eb8521bc797d417", "codeword174_sha256_16": "57e8972b644f146e" }, { "variant": "raw_msb_symbol_order", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 26, "llr_stats": { "count": 174, "avg_abs": 1.909894, "min_abs": 0.003655, "max_abs": 4.310037, "positive": 146, "negative": 28, "zero": 0 }, "source_rank_score": 125.639576, "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "7eb8521bc797d417", "codeword174_sha256_16": "57e8972b644f146e" }, { "variant": "lsb_within_each_tone", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 26, "llr_stats": { "count": 174, "avg_abs": 1.768455, "min_abs": 0.003869, "max_abs": 3.884903, "positive": 136, "negative": 38, "zero": 0 }, "source_rank_score": 117.07382, "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "7eb8521bc797d417", "codeword174_sha256_16": "57e8972b644f146e" }, { "variant": "lsb_within_each_tone", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 26, "llr_stats": { "count": 174, "avg_abs": 1.707047, "min_abs": 0.003655, "max_abs": 3.884903, "positive": 132, "negative": 42, "zero": 0 }, "source_rank_score": 116.828188, "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "7eb8521bc797d417", "codeword174_sha256_16": "57e8972b644f146e" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 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": 66, "offsets": { "start_offset_s": 0.06, "base_freq_offset_hz": 3.0, "tone_spacing_offset_hz": 0.0 }, "anchor_applied": { "start_seconds": 4.859999999999999, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.875, "nsps": 6400 }, "pipeline_ok": true, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "sync_candidate": { "start_sample": 58320, "start_seconds": 4.86, "base_freq_hz": 1028.0, "tone_spacing_hz": 1.875, "nsps": 6400, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "step40_timing_boundary_sweep:66" }, "best_row": { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 52, "llr_stats": { "count": 174, "avg_abs": 1.386406, "min_abs": 0.005031, "max_abs": 4.071798, "positive": 133, "negative": 41, "zero": 0 }, "source_rank_score": 105.545624, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "20cb8982e61b4da6", "codeword174_sha256_16": "930f19c9f48a77d8" }, "top_rows": [ { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 52, "llr_stats": { "count": 174, "avg_abs": 1.386406, "min_abs": 0.005031, "max_abs": 4.071798, "positive": 133, "negative": 41, "zero": 0 }, "source_rank_score": 105.545624, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "20cb8982e61b4da6", "codeword174_sha256_16": "930f19c9f48a77d8" }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 52, "llr_stats": { "count": 174, "avg_abs": 1.315017, "min_abs": 0.004658, "max_abs": 4.071798, "positive": 131, "negative": 43, "zero": 0 }, "source_rank_score": 105.260068, "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "20cb8982e61b4da6", "codeword174_sha256_16": "930f19c9f48a77d8" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 117, "llr_stats": { "count": 174, "avg_abs": 1.878257, "min_abs": 0.005474, "max_abs": 4.082287, "positive": 34, "negative": 140, "zero": 0 }, "source_rank_score": 111.513028, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "5a5f45650d34d120", "codeword174_sha256_16": "c3ddcaf03c3ccd70" }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 33, "llr_stats": { "count": 174, "avg_abs": 1.74431, "min_abs": 0.007324, "max_abs": 3.889221, "positive": 127, "negative": 47, "zero": 0 }, "source_rank_score": 110.97724, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "e1e8116e828e9db5", "codeword174_sha256_16": "83548fad996036b7" }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "bit_count": 174, "hard_weight_174": 33, "llr_stats": { "count": 174, "avg_abs": 1.935993, "min_abs": 0.007324, "max_abs": 4.082287, "positive": 147, "negative": 27, "zero": 0 }, "source_rank_score": 110.743972, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "e1e8116e828e9db5", "codeword174_sha256_16": "83548fad996036b7" }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 117, "llr_stats": { "count": 174, "avg_abs": 1.686575, "min_abs": 0.005474, "max_abs": 3.889221, "positive": 54, "negative": 120, "zero": 0 }, "source_rank_score": 109.7463, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "5a5f45650d34d120", "codeword174_sha256_16": "c3ddcaf03c3ccd70" }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "bit_count": 174, "hard_weight_174": 99, "llr_stats": { "count": 174, "avg_abs": 1.116924, "min_abs": 0.004138, "max_abs": 3.889221, "positive": 72, "negative": 102, "zero": 0 }, "source_rank_score": 104.467696, "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "145bc09c008ba5d6", "codeword174_sha256_16": "409c00e9c14169e8" }, { "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "bit_count": 174, "hard_weight_174": 48, "llr_stats": { "count": 174, "avg_abs": 1.737959, "min_abs": 0.057881, "max_abs": 4.071798, "positive": 127, "negative": 47, "zero": 0 }, "source_rank_score": 106.951836, "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "93cb5265335a79ef", "codeword174_sha256_16": "4766150d6d4fa78d" } ], "warnings": [ "Step 40 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 40 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 40 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 40 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/step40_timing_boundary_sweep.json", "timing_best_candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step40_best_timing_fec_candidate.json", "checkpoint_json": "/decoders/js8_decoder/logs/20260527T050723Z_real_run_timing_boundary_sweep_output.json" }, "decodes": [], "warnings": [ "Step 40 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/20260527T050723Z_real_run_timing_boundary_sweep_output.json [webftr-js8-lab] Step 40 LDPC probes now use timing-best candidate JSON: /decoders/js8_decoder/runtime/timing_boundary_sweep/step40_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/20260527T051835Z_ldpc-matrix-probe.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T051835Z_ldpc-matrix-probe_manifest.json [webftr-js8-lab] utc=20260527T051835Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T051835Z_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": "step40-checkpointed-ridge-sweep-guard", "input_wav": null, "candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step40_best_timing_fec_candidate.json", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step40_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": 864, "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": "step40_timing_sweep_best_syndrome_row", "rank_score": 1107.311136, "complete_174bit_candidate": true, "hard_bits_sha256_16": "0228efbd612c9092", "hard_weight_174": 140, "llr_stats": { "count": 174, "avg_abs": 1.827784, "min_abs": 0.008053, "max_abs": 4.126624, "positive": 36, "negative": 138, "zero": 0 } } }, "variant_probe_count": 72, "best_matrix_probe": { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "hard_weight_174": 140, "llr_avg_abs": 1.8277836149425295, "syndrome": { "bits_len": 174, "message91": "1011100111111101111111111111011111111101110111101011001111101011111010111111111011101111111", "parity83_observed": "11001100111111111110111110101111111111111011101111101111101101011001111111110101111", "parity83_expected": "11110110111110110111011110100100001110111011100111101100100101011101111111100100101", "syndrome83": "00111010000001001001100000001011110001000000001000000011001000000100000000010001010", "syndrome_weight": 22, "valid_codeword_hard_decision": false, "message91_sha256_16": "67b59638aa8882d6", "codeword174_sha256_16": "0228efbd612c9092" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 2, "repair_success": false, "final_syndrome_weight": 20, "trace": [ { "flip_index": 128, "llr_abs": 0.032754, "gain": 1, "syndrome_weight_after": 21 }, { "flip_index": 156, "llr_abs": 0.081417, "gain": 1, "syndrome_weight_after": 20 } ], "repaired_message91_sha256_16": "67b59638aa8882d6" } }, "all_matrix_probes": [ { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "hard_weight_174": 140, "llr_avg_abs": 1.8277836149425295, "syndrome": { "bits_len": 174, "message91": "1011100111111101111111111111011111111101110111101011001111101011111010111111111011101111111", "parity83_observed": "11001100111111111110111110101111111111111011101111101111101101011001111111110101111", "parity83_expected": "11110110111110110111011110100100001110111011100111101100100101011101111111100100101", "syndrome83": "00111010000001001001100000001011110001000000001000000011001000000100000000010001010", "syndrome_weight": 22, "valid_codeword_hard_decision": false, "message91_sha256_16": "67b59638aa8882d6", "codeword174_sha256_16": "0228efbd612c9092" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 2, "repair_success": false, "final_syndrome_weight": 20, "trace": [ { "flip_index": 128, "llr_abs": 0.032754, "gain": 1, "syndrome_weight_after": 21 }, { "flip_index": 156, "llr_abs": 0.081417, "gain": 1, "syndrome_weight_after": 20 } ], "repaired_message91_sha256_16": "67b59638aa8882d6" } }, { "variant": "step40_timing_sweep_best_syndrome_row", "transform": "raw_msb+no_interleaver", "mapping_meta": { "tone_mapping": "raw_msb", "interleaver": "none" }, "hard_weight_174": 140, "llr_avg_abs": 1.8277836149425295, "syndrome": { "bits_len": 174, "message91": "1011100111111101111111111111011111111101110111101011001111101011111010111111111011101111111", "parity83_observed": "11001100111111111110111110101111111111111011101111101111101101011001111111110101111", "parity83_expected": "11110110111110110111011110100100001110111011100111101100100101011101111111100100101", "syndrome83": "00111010000001001001100000001011110001000000001000000011001000000100000000010001010", "syndrome_weight": 22, "valid_codeword_hard_decision": false, "message91_sha256_16": "67b59638aa8882d6", "codeword174_sha256_16": "0228efbd612c9092" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 2, "repair_success": false, "final_syndrome_weight": 20, "trace": [ { "flip_index": 128, "llr_abs": 0.032754, "gain": 1, "syndrome_weight_after": 21 }, { "flip_index": 156, "llr_abs": 0.081417, "gain": 1, "syndrome_weight_after": 20 } ], "repaired_message91_sha256_16": "67b59638aa8882d6" } }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "hard_weight_174": 35, "llr_avg_abs": 1.5912117011494256, "syndrome": { "bits_len": 174, "message91": "0011000011000000001110000100000000010000000100010010100010000000100000000000110000000010000", "parity83_observed": "00100001110100000001000000000000001000000010001010110000000000000001000001100011000", "parity83_expected": "00110001110111100010100000001100011010000011001000110100001101010101011100100011110", "syndrome83": "00010000000011100011100000001100010010000001000010000100001101010100011101000000110", "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "4f673c96b1f1de5c", "codeword174_sha256_16": "90bdd003a67ea079" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 3, "repair_success": false, "final_syndrome_weight": 22, "trace": [ { "flip_index": 105, "llr_abs": 0.008127, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 149, "llr_abs": 0.012692, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 139, "llr_abs": 0.045014, "gain": 1, "syndrome_weight_after": 22 } ], "repaired_message91_sha256_16": "4f673c96b1f1de5c" } }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "hard_weight_174": 36, "llr_avg_abs": 1.6427796724137933, "syndrome": { "bits_len": 174, "message91": "0011000011000000001110000100000000010000000100010010100010000000100000000000110000000010000", "parity83_observed": "00100001110100000001000000000000001000000010001010110000010000000001000001100011000", "parity83_expected": "00110001110111100010100000001100011010000011001000110100001101010101011100100011110", "syndrome83": "00010000000011100011100000001100010010000001000010000100011101010100011101000000110", "syndrome_weight": 26, "valid_codeword_hard_decision": false, "message91_sha256_16": "4f673c96b1f1de5c", "codeword174_sha256_16": "eb17c3d482c6c1fa" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 3, "repair_success": false, "final_syndrome_weight": 23, "trace": [ { "flip_index": 105, "llr_abs": 0.003612, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 149, "llr_abs": 0.013947, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 148, "llr_abs": 0.032127, "gain": 1, "syndrome_weight_after": 23 } ], "repaired_message91_sha256_16": "4f673c96b1f1de5c" } }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "hard_weight_174": 127, "llr_avg_abs": 1.672409804597702, "syndrome": { "bits_len": 174, "message91": "0111101111111111110100111110001110111111010111100011111110111111100110101111101000101111111", "parity83_observed": "11111011100110111011001111111001111010001111001111011101111111110001010111111110111", "parity83_expected": "01111011100011100001010001101001111010000011001100011101011101100001000101110101100", "syndrome83": "10000000000101011010011110010000000000001100000011000000100010010000010010001011011", "syndrome_weight": 25, "valid_codeword_hard_decision": false, "message91_sha256_16": "6a76c3f6f4855f72", "codeword174_sha256_16": "e94fe0f75c74d230" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 1, "repair_success": false, "final_syndrome_weight": 24, "trace": [ { "flip_index": 104, "llr_abs": 0.094637, "gain": 1, "syndrome_weight_after": 24 } ], "repaired_message91_sha256_16": "6a76c3f6f4855f72" } }, { "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "hard_weight_174": 138, "llr_avg_abs": 2.2657583620689654, "syndrome": { "bits_len": 174, "message91": "1111111010101111101101111100111011001101001111101111101111100111111111111111110011111111110", "parity83_observed": "10011110011111111011110111111111111110110100111111111100101111111110111111110110111", "parity83_expected": "10000101010110110001001111110001110100111100011111111101101010100100001111100000011", "syndrome83": "00011011001001001010111000001110001010001000100000000001000101011010110000010110100", "syndrome_weight": 30, "valid_codeword_hard_decision": false, "message91_sha256_16": "d5fd881ddc0d6fa3", "codeword174_sha256_16": "524f6b31360d4b54" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 3, "repair_success": false, "final_syndrome_weight": 27, "trace": [ { "flip_index": 98, "llr_abs": 0.093616, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 155, "llr_abs": 0.114756, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 95, "llr_abs": 0.157374, "gain": 1, "syndrome_weight_after": 27 } ], "repaired_message91_sha256_16": "d5fd881ddc0d6fa3" } }, { "variant": "lab_mask_xor_preview", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "hard_weight_174": 83, "llr_avg_abs": 1.8824677988505754, "syndrome": { "bits_len": 174, "message91": "0001110001101100000000011000100010001100000100111011101100100100111000010101001001011011111", "parity83_observed": "00000110001010100101101111010111010101101010110111110100010110101001110010111000011", "parity83_expected": "00011100100111010101111101000101100000001011110111000100010010101110111011100000011", "syndrome83": "00011010101101110000010010010010110101100001000000110000000100000111001001011000000", "syndrome_weight": 29, "valid_codeword_hard_decision": false, "message91_sha256_16": "e3f175dd3a2c81b2", "codeword174_sha256_16": "d5da07ca10be5a38" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 1, "repair_success": false, "final_syndrome_weight": 28, "trace": [ { "flip_index": 105, "llr_abs": 0.056699, "gain": 1, "syndrome_weight_after": 28 } ], "repaired_message91_sha256_16": "e3f175dd3a2c81b2" } }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "hard_weight_174": 121, "llr_avg_abs": 1.8824677988505747, "syndrome": { "bits_len": 174, "message91": "1111110011111111111111111111000011110100010100011110101111110010011111101010011111111111111", "parity83_observed": "10101111001001111111111001111001010111001111111001100000001111001111111001111111001", "parity83_expected": "00001110001100001011010101010000011111000101111001101010000010000011001011001001001", "syndrome83": "10100001000101110100101100101001001000001010000000001010001101001100110010110110000", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "b5db807c301847ac", "codeword174_sha256_16": "eaf8f2e0f46bfa41" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 1, "repair_success": false, "final_syndrome_weight": 30, "trace": [ { "flip_index": 145, "llr_abs": 0.035267, "gain": 1, "syndrome_weight_after": 30 } ], "repaired_message91_sha256_16": "b5db807c301847ac" } }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "hard_weight_174": 123, "llr_avg_abs": 1.8277836149425288, "syndrome": { "bits_len": 174, "message91": "1111110011111111111111111111000011110100010100011110101111110010011111101010011111111111111", "parity83_observed": "10101111001001111111111001111001010111001111111001100011001111001111111001111111001", "parity83_expected": "00001110001100001011010101010000011111000101111001101010000010000011001011001001001", "syndrome83": "10100001000101110100101100101001001000001010000000001001001101001100110010110110000", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "b5db807c301847ac", "codeword174_sha256_16": "3bc0238a33865be3" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 1, "repair_success": false, "final_syndrome_weight": 30, "trace": [ { "flip_index": 146, "llr_abs": 0.032754, "gain": 1, "syndrome_weight_after": 30 } ], "repaired_message91_sha256_16": "b5db807c301847ac" } }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "hard_weight_174": 121, "llr_avg_abs": 1.7194752988505742, "syndrome": { "bits_len": 174, "message91": "1111110011111111111111111111000011110100010100011110101111110010011111101010011111111111111", "parity83_observed": "10101111001001111111111001111001010111001111111001100000001111001111111001111111001", "parity83_expected": "00001110001100001011010101010000011111000101111001101010000010000011001011001001001", "syndrome83": "10100001000101110100101100101001001000001010000000001010001101001100110010110110000", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "b5db807c301847ac", "codeword174_sha256_16": "eaf8f2e0f46bfa41" }, "repair": { "attempted": true, "max_flips": 6, "candidate_pool": 12, "flip_count": 1, "repair_success": false, "final_syndrome_weight": 30, "trace": [ { "flip_index": 145, "llr_abs": 0.051749, "gain": 1, "syndrome_weight_after": 30 } ], "repaired_message91_sha256_16": "b5db807c301847ac" } }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "hard_weight_174": 47, "llr_avg_abs": 1.7130608850574711, "syndrome": { "bits_len": 174, "message91": "1011100001010001001001000001000000101010110000000010000110000000001000100000011000100000000", "parity83_observed": "01000000000010010110000010000000110001000100011010110000011100011000000101010000100", "parity83_expected": "10000010000011010111011000001000001110000100111011101010111000000001010000111001100", "syndrome83": "11000010000001000001011010001000111111000000100001011010100100011001010101101001000", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "10bccbb21b243c70", "codeword174_sha256_16": "3d241f2dee27cf8a" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 31, "trace": [], "repaired_message91_sha256_16": "10bccbb21b243c70" } }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "hard_weight_174": 123, "llr_avg_abs": 1.6647911149425294, "syndrome": { "bits_len": 174, "message91": "1001111111001111111001111001100011001111111001110101001111001111111111001001111010111111111", "parity83_observed": "11111100101011111100100111111010111100010100010111100001111111111111111111100111111", "parity83_expected": "11101110101001100110010101111011101101010010100101100111001100101100011111101010011", "syndrome83": "00010010000010011010110010000001010001000110110010000110110011010011100000001101100", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "ea3829fd4a89c4a1", "codeword174_sha256_16": "8aeb2df4b6f868f0" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 31, "trace": [], "repaired_message91_sha256_16": "ea3829fd4a89c4a1" } }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "hard_weight_174": 51, "llr_avg_abs": 1.6647911149425283, "syndrome": { "bits_len": 174, "message91": "0000000110100100001100000111100100001000100110100000111010000000000001101100010000000110100", "parity83_observed": "00000101010001000110010000000110010010101010101000100110010000001000000000010100000", "parity83_expected": "00000100110001000100010000010111111111001001001000101011100100110001110100100110011", "syndrome83": "00000001100000000010000000010001101101100011100000001101110100111001110100110010011", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "7289260856bf46ac", "codeword174_sha256_16": "52fd9adeb14097f4" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 31, "trace": [], "repaired_message91_sha256_16": "7289260856bf46ac" } }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "hard_weight_174": 123, "llr_avg_abs": 1.664791114942528, "syndrome": { "bits_len": 174, "message91": "1111110011111111111111111111000011110100010100011110101111110010011111101010011111111111111", "parity83_observed": "10101111001001111111111001111001010111001111111001100011001111001111111001111111001", "parity83_expected": "00001110001100001011010101010000011111000101111001101010000010000011001011001001001", "syndrome83": "10100001000101110100101100101001001000001010000000001001001101001100110010110110000", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "b5db807c301847ac", "codeword174_sha256_16": "3bc0238a33865be3" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 31, "trace": [], "repaired_message91_sha256_16": "b5db807c301847ac" } }, { "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none" }, "hard_weight_174": 51, "llr_avg_abs": 1.613219333333333, "syndrome": { "bits_len": 174, "message91": "1100011100010000001000000000000001100000000111101100111100000000110000000111010010001100000", "parity83_observed": "00001110010001000110000000000000110000000011110011010000011000000000000110001101000", "parity83_expected": "00011100001101101101100000011010010000001110110001111100011011111001010111011111000", "syndrome83": "00010010011100101011100000011010100000001101000010101100000011111001010001010010000", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "6b88dc9388d32ed9", "codeword174_sha256_16": "80e4ac873aa43e30" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 31, "trace": [], "repaired_message91_sha256_16": "6b88dc9388d32ed9" } }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "hard_weight_174": 61, "llr_avg_abs": 1.0715886954022988, "syndrome": { "bits_len": 174, "message91": "0000101000010000000010100010011010001001010110011010001000010100110001101101011100110010100", "parity83_observed": "10000101011110000010010010011000111010100100000000100000101000000011010001100000001", "parity83_expected": "10000101100000110010010100010000110011100100101101110011110010011110011001001100000", "syndrome83": "00000000111110110000000110001000001001000000101101010011011010011101001000101100001", "syndrome_weight": 31, "valid_codeword_hard_decision": false, "message91_sha256_16": "8b19ee60d2508d5d", "codeword174_sha256_16": "d8393894fe20b24f" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 31, "trace": [], "repaired_message91_sha256_16": "8b19ee60d2508d5d" } }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "hard_weight_174": 138, "llr_avg_abs": 1.8824677988505751, "syndrome": { "bits_len": 174, "message91": "1011111111110111111111101111101001111110011111111011111111011111110110111111000110110110111", "parity83_observed": "10111011110011011101011111101111111100011101111101111111111101111101101111100111111", "parity83_expected": "00001011000010010101101111011000011100001000101101111110111000110100001001100010000", "syndrome83": "10110000110001001000110000110111100000010101010000000001000101001001100110000101111", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "08a9bfa00a31c778", "codeword174_sha256_16": "96c35e2c35fea733" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "08a9bfa00a31c778" } }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174, "polarity": "inverted" }, "hard_weight_174": 116, "llr_avg_abs": 1.1495715689655168, "syndrome": { "bits_len": 174, "message91": "0100110111111110011101100111101111111110111111111010101111101100001100011101101010110110111", "parity83_observed": "11101110011111101010111000111011101111100111101110100111000101110101110011100001011", "parity83_expected": "00000100001011010011000010111000000101100101101011100000001011111101110111100000011", "syndrome83": "11101010010100111001111010000011101010000010000101000111001110001000000100000001000", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "1661d9e1acea61ee", "codeword174_sha256_16": "419192bccb8097ba" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "1661d9e1acea61ee" } }, { "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none" }, "hard_weight_174": 58, "llr_avg_abs": 1.1495715689655162, "syndrome": { "bits_len": 174, "message91": "1101000001010110100001000001100110000010000000010011000110110000100010110000001100000011011", "parity83_observed": "00011001101001001001100000000011001000000110001010000011011000011000000000011101001", "parity83_expected": "01011100010110000000110101000010111110000000011010011101011100111100000101011111001", "syndrome83": "01000101111111001001010101000001110110000110010000011110000100100100000101000010000", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "caa2056a7c81f96b", "codeword174_sha256_16": "67b40f73f62e6c6c" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "caa2056a7c81f96b" } }, { "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "interleave_codeword_to_rx_inverse", "order_len": 174 }, "hard_weight_174": 72, "llr_avg_abs": 1.111334712643677, "syndrome": { "bits_len": 174, "message91": "1011001000100011100010111000010100000001010000000101010000010011110011101010010101001011000", "parity83_observed": "00010011100000010111000111010100010000011000010001011000111110001110101100011110101", "parity83_expected": "10111011100110111110110010011001100000101001000010010000110011001100101000110100101", "syndrome83": "10101000000110101001110101001101110000110001010011001000001101000010000100101010000", "syndrome_weight": 32, "valid_codeword_hard_decision": false, "message91_sha256_16": "d4921afbac24d4a4", "codeword174_sha256_16": "79422d22b91abac9" }, "repair": { "attempted": false, "flip_count": 0, "repair_success": false, "final_syndrome_weight": 32, "trace": [], "repaired_message91_sha256_16": "d4921afbac24d4a4" } } ], "decodes": [], "outputs": { "ldpc_matrix_probe_json": "/decoders/js8_decoder/runtime/ldpc_matrix_probe/step40_ldpc_matrix_probe.json" }, "warnings": [ "Step 40 keeps the Step 40 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/20260527T051835Z_ldpc-matrix-probe.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T051835Z_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/20260527T051837Z_ldpc-soft-decode.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260527T051837Z_ldpc-soft-decode_manifest.json [webftr-js8-lab] utc=20260527T051837Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260527T051837Z_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": "step40-checkpointed-ridge-sweep-guard", "input_wav": null, "candidate_json": "/decoders/js8_decoder/runtime/timing_boundary_sweep/step40_best_timing_fec_candidate.json", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step40_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": "step40_timing_sweep_best_syndrome_row", "rank_score": 1107.311136, "complete_174bit_candidate": true, "hard_bits_sha256_16": "0228efbd612c9092", "hard_weight_174": 140, "llr_stats": { "count": 174, "avg_abs": 1.827784, "min_abs": 0.008053, "max_abs": 4.126624, "positive": 36, "negative": 138, "zero": 0 } } }, "candidate_mapping_rows": 864, "probe_count": 24, "best_soft_decode": { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 109.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 22, "message91": null, "message91_sha256_16": "eb0331f827dab374", "codeword174_sha256_16": "89003bf74303e48c", "trace": [ { "iteration": 0, "syndrome_weight": 37 }, { "iteration": 1, "syndrome_weight": 32 }, { "iteration": 2, "syndrome_weight": 30 }, { "iteration": 3, "syndrome_weight": 22 }, { "iteration": 4, "syndrome_weight": 37 }, { "iteration": 5, "syndrome_weight": 51 }, { "iteration": 6, "syndrome_weight": 54 }, { "iteration": 7, "syndrome_weight": 33 }, { "iteration": 8, "syndrome_weight": 49 }, { "iteration": 9, "syndrome_weight": 41 }, { "iteration": 10, "syndrome_weight": 43 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 50 } ] }, "soft_decode_results": [ { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 109.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 22, "message91": null, "message91_sha256_16": "eb0331f827dab374", "codeword174_sha256_16": "89003bf74303e48c", "trace": [ { "iteration": 0, "syndrome_weight": 37 }, { "iteration": 1, "syndrome_weight": 32 }, { "iteration": 2, "syndrome_weight": 30 }, { "iteration": 3, "syndrome_weight": 22 }, { "iteration": 4, "syndrome_weight": 37 }, { "iteration": 5, "syndrome_weight": 51 }, { "iteration": 6, "syndrome_weight": 54 }, { "iteration": 7, "syndrome_weight": 33 }, { "iteration": 8, "syndrome_weight": 49 }, { "iteration": 9, "syndrome_weight": 41 }, { "iteration": 10, "syndrome_weight": 43 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 50 } ] }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 107.311136, "source_llr_stats": { "count": 174, "avg_abs": 1.827784, "min_abs": 0.008053, "max_abs": 4.126624, "positive": 138, "negative": 36, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 27, "message91": null, "message91_sha256_16": "3909d0efb8b5d4f7", "codeword174_sha256_16": "6ab6ae69c2669651", "trace": [ { "iteration": 0, "syndrome_weight": 33 }, { "iteration": 1, "syndrome_weight": 32 }, { "iteration": 2, "syndrome_weight": 39 }, { "iteration": 3, "syndrome_weight": 43 }, { "iteration": 4, "syndrome_weight": 39 }, { "iteration": 5, "syndrome_weight": 49 }, { "iteration": 6, "syndrome_weight": 41 }, { "iteration": 7, "syndrome_weight": 44 }, { "iteration": 8, "syndrome_weight": 42 }, { "iteration": 9, "syndrome_weight": 40 }, { "iteration": 10, "syndrome_weight": 41 }, { "iteration": 15, "syndrome_weight": 29 }, { "iteration": 20, "syndrome_weight": 33 } ] }, { "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 109.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 28, "message91": null, "message91_sha256_16": "d573664e1265e80c", "codeword174_sha256_16": "2597dbff96349713", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 37 }, { "iteration": 2, "syndrome_weight": 30 }, { "iteration": 3, "syndrome_weight": 44 }, { "iteration": 4, "syndrome_weight": 40 }, { "iteration": 5, "syndrome_weight": 36 }, { "iteration": 6, "syndrome_weight": 46 }, { "iteration": 7, "syndrome_weight": 39 }, { "iteration": 8, "syndrome_weight": 35 }, { "iteration": 9, "syndrome_weight": 49 }, { "iteration": 10, "syndrome_weight": 28 }, { "iteration": 15, "syndrome_weight": 43 }, { "iteration": 20, "syndrome_weight": 34 } ] }, { "variant": "lab_mask_xor_preview", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 101.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 29, "message91": null, "message91_sha256_16": "86c9ebbe97a4cee4", "codeword174_sha256_16": "666fc2db0f867336", "trace": [ { "iteration": 0, "syndrome_weight": 40 }, { "iteration": 1, "syndrome_weight": 34 }, { "iteration": 2, "syndrome_weight": 45 }, { "iteration": 3, "syndrome_weight": 42 }, { "iteration": 4, "syndrome_weight": 34 }, { "iteration": 5, "syndrome_weight": 38 }, { "iteration": 6, "syndrome_weight": 40 }, { "iteration": 7, "syndrome_weight": 36 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 41 }, { "iteration": 10, "syndrome_weight": 31 }, { "iteration": 15, "syndrome_weight": 43 }, { "iteration": 20, "syndrome_weight": 53 } ] }, { "variant": "step40_timing_sweep_best_syndrome_row", "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": 1107.311136, "source_llr_stats": { "count": 174, "avg_abs": 1.827784, "min_abs": 0.008053, "max_abs": 4.126624, "positive": 36, "negative": 138, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 30, "message91": null, "message91_sha256_16": "95cb11678c7a80df", "codeword174_sha256_16": "57946ed9075f03b0", "trace": [ { "iteration": 0, "syndrome_weight": 42 }, { "iteration": 1, "syndrome_weight": 39 }, { "iteration": 2, "syndrome_weight": 43 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 38 }, { "iteration": 5, "syndrome_weight": 45 }, { "iteration": 6, "syndrome_weight": 39 }, { "iteration": 7, "syndrome_weight": 46 }, { "iteration": 8, "syndrome_weight": 45 }, { "iteration": 9, "syndrome_weight": 40 }, { "iteration": 10, "syndrome_weight": 42 }, { "iteration": 15, "syndrome_weight": 44 }, { "iteration": 20, "syndrome_weight": 50 } ] }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 113.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 30, "message91": null, "message91_sha256_16": "c5beab46f597fb50", "codeword174_sha256_16": "e28a20814ba9c142", "trace": [ { "iteration": 0, "syndrome_weight": 42 }, { "iteration": 1, "syndrome_weight": 42 }, { "iteration": 2, "syndrome_weight": 40 }, { "iteration": 3, "syndrome_weight": 51 }, { "iteration": 4, "syndrome_weight": 44 }, { "iteration": 5, "syndrome_weight": 41 }, { "iteration": 6, "syndrome_weight": 46 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 50 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 42 }, { "iteration": 15, "syndrome_weight": 51 }, { "iteration": 20, "syndrome_weight": 30 } ] }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 112.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 30, "message91": null, "message91_sha256_16": "95da80269df20c0b", "codeword174_sha256_16": "d8add1acd64ea0cd", "trace": [ { "iteration": 0, "syndrome_weight": 43 }, { "iteration": 1, "syndrome_weight": 47 }, { "iteration": 2, "syndrome_weight": 45 }, { "iteration": 3, "syndrome_weight": 33 }, { "iteration": 4, "syndrome_weight": 33 }, { "iteration": 5, "syndrome_weight": 30 }, { "iteration": 6, "syndrome_weight": 35 }, { "iteration": 7, "syndrome_weight": 41 }, { "iteration": 8, "syndrome_weight": 40 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 38 }, { "iteration": 15, "syndrome_weight": 40 }, { "iteration": 20, "syndrome_weight": 35 } ] }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 109.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 30, "message91": null, "message91_sha256_16": "eb0331f827dab374", "codeword174_sha256_16": "362c1c2091c2628f", "trace": [ { "iteration": 0, "syndrome_weight": 37 }, { "iteration": 1, "syndrome_weight": 32 }, { "iteration": 2, "syndrome_weight": 30 }, { "iteration": 3, "syndrome_weight": 34 }, { "iteration": 4, "syndrome_weight": 41 }, { "iteration": 5, "syndrome_weight": 33 }, { "iteration": 6, "syndrome_weight": 43 }, { "iteration": 7, "syndrome_weight": 47 }, { "iteration": 8, "syndrome_weight": 41 }, { "iteration": 9, "syndrome_weight": 47 }, { "iteration": 10, "syndrome_weight": 47 }, { "iteration": 15, "syndrome_weight": 40 }, { "iteration": 20, "syndrome_weight": 41 } ] }, { "variant": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 109.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 30, "message91": null, "message91_sha256_16": "d5fd881ddc0d6fa3", "codeword174_sha256_16": "fb9a728c30e39a50", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 37 }, { "iteration": 2, "syndrome_weight": 30 }, { "iteration": 3, "syndrome_weight": 44 }, { "iteration": 4, "syndrome_weight": 50 }, { "iteration": 5, "syndrome_weight": 48 }, { "iteration": 6, "syndrome_weight": 44 }, { "iteration": 7, "syndrome_weight": 39 }, { "iteration": 8, "syndrome_weight": 41 }, { "iteration": 9, "syndrome_weight": 37 }, { "iteration": 10, "syndrome_weight": 35 }, { "iteration": 15, "syndrome_weight": 45 }, { "iteration": 20, "syndrome_weight": 37 } ] }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "lsb_within_each_tone", "interleaver": "none", "polarity": "inverted" }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 107.311136, "source_llr_stats": { "count": 174, "avg_abs": 1.827784, "min_abs": 0.008053, "max_abs": 4.126624, "positive": 138, "negative": 36, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 30, "message91": null, "message91_sha256_16": "95cb11678c7a80df", "codeword174_sha256_16": "57946ed9075f03b0", "trace": [ { "iteration": 0, "syndrome_weight": 42 }, { "iteration": 1, "syndrome_weight": 39 }, { "iteration": 2, "syndrome_weight": 43 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 38 }, { "iteration": 5, "syndrome_weight": 45 }, { "iteration": 6, "syndrome_weight": 39 }, { "iteration": 7, "syndrome_weight": 46 }, { "iteration": 8, "syndrome_weight": 45 }, { "iteration": 9, "syndrome_weight": 40 }, { "iteration": 10, "syndrome_weight": 42 }, { "iteration": 15, "syndrome_weight": 44 }, { "iteration": 20, "syndrome_weight": 50 } ] }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 113.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "1bacbd0793b9041a", "codeword174_sha256_16": "05a4517e00218153", "trace": [ { "iteration": 0, "syndrome_weight": 50 }, { "iteration": 1, "syndrome_weight": 50 }, { "iteration": 2, "syndrome_weight": 32 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 36 }, { "iteration": 5, "syndrome_weight": 40 }, { "iteration": 6, "syndrome_weight": 48 }, { "iteration": 7, "syndrome_weight": 44 }, { "iteration": 8, "syndrome_weight": 42 }, { "iteration": 9, "syndrome_weight": 44 }, { "iteration": 10, "syndrome_weight": 42 }, { "iteration": 15, "syndrome_weight": 40 }, { "iteration": 20, "syndrome_weight": 31 } ] }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 112.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "17a702c7403bd1b2", "codeword174_sha256_16": "76bf63b1ec27f58a", "trace": [ { "iteration": 0, "syndrome_weight": 43 }, { "iteration": 1, "syndrome_weight": 37 }, { "iteration": 2, "syndrome_weight": 36 }, { "iteration": 3, "syndrome_weight": 38 }, { "iteration": 4, "syndrome_weight": 39 }, { "iteration": 5, "syndrome_weight": 38 }, { "iteration": 6, "syndrome_weight": 31 }, { "iteration": 7, "syndrome_weight": 47 }, { "iteration": 8, "syndrome_weight": 47 }, { "iteration": 9, "syndrome_weight": 42 }, { "iteration": 10, "syndrome_weight": 40 }, { "iteration": 15, "syndrome_weight": 42 }, { "iteration": 20, "syndrome_weight": 40 } ] }, { "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 109.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "2b0d7a31ba899628", "codeword174_sha256_16": "ea9c003e9c197128", "trace": [ { "iteration": 0, "syndrome_weight": 45 }, { "iteration": 1, "syndrome_weight": 37 }, { "iteration": 2, "syndrome_weight": 39 }, { "iteration": 3, "syndrome_weight": 46 }, { "iteration": 4, "syndrome_weight": 49 }, { "iteration": 5, "syndrome_weight": 44 }, { "iteration": 6, "syndrome_weight": 36 }, { "iteration": 7, "syndrome_weight": 36 }, { "iteration": 8, "syndrome_weight": 46 }, { "iteration": 9, "syndrome_weight": 40 }, { "iteration": 10, "syndrome_weight": 48 }, { "iteration": 15, "syndrome_weight": 37 }, { "iteration": 20, "syndrome_weight": 45 } ] }, { "variant": "lab_mask_xor_preview", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174, "polarity": "inverted" }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 101.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "3edce333bba194c6", "codeword174_sha256_16": "569ccbfacc1349c4", "trace": [ { "iteration": 0, "syndrome_weight": 40 }, { "iteration": 1, "syndrome_weight": 34 }, { "iteration": 2, "syndrome_weight": 45 }, { "iteration": 3, "syndrome_weight": 31 }, { "iteration": 4, "syndrome_weight": 38 }, { "iteration": 5, "syndrome_weight": 44 }, { "iteration": 6, "syndrome_weight": 37 }, { "iteration": 7, "syndrome_weight": 37 }, { "iteration": 8, "syndrome_weight": 45 }, { "iteration": 9, "syndrome_weight": 39 }, { "iteration": 10, "syndrome_weight": 32 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 47 } ] }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 112.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 32, "message91": null, "message91_sha256_16": "e8e90fd8b41ed29c", "codeword174_sha256_16": "9b2d7269d656d4af", "trace": [ { "iteration": 0, "syndrome_weight": 43 }, { "iteration": 1, "syndrome_weight": 37 }, { "iteration": 2, "syndrome_weight": 40 }, { "iteration": 3, "syndrome_weight": 49 }, { "iteration": 4, "syndrome_weight": 43 }, { "iteration": 5, "syndrome_weight": 38 }, { "iteration": 6, "syndrome_weight": 37 }, { "iteration": 7, "syndrome_weight": 46 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 47 }, { "iteration": 10, "syndrome_weight": 32 }, { "iteration": 15, "syndrome_weight": 45 }, { "iteration": 20, "syndrome_weight": 43 } ] }, { "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 107.311136, "source_llr_stats": { "count": 174, "avg_abs": 1.827784, "min_abs": 0.008053, "max_abs": 4.126624, "positive": 138, "negative": 36, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 32, "message91": null, "message91_sha256_16": "f4b199ca6ce68c20", "codeword174_sha256_16": "eabdaf7834f3b582", "trace": [ { "iteration": 0, "syndrome_weight": 33 }, { "iteration": 1, "syndrome_weight": 32 }, { "iteration": 2, "syndrome_weight": 39 }, { "iteration": 3, "syndrome_weight": 36 }, { "iteration": 4, "syndrome_weight": 50 }, { "iteration": 5, "syndrome_weight": 48 }, { "iteration": 6, "syndrome_weight": 39 }, { "iteration": 7, "syndrome_weight": 38 }, { "iteration": 8, "syndrome_weight": 48 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 52 }, { "iteration": 15, "syndrome_weight": 42 }, { "iteration": 20, "syndrome_weight": 42 } ] }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 113.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "b6c4dd4168505fc5", "codeword174_sha256_16": "3a2d94c7a15abf2f", "trace": [ { "iteration": 0, "syndrome_weight": 50 }, { "iteration": 1, "syndrome_weight": 50 }, { "iteration": 2, "syndrome_weight": 41 }, { "iteration": 3, "syndrome_weight": 33 }, { "iteration": 4, "syndrome_weight": 44 }, { "iteration": 5, "syndrome_weight": 40 }, { "iteration": 6, "syndrome_weight": 44 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 39 }, { "iteration": 9, "syndrome_weight": 42 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 42 }, { "iteration": 20, "syndrome_weight": 48 } ] }, { "variant": "reverse_full_bitstream", "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_alt_high", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "none", "polarity": "inverted" }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 112.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "f87044aee1fbf433", "codeword174_sha256_16": "5d5c54391eb1cbfd", "trace": [ { "iteration": 0, "syndrome_weight": 43 }, { "iteration": 1, "syndrome_weight": 47 }, { "iteration": 2, "syndrome_weight": 42 }, { "iteration": 3, "syndrome_weight": 39 }, { "iteration": 4, "syndrome_weight": 37 }, { "iteration": 5, "syndrome_weight": 40 }, { "iteration": 6, "syndrome_weight": 33 }, { "iteration": 7, "syndrome_weight": 46 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 44 }, { "iteration": 15, "syndrome_weight": 49 }, { "iteration": 20, "syndrome_weight": 44 } ] }, { "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": false, "interleaver": "ft8_bitrev", "direction": "deinterleave_rx_to_codeword", "order_len": 174 }, "decoder_trial": { "llr_scale": 1.0, "alpha": 0.8 }, "source_rank_score": 107.529872, "source_llr_stats": { "count": 174, "avg_abs": 1.882468, "min_abs": 0.003299, "max_abs": 4.126624, "positive": 148, "negative": 26, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "1512a470c93c7bb5", "codeword174_sha256_16": "6d04c779ce0fc894", "trace": [ { "iteration": 0, "syndrome_weight": 48 }, { "iteration": 1, "syndrome_weight": 38 }, { "iteration": 2, "syndrome_weight": 47 }, { "iteration": 3, "syndrome_weight": 43 }, { "iteration": 4, "syndrome_weight": 49 }, { "iteration": 5, "syndrome_weight": 46 }, { "iteration": 6, "syndrome_weight": 36 }, { "iteration": 7, "syndrome_weight": 35 }, { "iteration": 8, "syndrome_weight": 39 }, { "iteration": 9, "syndrome_weight": 47 }, { "iteration": 10, "syndrome_weight": 45 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 40 } ] }, { "variant": "reverse_symbol_order", "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits", "mapping_meta": { "tone_mapping": "ft8_gray_primary", "gray_direction": "inverse_observed_to_plain", "reverse_bits_within_tone_before_gray": true, "interleaver": "none", "polarity": "inverted" }, "decoder_trial": { "llr_scale": 0.75, "alpha": 0.7 }, "source_rank_score": 113.063032, "source_llr_stats": { "count": 174, "avg_abs": 2.265758, "min_abs": 0.020953, "max_abs": 4.126624, "positive": 139, "negative": 35, "zero": 0 }, "success": false, "iterations_used": 24, "final_syndrome_weight": 34, "message91": null, "message91_sha256_16": "9840b53bd4cff7c6", "codeword174_sha256_16": "0f3fddb5ca7ce9c3", "trace": [ { "iteration": 0, "syndrome_weight": 42 }, { "iteration": 1, "syndrome_weight": 42 }, { "iteration": 2, "syndrome_weight": 42 }, { "iteration": 3, "syndrome_weight": 45 }, { "iteration": 4, "syndrome_weight": 37 }, { "iteration": 5, "syndrome_weight": 45 }, { "iteration": 6, "syndrome_weight": 43 }, { "iteration": 7, "syndrome_weight": 43 }, { "iteration": 8, "syndrome_weight": 35 }, { "iteration": 9, "syndrome_weight": 40 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 42 }, { "iteration": 20, "syndrome_weight": 39 } ] } ], "decodes": [], "outputs": { "ldpc_soft_decode_json": "/decoders/js8_decoder/runtime/ldpc_soft_decode/step40_ldpc_soft_decode.json" }, "warnings": [ "Step 40 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/20260527T051837Z_ldpc-soft-decode.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T051837Z_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_20260527T050723Z.zip [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260527T050723Z_real-run.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T050723Z_real-run_manifest.json [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260527T050723Z_server-deep-run.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260527T050723Z_server-deep-run_manifest.json [js8.sh job] finished utc=2026-05-27T05:19:26Z exit_code=0