[webftr-js8-lab] command=server-deep-run [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T152808Z_server-deep-run.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T152808Z_server-deep-run_manifest.json [webftr-js8-lab] utc=20260526T152808Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] server DEEP runner [webftr-js8-lab] requested path: /decoders/js8_test.wav [webftr-js8-lab] This does not touch WebFTR productive code; it only reads a WAV and writes JS8Lab logs. [webftr-js8-lab] Deep path: real-run = input-check + dirty-window-scan + profile-scan + frame-recover + auto-ldpc-probe + candidate-export + LDPC probes + bundle. [webftr-js8-lab] resolved WAV: /decoders/js8_test.wav [webftr-js8-lab] command=real-run [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T152808Z_real-run.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T152808Z_real-run_manifest.json [webftr-js8-lab] utc=20260526T152808Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] real-run for WAV: /decoders/js8_test.wav [webftr-js8-lab] This runs input-check, dirty-window-scan, profile-scan, frame-recover, auto-ldpc-probe, candidate-export, ldpc-matrix-probe, ldpc-soft-decode and creates a JS8Lab upload bundle. [webftr-js8-lab] Please upload the printed js8_decoder_lab_real_run_*.zip bundle. ========== REAL-RUN STEP 1/9: INPUT CHECK ========== [webftr-js8-lab] command=input-check [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T152808Z_input-check.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T152808Z_input-check_manifest.json [webftr-js8-lab] utc=20260526T152808Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T152808Z_input_check_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-input-check", "tool_version": "step33-auto-anchor-candidate-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/20260526T152808Z_input-check.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T152808Z_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/20260526T152808Z_real_run_quick_prefilter_output.json [webftr-js8-lab] JSON timeout guard: 60s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260526T152808Z_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": "step33-auto-anchor-candidate-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 33." } [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/20260526T152808Z_real_run_dirty_window_scan_output.json [webftr-js8-lab] JSON timeout guard: 60s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260526T152808Z_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/20260526T152808Z_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 33 timeout guard stopped this expensive probe. The real-run now continues with quick-window fallback when available; otherwise inspect stderr/log bundle." } [webftr-js8-lab] dirty-window-scan exit_code=143 [webftr-js8-lab] dirty scan failed/timed out, continuing with quick-window fallback: /decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav [webftr-js8-lab] Step 33: 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/20260526T152808Z_real_run_profile_scan_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "mode": "JS8", "tool": "webftr-js8-profile-scan", "tool_version": "step33-auto-anchor-candidate-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": "step33_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 33 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/20260526T152808Z_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/20260526T153046Z_frame-recover.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T153046Z_frame-recover_manifest.json [webftr-js8-lab] utc=20260526T153046Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T153046Z_frame_recover_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-frame-recover", "tool_version": "step33-auto-anchor-candidate-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": "step33_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": "step33-auto-anchor-candidate-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": "step33_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 33 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 33 selects the best timing/profile candidate only. It still does not decode final JS8 text.", "Step 33 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/20260526T153046Z_frame-recover.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T153046Z_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/20260526T152808Z_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": "step33-auto-anchor-candidate-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": "step33_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": "step33-auto-anchor-candidate-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": "step33_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 33 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 33 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": 5, "variants": [ { "name": "raw_msb_symbol_order", "description": "Current Step7/8 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 } ], "selected_variant": "lab_mask_xor_preview", "selected_variant_rank_score": 98.258392, "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 33 selects the best timing/profile candidate only. It still does not decode final JS8 text.", "No JS8 text decode is expected in Step 33. 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 33. 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 33 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 33 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 33 does not decode JS8 text yet. It probes bit-order/interleaver/whitening candidates for future real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation.", "Step 33 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 33. 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/20260526T152808Z_real_run_auto_ldpc_probe_output.json ========== REAL-RUN STEP 6/9: CANDIDATE EXPORT ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T152808Z_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": "step33-auto-anchor-candidate-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": "step33_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/20260526T152808Z_real_run_profile_scan_output.json", "anchor_json": "/decoders/js8_decoder/logs/20260526T152808Z_real_run_auto_ldpc_probe_output.json", "anchor_selection": { "source": "profile_scan_json", "path": "/decoders/js8_decoder/logs/20260526T152808Z_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/20260526T152808Z_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": 5, "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 Step7/8 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": "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 33 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 33 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 33 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 33 does not decode JS8 text yet. It probes bit-order/interleaver/whitening candidates for future real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation.", "Step 33 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/20260526T152808Z_real_run_candidate_export_output.json [webftr-js8-lab] Step 33 LDPC probes reuse anchored candidate JSON: /decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.json ========== REAL-RUN STEP 7/9: LDPC MATRIX PROBE ========== [webftr-js8-lab] command=ldpc-matrix-probe [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T153511Z_ldpc-matrix-probe.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T153511Z_ldpc-matrix-probe_manifest.json [webftr-js8-lab] utc=20260526T153511Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T153511Z_ldpc_matrix_probe_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-real-ldpc-matrix-syndrome-probe", "tool_version": "step33-auto-anchor-candidate-guard", "input_wav": null, "candidate_json": "/decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.json", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step19_real_ldpc_generator_matrix_syndrome_probe_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" }, "candidate_context": { "nsps_used": 6400, "nsps_is_js8_realistic": true, "selected_profile": { "profile": "js8_near_6400", "nsps": 6400, "symbol_duration_seconds": 0.533333, "tone_spacing_hz": 1.875, "note": "0.533 s timing guard candidate", "ok": true, "sync": { "start_seconds": 4.8, "base_freq_hz": 1025.0, "candidate_score": 47.4, "costas_hits": 2, "avg_margin_db": 8.01, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 103, "data_symbol_count_estimate": 58, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "complete_ldpc_input_candidate_estimate": true }, "rank_score": 225.085 }, "selected_variant": { "name": "raw_msb_symbol_order", "rank_score": 127.195892, "complete_174bit_candidate": true, "hard_bits_sha256_16": "c87312f86dbe74fc", "hard_weight_174": 36, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 } } }, "variant_probe_count": 20, "best_matrix_probe": { "variant": "lsb_within_each_tone", "transform": "reverse_codeword", "hard_weight_174": 36, "llr_avg_abs": 2.2989731149425303, "syndrome": { "bits_len": 174, "message91": "0000000010010000100000100010000100100000010100010010100000010000000110000000000000000000000", "parity83_observed": "11011011000000001000010010000010011000101110000001000011010000010000000000000000000", "parity83_expected": "01110011000100001111001010011100010001011100011000010110101100100001110101100110000", "syndrome83": "10101000000100000111011000011110001001110010011001010101111100110001110101100110000", "syndrome_weight": 38, "valid_codeword_hard_decision": false, "message91_sha256_16": "f14a0a9b25a2b204", "codeword174_sha256_16": "1c72d827ce8d55e5" }, "repair": { "attempted": true, "flip_count": 10, "repair_success": false, "final_syndrome_weight": 20, "trace": [ { "flip_index": 20, "llr_abs": 0.777135, "gain": 5, "syndrome_weight_after": 33 }, { "flip_index": 24, "llr_abs": 0.280146, "gain": 5, "syndrome_weight_after": 28 }, { "flip_index": 106, "llr_abs": 0.012672, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 129, "llr_abs": 0.118003, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 134, "llr_abs": 0.27805, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 100, "llr_abs": 0.441842, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 105, "llr_abs": 0.477879, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 146, "llr_abs": 0.789541, "gain": 1, "syndrome_weight_after": 22 }, { "flip_index": 107, "llr_abs": 0.844266, "gain": 1, "syndrome_weight_after": 21 }, { "flip_index": 130, "llr_abs": 0.866369, "gain": 1, "syndrome_weight_after": 20 } ], "repaired_message91_sha256_16": "30a1c148a602f866" } }, "all_matrix_probes": [ { "variant": "lsb_within_each_tone", "transform": "reverse_codeword", "hard_weight_174": 36, "llr_avg_abs": 2.2989731149425303, "syndrome": { "bits_len": 174, "message91": "0000000010010000100000100010000100100000010100010010100000010000000110000000000000000000000", "parity83_observed": "11011011000000001000010010000010011000101110000001000011010000010000000000000000000", "parity83_expected": "01110011000100001111001010011100010001011100011000010110101100100001110101100110000", "syndrome83": "10101000000100000111011000011110001001110010011001010101111100110001110101100110000", "syndrome_weight": 38, "valid_codeword_hard_decision": false, "message91_sha256_16": "f14a0a9b25a2b204", "codeword174_sha256_16": "1c72d827ce8d55e5" }, "repair": { "attempted": true, "flip_count": 10, "repair_success": false, "final_syndrome_weight": 20, "trace": [ { "flip_index": 20, "llr_abs": 0.777135, "gain": 5, "syndrome_weight_after": 33 }, { "flip_index": 24, "llr_abs": 0.280146, "gain": 5, "syndrome_weight_after": 28 }, { "flip_index": 106, "llr_abs": 0.012672, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 129, "llr_abs": 0.118003, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 134, "llr_abs": 0.27805, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 100, "llr_abs": 0.441842, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 105, "llr_abs": 0.477879, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 146, "llr_abs": 0.789541, "gain": 1, "syndrome_weight_after": 22 }, { "flip_index": 107, "llr_abs": 0.844266, "gain": 1, "syndrome_weight_after": 21 }, { "flip_index": 130, "llr_abs": 0.866369, "gain": 1, "syndrome_weight_after": 20 } ], "repaired_message91_sha256_16": "30a1c148a602f866" } }, { "variant": "reverse_symbol_order", "transform": "as_exported", "hard_weight_174": 36, "llr_avg_abs": 2.2989731149425303, "syndrome": { "bits_len": 174, "message91": "0000000010010000100000100010000100100000010100010010100000010000000110000000000000000000000", "parity83_observed": "11011011000000001000010010000010011000101110000001000011010000010000000000000000000", "parity83_expected": "01110011000100001111001010011100010001011100011000010110101100100001110101100110000", "syndrome83": "10101000000100000111011000011110001001110010011001010101111100110001110101100110000", "syndrome_weight": 38, "valid_codeword_hard_decision": false, "message91_sha256_16": "f14a0a9b25a2b204", "codeword174_sha256_16": "1c72d827ce8d55e5" }, "repair": { "attempted": true, "flip_count": 10, "repair_success": false, "final_syndrome_weight": 20, "trace": [ { "flip_index": 20, "llr_abs": 0.777135, "gain": 5, "syndrome_weight_after": 33 }, { "flip_index": 24, "llr_abs": 0.280146, "gain": 5, "syndrome_weight_after": 28 }, { "flip_index": 106, "llr_abs": 0.012672, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 129, "llr_abs": 0.118003, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 134, "llr_abs": 0.27805, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 100, "llr_abs": 0.441842, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 105, "llr_abs": 0.477879, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 146, "llr_abs": 0.789541, "gain": 1, "syndrome_weight_after": 22 }, { "flip_index": 107, "llr_abs": 0.844266, "gain": 1, "syndrome_weight_after": 21 }, { "flip_index": 130, "llr_abs": 0.866369, "gain": 1, "syndrome_weight_after": 20 } ], "repaired_message91_sha256_16": "30a1c148a602f866" } }, { "variant": "lab_mask_xor_preview", "transform": "reverse_inverted_codeword", "hard_weight_174": 89, "llr_avg_abs": 2.2989731149425303, "syndrome": { "bits_len": 174, "message91": "0000011100011110000100100100011110000111011010000001110000011100111011011111101101100101101", "parity83_observed": "10010101110000100111010110111000000100101110010011101111010011010110101001100111110", "parity83_expected": "11011000111000100000001010100000100111001001000000111110010000111101010101110111001", "syndrome83": "01001101001000000111011100011000100011100111010011010001000011101011111100010000111", "syndrome_weight": 39, "valid_codeword_hard_decision": false, "message91_sha256_16": "8b491571645dc45d", "codeword174_sha256_16": "f3eea2a3391faa1b" }, "repair": { "attempted": true, "flip_count": 12, "repair_success": false, "final_syndrome_weight": 21, "trace": [ { "flip_index": 31, "llr_abs": 0.251398, "gain": 3, "syndrome_weight_after": 36 }, { "flip_index": 37, "llr_abs": 0.533081, "gain": 3, "syndrome_weight_after": 33 }, { "flip_index": 18, "llr_abs": 0.17487, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 21, "llr_abs": 1.008293, "gain": 3, "syndrome_weight_after": 29 }, { "flip_index": 129, "llr_abs": 0.118003, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 100, "llr_abs": 0.441842, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 144, "llr_abs": 0.473047, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 105, "llr_abs": 0.477879, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 132, "llr_abs": 0.507303, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 98, "llr_abs": 0.724531, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 146, "llr_abs": 0.789541, "gain": 1, "syndrome_weight_after": 22 }, { "flip_index": 95, "llr_abs": 0.966046, "gain": 1, "syndrome_weight_after": 21 } ], "repaired_message91_sha256_16": "a2f6548181c12c07" } }, { "variant": "raw_msb_symbol_order", "transform": "as_exported", "hard_weight_174": 36, "llr_avg_abs": 2.2989731149425308, "syndrome": { "bits_len": 174, "message91": "0000000000000000000100000100110000010001101010000110100000100100000010000000110110110000000", "parity83_observed": "00000000000000011000000001000010001001010001000010010000001010000010000001001000000", "parity83_expected": "10110110111001110101001100000000001101110110000101101011100100100000011110010000100", "syndrome83": "10110110111001101101001101000010000100100111000111111011101110100010011111011000100", "syndrome_weight": 44, "valid_codeword_hard_decision": false, "message91_sha256_16": "c45c2e0e0df00c7e", "codeword174_sha256_16": "c87312f86dbe74fc" }, "repair": { "attempted": true, "flip_count": 12, "repair_success": false, "final_syndrome_weight": 22, "trace": [ { "flip_index": 42, "llr_abs": 0.384955, "gain": 11, "syndrome_weight_after": 33 }, { "flip_index": 103, "llr_abs": 0.044719, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 155, "llr_abs": 0.17487, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 142, "llr_abs": 0.251398, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 149, "llr_abs": 0.280146, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 148, "llr_abs": 0.300403, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 116, "llr_abs": 0.571842, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 109, "llr_abs": 0.585744, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 169, "llr_abs": 0.617935, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 154, "llr_abs": 0.891886, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 151, "llr_abs": 0.948727, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 152, "llr_abs": 1.008293, "gain": 1, "syndrome_weight_after": 22 } ], "repaired_message91_sha256_16": "5cedcd76b3542a73" } }, { "variant": "reverse_full_bitstream", "transform": "reverse_codeword", "hard_weight_174": 36, "llr_avg_abs": 2.2989731149425308, "syndrome": { "bits_len": 174, "message91": "0000000000000000000100000100110000010001101010000110100000100100000010000000110110110000000", "parity83_observed": "00000000000000011000000001000010001001010001000010010000001010000010000001001000000", "parity83_expected": "10110110111001110101001100000000001101110110000101101011100100100000011110010000100", "syndrome83": "10110110111001101101001101000010000100100111000111111011101110100010011111011000100", "syndrome_weight": 44, "valid_codeword_hard_decision": false, "message91_sha256_16": "c45c2e0e0df00c7e", "codeword174_sha256_16": "c87312f86dbe74fc" }, "repair": { "attempted": true, "flip_count": 12, "repair_success": false, "final_syndrome_weight": 22, "trace": [ { "flip_index": 42, "llr_abs": 0.384955, "gain": 11, "syndrome_weight_after": 33 }, { "flip_index": 103, "llr_abs": 0.044719, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 155, "llr_abs": 0.17487, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 142, "llr_abs": 0.251398, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 149, "llr_abs": 0.280146, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 148, "llr_abs": 0.300403, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 116, "llr_abs": 0.571842, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 109, "llr_abs": 0.585744, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 169, "llr_abs": 0.617935, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 154, "llr_abs": 0.891886, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 151, "llr_abs": 0.948727, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 152, "llr_abs": 1.008293, "gain": 1, "syndrome_weight_after": 22 } ], "repaired_message91_sha256_16": "5cedcd76b3542a73" } }, { "variant": "lsb_within_each_tone", "transform": "reverse_inverted_codeword", "hard_weight_174": 138, "llr_avg_abs": 2.2989731149425303, "syndrome": { "bits_len": 174, "message91": "1111111101101111011111011101111011011111101011101101011111101111111001111111111111111111111", "parity83_observed": "00100100111111110111101101111101100111010001111110111100101111101111111111111111111", "parity83_expected": "01110111001010011111111111110010000100101110001101100010101110001010100110100101110", "syndrome83": "01010011110101101000010010001111100011111111110011011110000001100101011001011010001", "syndrome_weight": 44, "valid_codeword_hard_decision": false, "message91_sha256_16": "5c3118af20363d11", "codeword174_sha256_16": "1c9b5e323afdd4c9" }, "repair": { "attempted": true, "flip_count": 8, "repair_success": false, "final_syndrome_weight": 22, "trace": [ { "flip_index": 13, "llr_abs": 0.833633, "gain": 15, "syndrome_weight_after": 29 }, { "flip_index": 106, "llr_abs": 0.012672, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 131, "llr_abs": 0.384955, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 145, "llr_abs": 0.471669, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 151, "llr_abs": 0.652185, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 93, "llr_abs": 0.820746, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 103, "llr_abs": 0.927501, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 95, "llr_abs": 0.966046, "gain": 1, "syndrome_weight_after": 22 } ], "repaired_message91_sha256_16": "2167a6680230263a" } }, { "variant": "reverse_symbol_order", "transform": "inverted_bits", "hard_weight_174": 138, "llr_avg_abs": 2.2989731149425303, "syndrome": { "bits_len": 174, "message91": "1111111101101111011111011101111011011111101011101101011111101111111001111111111111111111111", "parity83_observed": "00100100111111110111101101111101100111010001111110111100101111101111111111111111111", "parity83_expected": "01110111001010011111111111110010000100101110001101100010101110001010100110100101110", "syndrome83": "01010011110101101000010010001111100011111111110011011110000001100101011001011010001", "syndrome_weight": 44, "valid_codeword_hard_decision": false, "message91_sha256_16": "5c3118af20363d11", "codeword174_sha256_16": "1c9b5e323afdd4c9" }, "repair": { "attempted": true, "flip_count": 8, "repair_success": false, "final_syndrome_weight": 22, "trace": [ { "flip_index": 13, "llr_abs": 0.833633, "gain": 15, "syndrome_weight_after": 29 }, { "flip_index": 106, "llr_abs": 0.012672, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 131, "llr_abs": 0.384955, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 145, "llr_abs": 0.471669, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 151, "llr_abs": 0.652185, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 93, "llr_abs": 0.820746, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 103, "llr_abs": 0.927501, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 95, "llr_abs": 0.966046, "gain": 1, "syndrome_weight_after": 22 } ], "repaired_message91_sha256_16": "2167a6680230263a" } }, { "variant": "raw_msb_symbol_order", "transform": "reverse_inverted_codeword", "hard_weight_174": 138, "llr_avg_abs": 2.2989731149425303, "syndrome": { "bits_len": 174, "message91": "1111110110111111011111010111111011011110111010110111011110111111110011111111111111111111110", "parity83_observed": "01001001111111011111101101111101001111010100111011111001101111101111111111111111111", "parity83_expected": "01011010010100111101011110100011000010001011010011100001100010001101110011011000010", "syndrome83": "00010011101011100010110011011110001101011111101000011000001101100010001100100111101", "syndrome_weight": 42, "valid_codeword_hard_decision": false, "message91_sha256_16": "2005b7aba73c3b95", "codeword174_sha256_16": "bcc6ac1d01b215b2" }, "repair": { "attempted": true, "flip_count": 11, "repair_success": false, "final_syndrome_weight": 23, "trace": [ { "flip_index": 31, "llr_abs": 0.251398, "gain": 7, "syndrome_weight_after": 35 }, { "flip_index": 50, "llr_abs": 0.355702, "gain": 3, "syndrome_weight_after": 32 }, { "flip_index": 129, "llr_abs": 0.118003, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 100, "llr_abs": 0.441842, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 145, "llr_abs": 0.471669, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 105, "llr_abs": 0.477879, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 132, "llr_abs": 0.507303, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 151, "llr_abs": 0.652185, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 93, "llr_abs": 0.820746, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 107, "llr_abs": 0.844266, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 103, "llr_abs": 0.927501, "gain": 1, "syndrome_weight_after": 23 } ], "repaired_message91_sha256_16": "fff4fbe07822db66" } }, { "variant": "reverse_full_bitstream", "transform": "inverted_bits", "hard_weight_174": 138, "llr_avg_abs": 2.2989731149425303, "syndrome": { "bits_len": 174, "message91": "1111110110111111011111010111111011011110111010110111011110111111110011111111111111111111110", "parity83_observed": "01001001111111011111101101111101001111010100111011111001101111101111111111111111111", "parity83_expected": "01011010010100111101011110100011000010001011010011100001100010001101110011011000010", "syndrome83": "00010011101011100010110011011110001101011111101000011000001101100010001100100111101", "syndrome_weight": 42, "valid_codeword_hard_decision": false, "message91_sha256_16": "2005b7aba73c3b95", "codeword174_sha256_16": "bcc6ac1d01b215b2" }, "repair": { "attempted": true, "flip_count": 11, "repair_success": false, "final_syndrome_weight": 23, "trace": [ { "flip_index": 31, "llr_abs": 0.251398, "gain": 7, "syndrome_weight_after": 35 }, { "flip_index": 50, "llr_abs": 0.355702, "gain": 3, "syndrome_weight_after": 32 }, { "flip_index": 129, "llr_abs": 0.118003, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 100, "llr_abs": 0.441842, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 145, "llr_abs": 0.471669, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 105, "llr_abs": 0.477879, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 132, "llr_abs": 0.507303, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 151, "llr_abs": 0.652185, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 93, "llr_abs": 0.820746, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 107, "llr_abs": 0.844266, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 103, "llr_abs": 0.927501, "gain": 1, "syndrome_weight_after": 23 } ], "repaired_message91_sha256_16": "fff4fbe07822db66" } }, { "variant": "lsb_within_each_tone", "transform": "as_exported", "hard_weight_174": 36, "llr_avg_abs": 2.2989731149425308, "syndrome": { "bits_len": 174, "message91": "0000000000000000000100000101100001000000111010001100100000100100001000000001101101100000000", "parity83_observed": "00000000000000110000000100000010100100010100000010010000100010000010000100100000000", "parity83_expected": "10110010011000011101110000111011000001101000110011101101110010111101111110001100000", "syndrome83": "10110010011000101101110100111001100101111100110001111101010000111111111010101100000", "syndrome_weight": 46, "valid_codeword_hard_decision": false, "message91_sha256_16": "310889ce59de5193", "codeword174_sha256_16": "1caf67e82a3cc0f1" }, "repair": { "attempted": true, "flip_count": 9, "repair_success": false, "final_syndrome_weight": 23, "trace": [ { "flip_index": 44, "llr_abs": 0.118003, "gain": 13, "syndrome_weight_after": 33 }, { "flip_index": 39, "llr_abs": 0.27805, "gain": 3, "syndrome_weight_after": 30 }, { "flip_index": 155, "llr_abs": 0.17487, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 143, "llr_abs": 0.268492, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 148, "llr_abs": 0.300403, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 123, "llr_abs": 0.355702, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 116, "llr_abs": 0.571842, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 153, "llr_abs": 0.777135, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 152, "llr_abs": 1.008293, "gain": 1, "syndrome_weight_after": 23 } ], "repaired_message91_sha256_16": "e7231f0ebae22fcd" } }, { "variant": "reverse_symbol_order", "transform": "reverse_codeword", "hard_weight_174": 36, "llr_avg_abs": 2.2989731149425308, "syndrome": { "bits_len": 174, "message91": "0000000000000000000100000101100001000000111010001100100000100100001000000001101101100000000", "parity83_observed": "00000000000000110000000100000010100100010100000010010000100010000010000100100000000", "parity83_expected": "10110010011000011101110000111011000001101000110011101101110010111101111110001100000", "syndrome83": "10110010011000101101110100111001100101111100110001111101010000111111111010101100000", "syndrome_weight": 46, "valid_codeword_hard_decision": false, "message91_sha256_16": "310889ce59de5193", "codeword174_sha256_16": "1caf67e82a3cc0f1" }, "repair": { "attempted": true, "flip_count": 9, "repair_success": false, "final_syndrome_weight": 23, "trace": [ { "flip_index": 44, "llr_abs": 0.118003, "gain": 13, "syndrome_weight_after": 33 }, { "flip_index": 39, "llr_abs": 0.27805, "gain": 3, "syndrome_weight_after": 30 }, { "flip_index": 155, "llr_abs": 0.17487, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 143, "llr_abs": 0.268492, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 148, "llr_abs": 0.300403, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 123, "llr_abs": 0.355702, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 116, "llr_abs": 0.571842, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 153, "llr_abs": 0.777135, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 152, "llr_abs": 1.008293, "gain": 1, "syndrome_weight_after": 23 } ], "repaired_message91_sha256_16": "e7231f0ebae22fcd" } }, { "variant": "lab_mask_xor_preview", "transform": "reverse_codeword", "hard_weight_174": 85, "llr_avg_abs": 2.2989731149425303, "syndrome": { "bits_len": 174, "message91": "1111100011100001111011011011100001111000100101111110001111100011000100100000010010011010010", "parity83_observed": "01101010001111011000101001000111111011010001101100010000101100101001010110011000001", "parity83_expected": "11011100110110110000111111001110110010111011010101001010010010010110000110110100111", "syndrome83": "10110110111001101000010110001001001001101010111001011010111110111111010000101100110", "syndrome_weight": 45, "valid_codeword_hard_decision": false, "message91_sha256_16": "80febc46456f5205", "codeword174_sha256_16": "c31bf65b9410a5be" }, "repair": { "attempted": true, "flip_count": 7, "repair_success": false, "final_syndrome_weight": 24, "trace": [ { "flip_index": 50, "llr_abs": 0.355702, "gain": 9, "syndrome_weight_after": 36 }, { "flip_index": 31, "llr_abs": 0.251398, "gain": 7, "syndrome_weight_after": 29 }, { "flip_index": 134, "llr_abs": 0.27805, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 109, "llr_abs": 0.281133, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 105, "llr_abs": 0.477879, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 98, "llr_abs": 0.724531, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 130, "llr_abs": 0.866369, "gain": 1, "syndrome_weight_after": 24 } ], "repaired_message91_sha256_16": "fd2e66ca0555973b" } }, { "variant": "raw_msb_symbol_order", "transform": "inverted_bits", "hard_weight_174": 138, "llr_avg_abs": 2.2989731149425308, "syndrome": { "bits_len": 174, "message91": "1111111111111111111011111011001111101110010101111001011111011011111101111111001001001111111", "parity83_observed": "11111111111111100111111110111101110110101110111101101111110101111101111110110111111", "parity83_expected": "10110010110111100101111001101110011000000100010000011111100110001011001101010011010", "syndrome83": "01001101001000000010000111010011101110101010101101110000010011110110110011100100101", "syndrome_weight": 40, "valid_codeword_hard_decision": false, "message91_sha256_16": "2e3ef8156d4d4a80", "codeword174_sha256_16": "f4fa20c5b6ce10dd" }, "repair": { "attempted": true, "flip_count": 9, "repair_success": false, "final_syndrome_weight": 25, "trace": [ { "flip_index": 28, "llr_abs": 0.471669, "gain": 5, "syndrome_weight_after": 35 }, { "flip_index": 44, "llr_abs": 0.118003, "gain": 3, "syndrome_weight_after": 32 }, { "flip_index": 155, "llr_abs": 0.17487, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 149, "llr_abs": 0.280146, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 148, "llr_abs": 0.300403, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 136, "llr_abs": 0.533081, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 109, "llr_abs": 0.585744, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 169, "llr_abs": 0.617935, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 153, "llr_abs": 0.777135, "gain": 1, "syndrome_weight_after": 25 } ], "repaired_message91_sha256_16": "f98c5c779c08c92b" } }, { "variant": "reverse_full_bitstream", "transform": "reverse_inverted_codeword", "hard_weight_174": 138, "llr_avg_abs": 2.2989731149425308, "syndrome": { "bits_len": 174, "message91": "1111111111111111111011111011001111101110010101111001011111011011111101111111001001001111111", "parity83_observed": "11111111111111100111111110111101110110101110111101101111110101111101111110110111111", "parity83_expected": "10110010110111100101111001101110011000000100010000011111100110001011001101010011010", "syndrome83": "01001101001000000010000111010011101110101010101101110000010011110110110011100100101", "syndrome_weight": 40, "valid_codeword_hard_decision": false, "message91_sha256_16": "2e3ef8156d4d4a80", "codeword174_sha256_16": "f4fa20c5b6ce10dd" }, "repair": { "attempted": true, "flip_count": 9, "repair_success": false, "final_syndrome_weight": 25, "trace": [ { "flip_index": 28, "llr_abs": 0.471669, "gain": 5, "syndrome_weight_after": 35 }, { "flip_index": 44, "llr_abs": 0.118003, "gain": 3, "syndrome_weight_after": 32 }, { "flip_index": 155, "llr_abs": 0.17487, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 149, "llr_abs": 0.280146, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 148, "llr_abs": 0.300403, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 136, "llr_abs": 0.533081, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 109, "llr_abs": 0.585744, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 169, "llr_abs": 0.617935, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 153, "llr_abs": 0.777135, "gain": 1, "syndrome_weight_after": 25 } ], "repaired_message91_sha256_16": "f98c5c779c08c92b" } }, { "variant": "lsb_within_each_tone", "transform": "inverted_bits", "hard_weight_174": 138, "llr_avg_abs": 2.2989731149425308, "syndrome": { "bits_len": 174, "message91": "1111111111111111111011111010011110111111000101110011011111011011110111111110010010011111111", "parity83_observed": "11111111111111001111111011111101011011101011111101101111011101111101111011011111111", "parity83_expected": "10110110010110001101000101010101010100011010100110011001110000010110101101001111110", "syndrome83": "01001001101001000010111110101000001111110001011011110110101101101011010110010000001", "syndrome_weight": 42, "valid_codeword_hard_decision": false, "message91_sha256_16": "067d997e6adabfe4", "codeword174_sha256_16": "854a0205d2331a6c" }, "repair": { "attempted": true, "flip_count": 7, "repair_success": false, "final_syndrome_weight": 25, "trace": [ { "flip_index": 80, "llr_abs": 0.820746, "gain": 9, "syndrome_weight_after": 33 }, { "flip_index": 67, "llr_abs": 0.012672, "gain": 3, "syndrome_weight_after": 30 }, { "flip_index": 123, "llr_abs": 0.355702, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 109, "llr_abs": 0.585744, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 169, "llr_abs": 0.617935, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 153, "llr_abs": 0.777135, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 160, "llr_abs": 0.833633, "gain": 1, "syndrome_weight_after": 25 } ], "repaired_message91_sha256_16": "c6058330aaf6862c" } }, { "variant": "reverse_symbol_order", "transform": "reverse_inverted_codeword", "hard_weight_174": 138, "llr_avg_abs": 2.2989731149425308, "syndrome": { "bits_len": 174, "message91": "1111111111111111111011111010011110111111000101110011011111011011110111111110010010011111111", "parity83_observed": "11111111111111001111111011111101011011101011111101101111011101111101111011011111111", "parity83_expected": "10110110010110001101000101010101010100011010100110011001110000010110101101001111110", "syndrome83": "01001001101001000010111110101000001111110001011011110110101101101011010110010000001", "syndrome_weight": 42, "valid_codeword_hard_decision": false, "message91_sha256_16": "067d997e6adabfe4", "codeword174_sha256_16": "854a0205d2331a6c" }, "repair": { "attempted": true, "flip_count": 7, "repair_success": false, "final_syndrome_weight": 25, "trace": [ { "flip_index": 80, "llr_abs": 0.820746, "gain": 9, "syndrome_weight_after": 33 }, { "flip_index": 67, "llr_abs": 0.012672, "gain": 3, "syndrome_weight_after": 30 }, { "flip_index": 123, "llr_abs": 0.355702, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 109, "llr_abs": 0.585744, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 169, "llr_abs": 0.617935, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 153, "llr_abs": 0.777135, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 160, "llr_abs": 0.833633, "gain": 1, "syndrome_weight_after": 25 } ], "repaired_message91_sha256_16": "c6058330aaf6862c" } }, { "variant": "lab_mask_xor_preview", "transform": "inverted_bits", "hard_weight_174": 89, "llr_avg_abs": 2.2989731149425308, "syndrome": { "bits_len": 174, "message91": "0111110011001010110101100101111011100100111010010000001110110101110010000111010100110110100", "parity83_observed": "11011011111101101110011100000111000000101101110000111100010010010000111100011100000", "parity83_expected": "00111000110110011110010011011111111111001101001101001100000110110010101100101001011", "syndrome83": "11100011001011110000001111011000111111100000111101110000010100100010010000110101011", "syndrome_weight": 41, "valid_codeword_hard_decision": false, "message91_sha256_16": "628648d393f820aa", "codeword174_sha256_16": "3bbe6f03ebc07469" }, "repair": { "attempted": true, "flip_count": 9, "repair_success": false, "final_syndrome_weight": 26, "trace": [ { "flip_index": 22, "llr_abs": 0.652185, "gain": 7, "syndrome_weight_after": 34 }, { "flip_index": 142, "llr_abs": 0.251398, "gain": 1, "syndrome_weight_after": 33 }, { "flip_index": 149, "llr_abs": 0.280146, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 136, "llr_abs": 0.533081, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 169, "llr_abs": 0.617935, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 153, "llr_abs": 0.777135, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 160, "llr_abs": 0.833633, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 154, "llr_abs": 0.891886, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 152, "llr_abs": 1.008293, "gain": 1, "syndrome_weight_after": 26 } ], "repaired_message91_sha256_16": "5a5aaca0ed26b92b" } }, { "variant": "lab_mask_xor_preview", "transform": "as_exported", "hard_weight_174": 85, "llr_avg_abs": 2.2989731149425308, "syndrome": { "bits_len": 174, "message91": "1000001100110101001010011010000100011011000101101111110001001010001101111000101011001001011", "parity83_observed": "00100100000010010001100011111000111111010010001111000011101101101111000011100011111", "parity83_expected": "00111100111000001110100110110001101010111111011000111000000100011001111111101010101", "syndrome83": "00011000111010011111000101001001010101101101010111111011101001110110111100001001010", "syndrome_weight": 45, "valid_codeword_hard_decision": false, "message91_sha256_16": "598576b479b73a31", "codeword174_sha256_16": "b1bb86c852f0f4ca" }, "repair": { "attempted": true, "flip_count": 9, "repair_success": false, "final_syndrome_weight": 26, "trace": [ { "flip_index": 75, "llr_abs": 0.724531, "gain": 11, "syndrome_weight_after": 34 }, { "flip_index": 44, "llr_abs": 0.118003, "gain": 1, "syndrome_weight_after": 33 }, { "flip_index": 155, "llr_abs": 0.17487, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 143, "llr_abs": 0.268492, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 149, "llr_abs": 0.280146, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 148, "llr_abs": 0.300403, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 169, "llr_abs": 0.617935, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 160, "llr_abs": 0.833633, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 154, "llr_abs": 0.891886, "gain": 1, "syndrome_weight_after": 26 } ], "repaired_message91_sha256_16": "6a4bf23bb102292e" } }, { "variant": "raw_msb_symbol_order", "transform": "reverse_codeword", "hard_weight_174": 36, "llr_avg_abs": 2.2989731149425303, "syndrome": { "bits_len": 174, "message91": "0000001001000000100000101000000100100001000101001000100001000000001100000000000000000000001", "parity83_observed": "10110110000000100000010010000010110000101011000100000110010000010000000000000000000", "parity83_expected": "01011110011010101101101011001101010111111001000110010101100000100110100000011011100", "syndrome83": "11101000011010001101111001001111100111010010000010010011110000110110100000011011100", "syndrome_weight": 40, "valid_codeword_hard_decision": false, "message91_sha256_16": "91eee6bccceb5eea", "codeword174_sha256_16": "99d197b705881255" }, "repair": { "attempted": true, "flip_count": 6, "repair_success": false, "final_syndrome_weight": 28, "trace": [ { "flip_index": 30, "llr_abs": 0.268492, "gain": 7, "syndrome_weight_after": 33 }, { "flip_index": 129, "llr_abs": 0.118003, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 100, "llr_abs": 0.441842, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 151, "llr_abs": 0.652185, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 146, "llr_abs": 0.789541, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 107, "llr_abs": 0.844266, "gain": 1, "syndrome_weight_after": 28 } ], "repaired_message91_sha256_16": "8c70e629248ac970" } }, { "variant": "reverse_full_bitstream", "transform": "as_exported", "hard_weight_174": 36, "llr_avg_abs": 2.2989731149425303, "syndrome": { "bits_len": 174, "message91": "0000001001000000100000101000000100100001000101001000100001000000001100000000000000000000001", "parity83_observed": "10110110000000100000010010000010110000101011000100000110010000010000000000000000000", "parity83_expected": "01011110011010101101101011001101010111111001000110010101100000100110100000011011100", "syndrome83": "11101000011010001101111001001111100111010010000010010011110000110110100000011011100", "syndrome_weight": 40, "valid_codeword_hard_decision": false, "message91_sha256_16": "91eee6bccceb5eea", "codeword174_sha256_16": "99d197b705881255" }, "repair": { "attempted": true, "flip_count": 6, "repair_success": false, "final_syndrome_weight": 28, "trace": [ { "flip_index": 30, "llr_abs": 0.268492, "gain": 7, "syndrome_weight_after": 33 }, { "flip_index": 129, "llr_abs": 0.118003, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 100, "llr_abs": 0.441842, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 151, "llr_abs": 0.652185, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 146, "llr_abs": 0.789541, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 107, "llr_abs": 0.844266, "gain": 1, "syndrome_weight_after": 28 } ], "repaired_message91_sha256_16": "8c70e629248ac970" } } ], "decodes": [], "outputs": { "ldpc_matrix_probe_json": "/decoders/js8_decoder/runtime/ldpc_matrix_probe/step19_ldpc_matrix_probe.json" }, "warnings": [ "Step 33 uses the real public FT8/JS8-style (174,91) generator matrix for a hard-decision syndrome probe.", "This is not yet a complete soft LDPC belief-propagation decoder and does not unpack JS8 messages.", "If best_matrix_probe reaches syndrome_weight 0, the next step can feed message91 into CRC/message unpack. Otherwise Step 33 should add real soft LDPC iterations." ], "next_action": "Upload logs. Next step: soft LDPC belief-propagation/min-sum decoder using this matrix contract, then JS8 message unpacking." } [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T153511Z_ldpc-matrix-probe.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T153511Z_ldpc-matrix-probe_manifest.json [webftr-js8-lab] ldpc-matrix-probe exit_code=0 ========== REAL-RUN STEP 8/9: LDPC SOFT DECODE ========== [webftr-js8-lab] command=ldpc-soft-decode [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T153519Z_ldpc-soft-decode.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T153519Z_ldpc-soft-decode_manifest.json [webftr-js8-lab] utc=20260526T153519Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T153519Z_ldpc_soft_decode_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "mode": "JS8", "tool": "webftr-js8-soft-ldpc-minsum-probe", "tool_version": "step33-auto-anchor-candidate-guard", "input_wav": null, "candidate_json": "/decoders/js8_decoder/runtime/fec_candidates/js8_quick_selected_window_fec_candidate_step17.json", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step33_soft_ldpc_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", "max_iterations": 40, "alpha": 0.8, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely" }, "candidate_context": { "nsps_used": 6400, "nsps_is_js8_realistic": true, "selected_profile": { "profile": "js8_near_6400", "nsps": 6400, "symbol_duration_seconds": 0.533333, "tone_spacing_hz": 1.875, "note": "0.533 s timing guard candidate", "ok": true, "sync": { "start_seconds": 4.8, "base_freq_hz": 1025.0, "candidate_score": 47.4, "costas_hits": 2, "avg_margin_db": 8.01, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 103, "data_symbol_count_estimate": 58, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 174, "missing_soft_bits_estimate": 0, "complete_ldpc_input_candidate_estimate": true }, "rank_score": 225.085 }, "selected_variant": { "name": "raw_msb_symbol_order", "rank_score": 127.195892, "complete_174bit_candidate": true, "hard_bits_sha256_16": "c87312f86dbe74fc", "hard_weight_174": 36, "llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 } } }, "probe_count": 20, "best_soft_decode": { "variant": "raw_msb_symbol_order", "transform": "as_exported", "source_rank_score": 127.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 28, "message91": null, "message91_sha256_16": "78a9fa14ddd0c492", "codeword174_sha256_16": "a04e4233e614dfc1", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 43 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 44 }, { "iteration": 4, "syndrome_weight": 46 }, { "iteration": 5, "syndrome_weight": 43 }, { "iteration": 6, "syndrome_weight": 45 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 41 }, { "iteration": 10, "syndrome_weight": 45 }, { "iteration": 15, "syndrome_weight": 33 }, { "iteration": 20, "syndrome_weight": 34 }, { "iteration": 25, "syndrome_weight": 45 }, { "iteration": 30, "syndrome_weight": 40 }, { "iteration": 35, "syndrome_weight": 28 }, { "iteration": 40, "syndrome_weight": 46 } ] }, "soft_decode_results": [ { "variant": "raw_msb_symbol_order", "transform": "as_exported", "source_rank_score": 127.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 28, "message91": null, "message91_sha256_16": "78a9fa14ddd0c492", "codeword174_sha256_16": "a04e4233e614dfc1", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 43 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 44 }, { "iteration": 4, "syndrome_weight": 46 }, { "iteration": 5, "syndrome_weight": 43 }, { "iteration": 6, "syndrome_weight": 45 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 41 }, { "iteration": 10, "syndrome_weight": 45 }, { "iteration": 15, "syndrome_weight": 33 }, { "iteration": 20, "syndrome_weight": 34 }, { "iteration": 25, "syndrome_weight": 45 }, { "iteration": 30, "syndrome_weight": 40 }, { "iteration": 35, "syndrome_weight": 28 }, { "iteration": 40, "syndrome_weight": 46 } ] }, { "variant": "raw_msb_symbol_order", "transform": "inverted_bits", "source_rank_score": 127.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 28, "message91": null, "message91_sha256_16": "3199c0e4c0337f30", "codeword174_sha256_16": "c05155822206704f", "trace": [ { "iteration": 0, "syndrome_weight": 31 }, { "iteration": 1, "syndrome_weight": 29 }, { "iteration": 2, "syndrome_weight": 45 }, { "iteration": 3, "syndrome_weight": 40 }, { "iteration": 4, "syndrome_weight": 46 }, { "iteration": 5, "syndrome_weight": 34 }, { "iteration": 6, "syndrome_weight": 40 }, { "iteration": 7, "syndrome_weight": 41 }, { "iteration": 8, "syndrome_weight": 29 }, { "iteration": 9, "syndrome_weight": 39 }, { "iteration": 10, "syndrome_weight": 44 }, { "iteration": 15, "syndrome_weight": 39 }, { "iteration": 20, "syndrome_weight": 39 }, { "iteration": 25, "syndrome_weight": 43 }, { "iteration": 30, "syndrome_weight": 36 }, { "iteration": 35, "syndrome_weight": 38 }, { "iteration": 40, "syndrome_weight": 44 } ] }, { "variant": "lsb_within_each_tone", "transform": "as_exported", "source_rank_score": 119.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 28, "message91": null, "message91_sha256_16": "78a9fa14ddd0c492", "codeword174_sha256_16": "a04e4233e614dfc1", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 43 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 44 }, { "iteration": 4, "syndrome_weight": 46 }, { "iteration": 5, "syndrome_weight": 43 }, { "iteration": 6, "syndrome_weight": 45 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 41 }, { "iteration": 10, "syndrome_weight": 45 }, { "iteration": 15, "syndrome_weight": 33 }, { "iteration": 20, "syndrome_weight": 34 }, { "iteration": 25, "syndrome_weight": 45 }, { "iteration": 30, "syndrome_weight": 40 }, { "iteration": 35, "syndrome_weight": 28 }, { "iteration": 40, "syndrome_weight": 46 } ] }, { "variant": "lsb_within_each_tone", "transform": "inverted_bits", "source_rank_score": 119.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 28, "message91": null, "message91_sha256_16": "3199c0e4c0337f30", "codeword174_sha256_16": "c05155822206704f", "trace": [ { "iteration": 0, "syndrome_weight": 31 }, { "iteration": 1, "syndrome_weight": 29 }, { "iteration": 2, "syndrome_weight": 45 }, { "iteration": 3, "syndrome_weight": 40 }, { "iteration": 4, "syndrome_weight": 46 }, { "iteration": 5, "syndrome_weight": 34 }, { "iteration": 6, "syndrome_weight": 40 }, { "iteration": 7, "syndrome_weight": 41 }, { "iteration": 8, "syndrome_weight": 29 }, { "iteration": 9, "syndrome_weight": 39 }, { "iteration": 10, "syndrome_weight": 44 }, { "iteration": 15, "syndrome_weight": 39 }, { "iteration": 20, "syndrome_weight": 39 }, { "iteration": 25, "syndrome_weight": 43 }, { "iteration": 30, "syndrome_weight": 36 }, { "iteration": 35, "syndrome_weight": 38 }, { "iteration": 40, "syndrome_weight": 44 } ] }, { "variant": "reverse_symbol_order", "transform": "reverse_codeword", "source_rank_score": 113.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 28, "message91": null, "message91_sha256_16": "78a9fa14ddd0c492", "codeword174_sha256_16": "a04e4233e614dfc1", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 43 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 44 }, { "iteration": 4, "syndrome_weight": 46 }, { "iteration": 5, "syndrome_weight": 43 }, { "iteration": 6, "syndrome_weight": 45 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 41 }, { "iteration": 10, "syndrome_weight": 45 }, { "iteration": 15, "syndrome_weight": 33 }, { "iteration": 20, "syndrome_weight": 34 }, { "iteration": 25, "syndrome_weight": 45 }, { "iteration": 30, "syndrome_weight": 40 }, { "iteration": 35, "syndrome_weight": 28 }, { "iteration": 40, "syndrome_weight": 46 } ] }, { "variant": "reverse_symbol_order", "transform": "reverse_inverted_codeword", "source_rank_score": 113.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 28, "message91": null, "message91_sha256_16": "3199c0e4c0337f30", "codeword174_sha256_16": "c05155822206704f", "trace": [ { "iteration": 0, "syndrome_weight": 31 }, { "iteration": 1, "syndrome_weight": 29 }, { "iteration": 2, "syndrome_weight": 45 }, { "iteration": 3, "syndrome_weight": 40 }, { "iteration": 4, "syndrome_weight": 46 }, { "iteration": 5, "syndrome_weight": 34 }, { "iteration": 6, "syndrome_weight": 40 }, { "iteration": 7, "syndrome_weight": 41 }, { "iteration": 8, "syndrome_weight": 29 }, { "iteration": 9, "syndrome_weight": 39 }, { "iteration": 10, "syndrome_weight": 44 }, { "iteration": 15, "syndrome_weight": 39 }, { "iteration": 20, "syndrome_weight": 39 }, { "iteration": 25, "syndrome_weight": 43 }, { "iteration": 30, "syndrome_weight": 36 }, { "iteration": 35, "syndrome_weight": 38 }, { "iteration": 40, "syndrome_weight": 44 } ] }, { "variant": "reverse_full_bitstream", "transform": "reverse_codeword", "source_rank_score": 112.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 28, "message91": null, "message91_sha256_16": "78a9fa14ddd0c492", "codeword174_sha256_16": "a04e4233e614dfc1", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 43 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 44 }, { "iteration": 4, "syndrome_weight": 46 }, { "iteration": 5, "syndrome_weight": 43 }, { "iteration": 6, "syndrome_weight": 45 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 41 }, { "iteration": 10, "syndrome_weight": 45 }, { "iteration": 15, "syndrome_weight": 33 }, { "iteration": 20, "syndrome_weight": 34 }, { "iteration": 25, "syndrome_weight": 45 }, { "iteration": 30, "syndrome_weight": 40 }, { "iteration": 35, "syndrome_weight": 28 }, { "iteration": 40, "syndrome_weight": 46 } ] }, { "variant": "reverse_full_bitstream", "transform": "reverse_inverted_codeword", "source_rank_score": 112.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 28, "message91": null, "message91_sha256_16": "3199c0e4c0337f30", "codeword174_sha256_16": "c05155822206704f", "trace": [ { "iteration": 0, "syndrome_weight": 31 }, { "iteration": 1, "syndrome_weight": 29 }, { "iteration": 2, "syndrome_weight": 45 }, { "iteration": 3, "syndrome_weight": 40 }, { "iteration": 4, "syndrome_weight": 46 }, { "iteration": 5, "syndrome_weight": 34 }, { "iteration": 6, "syndrome_weight": 40 }, { "iteration": 7, "syndrome_weight": 41 }, { "iteration": 8, "syndrome_weight": 29 }, { "iteration": 9, "syndrome_weight": 39 }, { "iteration": 10, "syndrome_weight": 44 }, { "iteration": 15, "syndrome_weight": 39 }, { "iteration": 20, "syndrome_weight": 39 }, { "iteration": 25, "syndrome_weight": 43 }, { "iteration": 30, "syndrome_weight": 36 }, { "iteration": 35, "syndrome_weight": 38 }, { "iteration": 40, "syndrome_weight": 44 } ] }, { "variant": "lab_mask_xor_preview", "transform": "as_exported", "source_rank_score": 101.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 28, "message91": null, "message91_sha256_16": "78a9fa14ddd0c492", "codeword174_sha256_16": "a04e4233e614dfc1", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 43 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 44 }, { "iteration": 4, "syndrome_weight": 46 }, { "iteration": 5, "syndrome_weight": 43 }, { "iteration": 6, "syndrome_weight": 45 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 41 }, { "iteration": 10, "syndrome_weight": 45 }, { "iteration": 15, "syndrome_weight": 33 }, { "iteration": 20, "syndrome_weight": 34 }, { "iteration": 25, "syndrome_weight": 45 }, { "iteration": 30, "syndrome_weight": 40 }, { "iteration": 35, "syndrome_weight": 28 }, { "iteration": 40, "syndrome_weight": 46 } ] }, { "variant": "lab_mask_xor_preview", "transform": "inverted_bits", "source_rank_score": 101.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 28, "message91": null, "message91_sha256_16": "3199c0e4c0337f30", "codeword174_sha256_16": "c05155822206704f", "trace": [ { "iteration": 0, "syndrome_weight": 31 }, { "iteration": 1, "syndrome_weight": 29 }, { "iteration": 2, "syndrome_weight": 45 }, { "iteration": 3, "syndrome_weight": 40 }, { "iteration": 4, "syndrome_weight": 46 }, { "iteration": 5, "syndrome_weight": 34 }, { "iteration": 6, "syndrome_weight": 40 }, { "iteration": 7, "syndrome_weight": 41 }, { "iteration": 8, "syndrome_weight": 29 }, { "iteration": 9, "syndrome_weight": 39 }, { "iteration": 10, "syndrome_weight": 44 }, { "iteration": 15, "syndrome_weight": 39 }, { "iteration": 20, "syndrome_weight": 39 }, { "iteration": 25, "syndrome_weight": 43 }, { "iteration": 30, "syndrome_weight": 36 }, { "iteration": 35, "syndrome_weight": 38 }, { "iteration": 40, "syndrome_weight": 44 } ] }, { "variant": "raw_msb_symbol_order", "transform": "reverse_inverted_codeword", "source_rank_score": 127.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "9543c5d603c673e9", "codeword174_sha256_16": "c5e761d71d7175e8", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 31 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 40 }, { "iteration": 4, "syndrome_weight": 41 }, { "iteration": 5, "syndrome_weight": 39 }, { "iteration": 6, "syndrome_weight": 37 }, { "iteration": 7, "syndrome_weight": 37 }, { "iteration": 8, "syndrome_weight": 41 }, { "iteration": 9, "syndrome_weight": 39 }, { "iteration": 10, "syndrome_weight": 41 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 38 }, { "iteration": 25, "syndrome_weight": 32 }, { "iteration": 30, "syndrome_weight": 43 }, { "iteration": 35, "syndrome_weight": 43 }, { "iteration": 40, "syndrome_weight": 46 } ] }, { "variant": "lsb_within_each_tone", "transform": "reverse_inverted_codeword", "source_rank_score": 119.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "9543c5d603c673e9", "codeword174_sha256_16": "c5e761d71d7175e8", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 31 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 40 }, { "iteration": 4, "syndrome_weight": 41 }, { "iteration": 5, "syndrome_weight": 39 }, { "iteration": 6, "syndrome_weight": 37 }, { "iteration": 7, "syndrome_weight": 37 }, { "iteration": 8, "syndrome_weight": 41 }, { "iteration": 9, "syndrome_weight": 39 }, { "iteration": 10, "syndrome_weight": 41 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 38 }, { "iteration": 25, "syndrome_weight": 32 }, { "iteration": 30, "syndrome_weight": 43 }, { "iteration": 35, "syndrome_weight": 43 }, { "iteration": 40, "syndrome_weight": 46 } ] }, { "variant": "reverse_symbol_order", "transform": "inverted_bits", "source_rank_score": 113.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "9543c5d603c673e9", "codeword174_sha256_16": "c5e761d71d7175e8", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 31 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 40 }, { "iteration": 4, "syndrome_weight": 41 }, { "iteration": 5, "syndrome_weight": 39 }, { "iteration": 6, "syndrome_weight": 37 }, { "iteration": 7, "syndrome_weight": 37 }, { "iteration": 8, "syndrome_weight": 41 }, { "iteration": 9, "syndrome_weight": 39 }, { "iteration": 10, "syndrome_weight": 41 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 38 }, { "iteration": 25, "syndrome_weight": 32 }, { "iteration": 30, "syndrome_weight": 43 }, { "iteration": 35, "syndrome_weight": 43 }, { "iteration": 40, "syndrome_weight": 46 } ] }, { "variant": "reverse_full_bitstream", "transform": "inverted_bits", "source_rank_score": 112.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "9543c5d603c673e9", "codeword174_sha256_16": "c5e761d71d7175e8", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 31 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 40 }, { "iteration": 4, "syndrome_weight": 41 }, { "iteration": 5, "syndrome_weight": 39 }, { "iteration": 6, "syndrome_weight": 37 }, { "iteration": 7, "syndrome_weight": 37 }, { "iteration": 8, "syndrome_weight": 41 }, { "iteration": 9, "syndrome_weight": 39 }, { "iteration": 10, "syndrome_weight": 41 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 38 }, { "iteration": 25, "syndrome_weight": 32 }, { "iteration": 30, "syndrome_weight": 43 }, { "iteration": 35, "syndrome_weight": 43 }, { "iteration": 40, "syndrome_weight": 46 } ] }, { "variant": "lab_mask_xor_preview", "transform": "reverse_inverted_codeword", "source_rank_score": 101.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "9543c5d603c673e9", "codeword174_sha256_16": "c5e761d71d7175e8", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 31 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 40 }, { "iteration": 4, "syndrome_weight": 41 }, { "iteration": 5, "syndrome_weight": 39 }, { "iteration": 6, "syndrome_weight": 37 }, { "iteration": 7, "syndrome_weight": 37 }, { "iteration": 8, "syndrome_weight": 41 }, { "iteration": 9, "syndrome_weight": 39 }, { "iteration": 10, "syndrome_weight": 41 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 38 }, { "iteration": 25, "syndrome_weight": 32 }, { "iteration": 30, "syndrome_weight": 43 }, { "iteration": 35, "syndrome_weight": 43 }, { "iteration": 40, "syndrome_weight": 46 } ] }, { "variant": "raw_msb_symbol_order", "transform": "reverse_codeword", "source_rank_score": 127.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "0a905b169e9f9c25", "codeword174_sha256_16": "b022892192473a8d", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 49 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 39 }, { "iteration": 5, "syndrome_weight": 33 }, { "iteration": 6, "syndrome_weight": 38 }, { "iteration": 7, "syndrome_weight": 47 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 46 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 36 }, { "iteration": 25, "syndrome_weight": 42 }, { "iteration": 30, "syndrome_weight": 44 }, { "iteration": 35, "syndrome_weight": 35 }, { "iteration": 40, "syndrome_weight": 39 } ] }, { "variant": "lsb_within_each_tone", "transform": "reverse_codeword", "source_rank_score": 119.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "0a905b169e9f9c25", "codeword174_sha256_16": "b022892192473a8d", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 49 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 39 }, { "iteration": 5, "syndrome_weight": 33 }, { "iteration": 6, "syndrome_weight": 38 }, { "iteration": 7, "syndrome_weight": 47 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 46 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 36 }, { "iteration": 25, "syndrome_weight": 42 }, { "iteration": 30, "syndrome_weight": 44 }, { "iteration": 35, "syndrome_weight": 35 }, { "iteration": 40, "syndrome_weight": 39 } ] }, { "variant": "reverse_symbol_order", "transform": "as_exported", "source_rank_score": 113.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "0a905b169e9f9c25", "codeword174_sha256_16": "b022892192473a8d", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 49 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 39 }, { "iteration": 5, "syndrome_weight": 33 }, { "iteration": 6, "syndrome_weight": 38 }, { "iteration": 7, "syndrome_weight": 47 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 46 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 36 }, { "iteration": 25, "syndrome_weight": 42 }, { "iteration": 30, "syndrome_weight": 44 }, { "iteration": 35, "syndrome_weight": 35 }, { "iteration": 40, "syndrome_weight": 39 } ] }, { "variant": "reverse_full_bitstream", "transform": "as_exported", "source_rank_score": 112.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "0a905b169e9f9c25", "codeword174_sha256_16": "b022892192473a8d", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 49 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 39 }, { "iteration": 5, "syndrome_weight": 33 }, { "iteration": 6, "syndrome_weight": 38 }, { "iteration": 7, "syndrome_weight": 47 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 46 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 36 }, { "iteration": 25, "syndrome_weight": 42 }, { "iteration": 30, "syndrome_weight": 44 }, { "iteration": 35, "syndrome_weight": 35 }, { "iteration": 40, "syndrome_weight": 39 } ] }, { "variant": "lab_mask_xor_preview", "transform": "reverse_codeword", "source_rank_score": 101.195892, "source_llr_stats": { "count": 174, "avg_abs": 2.298973, "min_abs": 0.012672, "max_abs": 4.421458, "positive": 141, "negative": 33, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "0a905b169e9f9c25", "codeword174_sha256_16": "b022892192473a8d", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 49 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 39 }, { "iteration": 5, "syndrome_weight": 33 }, { "iteration": 6, "syndrome_weight": 38 }, { "iteration": 7, "syndrome_weight": 47 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 46 }, { "iteration": 15, "syndrome_weight": 41 }, { "iteration": 20, "syndrome_weight": 36 }, { "iteration": 25, "syndrome_weight": 42 }, { "iteration": 30, "syndrome_weight": 44 }, { "iteration": 35, "syndrome_weight": 35 }, { "iteration": 40, "syndrome_weight": 39 } ] } ], "decodes": [], "outputs": { "ldpc_soft_decode_json": "/decoders/js8_decoder/runtime/ldpc_soft_decode/step33_ldpc_soft_decode.json" }, "warnings": [ "Step 33 runs a real normalized-min-sum soft LDPC probe 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 deinterleaver/order/LLR tuning is required." ], "next_action": "Upload logs. Next step: if no valid codeword, improve interleaver/order/LLR mapping; if valid, add JS8 message unpack/CRC." } [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T153519Z_ldpc-soft-decode.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T153519Z_ldpc-soft-decode_manifest.json [webftr-js8-lab] ldpc-soft-decode exit_code=0 ========== REAL-RUN STEP 9/9: JS8LAB LOG BUNDLE ========== [webftr-js8-lab] collecting JS8Lab logs from /decoders/js8_decoder/logs [webftr-js8-lab] upload this JS8Lab bundle: /decoders/js8_decoder/logs/js8_decoder_lab_real_run_20260526T152808Z.zip [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T152808Z_real-run.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T152808Z_real-run_manifest.json [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T152808Z_server-deep-run.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T152808Z_server-deep-run_manifest.json