[js8.sh job] utc=2026-05-26T11:48:34Z [js8.sh job] build=step32-anchored-candidate-fast-export-guard [js8.sh job] root=/decoders/js8_decoder [js8.sh job] command=./run_js8_decoder_lab.sh server-deep-run /decoders/js8_test.wav [js8.sh job] rx-only: no TX / no PTT / no Tune / no Send [webftr-js8-lab] command=server-deep-run [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T114834Z_server-deep-run.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T114834Z_server-deep-run_manifest.json [webftr-js8-lab] utc=20260526T114834Z [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/20260526T114834Z_real-run.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T114834Z_real-run_manifest.json [webftr-js8-lab] utc=20260526T114834Z [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/20260526T114835Z_input-check.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T114835Z_input-check_manifest.json [webftr-js8-lab] utc=20260526T114835Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T114835Z_input_check_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-input-check", "tool_version": "step32-anchored-candidate-fast-export-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/20260526T114835Z_input-check.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T114835Z_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/20260526T114834Z_real_run_quick_prefilter_output.json [webftr-js8-lab] JSON timeout guard: 60s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260526T114834Z_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": "step32-anchored-candidate-fast-export-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 32." } [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/20260526T114834Z_real_run_dirty_window_scan_output.json [webftr-js8-lab] JSON timeout guard: 60s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260526T114834Z_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/20260526T114834Z_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 32 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 32: 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/20260526T114834Z_real_run_profile_scan_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": false, "error": "json_command_timeout_guard", "timeout_seconds": 120, "exit_code": 143, "command": [ "python3", "-m", "webftr_js8_lab.js8_profile_scan", "--input", "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "--pretty", "--max-seconds", "60", "--max-starts", "12", "--max-base-candidates", "8" ], "stderr_log": "/decoders/js8_decoder/logs/20260526T114834Z_real_run_profile_scan_output.stderr.log", "stderr_tail": "", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "next_action": "Step 32 timeout guard stopped this expensive probe. The real-run now continues with quick-window fallback when available; otherwise inspect stderr/log bundle." } [webftr-js8-lab] profile-scan exit_code=143 [webftr-js8-lab] profile-scan JSON: /decoders/js8_decoder/logs/20260526T114834Z_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/20260526T115158Z_frame-recover.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T115158Z_frame-recover_manifest.json [webftr-js8-lab] utc=20260526T115158Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T115158Z_frame_recover_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": false, "error": "json_command_timeout_guard", "timeout_seconds": 180, "exit_code": 143, "command": [ "python3", "-m", "webftr_js8_lab.js8_frame_recover", "--input", "/decoders/js8_decoder/runtime/quick_prefilter_windows/js8_quick_selected_window.wav", "--pretty", "--max-seconds", "60", "--max-starts", "14", "--max-base-candidates", "8" ], "stderr_log": "/decoders/js8_decoder/logs/20260526T115158Z_frame_recover_output.stderr.log", "stderr_tail": "", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "next_action": "Step 32 timeout guard stopped this expensive probe. The real-run now continues with quick-window fallback when available; otherwise inspect stderr/log bundle." } [webftr-js8-lab] FAILED exit_code=143 [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T115158Z_frame-recover.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T115158Z_frame-recover_manifest.json [webftr-js8-lab] frame-recover exit_code=143 [webftr-js8-lab] Step 32: frame-recover is a heavy diagnostic only; continuing with profile-anchor path. ========== REAL-RUN STEP 5/9: AUTO LDPC PROBE ========== [webftr-js8-lab] command=auto-ldpc-probe [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260526T115459Z_auto-ldpc-probe.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T115459Z_auto-ldpc-probe_manifest.json [webftr-js8-lab] utc=20260526T115459Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T115459Z_auto_ldpc_probe_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "mode": "JS8", "tool": "webftr-js8-auto-ldpc-probe", "tool_version": "step32-anchored-candidate-fast-export-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": "step32_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": "step32-anchored-candidate-fast-export-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": "step32_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 32 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 32 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 32 selects the best timing/profile candidate only. It still does not decode final JS8 text.", "No JS8 text decode is expected in Step 32. 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 32. 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 32 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 32 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 32 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 32 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 32. 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] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T115459Z_auto-ldpc-probe.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T115459Z_auto-ldpc-probe_manifest.json [webftr-js8-lab] auto-ldpc-probe exit_code=0 ========== REAL-RUN STEP 6/9: CANDIDATE EXPORT ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T114834Z_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": "step32-anchored-candidate-fast-export-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": "step32_profile_anchor_candidate_export_no_message_unpack", "selected_profile": {}, "profile_selection_source": "profile_scan_json_prefer_js8", "profile_scan_json": "/decoders/js8_decoder/logs/20260526T114834Z_real_run_profile_scan_output.json", "prefer_js8_realistic_profile": true, "nsps_used": 6192, "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": 0, "start_seconds": 0.0, "base_freq_hz": 1025.0, "tone_spacing_hz": 1.937984, "nsps": 6192, "candidate_score": 7.04, "costas_hits": 1, "avg_margin_db": -1.68 }, "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": null, "variant_count": 5, "selected_variant": { "name": "raw_msb_symbol_order", "rank_score": 127.389188, "complete_174bit_candidate": true, "hard_bits_sha256_16": "aa237514554a5da8", "hard_weight_174": 42, "llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "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": "101101101000000000000101001000000000000000000000000010010010000011011010010001001000001101010000010001010000000001010000000000000000001010000010001000010101001000010100010101", "hard_bits_sha256_16": "aa237514554a5da8", "hard_weight_174": 42, "llr_full_174": [ -1.396628, 1.410553, -2.41321, -0.360653, 1.362318, -3.052981, -0.029594, 0.699307, -0.217716, 1.30745, -0.061966, 1.164758, 3.555709, 2.938852, 3.676605, 2.884682, 2.169718, 1.312319, 2.283163, 2.880758, 2.448313, -0.383479, 0.04658, -0.368908, 3.097415, 3.195326, -2.619625, 3.944404, 2.428853, 1.446456, 4.173817, 4.159912, 4.127261, 4.160047, 4.153065, 3.986903, 4.176704, 4.162562, 4.136461, 4.026736, 3.95259, 3.894067, 4.012831, 3.816259, 2.145986, 1.320374, 0.652631, 0.838993, 0.96535, 1.902541, 1.691451, 3.479368, -1.703122, 1.877442, 3.440581, -3.839483, 3.713552, 2.169, -2.181074, 2.160328, 2.914693, 2.990564, 2.994918, 2.238077, -1.58826, -1.11363, 1.381106, 0.643602, -1.648215, 3.364301, -1.870267, 2.626728, 2.293834, -1.862337, 1.965975, 2.136822, 1.554042, 0.100571, 3.213602, 2.416474, -0.186626, 3.458546, 2.392061, 2.783177, 2.316949, 2.706516, -2.207322, -0.574722, 0.592245, -1.25453, 2.428594, -1.278227, 2.793268, 3.045272, 3.275052, 2.650291, 3.485834, -3.180713, 3.409464, 2.527218, 1.355412, -1.267725, 3.00931, -1.456676, 3.880352, 3.725581, 3.779058, 1.052726, 4.111317, 2.97036, 1.679701, 2.0033, 2.039419, -2.230305, 2.732389, -2.818549, 2.288786, 4.168607, 4.170407, 4.143849, 4.165879, 4.170141, 4.151294, 4.169206, 4.144955, 4.092016, 4.16402, 4.131948, 4.129186, 4.154576, 4.102966, 3.591843, 1.184399, 1.450243, -1.080448, 2.754003, -0.198239, 0.246935, 4.31172, 0.830568, 2.49241, 0.580772, -0.496341, 0.288153, 2.838707, 2.861479, -0.690814, 2.311878, 0.629658, 0.203427, 1.973168, -1.975915, 1.968594, -0.45403, 1.876816, -0.525517, 3.52717, 2.919398, -1.370062, 3.788859, 3.429702, 2.657553, 1.866078, -1.685404, 1.70544, -0.394664, 0.513912, 0.447295, 3.452478, -1.809619, 1.607118, -1.684481, 2.049321, -1.601644 ], "llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "rank_score": 127.389188 }, { "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": "101101101000000000000101100000000000000000000000000010010010000110110010010100100000100101010000010100010000000100010000000000000000100010000010100000010101100000010001010101", "hard_bits_sha256_16": "c9eebc015cbfc7d5", "hard_weight_174": 42, "llr_full_174": [ -1.396628, 1.410553, -2.41321, -0.360653, 1.362318, -3.052981, -0.029594, 0.699307, -0.217716, 1.30745, -0.061966, 1.164758, 3.555709, 2.938852, 3.676605, 2.884682, 2.169718, 1.312319, 2.283163, 2.880758, 2.448313, -0.383479, 0.04658, -0.368908, 3.097415, 3.195326, -2.619625, 3.944404, 2.428853, 1.446456, 4.173817, 4.159912, 4.127261, 4.160047, 4.153065, 3.986903, 4.176704, 4.162562, 4.136461, 4.026736, 3.95259, 3.894067, 4.012831, 3.816259, 2.145986, 1.320374, 0.652631, 0.838993, 0.96535, 1.902541, 1.691451, 3.479368, -1.703122, 1.877442, 3.440581, -3.839483, 3.713552, 2.169, -2.181074, 2.160328, 2.914693, 2.990564, 2.994918, 2.238077, -1.58826, -1.11363, 1.381106, 0.643602, -1.648215, 3.364301, -1.870267, 2.626728, 2.293834, -1.862337, 1.965975, 2.136822, 1.554042, 0.100571, 3.213602, 2.416474, -0.186626, 3.458546, 2.392061, 2.783177, 2.316949, 2.706516, -2.207322, -0.574722, 0.592245, -1.25453, 2.428594, -1.278227, 2.793268, 3.045272, 3.275052, 2.650291, 3.485834, -3.180713, 3.409464, 2.527218, 1.355412, -1.267725, 3.00931, -1.456676, 3.880352, 3.725581, 3.779058, 1.052726, 4.111317, 2.97036, 1.679701, 2.0033, 2.039419, -2.230305, 2.732389, -2.818549, 2.288786, 4.168607, 4.170407, 4.143849, 4.165879, 4.170141, 4.151294, 4.169206, 4.144955, 4.092016, 4.16402, 4.131948, 4.129186, 4.154576, 4.102966, 3.591843, 1.184399, 1.450243, -1.080448, 2.754003, -0.198239, 0.246935, 4.31172, 0.830568, 2.49241, 0.580772, -0.496341, 0.288153, 2.838707, 2.861479, -0.690814, 2.311878, 0.629658, 0.203427, 1.973168, -1.975915, 1.968594, -0.45403, 1.876816, -0.525517, 3.52717, 2.919398, -1.370062, 3.788859, 3.429702, 2.657553, 1.866078, -1.685404, 1.70544, -0.394664, 0.513912, 0.447295, 3.452478, -1.809619, 1.607118, -1.684481, 2.049321, -1.601644 ], "llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "rank_score": 119.389188 }, { "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": "101010100010000001101010000001010000010001000000000000000010001000000010001010000010101001000001001010010011011000010010010000000000000000000000000001101000000000000101101101", "hard_bits_sha256_16": "e0aaca7eeb47fb42", "hard_weight_174": 42, "llr_full_174": [ -1.601644, 2.049321, -1.684481, 1.607118, -1.809619, 3.452478, 0.447295, 0.513912, -0.394664, 1.70544, -1.685404, 1.866078, 2.657553, 3.429702, 3.788859, -1.370062, 2.919398, 3.52717, -0.525517, 1.876816, -0.45403, 1.968594, -1.975915, 1.973168, 0.203427, 0.629658, 2.311878, -0.690814, 2.861479, 2.838707, 0.288153, -0.496341, 0.580772, 2.49241, 0.830568, 4.31172, 0.246935, -0.198239, 2.754003, -1.080448, 1.450243, 1.184399, 3.591843, 4.102966, 4.154576, 4.129186, 4.131948, 4.16402, 4.092016, 4.144955, 4.169206, 4.151294, 4.170141, 4.165879, 4.143849, 4.170407, 4.168607, 2.288786, -2.818549, 2.732389, -2.230305, 2.039419, 2.0033, 1.679701, 2.97036, 4.111317, 1.052726, 3.779058, 3.725581, 3.880352, -1.456676, 3.00931, -1.267725, 1.355412, 2.527218, 3.409464, -3.180713, 3.485834, 2.650291, 3.275052, 3.045272, 2.793268, -1.278227, 2.428594, -1.25453, 0.592245, -0.574722, -2.207322, 2.706516, 2.316949, 2.783177, 2.392061, 3.458546, -0.186626, 2.416474, 3.213602, 0.100571, 1.554042, 2.136822, 1.965975, -1.862337, 2.293834, 2.626728, -1.870267, 3.364301, -1.648215, 0.643602, 1.381106, -1.11363, -1.58826, 2.238077, 2.994918, 2.990564, 2.914693, 2.160328, -2.181074, 2.169, 3.713552, -3.839483, 3.440581, 1.877442, -1.703122, 3.479368, 1.691451, 1.902541, 0.96535, 0.838993, 0.652631, 1.320374, 2.145986, 3.816259, 4.012831, 3.894067, 3.95259, 4.026736, 4.136461, 4.162562, 4.176704, 3.986903, 4.153065, 4.160047, 4.127261, 4.159912, 4.173817, 1.446456, 2.428853, 3.944404, -2.619625, 3.195326, 3.097415, -0.368908, 0.04658, -0.383479, 2.448313, 2.880758, 2.283163, 1.312319, 2.169718, 2.884682, 3.676605, 2.938852, 3.555709, 1.164758, -0.061966, 1.30745, -0.217716, 0.699307, -0.029594, -3.052981, 1.362318, -0.360653, -2.41321, 1.410553, -1.396628 ], "llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "rank_score": 113.389188 }, { "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": "101010001010000100101010000100010000010100000000000000000010100000000010100010000010101100000100100010010110110000010010010000000000000000000000000100101000000000000101101101", "hard_bits_sha256_16": "586874e4d556ff00", "hard_weight_174": 42, "llr_full_174": [ -1.601644, 2.049321, -1.684481, 1.607118, -1.809619, 3.452478, 0.447295, 0.513912, -0.394664, 1.70544, -1.685404, 1.866078, 2.657553, 3.429702, 3.788859, -1.370062, 2.919398, 3.52717, -0.525517, 1.876816, -0.45403, 1.968594, -1.975915, 1.973168, 0.203427, 0.629658, 2.311878, -0.690814, 2.861479, 2.838707, 0.288153, -0.496341, 0.580772, 2.49241, 0.830568, 4.31172, 0.246935, -0.198239, 2.754003, -1.080448, 1.450243, 1.184399, 3.591843, 4.102966, 4.154576, 4.129186, 4.131948, 4.16402, 4.092016, 4.144955, 4.169206, 4.151294, 4.170141, 4.165879, 4.143849, 4.170407, 4.168607, 2.288786, -2.818549, 2.732389, -2.230305, 2.039419, 2.0033, 1.679701, 2.97036, 4.111317, 1.052726, 3.779058, 3.725581, 3.880352, -1.456676, 3.00931, -1.267725, 1.355412, 2.527218, 3.409464, -3.180713, 3.485834, 2.650291, 3.275052, 3.045272, 2.793268, -1.278227, 2.428594, -1.25453, 0.592245, -0.574722, -2.207322, 2.706516, 2.316949, 2.783177, 2.392061, 3.458546, -0.186626, 2.416474, 3.213602, 0.100571, 1.554042, 2.136822, 1.965975, -1.862337, 2.293834, 2.626728, -1.870267, 3.364301, -1.648215, 0.643602, 1.381106, -1.11363, -1.58826, 2.238077, 2.994918, 2.990564, 2.914693, 2.160328, -2.181074, 2.169, 3.713552, -3.839483, 3.440581, 1.877442, -1.703122, 3.479368, 1.691451, 1.902541, 0.96535, 0.838993, 0.652631, 1.320374, 2.145986, 3.816259, 4.012831, 3.894067, 3.95259, 4.026736, 4.136461, 4.162562, 4.176704, 3.986903, 4.153065, 4.160047, 4.127261, 4.159912, 4.173817, 1.446456, 2.428853, 3.944404, -2.619625, 3.195326, 3.097415, -0.368908, 0.04658, -0.383479, 2.448313, 2.880758, 2.283163, 1.312319, 2.169718, 2.884682, 3.676605, 2.938852, 3.555709, 1.164758, -0.061966, 1.30745, -0.217716, 0.699307, -0.029594, -3.052981, 1.362318, -0.360653, -2.41321, 1.410553, -1.396628 ], "llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "rank_score": 112.389188 }, { "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": "001101011011010100111100110011010000101010111110100111010100111011100101110000111111101000110100110001000001001101000111010110110000010011101000010100101000100000000001001010", "hard_bits_sha256_16": "8760e03bd72092c3", "hard_weight_174": 81, "llr_full_174": [ -1.396628, 1.410553, -2.41321, -0.360653, 1.362318, -3.052981, -0.029594, 0.699307, -0.217716, 1.30745, -0.061966, 1.164758, 3.555709, 2.938852, 3.676605, 2.884682, 2.169718, 1.312319, 2.283163, 2.880758, 2.448313, -0.383479, 0.04658, -0.368908, 3.097415, 3.195326, -2.619625, 3.944404, 2.428853, 1.446456, 4.173817, 4.159912, 4.127261, 4.160047, 4.153065, 3.986903, 4.176704, 4.162562, 4.136461, 4.026736, 3.95259, 3.894067, 4.012831, 3.816259, 2.145986, 1.320374, 0.652631, 0.838993, 0.96535, 1.902541, 1.691451, 3.479368, -1.703122, 1.877442, 3.440581, -3.839483, 3.713552, 2.169, -2.181074, 2.160328, 2.914693, 2.990564, 2.994918, 2.238077, -1.58826, -1.11363, 1.381106, 0.643602, -1.648215, 3.364301, -1.870267, 2.626728, 2.293834, -1.862337, 1.965975, 2.136822, 1.554042, 0.100571, 3.213602, 2.416474, -0.186626, 3.458546, 2.392061, 2.783177, 2.316949, 2.706516, -2.207322, -0.574722, 0.592245, -1.25453, 2.428594, -1.278227, 2.793268, 3.045272, 3.275052, 2.650291, 3.485834, -3.180713, 3.409464, 2.527218, 1.355412, -1.267725, 3.00931, -1.456676, 3.880352, 3.725581, 3.779058, 1.052726, 4.111317, 2.97036, 1.679701, 2.0033, 2.039419, -2.230305, 2.732389, -2.818549, 2.288786, 4.168607, 4.170407, 4.143849, 4.165879, 4.170141, 4.151294, 4.169206, 4.144955, 4.092016, 4.16402, 4.131948, 4.129186, 4.154576, 4.102966, 3.591843, 1.184399, 1.450243, -1.080448, 2.754003, -0.198239, 0.246935, 4.31172, 0.830568, 2.49241, 0.580772, -0.496341, 0.288153, 2.838707, 2.861479, -0.690814, 2.311878, 0.629658, 0.203427, 1.973168, -1.975915, 1.968594, -0.45403, 1.876816, -0.525517, 3.52717, 2.919398, -1.370062, 3.788859, 3.429702, 2.657553, 1.866078, -1.685404, 1.70544, -0.394664, 0.513912, 0.447295, 3.452478, -1.809619, 1.607118, -1.684481, 2.049321, -1.601644 ], "llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "rank_score": 101.389188 } ], "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": [ "No JS8 text decode is expected in Step 32. 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 32. 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 32 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 32 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 32 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 32 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/20260526T114834Z_real_run_candidate_export_output.json [webftr-js8-lab] Step 32 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/20260526T115758Z_ldpc-matrix-probe.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T115758Z_ldpc-matrix-probe_manifest.json [webftr-js8-lab] utc=20260526T115758Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T115758Z_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": "step32-anchored-candidate-fast-export-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": 6192, "nsps_is_js8_realistic": true, "selected_profile": {}, "selected_variant": { "name": "raw_msb_symbol_order", "rank_score": 127.389188, "complete_174bit_candidate": true, "hard_bits_sha256_16": "aa237514554a5da8", "hard_weight_174": 42, "llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 } } }, "variant_probe_count": 20, "best_matrix_probe": { "variant": "raw_msb_symbol_order", "transform": "reverse_codeword", "hard_weight_174": 42, "llr_avg_abs": 2.3472972758620685, "syndrome": { "bits_len": 174, "message91": "1010100010100001001010100001000100000101000000000000000000101000000000101000100000101011000", "parity83_observed": "00100100010010110110000010010010000000000000000000000000100101000000000000101101101", "parity83_expected": "11001001001010110100001110001011111110011011010011011100111011000101101111100101001", "syndrome83": "11101101011000000010001100011001111110011011010011011100011110000101101111001000100", "syndrome_weight": 42, "valid_codeword_hard_decision": false, "message91_sha256_16": "5886f6ba6ff97dcc", "codeword174_sha256_16": "586874e4d556ff00" }, "repair": { "attempted": true, "flip_count": 7, "repair_success": false, "final_syndrome_weight": 21, "trace": [ { "flip_index": 34, "llr_abs": 0.830568, "gain": 15, "syndrome_weight_after": 27 }, { "flip_index": 151, "llr_abs": 0.04658, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 96, "llr_abs": 0.100571, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 106, "llr_abs": 0.643602, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 125, "llr_abs": 0.96535, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 108, "llr_abs": 1.11363, "gain": 1, "syndrome_weight_after": 22 }, { "flip_index": 162, "llr_abs": 1.164758, "gain": 1, "syndrome_weight_after": 21 } ], "repaired_message91_sha256_16": "ec0dca697e9b6b75" } }, "all_matrix_probes": [ { "variant": "raw_msb_symbol_order", "transform": "reverse_codeword", "hard_weight_174": 42, "llr_avg_abs": 2.3472972758620685, "syndrome": { "bits_len": 174, "message91": "1010100010100001001010100001000100000101000000000000000000101000000000101000100000101011000", "parity83_observed": "00100100010010110110000010010010000000000000000000000000100101000000000000101101101", "parity83_expected": "11001001001010110100001110001011111110011011010011011100111011000101101111100101001", "syndrome83": "11101101011000000010001100011001111110011011010011011100011110000101101111001000100", "syndrome_weight": 42, "valid_codeword_hard_decision": false, "message91_sha256_16": "5886f6ba6ff97dcc", "codeword174_sha256_16": "586874e4d556ff00" }, "repair": { "attempted": true, "flip_count": 7, "repair_success": false, "final_syndrome_weight": 21, "trace": [ { "flip_index": 34, "llr_abs": 0.830568, "gain": 15, "syndrome_weight_after": 27 }, { "flip_index": 151, "llr_abs": 0.04658, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 96, "llr_abs": 0.100571, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 106, "llr_abs": 0.643602, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 125, "llr_abs": 0.96535, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 108, "llr_abs": 1.11363, "gain": 1, "syndrome_weight_after": 22 }, { "flip_index": 162, "llr_abs": 1.164758, "gain": 1, "syndrome_weight_after": 21 } ], "repaired_message91_sha256_16": "ec0dca697e9b6b75" } }, { "variant": "reverse_full_bitstream", "transform": "as_exported", "hard_weight_174": 42, "llr_avg_abs": 2.3472972758620685, "syndrome": { "bits_len": 174, "message91": "1010100010100001001010100001000100000101000000000000000000101000000000101000100000101011000", "parity83_observed": "00100100010010110110000010010010000000000000000000000000100101000000000000101101101", "parity83_expected": "11001001001010110100001110001011111110011011010011011100111011000101101111100101001", "syndrome83": "11101101011000000010001100011001111110011011010011011100011110000101101111001000100", "syndrome_weight": 42, "valid_codeword_hard_decision": false, "message91_sha256_16": "5886f6ba6ff97dcc", "codeword174_sha256_16": "586874e4d556ff00" }, "repair": { "attempted": true, "flip_count": 7, "repair_success": false, "final_syndrome_weight": 21, "trace": [ { "flip_index": 34, "llr_abs": 0.830568, "gain": 15, "syndrome_weight_after": 27 }, { "flip_index": 151, "llr_abs": 0.04658, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 96, "llr_abs": 0.100571, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 106, "llr_abs": 0.643602, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 125, "llr_abs": 0.96535, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 108, "llr_abs": 1.11363, "gain": 1, "syndrome_weight_after": 22 }, { "flip_index": 162, "llr_abs": 1.164758, "gain": 1, "syndrome_weight_after": 21 } ], "repaired_message91_sha256_16": "ec0dca697e9b6b75" } }, { "variant": "raw_msb_symbol_order", "transform": "as_exported", "hard_weight_174": 42, "llr_avg_abs": 2.3472972758620694, "syndrome": { "bits_len": 174, "message91": "1011011010000000000001010010000000000000000000000000100100100000110110100100010010000011010", "parity83_observed": "10000010001010000000001010000000000000000001010000010001000010101001000010100010101", "parity83_expected": "00011111010111011100010011000111011010110110011110110100101101001010100011101101011", "syndrome83": "10011101011101011100011001000111011010110111001110100101101111100011100001001111110", "syndrome_weight": 48, "valid_codeword_hard_decision": false, "message91_sha256_16": "7be631281b81e799", "codeword174_sha256_16": "aa237514554a5da8" }, "repair": { "attempted": true, "flip_count": 7, "repair_success": false, "final_syndrome_weight": 21, "trace": [ { "flip_index": 77, "llr_abs": 0.100571, "gain": 21, "syndrome_weight_after": 27 }, { "flip_index": 136, "llr_abs": 0.198239, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 166, "llr_abs": 0.513912, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 155, "llr_abs": 0.525517, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 148, "llr_abs": 0.629658, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 134, "llr_abs": 1.080448, "gain": 1, "syndrome_weight_after": 22 }, { "flip_index": 132, "llr_abs": 1.184399, "gain": 1, "syndrome_weight_after": 21 } ], "repaired_message91_sha256_16": "bfdfff2107db5207" } }, { "variant": "reverse_full_bitstream", "transform": "reverse_codeword", "hard_weight_174": 42, "llr_avg_abs": 2.3472972758620694, "syndrome": { "bits_len": 174, "message91": "1011011010000000000001010010000000000000000000000000100100100000110110100100010010000011010", "parity83_observed": "10000010001010000000001010000000000000000001010000010001000010101001000010100010101", "parity83_expected": "00011111010111011100010011000111011010110110011110110100101101001010100011101101011", "syndrome83": "10011101011101011100011001000111011010110111001110100101101111100011100001001111110", "syndrome_weight": 48, "valid_codeword_hard_decision": false, "message91_sha256_16": "7be631281b81e799", "codeword174_sha256_16": "aa237514554a5da8" }, "repair": { "attempted": true, "flip_count": 7, "repair_success": false, "final_syndrome_weight": 21, "trace": [ { "flip_index": 77, "llr_abs": 0.100571, "gain": 21, "syndrome_weight_after": 27 }, { "flip_index": 136, "llr_abs": 0.198239, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 166, "llr_abs": 0.513912, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 155, "llr_abs": 0.525517, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 148, "llr_abs": 0.629658, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 134, "llr_abs": 1.080448, "gain": 1, "syndrome_weight_after": 22 }, { "flip_index": 132, "llr_abs": 1.184399, "gain": 1, "syndrome_weight_after": 21 } ], "repaired_message91_sha256_16": "bfdfff2107db5207" } }, { "variant": "lsb_within_each_tone", "transform": "inverted_bits", "hard_weight_174": 132, "llr_avg_abs": 2.3472972758620694, "syndrome": { "bits_len": 174, "message91": "0100100101111111111110100111111111111111111111111111011011011110010011011010110111110110101", "parity83_observed": "01111101011101111111011101111111111111111011101111101011111101010011111101110101010", "parity83_expected": "01010101111101100101111101010110101000110000001010110111011010101101111100000101110", "syndrome83": "00101000100000011010100000101001010111001011100101011100100111111110000001110000100", "syndrome_weight": 36, "valid_codeword_hard_decision": false, "message91_sha256_16": "0b3495d4dcb58729", "codeword174_sha256_16": "512dbb8b5d661851" }, "repair": { "attempted": true, "flip_count": 10, "repair_success": false, "final_syndrome_weight": 22, "trace": [ { "flip_index": 80, "llr_abs": 0.186626, "gain": 1, "syndrome_weight_after": 35 }, { "flip_index": 23, "llr_abs": 0.368908, "gain": 5, "syndrome_weight_after": 30 }, { "flip_index": 149, "llr_abs": 0.203427, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 167, "llr_abs": 0.447295, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 153, "llr_abs": 0.45403, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 155, "llr_abs": 0.525517, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 141, "llr_abs": 0.580772, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 148, "llr_abs": 0.629658, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 146, "llr_abs": 0.690814, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 134, "llr_abs": 1.080448, "gain": 1, "syndrome_weight_after": 22 } ], "repaired_message91_sha256_16": "1e0f0b3594694a28" } }, { "variant": "reverse_symbol_order", "transform": "reverse_inverted_codeword", "hard_weight_174": 132, "llr_avg_abs": 2.3472972758620694, "syndrome": { "bits_len": 174, "message91": "0100100101111111111110100111111111111111111111111111011011011110010011011010110111110110101", "parity83_observed": "01111101011101111111011101111111111111111011101111101011111101010011111101110101010", "parity83_expected": "01010101111101100101111101010110101000110000001010110111011010101101111100000101110", "syndrome83": "00101000100000011010100000101001010111001011100101011100100111111110000001110000100", "syndrome_weight": 36, "valid_codeword_hard_decision": false, "message91_sha256_16": "0b3495d4dcb58729", "codeword174_sha256_16": "512dbb8b5d661851" }, "repair": { "attempted": true, "flip_count": 10, "repair_success": false, "final_syndrome_weight": 22, "trace": [ { "flip_index": 80, "llr_abs": 0.186626, "gain": 1, "syndrome_weight_after": 35 }, { "flip_index": 23, "llr_abs": 0.368908, "gain": 5, "syndrome_weight_after": 30 }, { "flip_index": 149, "llr_abs": 0.203427, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 167, "llr_abs": 0.447295, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 153, "llr_abs": 0.45403, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 155, "llr_abs": 0.525517, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 141, "llr_abs": 0.580772, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 148, "llr_abs": 0.629658, "gain": 1, "syndrome_weight_after": 24 }, { "flip_index": 146, "llr_abs": 0.690814, "gain": 1, "syndrome_weight_after": 23 }, { "flip_index": 134, "llr_abs": 1.080448, "gain": 1, "syndrome_weight_after": 22 } ], "repaired_message91_sha256_16": "1e0f0b3594694a28" } }, { "variant": "lab_mask_xor_preview", "transform": "inverted_bits", "hard_weight_174": 93, "llr_avg_abs": 2.3472972758620694, "syndrome": { "bits_len": 174, "message91": "1100101001001010110000110011001011110101010000010110001010110001000110100011110000000101110", "parity83_observed": "01011001110111110110010111000101001001111101100010111101011010111011111111110110101", "parity83_expected": "10010001011000110111001100011000101000001101010110010011001111011000010001010100100", "syndrome83": "11001000101111000001011011011101100001110000110100101110010101100011101110100010001", "syndrome_weight": 41, "valid_codeword_hard_decision": false, "message91_sha256_16": "1aad5d6d63b42d8b", "codeword174_sha256_16": "054a46b20bbe2b17" }, "repair": { "attempted": true, "flip_count": 9, "repair_success": false, "final_syndrome_weight": 24, "trace": [ { "flip_index": 46, "llr_abs": 0.652631, "gain": 7, "syndrome_weight_after": 34 }, { "flip_index": 47, "llr_abs": 0.838993, "gain": 3, "syndrome_weight_after": 31 }, { "flip_index": 165, "llr_abs": 0.394664, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 167, "llr_abs": 0.447295, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 141, "llr_abs": 0.580772, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 148, "llr_abs": 0.629658, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 146, "llr_abs": 0.690814, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 139, "llr_abs": 0.830568, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 107, "llr_abs": 1.052726, "gain": 1, "syndrome_weight_after": 24 } ], "repaired_message91_sha256_16": "8e3b236f4e98152d" } }, { "variant": "raw_msb_symbol_order", "transform": "inverted_bits", "hard_weight_174": 132, "llr_avg_abs": 2.3472972758620694, "syndrome": { "bits_len": 174, "message91": "0100100101111111111110101101111111111111111111111111011011011111001001011011101101111100101", "parity83_observed": "01111101110101111111110101111111111111111110101111101110111101010110111101011101010", "parity83_expected": "00011011011001001100100110101001001111000100001011000000101111100001110000101110101", "syndrome83": "01100110101100110011010011010110110000111010100100101110010010110111001101110011111", "syndrome_weight": 46, "valid_codeword_hard_decision": false, "message91_sha256_16": "086185897eaaa973", "codeword174_sha256_16": "803233917e711d93" }, "repair": { "attempted": true, "flip_count": 8, "repair_success": false, "final_syndrome_weight": 24, "trace": [ { "flip_index": 46, "llr_abs": 0.652631, "gain": 13, "syndrome_weight_after": 33 }, { "flip_index": 65, "llr_abs": 1.11363, "gain": 3, "syndrome_weight_after": 30 }, { "flip_index": 167, "llr_abs": 0.447295, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 155, "llr_abs": 0.525517, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 139, "llr_abs": 0.830568, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 107, "llr_abs": 1.052726, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 134, "llr_abs": 1.080448, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 132, "llr_abs": 1.184399, "gain": 1, "syndrome_weight_after": 24 } ], "repaired_message91_sha256_16": "3ea5a73cab31524f" } }, { "variant": "reverse_full_bitstream", "transform": "reverse_inverted_codeword", "hard_weight_174": 132, "llr_avg_abs": 2.3472972758620694, "syndrome": { "bits_len": 174, "message91": "0100100101111111111110101101111111111111111111111111011011011111001001011011101101111100101", "parity83_observed": "01111101110101111111110101111111111111111110101111101110111101010110111101011101010", "parity83_expected": "00011011011001001100100110101001001111000100001011000000101111100001110000101110101", "syndrome83": "01100110101100110011010011010110110000111010100100101110010010110111001101110011111", "syndrome_weight": 46, "valid_codeword_hard_decision": false, "message91_sha256_16": "086185897eaaa973", "codeword174_sha256_16": "803233917e711d93" }, "repair": { "attempted": true, "flip_count": 8, "repair_success": false, "final_syndrome_weight": 24, "trace": [ { "flip_index": 46, "llr_abs": 0.652631, "gain": 13, "syndrome_weight_after": 33 }, { "flip_index": 65, "llr_abs": 1.11363, "gain": 3, "syndrome_weight_after": 30 }, { "flip_index": 167, "llr_abs": 0.447295, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 155, "llr_abs": 0.525517, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 139, "llr_abs": 0.830568, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 107, "llr_abs": 1.052726, "gain": 1, "syndrome_weight_after": 26 }, { "flip_index": 134, "llr_abs": 1.080448, "gain": 1, "syndrome_weight_after": 25 }, { "flip_index": 132, "llr_abs": 1.184399, "gain": 1, "syndrome_weight_after": 24 } ], "repaired_message91_sha256_16": "3ea5a73cab31524f" } }, { "variant": "raw_msb_symbol_order", "transform": "reverse_inverted_codeword", "hard_weight_174": 132, "llr_avg_abs": 2.3472972758620685, "syndrome": { "bits_len": 174, "message91": "0101011101011110110101011110111011111010111111111111111111010111111111010111011111010100111", "parity83_observed": "11011011101101001001111101101101111111111111111111111111011010111111111111010010010", "parity83_expected": "11001101000100100100111011100101101011101001000110101000111001101110111100100110111", "syndrome83": "00010110101001101101000110001000010100010110111001010111100011010001000011110100101", "syndrome_weight": 38, "valid_codeword_hard_decision": false, "message91_sha256_16": "962a747fc020f616", "codeword174_sha256_16": "acf36ad6bb9a74a2" }, "repair": { "attempted": true, "flip_count": 8, "repair_success": false, "final_syndrome_weight": 26, "trace": [ { "flip_index": 8, "llr_abs": 0.394664, "gain": 3, "syndrome_weight_after": 35 }, { "flip_index": 24, "llr_abs": 0.203427, "gain": 3, "syndrome_weight_after": 32 }, { "flip_index": 167, "llr_abs": 0.029594, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 163, "llr_abs": 0.061966, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 152, "llr_abs": 0.383479, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 106, "llr_abs": 0.643602, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 166, "llr_abs": 0.699307, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 126, "llr_abs": 0.838993, "gain": 1, "syndrome_weight_after": 26 } ], "repaired_message91_sha256_16": "847658d5e222e04b" } }, { "variant": "reverse_full_bitstream", "transform": "inverted_bits", "hard_weight_174": 132, "llr_avg_abs": 2.3472972758620685, "syndrome": { "bits_len": 174, "message91": "0101011101011110110101011110111011111010111111111111111111010111111111010111011111010100111", "parity83_observed": "11011011101101001001111101101101111111111111111111111111011010111111111111010010010", "parity83_expected": "11001101000100100100111011100101101011101001000110101000111001101110111100100110111", "syndrome83": "00010110101001101101000110001000010100010110111001010111100011010001000011110100101", "syndrome_weight": 38, "valid_codeword_hard_decision": false, "message91_sha256_16": "962a747fc020f616", "codeword174_sha256_16": "acf36ad6bb9a74a2" }, "repair": { "attempted": true, "flip_count": 8, "repair_success": false, "final_syndrome_weight": 26, "trace": [ { "flip_index": 8, "llr_abs": 0.394664, "gain": 3, "syndrome_weight_after": 35 }, { "flip_index": 24, "llr_abs": 0.203427, "gain": 3, "syndrome_weight_after": 32 }, { "flip_index": 167, "llr_abs": 0.029594, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 163, "llr_abs": 0.061966, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 152, "llr_abs": 0.383479, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 106, "llr_abs": 0.643602, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 166, "llr_abs": 0.699307, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 126, "llr_abs": 0.838993, "gain": 1, "syndrome_weight_after": 26 } ], "repaired_message91_sha256_16": "847658d5e222e04b" } }, { "variant": "lsb_within_each_tone", "transform": "reverse_codeword", "hard_weight_174": 42, "llr_avg_abs": 2.3472972758620685, "syndrome": { "bits_len": 174, "message91": "1010101000100000011010100000010100000100010000000000000000100010000000100010100000101010010", "parity83_observed": "00001001010010011011000010010010000000000000000000000000001101000000000000101101101", "parity83_expected": "00010100010100010111101000101110101100110001011010101101000111011010011101000101010", "syndrome83": "00011101000110001100101010111100101100110001011010101101001010011010011101101000111", "syndrome_weight": 42, "valid_codeword_hard_decision": false, "message91_sha256_16": "108d67968226618d", "codeword174_sha256_16": "e0aaca7eeb47fb42" }, "repair": { "attempted": true, "flip_count": 10, "repair_success": false, "final_syndrome_weight": 26, "trace": [ { "flip_index": 41, "llr_abs": 1.184399, "gain": 7, "syndrome_weight_after": 35 }, { "flip_index": 167, "llr_abs": 0.029594, "gain": 1, "syndrome_weight_after": 34 }, { "flip_index": 96, "llr_abs": 0.100571, "gain": 1, "syndrome_weight_after": 33 }, { "flip_index": 170, "llr_abs": 0.360653, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 150, "llr_abs": 0.368908, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 152, "llr_abs": 0.383479, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 127, "llr_abs": 0.652631, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 166, "llr_abs": 0.699307, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 125, "llr_abs": 0.96535, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 162, "llr_abs": 1.164758, "gain": 1, "syndrome_weight_after": 26 } ], "repaired_message91_sha256_16": "c56bffb67c82f3ae" } }, { "variant": "reverse_symbol_order", "transform": "as_exported", "hard_weight_174": 42, "llr_avg_abs": 2.3472972758620685, "syndrome": { "bits_len": 174, "message91": "1010101000100000011010100000010100000100010000000000000000100010000000100010100000101010010", "parity83_observed": "00001001010010011011000010010010000000000000000000000000001101000000000000101101101", "parity83_expected": "00010100010100010111101000101110101100110001011010101101000111011010011101000101010", "syndrome83": "00011101000110001100101010111100101100110001011010101101001010011010011101101000111", "syndrome_weight": 42, "valid_codeword_hard_decision": false, "message91_sha256_16": "108d67968226618d", "codeword174_sha256_16": "e0aaca7eeb47fb42" }, "repair": { "attempted": true, "flip_count": 10, "repair_success": false, "final_syndrome_weight": 26, "trace": [ { "flip_index": 41, "llr_abs": 1.184399, "gain": 7, "syndrome_weight_after": 35 }, { "flip_index": 167, "llr_abs": 0.029594, "gain": 1, "syndrome_weight_after": 34 }, { "flip_index": 96, "llr_abs": 0.100571, "gain": 1, "syndrome_weight_after": 33 }, { "flip_index": 170, "llr_abs": 0.360653, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 150, "llr_abs": 0.368908, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 152, "llr_abs": 0.383479, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 127, "llr_abs": 0.652631, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 166, "llr_abs": 0.699307, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 125, "llr_abs": 0.96535, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 162, "llr_abs": 1.164758, "gain": 1, "syndrome_weight_after": 26 } ], "repaired_message91_sha256_16": "c56bffb67c82f3ae" } }, { "variant": "lab_mask_xor_preview", "transform": "as_exported", "hard_weight_174": 81, "llr_avg_abs": 2.3472972758620694, "syndrome": { "bits_len": 174, "message91": "0011010110110101001111001100110100001010101111101001110101001110111001011100001111111010001", "parity83_observed": "10100110001000001001101000111010110110000010011101000010100101000100000000001001010", "parity83_expected": "10010101010110100111111001110110111101111111000011100111001101110011000010010111010", "syndrome83": "00110011011110101110010001001100001011111101011110100101101000110111000010011110000", "syndrome_weight": 43, "valid_codeword_hard_decision": false, "message91_sha256_16": "a7a485e3eb4e4d1f", "codeword174_sha256_16": "8760e03bd72092c3" }, "repair": { "attempted": true, "flip_count": 5, "repair_success": false, "final_syndrome_weight": 26, "trace": [ { "flip_index": 77, "llr_abs": 0.100571, "gain": 13, "syndrome_weight_after": 30 }, { "flip_index": 155, "llr_abs": 0.525517, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 148, "llr_abs": 0.629658, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 134, "llr_abs": 1.080448, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 132, "llr_abs": 1.184399, "gain": 1, "syndrome_weight_after": 26 } ], "repaired_message91_sha256_16": "65bdfe8aac0da563" } }, { "variant": "lsb_within_each_tone", "transform": "reverse_inverted_codeword", "hard_weight_174": 132, "llr_avg_abs": 2.3472972758620685, "syndrome": { "bits_len": 174, "message91": "0101010111011111100101011111101011111011101111111111111111011101111111011101011111010101101", "parity83_observed": "11110110101101100100111101101101111111111111111111111111110010111111111111010010010", "parity83_expected": "00010000011010000111011101000000111001000011001111011001000101110001001110000110100", "syndrome83": "11100110110111100011100000101101000110111100110000100110110111001110110001010100110", "syndrome_weight": 44, "valid_codeword_hard_decision": false, "message91_sha256_16": "3ebff23a7a34d22c", "codeword174_sha256_16": "7b4ef0e51dd6fda1" }, "repair": { "attempted": true, "flip_count": 6, "repair_success": false, "final_syndrome_weight": 26, "trace": [ { "flip_index": 36, "llr_abs": 0.246935, "gain": 13, "syndrome_weight_after": 31 }, { "flip_index": 167, "llr_abs": 0.029594, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 151, "llr_abs": 0.04658, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 106, "llr_abs": 0.643602, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 126, "llr_abs": 0.838993, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 125, "llr_abs": 0.96535, "gain": 1, "syndrome_weight_after": 26 } ], "repaired_message91_sha256_16": "66772c5492e1b0c6" } }, { "variant": "reverse_symbol_order", "transform": "inverted_bits", "hard_weight_174": 132, "llr_avg_abs": 2.3472972758620685, "syndrome": { "bits_len": 174, "message91": "0101010111011111100101011111101011111011101111111111111111011101111111011101011111010101101", "parity83_observed": "11110110101101100100111101101101111111111111111111111111110010111111111111010010010", "parity83_expected": "00010000011010000111011101000000111001000011001111011001000101110001001110000110100", "syndrome83": "11100110110111100011100000101101000110111100110000100110110111001110110001010100110", "syndrome_weight": 44, "valid_codeword_hard_decision": false, "message91_sha256_16": "3ebff23a7a34d22c", "codeword174_sha256_16": "7b4ef0e51dd6fda1" }, "repair": { "attempted": true, "flip_count": 6, "repair_success": false, "final_syndrome_weight": 26, "trace": [ { "flip_index": 36, "llr_abs": 0.246935, "gain": 13, "syndrome_weight_after": 31 }, { "flip_index": 167, "llr_abs": 0.029594, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 151, "llr_abs": 0.04658, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 106, "llr_abs": 0.643602, "gain": 1, "syndrome_weight_after": 28 }, { "flip_index": 126, "llr_abs": 0.838993, "gain": 1, "syndrome_weight_after": 27 }, { "flip_index": 125, "llr_abs": 0.96535, "gain": 1, "syndrome_weight_after": 26 } ], "repaired_message91_sha256_16": "66772c5492e1b0c6" } }, { "variant": "lab_mask_xor_preview", "transform": "reverse_inverted_codeword", "hard_weight_174": 93, "llr_avg_abs": 2.3472972758620685, "syndrome": { "bits_len": 174, "message91": "1010110111111111101110101101011110100011011111001001010001110100110111110111001101001110100", "parity83_observed": "00000111100010110001000110101000110100000101010111101001100110000110101001001010011", "parity83_expected": "01001111101000111001101111100110001110101011010101110111001011011110011010001001100", "syndrome83": "01001000001010001000101001001110111010101110000010011110101101011000110011000011111", "syndrome_weight": 39, "valid_codeword_hard_decision": false, "message91_sha256_16": "166a79d9abfb4e53", "codeword174_sha256_16": "c0f0181e32499067" }, "repair": { "attempted": true, "flip_count": 7, "repair_success": false, "final_syndrome_weight": 28, "trace": [ { "flip_index": 8, "llr_abs": 0.394664, "gain": 5, "syndrome_weight_after": 34 }, { "flip_index": 167, "llr_abs": 0.029594, "gain": 1, "syndrome_weight_after": 33 }, { "flip_index": 151, "llr_abs": 0.04658, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 165, "llr_abs": 0.217716, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 126, "llr_abs": 0.838993, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 125, "llr_abs": 0.96535, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 108, "llr_abs": 1.11363, "gain": 1, "syndrome_weight_after": 28 } ], "repaired_message91_sha256_16": "3ac3a1896f063d5c" } }, { "variant": "lsb_within_each_tone", "transform": "as_exported", "hard_weight_174": 42, "llr_avg_abs": 2.3472972758620694, "syndrome": { "bits_len": 174, "message91": "1011011010000000000001011000000000000000000000000000100100100001101100100101001000001001010", "parity83_observed": "10000010100010000000100010000000000000000100010000010100000010101100000010001010101", "parity83_expected": "01010001110011110101001000111000111101000010011111000011011000000110101111000110000", "syndrome83": "11010011010001110101101010111000111101000110001111010111011010101010101101001100101", "syndrome_weight": 46, "valid_codeword_hard_decision": false, "message91_sha256_16": "955c77d80df1fcb9", "codeword174_sha256_16": "c9eebc015cbfc7d5" }, "repair": { "attempted": true, "flip_count": 8, "repair_success": false, "final_syndrome_weight": 28, "trace": [ { "flip_index": 6, "llr_abs": 0.029594, "gain": 11, "syndrome_weight_after": 35 }, { "flip_index": 137, "llr_abs": 0.246935, "gain": 1, "syndrome_weight_after": 34 }, { "flip_index": 143, "llr_abs": 0.288153, "gain": 1, "syndrome_weight_after": 33 }, { "flip_index": 153, "llr_abs": 0.45403, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 142, "llr_abs": 0.496341, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 148, "llr_abs": 0.629658, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 134, "llr_abs": 1.080448, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 132, "llr_abs": 1.184399, "gain": 1, "syndrome_weight_after": 28 } ], "repaired_message91_sha256_16": "74cab80ed66254c9" } }, { "variant": "reverse_symbol_order", "transform": "reverse_codeword", "hard_weight_174": 42, "llr_avg_abs": 2.3472972758620694, "syndrome": { "bits_len": 174, "message91": "1011011010000000000001011000000000000000000000000000100100100001101100100101001000001001010", "parity83_observed": "10000010100010000000100010000000000000000100010000010100000010101100000010001010101", "parity83_expected": "01010001110011110101001000111000111101000010011111000011011000000110101111000110000", "syndrome83": "11010011010001110101101010111000111101000110001111010111011010101010101101001100101", "syndrome_weight": 46, "valid_codeword_hard_decision": false, "message91_sha256_16": "955c77d80df1fcb9", "codeword174_sha256_16": "c9eebc015cbfc7d5" }, "repair": { "attempted": true, "flip_count": 8, "repair_success": false, "final_syndrome_weight": 28, "trace": [ { "flip_index": 6, "llr_abs": 0.029594, "gain": 11, "syndrome_weight_after": 35 }, { "flip_index": 137, "llr_abs": 0.246935, "gain": 1, "syndrome_weight_after": 34 }, { "flip_index": 143, "llr_abs": 0.288153, "gain": 1, "syndrome_weight_after": 33 }, { "flip_index": 153, "llr_abs": 0.45403, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 142, "llr_abs": 0.496341, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 148, "llr_abs": 0.629658, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 134, "llr_abs": 1.080448, "gain": 1, "syndrome_weight_after": 29 }, { "flip_index": 132, "llr_abs": 1.184399, "gain": 1, "syndrome_weight_after": 28 } ], "repaired_message91_sha256_16": "74cab80ed66254c9" } }, { "variant": "lab_mask_xor_preview", "transform": "reverse_codeword", "hard_weight_174": 81, "llr_avg_abs": 2.3472972758620685, "syndrome": { "bits_len": 174, "message91": "0101001000000000010001010010100001011100100000110110101110001011001000001000110010110001011", "parity83_observed": "11111000011101001110111001010111001011111010101000010110011001111001010110110101100", "parity83_expected": "01001011100110101001011010001000011011011001000000000011001001110101001001001010010", "syndrome83": "10110011111011100111100011011111010000100011101000010101010000001100011111111111110", "syndrome_weight": 47, "valid_codeword_hard_decision": false, "message91_sha256_16": "3767412c437ee071", "codeword174_sha256_16": "2dbdc32b125cc762" }, "repair": { "attempted": true, "flip_count": 8, "repair_success": false, "final_syndrome_weight": 29, "trace": [ { "flip_index": 20, "llr_abs": 0.45403, "gain": 11, "syndrome_weight_after": 36 }, { "flip_index": 167, "llr_abs": 0.029594, "gain": 1, "syndrome_weight_after": 35 }, { "flip_index": 96, "llr_abs": 0.100571, "gain": 1, "syndrome_weight_after": 34 }, { "flip_index": 150, "llr_abs": 0.368908, "gain": 1, "syndrome_weight_after": 33 }, { "flip_index": 152, "llr_abs": 0.383479, "gain": 1, "syndrome_weight_after": 32 }, { "flip_index": 127, "llr_abs": 0.652631, "gain": 1, "syndrome_weight_after": 31 }, { "flip_index": 166, "llr_abs": 0.699307, "gain": 1, "syndrome_weight_after": 30 }, { "flip_index": 125, "llr_abs": 0.96535, "gain": 1, "syndrome_weight_after": 29 } ], "repaired_message91_sha256_16": "d1606d6c8a9256ef" } } ], "decodes": [], "outputs": { "ldpc_matrix_probe_json": "/decoders/js8_decoder/runtime/ldpc_matrix_probe/step19_ldpc_matrix_probe.json" }, "warnings": [ "Step 32 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 32 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/20260526T115758Z_ldpc-matrix-probe.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T115758Z_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/20260526T115812Z_ldpc-soft-decode.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260526T115812Z_ldpc-soft-decode_manifest.json [webftr-js8-lab] utc=20260526T115812Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260526T115812Z_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": "step32-anchored-candidate-fast-export-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": "step32_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": 6192, "nsps_is_js8_realistic": true, "selected_profile": {}, "selected_variant": { "name": "raw_msb_symbol_order", "rank_score": 127.389188, "complete_174bit_candidate": true, "hard_bits_sha256_16": "aa237514554a5da8", "hard_weight_174": 42, "llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 } } }, "probe_count": 20, "best_soft_decode": { "variant": "raw_msb_symbol_order", "transform": "inverted_bits", "source_rank_score": 127.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 29, "message91": null, "message91_sha256_16": "c4420e8a3025fa0b", "codeword174_sha256_16": "a6cbd3921428e957", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 29 }, { "iteration": 3, "syndrome_weight": 49 }, { "iteration": 4, "syndrome_weight": 40 }, { "iteration": 5, "syndrome_weight": 32 }, { "iteration": 6, "syndrome_weight": 39 }, { "iteration": 7, "syndrome_weight": 46 }, { "iteration": 8, "syndrome_weight": 38 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 43 }, { "iteration": 20, "syndrome_weight": 42 }, { "iteration": 25, "syndrome_weight": 40 }, { "iteration": 30, "syndrome_weight": 45 }, { "iteration": 35, "syndrome_weight": 39 }, { "iteration": 40, "syndrome_weight": 51 } ] }, "soft_decode_results": [ { "variant": "raw_msb_symbol_order", "transform": "inverted_bits", "source_rank_score": 127.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 29, "message91": null, "message91_sha256_16": "c4420e8a3025fa0b", "codeword174_sha256_16": "a6cbd3921428e957", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 29 }, { "iteration": 3, "syndrome_weight": 49 }, { "iteration": 4, "syndrome_weight": 40 }, { "iteration": 5, "syndrome_weight": 32 }, { "iteration": 6, "syndrome_weight": 39 }, { "iteration": 7, "syndrome_weight": 46 }, { "iteration": 8, "syndrome_weight": 38 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 43 }, { "iteration": 20, "syndrome_weight": 42 }, { "iteration": 25, "syndrome_weight": 40 }, { "iteration": 30, "syndrome_weight": 45 }, { "iteration": 35, "syndrome_weight": 39 }, { "iteration": 40, "syndrome_weight": 51 } ] }, { "variant": "lsb_within_each_tone", "transform": "inverted_bits", "source_rank_score": 119.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 29, "message91": null, "message91_sha256_16": "c4420e8a3025fa0b", "codeword174_sha256_16": "a6cbd3921428e957", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 29 }, { "iteration": 3, "syndrome_weight": 49 }, { "iteration": 4, "syndrome_weight": 40 }, { "iteration": 5, "syndrome_weight": 32 }, { "iteration": 6, "syndrome_weight": 39 }, { "iteration": 7, "syndrome_weight": 46 }, { "iteration": 8, "syndrome_weight": 38 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 43 }, { "iteration": 20, "syndrome_weight": 42 }, { "iteration": 25, "syndrome_weight": 40 }, { "iteration": 30, "syndrome_weight": 45 }, { "iteration": 35, "syndrome_weight": 39 }, { "iteration": 40, "syndrome_weight": 51 } ] }, { "variant": "reverse_symbol_order", "transform": "reverse_inverted_codeword", "source_rank_score": 113.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 29, "message91": null, "message91_sha256_16": "c4420e8a3025fa0b", "codeword174_sha256_16": "a6cbd3921428e957", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 29 }, { "iteration": 3, "syndrome_weight": 49 }, { "iteration": 4, "syndrome_weight": 40 }, { "iteration": 5, "syndrome_weight": 32 }, { "iteration": 6, "syndrome_weight": 39 }, { "iteration": 7, "syndrome_weight": 46 }, { "iteration": 8, "syndrome_weight": 38 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 43 }, { "iteration": 20, "syndrome_weight": 42 }, { "iteration": 25, "syndrome_weight": 40 }, { "iteration": 30, "syndrome_weight": 45 }, { "iteration": 35, "syndrome_weight": 39 }, { "iteration": 40, "syndrome_weight": 51 } ] }, { "variant": "reverse_full_bitstream", "transform": "reverse_inverted_codeword", "source_rank_score": 112.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 29, "message91": null, "message91_sha256_16": "c4420e8a3025fa0b", "codeword174_sha256_16": "a6cbd3921428e957", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 29 }, { "iteration": 3, "syndrome_weight": 49 }, { "iteration": 4, "syndrome_weight": 40 }, { "iteration": 5, "syndrome_weight": 32 }, { "iteration": 6, "syndrome_weight": 39 }, { "iteration": 7, "syndrome_weight": 46 }, { "iteration": 8, "syndrome_weight": 38 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 43 }, { "iteration": 20, "syndrome_weight": 42 }, { "iteration": 25, "syndrome_weight": 40 }, { "iteration": 30, "syndrome_weight": 45 }, { "iteration": 35, "syndrome_weight": 39 }, { "iteration": 40, "syndrome_weight": 51 } ] }, { "variant": "lab_mask_xor_preview", "transform": "inverted_bits", "source_rank_score": 101.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 29, "message91": null, "message91_sha256_16": "c4420e8a3025fa0b", "codeword174_sha256_16": "a6cbd3921428e957", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 40 }, { "iteration": 2, "syndrome_weight": 29 }, { "iteration": 3, "syndrome_weight": 49 }, { "iteration": 4, "syndrome_weight": 40 }, { "iteration": 5, "syndrome_weight": 32 }, { "iteration": 6, "syndrome_weight": 39 }, { "iteration": 7, "syndrome_weight": 46 }, { "iteration": 8, "syndrome_weight": 38 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 43 }, { "iteration": 20, "syndrome_weight": 42 }, { "iteration": 25, "syndrome_weight": 40 }, { "iteration": 30, "syndrome_weight": 45 }, { "iteration": 35, "syndrome_weight": 39 }, { "iteration": 40, "syndrome_weight": 51 } ] }, { "variant": "raw_msb_symbol_order", "transform": "reverse_codeword", "source_rank_score": 127.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "ac67150b95806719", "codeword174_sha256_16": "a5cb1fcaa6b0cc6a", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 42 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 36 }, { "iteration": 5, "syndrome_weight": 37 }, { "iteration": 6, "syndrome_weight": 49 }, { "iteration": 7, "syndrome_weight": 34 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 32 }, { "iteration": 10, "syndrome_weight": 36 }, { "iteration": 15, "syndrome_weight": 33 }, { "iteration": 20, "syndrome_weight": 46 }, { "iteration": 25, "syndrome_weight": 46 }, { "iteration": 30, "syndrome_weight": 34 }, { "iteration": 35, "syndrome_weight": 45 }, { "iteration": 40, "syndrome_weight": 45 } ] }, { "variant": "lsb_within_each_tone", "transform": "reverse_codeword", "source_rank_score": 119.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "ac67150b95806719", "codeword174_sha256_16": "a5cb1fcaa6b0cc6a", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 42 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 36 }, { "iteration": 5, "syndrome_weight": 37 }, { "iteration": 6, "syndrome_weight": 49 }, { "iteration": 7, "syndrome_weight": 34 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 32 }, { "iteration": 10, "syndrome_weight": 36 }, { "iteration": 15, "syndrome_weight": 33 }, { "iteration": 20, "syndrome_weight": 46 }, { "iteration": 25, "syndrome_weight": 46 }, { "iteration": 30, "syndrome_weight": 34 }, { "iteration": 35, "syndrome_weight": 45 }, { "iteration": 40, "syndrome_weight": 45 } ] }, { "variant": "reverse_symbol_order", "transform": "as_exported", "source_rank_score": 113.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "ac67150b95806719", "codeword174_sha256_16": "a5cb1fcaa6b0cc6a", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 42 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 36 }, { "iteration": 5, "syndrome_weight": 37 }, { "iteration": 6, "syndrome_weight": 49 }, { "iteration": 7, "syndrome_weight": 34 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 32 }, { "iteration": 10, "syndrome_weight": 36 }, { "iteration": 15, "syndrome_weight": 33 }, { "iteration": 20, "syndrome_weight": 46 }, { "iteration": 25, "syndrome_weight": 46 }, { "iteration": 30, "syndrome_weight": 34 }, { "iteration": 35, "syndrome_weight": 45 }, { "iteration": 40, "syndrome_weight": 45 } ] }, { "variant": "reverse_full_bitstream", "transform": "as_exported", "source_rank_score": 112.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "ac67150b95806719", "codeword174_sha256_16": "a5cb1fcaa6b0cc6a", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 42 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 36 }, { "iteration": 5, "syndrome_weight": 37 }, { "iteration": 6, "syndrome_weight": 49 }, { "iteration": 7, "syndrome_weight": 34 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 32 }, { "iteration": 10, "syndrome_weight": 36 }, { "iteration": 15, "syndrome_weight": 33 }, { "iteration": 20, "syndrome_weight": 46 }, { "iteration": 25, "syndrome_weight": 46 }, { "iteration": 30, "syndrome_weight": 34 }, { "iteration": 35, "syndrome_weight": 45 }, { "iteration": 40, "syndrome_weight": 45 } ] }, { "variant": "lab_mask_xor_preview", "transform": "reverse_codeword", "source_rank_score": 101.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 31, "message91": null, "message91_sha256_16": "ac67150b95806719", "codeword174_sha256_16": "a5cb1fcaa6b0cc6a", "trace": [ { "iteration": 0, "syndrome_weight": 41 }, { "iteration": 1, "syndrome_weight": 42 }, { "iteration": 2, "syndrome_weight": 46 }, { "iteration": 3, "syndrome_weight": 41 }, { "iteration": 4, "syndrome_weight": 36 }, { "iteration": 5, "syndrome_weight": 37 }, { "iteration": 6, "syndrome_weight": 49 }, { "iteration": 7, "syndrome_weight": 34 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 32 }, { "iteration": 10, "syndrome_weight": 36 }, { "iteration": 15, "syndrome_weight": 33 }, { "iteration": 20, "syndrome_weight": 46 }, { "iteration": 25, "syndrome_weight": 46 }, { "iteration": 30, "syndrome_weight": 34 }, { "iteration": 35, "syndrome_weight": 45 }, { "iteration": 40, "syndrome_weight": 45 } ] }, { "variant": "raw_msb_symbol_order", "transform": "as_exported", "source_rank_score": 127.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 32, "message91": null, "message91_sha256_16": "9286e1618d0e5dab", "codeword174_sha256_16": "f6869af30d1c1480", "trace": [ { "iteration": 0, "syndrome_weight": 39 }, { "iteration": 1, "syndrome_weight": 38 }, { "iteration": 2, "syndrome_weight": 38 }, { "iteration": 3, "syndrome_weight": 42 }, { "iteration": 4, "syndrome_weight": 45 }, { "iteration": 5, "syndrome_weight": 44 }, { "iteration": 6, "syndrome_weight": 42 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 45 }, { "iteration": 20, "syndrome_weight": 50 }, { "iteration": 25, "syndrome_weight": 37 }, { "iteration": 30, "syndrome_weight": 42 }, { "iteration": 35, "syndrome_weight": 42 }, { "iteration": 40, "syndrome_weight": 45 } ] }, { "variant": "lsb_within_each_tone", "transform": "as_exported", "source_rank_score": 119.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 32, "message91": null, "message91_sha256_16": "9286e1618d0e5dab", "codeword174_sha256_16": "f6869af30d1c1480", "trace": [ { "iteration": 0, "syndrome_weight": 39 }, { "iteration": 1, "syndrome_weight": 38 }, { "iteration": 2, "syndrome_weight": 38 }, { "iteration": 3, "syndrome_weight": 42 }, { "iteration": 4, "syndrome_weight": 45 }, { "iteration": 5, "syndrome_weight": 44 }, { "iteration": 6, "syndrome_weight": 42 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 45 }, { "iteration": 20, "syndrome_weight": 50 }, { "iteration": 25, "syndrome_weight": 37 }, { "iteration": 30, "syndrome_weight": 42 }, { "iteration": 35, "syndrome_weight": 42 }, { "iteration": 40, "syndrome_weight": 45 } ] }, { "variant": "reverse_symbol_order", "transform": "reverse_codeword", "source_rank_score": 113.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 32, "message91": null, "message91_sha256_16": "9286e1618d0e5dab", "codeword174_sha256_16": "f6869af30d1c1480", "trace": [ { "iteration": 0, "syndrome_weight": 39 }, { "iteration": 1, "syndrome_weight": 38 }, { "iteration": 2, "syndrome_weight": 38 }, { "iteration": 3, "syndrome_weight": 42 }, { "iteration": 4, "syndrome_weight": 45 }, { "iteration": 5, "syndrome_weight": 44 }, { "iteration": 6, "syndrome_weight": 42 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 45 }, { "iteration": 20, "syndrome_weight": 50 }, { "iteration": 25, "syndrome_weight": 37 }, { "iteration": 30, "syndrome_weight": 42 }, { "iteration": 35, "syndrome_weight": 42 }, { "iteration": 40, "syndrome_weight": 45 } ] }, { "variant": "reverse_full_bitstream", "transform": "reverse_codeword", "source_rank_score": 112.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 32, "message91": null, "message91_sha256_16": "9286e1618d0e5dab", "codeword174_sha256_16": "f6869af30d1c1480", "trace": [ { "iteration": 0, "syndrome_weight": 39 }, { "iteration": 1, "syndrome_weight": 38 }, { "iteration": 2, "syndrome_weight": 38 }, { "iteration": 3, "syndrome_weight": 42 }, { "iteration": 4, "syndrome_weight": 45 }, { "iteration": 5, "syndrome_weight": 44 }, { "iteration": 6, "syndrome_weight": 42 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 45 }, { "iteration": 20, "syndrome_weight": 50 }, { "iteration": 25, "syndrome_weight": 37 }, { "iteration": 30, "syndrome_weight": 42 }, { "iteration": 35, "syndrome_weight": 42 }, { "iteration": 40, "syndrome_weight": 45 } ] }, { "variant": "lab_mask_xor_preview", "transform": "as_exported", "source_rank_score": 101.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 32, "message91": null, "message91_sha256_16": "9286e1618d0e5dab", "codeword174_sha256_16": "f6869af30d1c1480", "trace": [ { "iteration": 0, "syndrome_weight": 39 }, { "iteration": 1, "syndrome_weight": 38 }, { "iteration": 2, "syndrome_weight": 38 }, { "iteration": 3, "syndrome_weight": 42 }, { "iteration": 4, "syndrome_weight": 45 }, { "iteration": 5, "syndrome_weight": 44 }, { "iteration": 6, "syndrome_weight": 42 }, { "iteration": 7, "syndrome_weight": 42 }, { "iteration": 8, "syndrome_weight": 44 }, { "iteration": 9, "syndrome_weight": 45 }, { "iteration": 10, "syndrome_weight": 39 }, { "iteration": 15, "syndrome_weight": 45 }, { "iteration": 20, "syndrome_weight": 50 }, { "iteration": 25, "syndrome_weight": 37 }, { "iteration": 30, "syndrome_weight": 42 }, { "iteration": 35, "syndrome_weight": 42 }, { "iteration": 40, "syndrome_weight": 45 } ] }, { "variant": "raw_msb_symbol_order", "transform": "reverse_inverted_codeword", "source_rank_score": 127.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "3da67efa8398894a", "codeword174_sha256_16": "c0ffb55faec27219", "trace": [ { "iteration": 0, "syndrome_weight": 37 }, { "iteration": 1, "syndrome_weight": 33 }, { "iteration": 2, "syndrome_weight": 42 }, { "iteration": 3, "syndrome_weight": 38 }, { "iteration": 4, "syndrome_weight": 38 }, { "iteration": 5, "syndrome_weight": 42 }, { "iteration": 6, "syndrome_weight": 44 }, { "iteration": 7, "syndrome_weight": 40 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 40 }, { "iteration": 15, "syndrome_weight": 46 }, { "iteration": 20, "syndrome_weight": 41 }, { "iteration": 25, "syndrome_weight": 35 }, { "iteration": 30, "syndrome_weight": 45 }, { "iteration": 35, "syndrome_weight": 44 }, { "iteration": 40, "syndrome_weight": 34 } ] }, { "variant": "lsb_within_each_tone", "transform": "reverse_inverted_codeword", "source_rank_score": 119.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "3da67efa8398894a", "codeword174_sha256_16": "c0ffb55faec27219", "trace": [ { "iteration": 0, "syndrome_weight": 37 }, { "iteration": 1, "syndrome_weight": 33 }, { "iteration": 2, "syndrome_weight": 42 }, { "iteration": 3, "syndrome_weight": 38 }, { "iteration": 4, "syndrome_weight": 38 }, { "iteration": 5, "syndrome_weight": 42 }, { "iteration": 6, "syndrome_weight": 44 }, { "iteration": 7, "syndrome_weight": 40 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 40 }, { "iteration": 15, "syndrome_weight": 46 }, { "iteration": 20, "syndrome_weight": 41 }, { "iteration": 25, "syndrome_weight": 35 }, { "iteration": 30, "syndrome_weight": 45 }, { "iteration": 35, "syndrome_weight": 44 }, { "iteration": 40, "syndrome_weight": 34 } ] }, { "variant": "reverse_symbol_order", "transform": "inverted_bits", "source_rank_score": 113.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "3da67efa8398894a", "codeword174_sha256_16": "c0ffb55faec27219", "trace": [ { "iteration": 0, "syndrome_weight": 37 }, { "iteration": 1, "syndrome_weight": 33 }, { "iteration": 2, "syndrome_weight": 42 }, { "iteration": 3, "syndrome_weight": 38 }, { "iteration": 4, "syndrome_weight": 38 }, { "iteration": 5, "syndrome_weight": 42 }, { "iteration": 6, "syndrome_weight": 44 }, { "iteration": 7, "syndrome_weight": 40 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 40 }, { "iteration": 15, "syndrome_weight": 46 }, { "iteration": 20, "syndrome_weight": 41 }, { "iteration": 25, "syndrome_weight": 35 }, { "iteration": 30, "syndrome_weight": 45 }, { "iteration": 35, "syndrome_weight": 44 }, { "iteration": 40, "syndrome_weight": 34 } ] }, { "variant": "reverse_full_bitstream", "transform": "inverted_bits", "source_rank_score": 112.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "3da67efa8398894a", "codeword174_sha256_16": "c0ffb55faec27219", "trace": [ { "iteration": 0, "syndrome_weight": 37 }, { "iteration": 1, "syndrome_weight": 33 }, { "iteration": 2, "syndrome_weight": 42 }, { "iteration": 3, "syndrome_weight": 38 }, { "iteration": 4, "syndrome_weight": 38 }, { "iteration": 5, "syndrome_weight": 42 }, { "iteration": 6, "syndrome_weight": 44 }, { "iteration": 7, "syndrome_weight": 40 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 40 }, { "iteration": 15, "syndrome_weight": 46 }, { "iteration": 20, "syndrome_weight": 41 }, { "iteration": 25, "syndrome_weight": 35 }, { "iteration": 30, "syndrome_weight": 45 }, { "iteration": 35, "syndrome_weight": 44 }, { "iteration": 40, "syndrome_weight": 34 } ] }, { "variant": "lab_mask_xor_preview", "transform": "reverse_inverted_codeword", "source_rank_score": 101.389188, "source_llr_stats": { "count": 174, "avg_abs": 2.347297, "min_abs": 0.029594, "max_abs": 4.31172, "positive": 133, "negative": 41, "zero": 0 }, "success": false, "iterations_used": 40, "final_syndrome_weight": 33, "message91": null, "message91_sha256_16": "3da67efa8398894a", "codeword174_sha256_16": "c0ffb55faec27219", "trace": [ { "iteration": 0, "syndrome_weight": 37 }, { "iteration": 1, "syndrome_weight": 33 }, { "iteration": 2, "syndrome_weight": 42 }, { "iteration": 3, "syndrome_weight": 38 }, { "iteration": 4, "syndrome_weight": 38 }, { "iteration": 5, "syndrome_weight": 42 }, { "iteration": 6, "syndrome_weight": 44 }, { "iteration": 7, "syndrome_weight": 40 }, { "iteration": 8, "syndrome_weight": 37 }, { "iteration": 9, "syndrome_weight": 43 }, { "iteration": 10, "syndrome_weight": 40 }, { "iteration": 15, "syndrome_weight": 46 }, { "iteration": 20, "syndrome_weight": 41 }, { "iteration": 25, "syndrome_weight": 35 }, { "iteration": 30, "syndrome_weight": 45 }, { "iteration": 35, "syndrome_weight": 44 }, { "iteration": 40, "syndrome_weight": 34 } ] } ], "decodes": [], "outputs": { "ldpc_soft_decode_json": "/decoders/js8_decoder/runtime/ldpc_soft_decode/step32_ldpc_soft_decode.json" }, "warnings": [ "Step 32 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/20260526T115812Z_ldpc-soft-decode.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T115812Z_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_20260526T114834Z.zip [webftr-js8-lab] real-run completed with errors, but JS8Lab log bundle was created. [webftr-js8-lab] upload bundle: /decoders/js8_decoder/logs/js8_decoder_lab_real_run_20260526T114834Z.zip [webftr-js8-lab] FAILED exit_code=143 [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T114834Z_real-run.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T114834Z_real-run_manifest.json [webftr-js8-lab] server-deep-run completed with errors, but logs/browser report were written. [webftr-js8-lab] FAILED exit_code=143 [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260526T114834Z_server-deep-run.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260526T114834Z_server-deep-run_manifest.json [js8.sh job] finished utc=2026-05-26T11:59:32Z exit_code=143