[webftr-js8-lab] command=real-wav-corpus-data-frame-hunt [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260528T090400Z_real-wav-corpus-data-frame-hunt.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260528T090400Z_real-wav-corpus-data-frame-hunt_manifest.json [webftr-js8-lab] utc=20260528T090400Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] Step87 real WAV corpus Data/FrameDataCompressed hunt [webftr-js8-lab] requested primary WAV: /decoders/js8_test.wav [webftr-js8-lab] This default run discovers WAVs, runs the Step86 real-WAV chain per WAV, and summarizes true Data/Compressed evidence. [webftr-js8-lab] RX-only guard: no TX / no PTT / no Tune / no Send / no JS8Call runtime control. [webftr-js8-lab] resolved primary WAV: /decoders/js8_test.wav ========== STEP87 1/3: DISCOVER BOUNDED WAV CORPUS ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_real_wav_corpus_plan_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "tool": "webftr-js8-real-wav-corpus-data-frame-hunt-plan", "tool_version": "step95-evidence-surface-live-source-fix", "schema": "webftr-js8-real-wav-corpus-data-frame-hunt-v1-plan", "created_utc": "2026-05-28T09:04:00Z", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "purpose": "Discover real JS8 WAV files for bounded corpus testing. The actual decoder chain is run by the shell wrapper per WAV.", "root": "/decoders/js8_decoder", "primary_wav": "/decoders/js8_test.wav", "max_wavs": 4, "corpus_dir_stats": [ { "path": "/decoders/js8_decoder/runtime/input_wavs", "stat": { "path": "/decoders/js8_decoder/runtime/input_wavs", "exists": true, "is_file": false, "size": 4096, "mtime_utc": "2026-05-28T07:01:52Z" } }, { "path": "/decoders/js8_decoder/runtime/fixtures/wavs", "stat": { "path": "/decoders/js8_decoder/runtime/fixtures/wavs", "exists": true, "is_file": false, "size": 4096, "mtime_utc": "2026-05-28T05:48:38Z" } }, { "path": "/decoders/js8_wavs", "stat": { "path": "/decoders/js8_wavs", "exists": true, "is_file": false, "size": 4096, "mtime_utc": "2026-05-28T07:01:52Z" } }, { "path": "/decoders/js8_corpus", "stat": { "path": "/decoders/js8_corpus", "exists": false, "error": "[Errno 2] No such file or directory: '/decoders/js8_corpus'" } } ], "discovered_wav_count": 3, "unique_discovered_wav_count": 2, "duplicate_wav_count": 1, "duplicate_wavs": [ { "path": "/decoders/js8_wavs/A_1_4.wav", "source": "dir:/decoders/js8_wavs", "stat": { "path": "/decoders/js8_wavs/A_1_4.wav", "exists": true, "is_file": true, "size": 360208, "mtime_utc": "2026-05-28T06:39:47Z" }, "fingerprint": { "ok": true, "size": 360208, "sha256_first_2m": "60b650c2090dff5e2144f164ebe692cde5f048c769518e1b1b9e67223f3da138", "key": "size:360208:sha256_first_2m:60b650c2090dff5e2144f164ebe692cde5f048c769518e1b1b9e67223f3da138" }, "duplicate_of": { "path": "/decoders/js8_decoder/runtime/input_wavs/A_1_4.wav", "source": "dir:/decoders/js8_decoder/runtime/input_wavs" }, "dedup_reason": "same_size_and_sha256_first_2m" } ], "planned_wav_count": 2, "planned_wavs": [ { "path": "/decoders/js8_test.wav", "source": "primary", "stat": { "path": "/decoders/js8_test.wav", "exists": true, "is_file": true, "size": 4608442, "mtime_utc": "2026-05-26T06:05:27Z" }, "fingerprint": { "ok": true, "size": 4608442, "sha256_first_2m": "c049995adf22be86b9acd8d57a566fba642f877fbcd24c1c120463a665956fbf", "key": "size:4608442:sha256_first_2m:c049995adf22be86b9acd8d57a566fba642f877fbcd24c1c120463a665956fbf" } }, { "path": "/decoders/js8_decoder/runtime/input_wavs/A_1_4.wav", "source": "dir:/decoders/js8_decoder/runtime/input_wavs", "stat": { "path": "/decoders/js8_decoder/runtime/input_wavs/A_1_4.wav", "exists": true, "is_file": true, "size": 360208, "mtime_utc": "2026-05-28T06:39:47Z" }, "fingerprint": { "ok": true, "size": 360208, "sha256_first_2m": "60b650c2090dff5e2144f164ebe692cde5f048c769518e1b1b9e67223f3da138", "key": "size:360208:sha256_first_2m:60b650c2090dff5e2144f164ebe692cde5f048c769518e1b1b9e67223f3da138" } } ], "warnings": [ "Step87/92 is still RX-only and does not release JS8 free text.", "Byte-identical WAVs are de-duplicated by size and sha256(first 2 MiB), so the bundled A_1_4.wav is not tested twice when mirrored into multiple corpus dirs.", "Only WAV files listed in planned_wavs are processed; raise JS8LAB_STEP87_MAX_WAVS for a larger corpus." ] } ========== STEP87 2/3: RUN STEP86 PER WAV ========== ---------- STEP87 WAV 0: /decoders/js8_test.wav ---------- [webftr-js8-lab] command=real-wav-unique-frame-census [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260528T090400Z_real-wav-unique-frame-census.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260528T090400Z_real-wav-unique-frame-census_manifest.json [webftr-js8-lab] utc=20260528T090400Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] Step86 real WAV unique frame census [webftr-js8-lab] requested path: /decoders/js8_test.wav [webftr-js8-lab] This default run first executes the Step85 real-WAV wide search, then deduplicates repeated control-frame evidence and surfaces true Data/Compressed counts. [webftr-js8-lab] RX-only guard: no TX / no PTT / no Tune / no Send / no JS8Call runtime control. [webftr-js8-lab] resolved WAV: /decoders/js8_test.wav ========== STEP86 1/2: RUN STEP85 REAL-WAV WIDE SEARCH ========== [webftr-js8-lab] command=real-wav-wide-data-frame-search [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260528T090400Z_real-wav-wide-data-frame-search.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260528T090400Z_real-wav-wide-data-frame-search_manifest.json [webftr-js8-lab] utc=20260528T090400Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] Step85 real WAV wide Data/FrameDataCompressed search [webftr-js8-lab] requested path: /decoders/js8_test.wav [webftr-js8-lab] This default run reads the JS8 WAV, plans multiple non-overlapping windows, runs the message174/Varicode chain per window, and aggregates Data/Compressed-frame evidence. [webftr-js8-lab] RX-only guard: no TX / no PTT / no Tune / no Send / no JS8Call runtime control. [webftr-js8-lab] resolved WAV: /decoders/js8_test.wav ========== STEP85 1/4: REAL WAV WIDE WINDOW PLAN ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_real_wav_wide_window_plan_output.json [webftr-js8-lab] JSON timeout guard: 90s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260528T090400Z_real_wav_wide_window_plan_output.stderr.log /decoders/js8_decoder/src/webftr_js8_lab/js8_real_wav_wide_data_frame_search.py:4: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13 import audioop { "ok": true, "tool": "webftr-js8-real-wav-wide-window-plan", "tool_version": "step85-real-wav-wide-data-frame-search", "schema": "webftr-js8-real-wav-wide-window-plan-v1", "created_utc": "2026-05-28T09:04:38Z", "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.417419601662104, "peak_dbfs": -0.7246929351669301, "clipped": false }, "scan_params": { "window_seconds": 54.0, "hop_seconds": 12.0, "max_seconds": 240.0, "max_windows": 3, "min_gap_seconds": 30.0, "output_dir": "/decoders/js8_decoder/runtime/step85_wide_windows" }, "planned_window_count": 3, "windows": [ { "start_seconds": 24.0, "end_seconds": 72.0, "duration_seconds": 48.0, "avg_activity_score": -6.1791, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.8209, "window_index": 0, "window_id": "step85-window-00", "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0024_0072.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 } ] }, { "start_seconds": 84.0, "end_seconds": 132.0, "duration_seconds": 48.0, "avg_activity_score": -6.2392, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.7608, "window_index": 1, "window_id": "step85-window-01", "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_01_0084_0132.wav", "tone_candidates": [ { "freq_hz": 1000.0, "relative_db": 0.0, "power": 11.64587357 }, { "freq_hz": 975.0, "relative_db": -6.33, "power": 2.71431802 }, { "freq_hz": 950.0, "relative_db": -13.54, "power": 0.51522019 }, { "freq_hz": 1025.0, "relative_db": -22.08, "power": 0.07214514 }, { "freq_hz": 925.0, "relative_db": -25.2, "power": 0.0351999 }, { "freq_hz": 1725.0, "relative_db": -27.85, "power": 0.0191021 }, { "freq_hz": 2650.0, "relative_db": -27.91, "power": 0.01882469 }, { "freq_hz": 2950.0, "relative_db": -29.09, "power": 0.01436373 }, { "freq_hz": 1950.0, "relative_db": -29.11, "power": 0.01429747 }, { "freq_hz": 2450.0, "relative_db": -30.11, "power": 0.01136739 } ] }, { "start_seconds": 120.0, "end_seconds": 168.0, "duration_seconds": 48.0, "avg_activity_score": -6.3461, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.6539, "window_index": 2, "window_id": "step85-window-02", "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_02_0120_0168.wav", "tone_candidates": [ { "freq_hz": 975.0, "relative_db": 0.0, "power": 20.33581748 }, { "freq_hz": 1000.0, "relative_db": -3.78, "power": 8.51337369 }, { "freq_hz": 950.0, "relative_db": -29.95, "power": 0.02056245 }, { "freq_hz": 1050.0, "relative_db": -32.84, "power": 0.01057756 }, { "freq_hz": 2050.0, "relative_db": -33.34, "power": 0.00942244 }, { "freq_hz": 1900.0, "relative_db": -33.87, "power": 0.00834466 }, { "freq_hz": 2925.0, "relative_db": -34.37, "power": 0.00742947 }, { "freq_hz": 1950.0, "relative_db": -34.97, "power": 0.00647006 }, { "freq_hz": 1975.0, "relative_db": -36.5, "power": 0.00455379 }, { "freq_hz": 1925.0, "relative_db": -36.58, "power": 0.00447343 } ] } ], "top_window_candidates_preview": [ { "start_seconds": 24.0, "end_seconds": 72.0, "duration_seconds": 48.0, "avg_activity_score": -6.1791, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.8209 }, { "start_seconds": 36.0, "end_seconds": 84.0, "duration_seconds": 48.0, "avg_activity_score": -6.1898, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.8102 }, { "start_seconds": 48.0, "end_seconds": 96.0, "duration_seconds": 48.0, "avg_activity_score": -6.2025, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.7975 }, { "start_seconds": 84.0, "end_seconds": 132.0, "duration_seconds": 48.0, "avg_activity_score": -6.2392, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.7608 }, { "start_seconds": 108.0, "end_seconds": 156.0, "duration_seconds": 48.0, "avg_activity_score": -6.2443, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.7557 }, { "start_seconds": 96.0, "end_seconds": 144.0, "duration_seconds": 48.0, "avg_activity_score": -6.2475, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.7525 }, { "start_seconds": 12.0, "end_seconds": 60.0, "duration_seconds": 48.0, "avg_activity_score": -6.267, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.733 }, { "start_seconds": 72.0, "end_seconds": 120.0, "duration_seconds": 48.0, "avg_activity_score": -6.3096, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.6904 }, { "start_seconds": 60.0, "end_seconds": 108.0, "duration_seconds": 48.0, "avg_activity_score": -6.334, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.666 }, { "start_seconds": 120.0, "end_seconds": 168.0, "duration_seconds": 48.0, "avg_activity_score": -6.3461, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.6539 }, { "start_seconds": 132.0, "end_seconds": 180.0, "duration_seconds": 48.0, "avg_activity_score": -6.3481, "active_chunks": 4, "chunk_count": 4, "selection_score": 7.6519 }, { "start_seconds": 0.0, "end_seconds": 48.0, "duration_seconds": 48.0, "avg_activity_score": -6.3494, "active_chunks": 4, "chunk_count": 4, "selection_score": 5.6506 } ], "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": 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 }, { "chunk_index": 15, "start_seconds": 180.0, "end_seconds": 192.0, "rms_dbfs": -19.23, "peak_dbfs": -2.41, "activity_score": -16.354 }, { "chunk_index": 16, "start_seconds": 192.0, "end_seconds": 192.017, "rms_dbfs": -23.23, "peak_dbfs": -14.09, "activity_score": -20.9354 } ], "warnings": [ "Step85 window planning is a real-WAV search helper; JS8 text/free-text release remains guarded separately." ], "next_action": "Run candidate/message174/Varicode chain for each planned window and aggregate Data/Compressed frame candidates." } [webftr-js8-lab] step85 window-plan exit_code=0 ========== STEP85 2/4: PER-WINDOW MESSAGE174/VARICODE CHAIN ========== ---------- STEP85 WINDOW 0: 24.0s..72.0s score=7.8209 ---------- [webftr-js8-lab] window WAV: /decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0024_0072.wav [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window0_candidate_export_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "mode": "JS8", "tool": "webftr-js8-fec-candidate-export", "tool_version": "step63-source-exact-interleaver-whitening-index-extract", "input_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0024_0072.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step43_profile_anchor_candidate_export_no_message_unpack", "selected_profile": { "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": 11.25, "base_freq_hz": 1020.0, "candidate_score": 38.2, "costas_hits": 3, "avg_margin_db": 2.46, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 73, "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": 215.95 }, "profile_selection_source": "profile_scan_prefer_js8", "profile_scan_json": null, "anchor_json": null, "anchor_selection": { "source": "candidate_export_local_profile_scan", "path": null, "selection": "local_profile_scan_selected_profile", "nsps": 6000, "start_seconds": 11.25, "base_freq_hz": 1020.0, "tone_spacing_hz": 2.0 }, "anchor_attempts": [ { "source": "candidate_export_local_profile_scan", "path": null, "selection": "local_profile_scan_selected_profile", "nsps": 6000, "start_seconds": 11.25, "base_freq_hz": 1020.0, "tone_spacing_hz": 2.0 } ], "anchor_expected_enabled": true, "prefer_js8_realistic_profile": true, "nsps_used": 6000, "nsps_is_js8_realistic": true, "wav": { "path": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0024_0072.wav", "channels": 1, "sample_rate": 12000, "sample_width_bytes": 2, "frames": 576000, "duration_seconds": 48.0, "rms_dbfs": -9.09, "peak_dbfs": -0.72, "clipped": false }, "sync_candidate": { "start_sample": 135000, "start_seconds": 11.25, "base_freq_hz": 1020.0, "tone_spacing_hz": 2.0, "nsps": 6000, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "candidate_export_local_profile_scan" }, "frame_candidate": { "input_symbol_count": 73, "excluded_costas_symbol_count": 0, "detected_costas_blocks": [], "data_symbol_count_available": 73, "data_symbol_count_used": 58, "expected_data_symbols_candidate": 58, "costas_policy": "js8_leading_only" }, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "anchor_context": { "enabled": true, "source": "candidate_export_local_profile_scan", "start_seconds": 11.25, "base_freq_hz": 1020.0, "tone_spacing_hz": 2.0, "nsps": 6000, "symbol_count_extracted": 73 }, "variant_count": 23, "selected_variant": { "name": "raw_msb_symbol_order", "rank_score": 127.728668, "complete_174bit_candidate": true, "hard_bits_sha256_16": "439ee22b55ba04d3", "hard_weight_174": 47, "llr_stats": { "count": 174, "avg_abs": 2.432167, "min_abs": 0.031995, "max_abs": 4.290722, "positive": 128, "negative": 46, "zero": 0 } }, "variants": [ { "name": "raw_msb_symbol_order", "description": "Current FEC bridge: Costas-stripped symbols, MSB-first tone bits.", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001001001000001011010000010010000000001001001010010011010010010010010001000010001000000000001001001001001001001011000001001001011000100000000010010010010010010000000000001001", "hard_bits_sha256_16": "439ee22b55ba04d3", "hard_weight_174": 47, "llr_full_174": [ 3.628302, 3.356714, -3.094951, 3.456283, 3.155476, -2.952382, 2.993553, 3.366407, -2.80825, 0.092638, 2.320418, 2.009328, 2.759451, 1.393244, -2.268011, 1.343756, -1.323955, 0.031995, 4.290722, -0.462663, 0.702666, 2.868221, 2.029102, 1.836311, 0.705995, -0.321819, 0.558635, 2.734764, -1.064755, 1.054762, 3.248828, 2.621032, 1.160611, 3.223252, 3.399886, 3.467575, 3.153387, 1.237214, -0.92263, 2.949292, 0.498743, -0.604324, 3.258294, 3.13276, -2.792717, 2.493374, -1.296439, 1.557574, 2.825267, -0.676282, 0.812812, 2.512795, -2.303033, -0.992055, 4.13646, -4.057815, 3.893301, 4.155626, -4.120688, 3.869408, 4.143265, -4.071433, 3.930965, 4.10641, -3.937128, 3.655876, 4.256195, -1.684043, 0.957257, 1.971834, 0.721372, -0.518214, 4.009338, 3.488993, 0.795027, 0.605232, -0.977215, 0.696275, 2.454445, 1.829028, -2.153076, 1.761258, 2.482039, 2.709315, 2.72882, 2.1925, 3.141765, 2.890764, 2.708921, 3.124795, 2.76732, 2.92342, -2.059014, 3.163953, 3.59942, -2.906972, 3.029473, 2.331407, -2.056204, 2.505952, 3.387766, -0.510924, 2.533189, 0.297544, -2.917279, 3.499481, 2.942693, -2.286634, 3.643368, 3.877431, -3.574547, 0.598209, -0.33305, -0.392259, 2.057058, 2.670015, 2.056989, 3.579572, 3.663644, -1.843185, 3.662128, 4.026157, -0.691594, 1.567453, 2.478784, -1.328064, 0.756489, -0.432071, -1.846512, 2.418696, 2.512708, 0.148531, -1.151233, 1.486092, 1.345744, 3.059479, 3.503352, 2.88596, 2.915554, 3.889731, 0.312531, 4.285185, -0.170762, 0.12106, 4.143654, -3.94365, 3.941346, 4.13227, -3.614977, 3.614272, 4.071071, -3.719377, 3.696102, 4.083577, -2.723447, 2.480678, 3.762022, -3.485521, 1.247575, 3.326178, 2.580837, 2.629132, 3.842009, 2.931608, 2.102243, 2.7902, 2.770738, 2.603538, 2.095254, 1.820774, -1.103242, 4.003756, 2.591909, -1.280396 ], "llr_stats": { "count": 174, "avg_abs": 2.432167, "min_abs": 0.031995, "max_abs": 4.290722, "positive": 128, "negative": 46, "zero": 0 }, "rank_score": 127.728668 }, { "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": "100100100000100110010000010010000000100100100010010110010010010010010100000010100000000000100100100100100100100110000100100100110000001000000010010010010010010000000000100100", "hard_bits_sha256_16": "323fdd6f47eea998", "hard_weight_174": 47, "llr_full_174": [ 3.628302, 3.356714, -3.094951, 3.456283, 3.155476, -2.952382, 2.993553, 3.366407, -2.80825, 0.092638, 2.320418, 2.009328, 2.759451, 1.393244, -2.268011, 1.343756, -1.323955, 0.031995, 4.290722, -0.462663, 0.702666, 2.868221, 2.029102, 1.836311, 0.705995, -0.321819, 0.558635, 2.734764, -1.064755, 1.054762, 3.248828, 2.621032, 1.160611, 3.223252, 3.399886, 3.467575, 3.153387, 1.237214, -0.92263, 2.949292, 0.498743, -0.604324, 3.258294, 3.13276, -2.792717, 2.493374, -1.296439, 1.557574, 2.825267, -0.676282, 0.812812, 2.512795, -2.303033, -0.992055, 4.13646, -4.057815, 3.893301, 4.155626, -4.120688, 3.869408, 4.143265, -4.071433, 3.930965, 4.10641, -3.937128, 3.655876, 4.256195, -1.684043, 0.957257, 1.971834, 0.721372, -0.518214, 4.009338, 3.488993, 0.795027, 0.605232, -0.977215, 0.696275, 2.454445, 1.829028, -2.153076, 1.761258, 2.482039, 2.709315, 2.72882, 2.1925, 3.141765, 2.890764, 2.708921, 3.124795, 2.76732, 2.92342, -2.059014, 3.163953, 3.59942, -2.906972, 3.029473, 2.331407, -2.056204, 2.505952, 3.387766, -0.510924, 2.533189, 0.297544, -2.917279, 3.499481, 2.942693, -2.286634, 3.643368, 3.877431, -3.574547, 0.598209, -0.33305, -0.392259, 2.057058, 2.670015, 2.056989, 3.579572, 3.663644, -1.843185, 3.662128, 4.026157, -0.691594, 1.567453, 2.478784, -1.328064, 0.756489, -0.432071, -1.846512, 2.418696, 2.512708, 0.148531, -1.151233, 1.486092, 1.345744, 3.059479, 3.503352, 2.88596, 2.915554, 3.889731, 0.312531, 4.285185, -0.170762, 0.12106, 4.143654, -3.94365, 3.941346, 4.13227, -3.614977, 3.614272, 4.071071, -3.719377, 3.696102, 4.083577, -2.723447, 2.480678, 3.762022, -3.485521, 1.247575, 3.326178, 2.580837, 2.629132, 3.842009, 2.931608, 2.102243, 2.7902, 2.770738, 2.603538, 2.095254, 1.820774, -1.103242, 4.003756, 2.591909, -1.280396 ], "llr_stats": { "count": 174, "avg_abs": 2.432167, "min_abs": 0.031995, "max_abs": 4.290722, "positive": 128, "negative": 46, "zero": 0 }, "rank_score": 119.728668 }, { "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": "001001000000000010010010010010010000000100000011001001001000011001001001001001001001000000000001010000001010010010010010011010010001001001000000010010000010011001000001001001", "hard_bits_sha256_16": "fb0d18232eb66e33", "hard_weight_174": 47, "llr_full_174": [ -1.280396, 2.591909, 4.003756, -1.103242, 1.820774, 2.095254, 2.603538, 2.770738, 2.7902, 2.102243, 2.931608, 3.842009, 2.629132, 2.580837, 3.326178, 1.247575, -3.485521, 3.762022, 2.480678, -2.723447, 4.083577, 3.696102, -3.719377, 4.071071, 3.614272, -3.614977, 4.13227, 3.941346, -3.94365, 4.143654, 0.12106, -0.170762, 4.285185, 0.312531, 3.889731, 2.915554, 2.88596, 3.503352, 3.059479, 1.345744, 1.486092, -1.151233, 0.148531, 2.512708, 2.418696, -1.846512, -0.432071, 0.756489, -1.328064, 2.478784, 1.567453, -0.691594, 4.026157, 3.662128, -1.843185, 3.663644, 3.579572, 2.056989, 2.670015, 2.057058, -0.392259, -0.33305, 0.598209, -3.574547, 3.877431, 3.643368, -2.286634, 2.942693, 3.499481, -2.917279, 0.297544, 2.533189, -0.510924, 3.387766, 2.505952, -2.056204, 2.331407, 3.029473, -2.906972, 3.59942, 3.163953, -2.059014, 2.92342, 2.76732, 3.124795, 2.708921, 2.890764, 3.141765, 2.1925, 2.72882, 2.709315, 2.482039, 1.761258, -2.153076, 1.829028, 2.454445, 0.696275, -0.977215, 0.605232, 0.795027, 3.488993, 4.009338, -0.518214, 0.721372, 1.971834, 0.957257, -1.684043, 4.256195, 3.655876, -3.937128, 4.10641, 3.930965, -4.071433, 4.143265, 3.869408, -4.120688, 4.155626, 3.893301, -4.057815, 4.13646, -0.992055, -2.303033, 2.512795, 0.812812, -0.676282, 2.825267, 1.557574, -1.296439, 2.493374, -2.792717, 3.13276, 3.258294, -0.604324, 0.498743, 2.949292, -0.92263, 1.237214, 3.153387, 3.467575, 3.399886, 3.223252, 1.160611, 2.621032, 3.248828, 1.054762, -1.064755, 2.734764, 0.558635, -0.321819, 0.705995, 1.836311, 2.029102, 2.868221, 0.702666, -0.462663, 4.290722, 0.031995, -1.323955, 1.343756, -2.268011, 1.393244, 2.759451, 2.009328, 2.320418, 0.092638, -2.80825, 3.366407, 2.993553, -2.952382, 3.155476, 3.456283, -3.094951, 3.356714, 3.628302 ], "llr_stats": { "count": 174, "avg_abs": 2.432167, "min_abs": 0.031995, "max_abs": 4.290722, "positive": 128, "negative": 46, "zero": 0 }, "rank_score": 113.728668 }, { "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": "100100000000000010010010010010010000000001000110100100100000110100100100100100100100000000000100010000100010010010010010110010010100100100000000010010000010110100000100100100", "hard_bits_sha256_16": "400ce00a3cc81e48", "hard_weight_174": 47, "llr_full_174": [ -1.280396, 2.591909, 4.003756, -1.103242, 1.820774, 2.095254, 2.603538, 2.770738, 2.7902, 2.102243, 2.931608, 3.842009, 2.629132, 2.580837, 3.326178, 1.247575, -3.485521, 3.762022, 2.480678, -2.723447, 4.083577, 3.696102, -3.719377, 4.071071, 3.614272, -3.614977, 4.13227, 3.941346, -3.94365, 4.143654, 0.12106, -0.170762, 4.285185, 0.312531, 3.889731, 2.915554, 2.88596, 3.503352, 3.059479, 1.345744, 1.486092, -1.151233, 0.148531, 2.512708, 2.418696, -1.846512, -0.432071, 0.756489, -1.328064, 2.478784, 1.567453, -0.691594, 4.026157, 3.662128, -1.843185, 3.663644, 3.579572, 2.056989, 2.670015, 2.057058, -0.392259, -0.33305, 0.598209, -3.574547, 3.877431, 3.643368, -2.286634, 2.942693, 3.499481, -2.917279, 0.297544, 2.533189, -0.510924, 3.387766, 2.505952, -2.056204, 2.331407, 3.029473, -2.906972, 3.59942, 3.163953, -2.059014, 2.92342, 2.76732, 3.124795, 2.708921, 2.890764, 3.141765, 2.1925, 2.72882, 2.709315, 2.482039, 1.761258, -2.153076, 1.829028, 2.454445, 0.696275, -0.977215, 0.605232, 0.795027, 3.488993, 4.009338, -0.518214, 0.721372, 1.971834, 0.957257, -1.684043, 4.256195, 3.655876, -3.937128, 4.10641, 3.930965, -4.071433, 4.143265, 3.869408, -4.120688, 4.155626, 3.893301, -4.057815, 4.13646, -0.992055, -2.303033, 2.512795, 0.812812, -0.676282, 2.825267, 1.557574, -1.296439, 2.493374, -2.792717, 3.13276, 3.258294, -0.604324, 0.498743, 2.949292, -0.92263, 1.237214, 3.153387, 3.467575, 3.399886, 3.223252, 1.160611, 2.621032, 3.248828, 1.054762, -1.064755, 2.734764, 0.558635, -0.321819, 0.705995, 1.836311, 2.029102, 2.868221, 0.702666, -0.462663, 4.290722, 0.031995, -1.323955, 1.343756, -2.268011, 1.393244, 2.759451, 2.009328, 2.320418, 0.092638, -2.80825, 3.366407, 2.993553, -2.952382, 3.155476, 3.456283, -3.094951, 3.356714, 3.628302 ], "llr_stats": { "count": 174, "avg_abs": 2.432167, "min_abs": 0.031995, "max_abs": 4.290722, "positive": 128, "negative": 46, "zero": 0 }, "rank_score": 112.728668 }, { "name": "mapped_raw_msb+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001001001000001011010000010010000000001001001010010011010010010010010001000010001000000000001001001001001001001011000001001001011000100000000010010010010010010000000000001001", "hard_bits_sha256_16": "439ee22b55ba04d3", "hard_weight_174": 47, "llr_full_174": [ 3.628302, 3.356714, -3.094951, 3.456283, 3.155476, -2.952382, 2.993553, 3.366407, -2.80825, 0.092638, 2.320418, 2.009328, 2.759451, 1.393244, -2.268011, 1.343756, -1.323955, 0.031995, 4.290722, -0.462663, 0.702666, 2.868221, 2.029102, 1.836311, 0.705995, -0.321819, 0.558635, 2.734764, -1.064755, 1.054762, 3.248828, 2.621032, 1.160611, 3.223252, 3.399886, 3.467575, 3.153387, 1.237214, -0.92263, 2.949292, 0.498743, -0.604324, 3.258294, 3.13276, -2.792717, 2.493374, -1.296439, 1.557574, 2.825267, -0.676282, 0.812812, 2.512795, -2.303033, -0.992055, 4.13646, -4.057815, 3.893301, 4.155626, -4.120688, 3.869408, 4.143265, -4.071433, 3.930965, 4.10641, -3.937128, 3.655876, 4.256195, -1.684043, 0.957257, 1.971834, 0.721372, -0.518214, 4.009338, 3.488993, 0.795027, 0.605232, -0.977215, 0.696275, 2.454445, 1.829028, -2.153076, 1.761258, 2.482039, 2.709315, 2.72882, 2.1925, 3.141765, 2.890764, 2.708921, 3.124795, 2.76732, 2.92342, -2.059014, 3.163953, 3.59942, -2.906972, 3.029473, 2.331407, -2.056204, 2.505952, 3.387766, -0.510924, 2.533189, 0.297544, -2.917279, 3.499481, 2.942693, -2.286634, 3.643368, 3.877431, -3.574547, 0.598209, -0.33305, -0.392259, 2.057058, 2.670015, 2.056989, 3.579572, 3.663644, -1.843185, 3.662128, 4.026157, -0.691594, 1.567453, 2.478784, -1.328064, 0.756489, -0.432071, -1.846512, 2.418696, 2.512708, 0.148531, -1.151233, 1.486092, 1.345744, 3.059479, 3.503352, 2.88596, 2.915554, 3.889731, 0.312531, 4.285185, -0.170762, 0.12106, 4.143654, -3.94365, 3.941346, 4.13227, -3.614977, 3.614272, 4.071071, -3.719377, 3.696102, 4.083577, -2.723447, 2.480678, 3.762022, -3.485521, 1.247575, 3.326178, 2.580837, 2.629132, 3.842009, 2.931608, 2.102243, 2.7902, 2.770738, 2.603538, 2.095254, 1.820774, -1.103242, 4.003756, 2.591909, -1.280396 ], "llr_stats": { "count": 174, "avg_abs": 2.432167, "min_abs": 0.031995, "max_abs": 4.290722, "positive": 128, "negative": 46, "zero": 0 }, "rank_score": 109.728668 }, { "name": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000010001100111000101000110000000110000000010001011100000000000000000000010100000101000000", "hard_bits_sha256_16": "834d8aa480948ba5", "hard_weight_174": 47, "llr_full_174": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027, 2.629132, -0.462663, 2.942693, 4.10641, 4.071071, -0.604324, -1.846512, 2.72882, 4.003756, -2.952382, -2.059014, -0.676282, 3.503352, 2.734764, 2.057058, -0.518214, 1.247575, -1.323955, 0.297544, 4.143265, 4.13227, -0.92263, -1.328064, 1.761258, 2.095254, 2.320418, 2.331407, 4.13646, 4.285185, 1.160611, -1.843185, -0.977215, 2.931608, 2.868221, 3.643368, 3.655876, 3.696102, 3.13276, 2.512708, 3.141765, -1.280396, 3.356714, 2.708921, 2.493374, -1.151233, 1.836311, -3.574547, -1.684043, -2.723447, 2.759451, 2.505952, 3.893301, 0.12106, 3.399886, 4.026157, 2.454445, 2.7902, 3.366407, 3.59942, 2.512795, 2.915554, 1.054762, 2.056989, 3.488993, 2.580837, 4.290722, 3.499481, 3.930965, 3.614272, 0.498743, -0.432071, 2.709315, -1.103242, 3.155476, 2.92342, 2.825267, 3.059479, 0.558635, -0.392259, 0.721372, -3.485521, 1.343756, 2.533189, 3.869408, 3.941346, 1.237214, 2.478784 ], "llr_stats": { "count": 174, "avg_abs": 2.432167, "min_abs": 0.031995, "max_abs": 4.290722, "positive": 128, "negative": 46, "zero": 0 }, "rank_score": 109.728668 }, { "name": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "011000101011000010000001000001010001100101001000010000000001001011000100000001101100000000000110110001001000010000100010000010010110010001000000000100000001000010110000000101", "hard_bits_sha256_16": "545433a86bd6d4a7", "hard_weight_174": 47, "llr_full_174": [ 3.628302, -1.846512, -3.937128, 1.160611, 2.580837, 3.029473, -1.323955, 4.143654, -2.153076, 2.825267, -0.33305, -2.80825, 3.503352, 4.009338, 0.498743, 2.095254, -2.917279, 0.705995, 3.696102, 2.708921, 3.893301, 3.662128, 3.155476, -1.151233, 0.957257, 3.153387, 2.102243, 3.387766, 0.702666, -3.614977, 2.72882, -2.303033, 2.056989, 2.759451, 0.312531, -0.977215, -2.792717, 2.591909, 3.643368, -1.064755, 3.762022, -2.059014, 4.143265, 2.478784, -3.094951, 2.512708, 4.256195, 3.399886, 3.842009, -2.056204, 4.290722, 3.941346, 2.482039, 0.812812, 2.057058, 2.320418, 2.915554, 0.795027, 3.258294, -1.103242, 2.942693, 0.558635, -2.723447, 2.76732, -4.120688, -0.691594, 2.993553, 1.345744, 0.721372, -0.92263, 2.770738, 2.533189, 2.029102, 4.071071, 3.141765, 4.13646, 3.663644, -2.268011, -0.170762, 2.454445, -1.296439, -3.574547, 3.248828, 1.247575, 3.59942, 3.930965, 0.756489, 3.356714, 2.418696, 3.655876, 3.223252, 2.629132, 2.331407, 0.031995, -3.94365, 1.761258, -0.676282, -0.392259, 0.092638, 2.88596, 3.488993, -0.604324, 1.820774, 3.499481, -0.321819, 4.083577, 3.124795, 4.155626, 4.026157, -2.952382, 1.486092, 1.971834, 1.237214, 2.7902, -0.510924, 2.868221, 3.614272, 2.1925, -0.992055, 3.579572, 1.393244, 4.285185, 0.696275, 2.493374, -1.280396, 3.877431, 1.054762, -3.485521, 3.163953, -4.071433, -1.328064, 3.456283, 0.148531, -1.684043, 3.467575, 2.931608, 2.505952, -0.462663, 4.13227, 2.709315, 2.512795, 2.670015, 2.009328, 3.889731, 0.605232, 3.13276, 4.003756, -2.286634, 2.734764, 2.480678, 2.92342, 3.869408, 1.567453, 3.366407, 3.059479, -0.518214, 2.949292, 2.603538, 0.297544, 1.836311, -3.719377, 2.890764, -4.057815, -1.843185, 1.343756, 0.12106, 1.829028, 1.557574, 0.598209, 2.621032, 3.326178, -2.906972, 4.10641, -0.432071 ], "llr_stats": { "count": 174, "avg_abs": 2.432167, "min_abs": 0.031995, "max_abs": 4.290722, "positive": 128, "negative": 46, "zero": 0 }, "rank_score": 109.728668 }, { "name": "mapped_lsb_within_each_tone+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100100100000100110010000010010000000100100100010010110010010010010010100000010100000000000100100100100100100100110000100100100110000001000000010010010010010010000000000100100", "hard_bits_sha256_16": "323fdd6f47eea998", "hard_weight_174": 47, "llr_full_174": [ -3.094951, 3.356714, 3.628302, -2.952382, 3.155476, 3.456283, -2.80825, 3.366407, 2.993553, 2.009328, 2.320418, 0.092638, -2.268011, 1.393244, 2.759451, 0.031995, -1.323955, 1.343756, 0.702666, -0.462663, 4.290722, 1.836311, 2.029102, 2.868221, 0.558635, -0.321819, 0.705995, 1.054762, -1.064755, 2.734764, 1.160611, 2.621032, 3.248828, 3.467575, 3.399886, 3.223252, -0.92263, 1.237214, 3.153387, -0.604324, 0.498743, 2.949292, -2.792717, 3.13276, 3.258294, 1.557574, -1.296439, 2.493374, 0.812812, -0.676282, 2.825267, -0.992055, -2.303033, 2.512795, 3.893301, -4.057815, 4.13646, 3.869408, -4.120688, 4.155626, 3.930965, -4.071433, 4.143265, 3.655876, -3.937128, 4.10641, 0.957257, -1.684043, 4.256195, -0.518214, 0.721372, 1.971834, 0.795027, 3.488993, 4.009338, 0.696275, -0.977215, 0.605232, -2.153076, 1.829028, 2.454445, 2.709315, 2.482039, 1.761258, 3.141765, 2.1925, 2.72882, 3.124795, 2.708921, 2.890764, -2.059014, 2.92342, 2.76732, -2.906972, 3.59942, 3.163953, -2.056204, 2.331407, 3.029473, -0.510924, 3.387766, 2.505952, -2.917279, 0.297544, 2.533189, -2.286634, 2.942693, 3.499481, -3.574547, 3.877431, 3.643368, -0.392259, -0.33305, 0.598209, 2.056989, 2.670015, 2.057058, -1.843185, 3.663644, 3.579572, -0.691594, 4.026157, 3.662128, -1.328064, 2.478784, 1.567453, -1.846512, -0.432071, 0.756489, 0.148531, 2.512708, 2.418696, 1.345744, 1.486092, -1.151233, 2.88596, 3.503352, 3.059479, 0.312531, 3.889731, 2.915554, 0.12106, -0.170762, 4.285185, 3.941346, -3.94365, 4.143654, 3.614272, -3.614977, 4.13227, 3.696102, -3.719377, 4.071071, 2.480678, -2.723447, 4.083577, 1.247575, -3.485521, 3.762022, 2.629132, 2.580837, 3.326178, 2.102243, 2.931608, 3.842009, 2.603538, 2.770738, 2.7902, -1.103242, 1.820774, 2.095254, -1.280396, 2.591909, 4.003756 ], "llr_stats": { "count": 174, "avg_abs": 2.432167, "min_abs": 0.031995, "max_abs": 4.290722, "positive": 128, "negative": 46, "zero": 0 }, "rank_score": 109.728668 }, { "name": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100000000011010011001000001111001101111000111100010000000011100000100100000000000010010010000001001000001000000100000010010000000000001111000010001000000100010000000001110000", "hard_bits_sha256_16": "dea0ba8d01ae0843", "hard_weight_174": 47, "llr_full_174": [ -3.094951, 3.124795, 3.258294, 2.418696, 2.029102, 3.877431, 0.957257, 2.480678, 0.092638, 3.029473, -4.057815, -0.170762, 3.467575, -0.691594, 0.605232, 3.842009, -2.80825, -2.906972, 2.825267, 3.059479, -1.064755, 2.670015, 0.795027, 2.629132, 1.343756, 2.533189, -4.071433, -3.614977, -0.604324, -1.846512, 2.482039, 1.820774, -2.952382, -2.059014, 2.493374, -1.151233, -0.321819, -0.33305, -0.518214, 1.247575, 2.759451, 2.505952, -4.120688, -3.94365, -0.92263, -1.328064, 2.454445, 2.7902, 2.009328, -2.056204, 2.512795, 2.915554, 2.621032, 3.663644, 0.696275, 2.102243, 4.290722, 3.499481, -3.937128, -3.719377, -2.792717, 0.148531, 2.1925, 2.591909, 3.628302, 2.890764, -1.296439, 1.486092, 0.558635, -0.392259, 4.256195, 4.083577, 1.393244, 3.387766, 3.869408, 3.941346, 3.223252, 3.662128, 1.829028, 2.770738, 2.993553, 3.163953, -2.303033, 3.889731, 1.160611, -1.843185, 4.009338, 3.326178, -0.462663, 2.942693, 3.655876, 3.696102, 2.949292, 0.756489, 3.141765, -1.280396, 3.456283, 2.76732, -0.676282, 3.503352, 1.054762, 2.056989, 1.971834, 3.762022, -1.323955, 0.297544, 3.930965, 3.614272, 3.153387, 1.567453, 2.709315, -1.103242, 2.320418, 2.331407, 3.893301, 0.12106, 3.248828, 3.579572, -0.977215, 2.931608, 1.836311, -3.574547, 4.10641, 4.071071, 3.13276, 2.512708, 2.72882, 4.003756, 3.356714, 2.708921, 1.557574, 1.345744, 2.868221, 3.643368, -1.684043, -2.723447, -2.268011, -0.510924, 4.13646, 4.285185, 3.399886, 4.026157, -2.153076, 2.603538, 3.366407, 3.59942, -0.992055, 0.312531, 2.734764, 2.057058, 3.488993, 2.580837, 0.702666, -2.286634, 4.143265, 4.13227, 0.498743, -0.432071, 1.761258, 2.095254, 3.155476, 2.92342, 0.812812, 2.88596, 0.705995, 0.598209, 0.721372, -3.485521, 0.031995, -2.917279, 4.155626, 4.143654, 1.237214, 2.478784 ], "llr_stats": { "count": 174, "avg_abs": 2.432167, "min_abs": 0.031995, "max_abs": 4.290722, "positive": 128, "negative": 46, "zero": 0 }, "rank_score": 109.728668 }, { "name": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101001100010000100000100010001010101001100000000000000000010001110110001000000111000001000000010100000011000000100000001000000011101010011001000001000001000100010101000100001", "hard_bits_sha256_16": "349e27b67096eab8", "hard_weight_174": 47, "llr_full_174": [ -3.094951, 0.756489, -3.937128, 3.248828, 2.580837, -2.056204, -1.323955, 3.941346, 2.454445, 0.812812, -0.33305, 2.993553, 3.503352, 0.795027, 0.498743, -1.103242, 2.533189, 0.558635, 4.071071, 2.708921, 4.13646, -0.691594, 3.155476, 1.345744, 4.256195, -0.92263, 3.842009, 3.387766, 4.290722, -3.614977, 3.141765, -2.303033, 2.057058, -2.268011, 2.915554, -0.977215, 3.258294, 2.591909, -3.574547, -1.064755, 1.247575, 2.76732, 3.930965, 2.478784, 3.628302, 2.512708, 0.957257, 3.399886, 2.102243, 3.029473, 0.702666, 4.143654, 2.482039, 2.825267, 2.056989, 2.320418, 0.312531, 4.009338, -2.792717, 2.095254, 2.942693, 0.705995, -2.723447, -2.059014, -4.120688, 3.662128, -2.80825, -1.151233, 0.721372, 3.153387, 2.770738, -2.917279, 2.029102, 3.696102, 2.72882, 3.893301, 3.663644, 2.759451, -0.170762, -2.153076, -1.296439, 3.643368, 1.160611, 3.762022, 3.59942, 4.143265, -1.846512, 3.356714, 0.148531, 4.10641, 3.467575, 3.326178, 2.331407, 1.343756, -3.94365, 2.709315, -0.676282, 0.598209, 2.009328, 3.059479, 3.488993, 2.949292, 1.820774, -2.286634, -0.321819, 2.480678, 2.890764, 3.869408, 4.026157, 3.456283, 1.486092, -0.518214, 1.237214, 2.603538, 2.505952, 1.836311, 4.13227, 2.1925, 2.512795, -1.843185, 1.393244, 0.12106, 0.605232, 1.557574, 4.003756, 3.877431, 2.734764, -3.485521, -2.906972, -4.071433, 1.567453, -2.952382, 2.418696, -1.684043, 3.223252, 2.931608, -0.510924, -0.462663, 3.614272, 1.761258, -0.992055, 2.670015, 0.092638, 3.889731, 0.696275, 3.13276, -1.280396, 3.499481, 1.054762, 4.083577, 2.92342, 4.155626, -1.328064, 3.366407, 2.88596, 1.971834, -0.604324, 2.7902, 0.297544, 2.868221, -3.719377, 3.124795, -4.057815, 3.579572, 0.031995, 4.285185, 1.829028, 2.493374, -0.392259, 2.621032, 2.629132, 3.163953, 3.655876, -0.432071 ], "llr_stats": { "count": 174, "avg_abs": 2.432167, "min_abs": 0.031995, "max_abs": 4.290722, "positive": 128, "negative": 46, "zero": 0 }, "rank_score": 109.728668 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001001001000001010011000011011000000001001001011011010011011011011011001000011001000000000001001001001001001001010000001001001010000110000000011011011011011011000000000001001", "hard_bits_sha256_16": "865ab363037ba1d9", "hard_weight_174": 61, "llr_full_174": [ 3.628302, 3.325065, -2.229179, 3.456283, 3.120498, -2.059145, 2.993553, 3.2906, -1.914754, 0.092638, 0.262679, 1.813371, 2.759451, 1.372261, -0.905685, 1.343756, -0.98912, -0.255959, 4.290722, -0.454009, -0.157843, 2.868221, 1.72081, 1.288837, 0.705995, -0.185441, -0.163978, 2.734764, -0.952278, -0.51262, 3.248828, 2.284758, 1.013473, 3.223252, 2.633053, 2.760251, 3.153387, 1.200815, -0.415798, 2.949292, 0.480505, -0.111981, 3.258294, 3.084893, -1.930911, 2.493374, -1.094725, -0.816778, 2.825267, -0.620249, -0.275293, 2.512795, -2.116897, 0.588567, 4.13646, -3.413279, -3.288096, 4.155626, -3.455356, -3.303262, 4.143265, -3.423289, -3.314474, 4.10641, -3.337142, -3.103506, 4.256195, -1.632425, -0.643498, 1.971834, 0.650558, -0.069397, 4.009338, 3.147819, 0.767278, 0.605232, -0.488561, -0.528188, 2.454445, 1.779962, -1.020771, 1.761258, 1.428071, 1.97193, 2.72882, 1.755297, 1.887799, 2.890764, 2.126458, 2.227032, 2.76732, 2.805751, -1.38824, 3.163953, 3.525301, -2.069843, 3.029473, 2.279215, -1.291884, 2.505952, 2.767246, -0.293205, 2.533189, 0.295265, -0.224774, 3.499481, 2.892671, -1.680453, 3.643368, 3.844399, -2.583046, 0.598209, -0.236705, -0.075872, 2.057058, 1.717116, 1.717069, 3.579572, 3.528189, -1.536177, 3.662128, 3.639601, -0.594486, 1.567453, 2.112191, -0.533296, 0.756489, -0.393428, 0.07478, 2.418696, 2.067485, 0.256113, -1.151233, -0.260929, 1.290164, 3.059479, 2.599375, 2.487336, 2.915554, 2.975841, 0.385663, 4.285185, -0.16829, -0.012473, 4.143654, -3.354562, -3.257719, 4.13227, -3.157813, -2.930332, 4.071071, -3.197318, -3.023845, 4.083577, -2.512179, -1.917046, 3.762022, -3.024747, -1.181313, 3.326178, 2.21763, 1.935056, 3.842009, 2.626818, 1.762995, 2.7902, 2.127563, 2.02893, 2.095254, 1.665469, -0.496414, 4.003756, 2.541268, -1.000146 ], "llr_stats": { "count": 174, "avg_abs": 2.120294, "min_abs": 0.012473, "max_abs": 4.290722, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 108.481176 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001000000111001000101000011100000010110011110010000000001111000010110011000001001110000010001000111000111000110000000110001100010001011100110000000010000011010100001001001100", "hard_bits_sha256_16": "93bb7ec4997bb855", "hard_weight_174": 61, "llr_full_174": [ 3.628302, 2.890764, -1.930911, 0.256113, 1.72081, 3.844399, 4.256195, 4.083577, 1.813371, -1.291884, -3.413279, -0.16829, 3.223252, 3.662128, -0.528188, 1.762995, 2.993553, 3.163953, -0.275293, 2.487336, -0.952278, 1.717116, 4.009338, 3.326178, -0.255959, -0.224774, -3.423289, -3.157813, 2.949292, 0.756489, 1.428071, 1.665469, 3.456283, 2.76732, -0.816778, 1.290164, -0.185441, -0.236705, 1.971834, 3.762022, -0.905685, -0.293205, -3.455356, -3.354562, 3.153387, 1.567453, -1.020771, 2.02893, 0.092638, 3.029473, 0.588567, 0.385663, 2.284758, 3.528189, 0.605232, 3.842009, -0.157843, -1.680453, -3.337142, -3.197318, 3.258294, 2.418696, 1.755297, 2.541268, -2.229179, 2.227032, -1.094725, -0.260929, 0.705995, 0.598209, -0.643498, -1.917046, 1.372261, 2.767246, 4.155626, 4.143654, 2.760251, -0.594486, 1.779962, 2.127563, -1.914754, -2.069843, -2.116897, 2.975841, 3.248828, 3.579572, 0.767278, 1.935056, -0.454009, 2.892671, 4.10641, 4.071071, -0.111981, 0.07478, 2.72882, 4.003756, -2.059145, -1.38824, -0.620249, 2.599375, 2.734764, 2.057058, -0.069397, -1.181313, -0.98912, 0.295265, 4.143265, 4.13227, -0.415798, -0.533296, 1.761258, 2.095254, 0.262679, 2.279215, 4.13646, 4.285185, 1.013473, -1.536177, -0.488561, 2.626818, 2.868221, 3.643368, -3.103506, -3.023845, 3.084893, 2.067485, 1.887799, -1.000146, 3.325065, 2.126458, 2.493374, -1.151233, 1.288837, -2.583046, -1.632425, -2.512179, 2.759451, 2.505952, -3.288096, -0.012473, 2.633053, 3.639601, 2.454445, 2.7902, 3.2906, 3.525301, 2.512795, 2.915554, -0.51262, 1.717069, 3.147819, 2.21763, 4.290722, 3.499481, -3.314474, -2.930332, 0.480505, -0.393428, 1.97193, -0.496414, 3.120498, 2.805751, 2.825267, 3.059479, -0.163978, -0.075872, 0.650558, -3.024747, 1.343756, 2.533189, -3.303262, -3.257719, 1.200815, 2.112191 ], "llr_stats": { "count": 174, "avg_abs": 2.120294, "min_abs": 0.012473, "max_abs": 4.290722, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 108.481176 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001000101011000010101001100011010001100101001000010101000001011011000100000001101101010001000010100001001000011000101000001010110110010001000000000101010001000010110101000101", "hard_bits_sha256_16": "15c23f8764e28631", "hard_weight_174": 61, "llr_full_174": [ 3.628302, 0.07478, -3.337142, 1.013473, 2.21763, 3.029473, -0.98912, 4.143654, -1.020771, 2.825267, -0.236705, -1.914754, 2.599375, 4.009338, 0.480505, 2.095254, -0.224774, 0.705995, -3.023845, 2.126458, -3.288096, 3.662128, 3.120498, -1.151233, -0.643498, 3.153387, 1.762995, 2.767246, -0.157843, -3.157813, 2.72882, -2.116897, 1.717069, 2.759451, 0.385663, -0.488561, -1.930911, 2.541268, 3.643368, -0.952278, 3.762022, -1.38824, 4.143265, 2.112191, -2.229179, 2.067485, 4.256195, 2.633053, 3.842009, -1.291884, 4.290722, -3.257719, 1.428071, -0.275293, 2.057058, 0.262679, 2.915554, 0.767278, 3.258294, -0.496414, 2.892671, -0.163978, -2.512179, 2.76732, -3.455356, -0.594486, 2.993553, 1.290164, 0.650558, -0.415798, 2.127563, 2.533189, 1.72081, 4.071071, 1.887799, 4.13646, 3.528189, -0.905685, -0.16829, 2.454445, -1.094725, -2.583046, 3.248828, -1.181313, 3.525301, -3.314474, 0.756489, 3.325065, 2.418696, -3.103506, 3.223252, 1.935056, 2.279215, -0.255959, -3.354562, 1.761258, -0.620249, -0.075872, 0.092638, 2.487336, 3.147819, -0.111981, 1.665469, 3.499481, -0.185441, 4.083577, 2.227032, 4.155626, 3.639601, -2.059145, -0.260929, 1.971834, 1.200815, 2.7902, -0.293205, 2.868221, -2.930332, 1.755297, 0.588567, 3.579572, 1.372261, 4.285185, -0.528188, 2.493374, -1.000146, 3.844399, -0.51262, -3.024747, 3.163953, -3.423289, -0.533296, 3.456283, 0.256113, -1.632425, 2.760251, 2.626818, 2.505952, -0.454009, 4.13227, 1.97193, 2.512795, 1.717116, 1.813371, 2.975841, 0.605232, 3.084893, 4.003756, -1.680453, 2.734764, -1.917046, 2.805751, -3.303262, 1.567453, 3.2906, 3.059479, -0.069397, 2.949292, 2.02893, 0.295265, 1.288837, -3.197318, 2.890764, -3.413279, -1.536177, 1.343756, -0.012473, 1.779962, -0.816778, 0.598209, 2.284758, 3.326178, -2.069843, 4.10641, -0.393428 ], "llr_stats": { "count": 174, "avg_abs": 2.120294, "min_abs": 0.012473, "max_abs": 4.290722, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 108.481176 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001001001000001010011000011011000000001001001011011010011011011011011001000011001000000000001001001001001001001010000001001001010000110000000011011011011011011000000000001001", "hard_bits_sha256_16": "865ab363037ba1d9", "hard_weight_174": 61, "llr_full_174": [ 3.628302, 2.791094, -2.525721, 3.456283, 2.602808, -2.357858, 2.993553, 2.471283, -2.357814, 0.092638, 0.076048, 1.472762, 2.759451, 1.18165, -1.070106, 1.343756, -0.707767, -0.018546, 4.290722, -0.44973, -0.15375, 2.868221, 1.677405, 1.255658, 0.705995, -0.10828, -0.086929, 2.734764, -0.914412, -0.480008, 3.248828, 2.196125, 0.974389, 3.223252, 2.615855, 2.741051, 3.153387, 1.112234, -0.483617, 2.949292, 0.447328, -0.143564, 3.258294, 2.502086, -2.257874, 2.493374, -1.054794, -0.781374, 2.825267, -0.595697, -0.252483, 2.512795, -1.717345, 0.789782, 4.13646, -3.403494, -3.279384, 4.155626, -3.445112, -3.294368, 4.143265, -3.413828, -3.305922, 4.10641, -3.325365, -3.094003, 4.256195, -1.613076, -0.631723, 1.971834, 0.535019, -0.175753, 4.009338, 3.023102, 0.743295, 0.605232, -0.26775, -0.305691, 2.454445, 1.414173, -1.303311, 1.761258, 1.379178, 1.901636, 2.72882, 1.739244, 1.87015, 2.890764, 2.10626, 2.205169, 2.76732, 2.152551, -1.714275, 3.163953, 2.666175, -2.502767, 3.029473, 1.932265, -1.503575, 2.505952, 2.16226, -0.476206, 2.533189, 0.253256, -0.266628, 3.499481, 2.49127, -1.873996, 3.643368, 3.060961, -3.021998, 0.598209, -0.095938, 0.063928, 2.057058, 1.632955, 1.632911, 3.579572, 2.928292, -1.697135, 3.662128, 3.134979, -0.665479, 1.567453, 1.246898, -1.075131, 0.756489, -0.153976, 0.31201, 2.418696, 1.778641, 0.126195, -1.151233, -0.680672, 0.777546, 3.059479, 2.565251, 2.456278, 2.915554, 2.596389, 0.299812, 4.285185, -0.166101, -0.010299, 4.143654, -3.34582, -3.249726, 4.13227, -3.147826, -2.922202, 4.071071, -3.187108, -3.015126, 4.083577, -2.496121, -1.907045, 3.762022, -2.92181, -1.154974, 3.326178, 2.195186, 1.916993, 3.842009, 2.594592, 1.746647, 2.7902, 2.091112, 1.995124, 2.095254, 1.275203, -0.758164, 4.003756, 2.375189, -1.062439 ], "llr_stats": { "count": 174, "avg_abs": 2.068599, "min_abs": 0.010299, "max_abs": 4.290722, "positive": 112, "negative": 62, "zero": 0 }, "rank_score": 108.274396 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001000000111001000101000011100000010110011110010000000001111000010110011000001001110000010001000111000111000110000000110001100010001011100110000000010000011010100001001001100", "hard_bits_sha256_16": "93bb7ec4997bb855", "hard_weight_174": 61, "llr_full_174": [ 3.628302, 2.890764, -2.257874, 0.126195, 1.677405, 3.060961, 4.256195, 4.083577, 1.472762, -1.503575, -3.403494, -0.166101, 3.223252, 3.662128, -0.305691, 1.746647, 2.993553, 3.163953, -0.252483, 2.456278, -0.914412, 1.632955, 4.009338, 3.326178, -0.018546, -0.266628, -3.413828, -3.147826, 2.949292, 0.756489, 1.379178, 1.275203, 3.456283, 2.76732, -0.781374, 0.777546, -0.10828, -0.095938, 1.971834, 3.762022, -1.070106, -0.476206, -3.445112, -3.34582, 3.153387, 1.567453, -1.303311, 1.995124, 0.092638, 3.029473, 0.789782, 0.299812, 2.196125, 2.928292, 0.605232, 3.842009, -0.15375, -1.873996, -3.325365, -3.187108, 3.258294, 2.418696, 1.739244, 2.375189, -2.525721, 2.205169, -1.054794, -0.680672, 0.705995, 0.598209, -0.631723, -1.907045, 1.18165, 2.16226, 4.155626, 4.143654, 2.741051, -0.665479, 1.414173, 2.091112, -2.357814, -2.502767, -1.717345, 2.596389, 3.248828, 3.579572, 0.743295, 1.916993, -0.44973, 2.49127, 4.10641, 4.071071, -0.143564, 0.31201, 2.72882, 4.003756, -2.357858, -1.714275, -0.595697, 2.565251, 2.734764, 2.057058, -0.175753, -1.154974, -0.707767, 0.253256, 4.143265, 4.13227, -0.483617, -1.075131, 1.761258, 2.095254, 0.076048, 1.932265, 4.13646, 4.285185, 0.974389, -1.697135, -0.26775, 2.594592, 2.868221, 3.643368, -3.094003, -3.015126, 2.502086, 1.778641, 1.87015, -1.062439, 2.791094, 2.10626, 2.493374, -1.151233, 1.255658, -3.021998, -1.613076, -2.496121, 2.759451, 2.505952, -3.279384, -0.010299, 2.615855, 3.134979, 2.454445, 2.7902, 2.471283, 2.666175, 2.512795, 2.915554, -0.480008, 1.632911, 3.023102, 2.195186, 4.290722, 3.499481, -3.305922, -2.922202, 0.447328, -0.153976, 1.901636, -0.758164, 2.602808, 2.152551, 2.825267, 3.059479, -0.086929, 0.063928, 0.535019, -2.92181, 1.343756, 2.533189, -3.294368, -3.249726, 1.112234, 1.246898 ], "llr_stats": { "count": 174, "avg_abs": 2.068599, "min_abs": 0.010299, "max_abs": 4.290722, "positive": 112, "negative": 62, "zero": 0 }, "rank_score": 108.274396 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001000101011000010101001100011010001100101001000010101000001011011000100000001101101010001000010100001001000011000101000001010110110010001000000000101010001000010110101000101", "hard_bits_sha256_16": "15c23f8764e28631", "hard_weight_174": 61, "llr_full_174": [ 3.628302, 0.31201, -3.325365, 0.974389, 2.195186, 3.029473, -0.707767, 4.143654, -1.303311, 2.825267, -0.095938, -2.357814, 2.565251, 4.009338, 0.447328, 2.095254, -0.266628, 0.705995, -3.015126, 2.10626, -3.279384, 3.662128, 2.602808, -1.151233, -0.631723, 3.153387, 1.746647, 2.16226, -0.15375, -3.147826, 2.72882, -1.717345, 1.632911, 2.759451, 0.299812, -0.26775, -2.257874, 2.375189, 3.643368, -0.914412, 3.762022, -1.714275, 4.143265, 1.246898, -2.525721, 1.778641, 4.256195, 2.615855, 3.842009, -1.503575, 4.290722, -3.249726, 1.379178, -0.252483, 2.057058, 0.076048, 2.915554, 0.743295, 3.258294, -0.758164, 2.49127, -0.086929, -2.496121, 2.76732, -3.445112, -0.665479, 2.993553, 0.777546, 0.535019, -0.483617, 2.091112, 2.533189, 1.677405, 4.071071, 1.87015, 4.13646, 2.928292, -1.070106, -0.166101, 2.454445, -1.054794, -3.021998, 3.248828, -1.154974, 2.666175, -3.305922, 0.756489, 2.791094, 2.418696, -3.094003, 3.223252, 1.916993, 1.932265, -0.018546, -3.34582, 1.761258, -0.595697, 0.063928, 0.092638, 2.456278, 3.023102, -0.143564, 1.275203, 3.499481, -0.10828, 4.083577, 2.205169, 4.155626, 3.134979, -2.357858, -0.680672, 1.971834, 1.112234, 2.7902, -0.476206, 2.868221, -2.922202, 1.739244, 0.789782, 3.579572, 1.18165, 4.285185, -0.305691, 2.493374, -1.062439, 3.060961, -0.480008, -2.92181, 3.163953, -3.413828, -1.075131, 3.456283, 0.126195, -1.613076, 2.741051, 2.594592, 2.505952, -0.44973, 4.13227, 1.901636, 2.512795, 1.632955, 1.472762, 2.596389, 0.605232, 2.502086, 4.003756, -1.873996, 2.734764, -1.907045, 2.152551, -3.294368, 1.567453, 2.471283, 3.059479, -0.175753, 2.949292, 1.995124, 0.253256, 1.255658, -3.187108, 2.890764, -3.403494, -1.697135, 1.343756, -0.010299, 1.414173, -0.781374, 0.598209, 2.196125, 3.326178, -2.502767, 4.10641, -0.153976 ], "llr_stats": { "count": 174, "avg_abs": 2.068599, "min_abs": 0.010299, "max_abs": 4.290722, "positive": 112, "negative": 62, "zero": 0 }, "rank_score": 108.274396 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "110110110000110101011000011011000000110110110011011101011011011011011110000011110000000000110110110110110110110101000110110110101000001000000011011011011011011000000000110110", "hard_bits_sha256_16": "a3bc479011ce4a15", "hard_weight_174": 85, "llr_full_174": [ -3.094951, -2.229179, 3.325065, -2.952382, -2.059145, 3.120498, -2.80825, -1.914754, 3.2906, 2.009328, 1.813371, 0.262679, -2.268011, -0.905685, 1.372261, 0.031995, -0.255959, -0.98912, 0.702666, -0.157843, -0.454009, 1.836311, 1.288837, 1.72081, 0.558635, -0.163978, -0.185441, 1.054762, -0.51262, -0.952278, 1.160611, 1.013473, 2.284758, 3.467575, 2.760251, 2.633053, -0.92263, -0.415798, 1.200815, -0.604324, -0.111981, 0.480505, -2.792717, -1.930911, 3.084893, 1.557574, -0.816778, -1.094725, 0.812812, -0.275293, -0.620249, -0.992055, 0.588567, -2.116897, 3.893301, -3.288096, -3.413279, 3.869408, -3.303262, -3.455356, 3.930965, -3.314474, -3.423289, 3.655876, -3.103506, -3.337142, 0.957257, -0.643498, -1.632425, -0.518214, -0.069397, 0.650558, 0.795027, 0.767278, 3.147819, 0.696275, -0.528188, -0.488561, -2.153076, -1.020771, 1.779962, 2.709315, 1.97193, 1.428071, 3.141765, 1.887799, 1.755297, 3.124795, 2.227032, 2.126458, -2.059014, -1.38824, 2.805751, -2.906972, -2.069843, 3.525301, -2.056204, -1.291884, 2.279215, -0.510924, -0.293205, 2.767246, -2.917279, -0.224774, 0.295265, -2.286634, -1.680453, 2.892671, -3.574547, -2.583046, 3.844399, -0.392259, -0.075872, -0.236705, 2.056989, 1.717069, 1.717116, -1.843185, -1.536177, 3.528189, -0.691594, -0.594486, 3.639601, -1.328064, -0.533296, 2.112191, -1.846512, 0.07478, -0.393428, 0.148531, 0.256113, 2.067485, 1.345744, 1.290164, -0.260929, 2.88596, 2.487336, 2.599375, 0.312531, 0.385663, 2.975841, 0.12106, -0.012473, -0.16829, 3.941346, -3.257719, -3.354562, 3.614272, -2.930332, -3.157813, 3.696102, -3.023845, -3.197318, 2.480678, -1.917046, -2.512179, 1.247575, -1.181313, -3.024747, 2.629132, 1.935056, 2.21763, 2.102243, 1.762995, 2.626818, 2.603538, 2.02893, 2.127563, -1.103242, -0.496414, 1.665469, -1.280396, -1.000146, 2.541268 ], "llr_stats": { "count": 174, "avg_abs": 1.797615, "min_abs": 0.012473, "max_abs": 3.941346, "positive": 88, "negative": 86, "zero": 0 }, "rank_score": 107.19046 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100001000011011011101000101111011111101000111100011001001011100100100111110000100000010011000101001000010100000101000010011110001000001111110110111010000111100011001111111111", "hard_bits_sha256_16": "a88e45ccc258bd8e", "hard_weight_174": 85, "llr_full_174": [ -3.094951, 3.124795, 3.084893, 2.067485, 1.288837, -2.583046, 0.957257, 2.480678, 0.262679, 2.279215, -3.288096, -0.012473, 3.467575, -0.691594, -0.488561, 2.626818, -2.80825, -2.906972, -0.620249, 2.599375, -0.51262, 1.717069, 0.795027, 2.629132, -0.98912, 0.295265, -3.314474, -2.930332, -0.604324, -1.846512, 1.97193, -0.496414, -2.952382, -2.059014, -1.094725, -0.260929, -0.163978, -0.075872, -0.518214, 1.247575, 1.372261, 2.767246, -3.303262, -3.257719, -0.92263, -1.328064, 1.779962, 2.127563, 2.009328, -2.056204, -2.116897, 2.975841, 1.013473, -1.536177, 0.696275, 2.102243, -0.454009, 2.892671, -3.103506, -3.023845, -2.792717, 0.148531, 1.887799, -1.000146, 3.325065, 2.126458, -0.816778, 1.290164, 0.558635, -0.392259, -1.632425, -2.512179, -0.905685, -0.293205, 3.869408, 3.941346, 2.633053, 3.639601, -1.020771, 2.02893, 3.2906, 3.525301, 0.588567, 0.385663, 1.160611, -1.843185, 3.147819, 2.21763, -0.157843, -1.680453, 3.655876, 3.696102, 0.480505, -0.393428, 3.141765, -1.280396, 3.120498, 2.805751, -0.275293, 2.487336, 1.054762, 2.056989, 0.650558, -3.024747, -0.255959, -0.224774, 3.930965, 3.614272, 1.200815, 2.112191, 2.709315, -1.103242, 1.813371, -1.291884, 3.893301, 0.12106, 2.284758, 3.528189, -0.528188, 1.762995, 1.836311, -3.574547, -3.337142, -3.197318, -1.930911, 0.256113, 1.755297, 2.541268, -2.229179, 2.227032, 1.557574, 1.345744, 1.72081, 3.844399, -0.643498, -1.917046, -2.268011, -0.510924, -3.413279, -0.16829, 2.760251, -0.594486, -2.153076, 2.603538, -1.914754, -2.069843, -0.992055, 0.312531, -0.952278, 1.717116, 0.767278, 1.935056, 0.702666, -2.286634, -3.423289, -3.157813, -0.111981, 0.07478, 1.428071, 1.665469, -2.059145, -1.38824, 0.812812, 2.88596, -0.185441, -0.236705, -0.069397, -1.181313, 0.031995, -2.917279, -3.455356, -3.354562, -0.415798, -0.533296 ], "llr_stats": { "count": 174, "avg_abs": 1.797615, "min_abs": 0.012473, "max_abs": 3.941346, "positive": 88, "negative": 86, "zero": 0 }, "rank_score": 107.19046 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "111001000000001100101110110111000101011100010000000101000010111110111001000010111001111101001110110000111000100110001011101001111101010011001000011001111100101010101111100000", "hard_bits_sha256_16": "4802fb194dc96e98", "hard_weight_174": 85, "llr_full_174": [ -3.094951, -0.393428, -3.103506, 2.284758, 1.935056, -2.056204, -0.255959, 3.941346, 1.779962, 0.812812, -0.075872, 3.2906, 2.487336, 0.795027, -0.111981, -1.103242, 0.295265, 0.558635, -3.197318, 2.227032, -3.413279, -0.691594, -2.059145, 1.345744, -1.632425, -0.92263, 2.626818, -0.293205, -0.454009, -2.930332, 3.141765, 0.588567, 1.717116, -2.268011, 2.975841, -0.528188, 3.084893, -1.000146, -3.574547, -0.51262, 1.247575, 2.805751, 3.930965, -0.533296, 3.325065, 0.256113, 0.957257, 2.760251, 2.102243, 2.279215, 0.702666, -3.354562, 1.97193, -0.620249, 2.056989, 1.813371, 0.312531, 3.147819, -2.792717, 1.665469, -1.680453, -0.185441, -1.917046, -2.059014, -3.303262, 3.639601, -2.80825, -0.260929, -0.069397, 1.200815, 2.02893, -2.917279, 1.288837, 3.696102, 1.755297, 3.893301, -1.536177, 1.372261, -0.012473, -2.153076, -0.816778, 3.844399, 1.160611, -3.024747, -2.069843, -3.423289, -1.846512, -2.229179, 0.148531, -3.337142, 3.467575, 2.21763, -1.291884, -0.98912, -3.257719, 2.709315, -0.275293, -0.236705, 2.009328, 2.599375, 0.767278, 0.480505, -0.496414, -2.286634, -0.163978, 2.480678, 2.126458, 3.869408, -0.594486, 3.120498, 1.290164, -0.518214, -0.415798, 2.603538, 2.767246, 1.836311, -3.157813, 1.887799, -2.116897, -1.843185, -0.905685, 0.12106, -0.488561, 1.557574, 2.541268, -2.583046, -0.952278, -1.181313, -2.906972, -3.314474, 2.112191, -2.952382, 2.067485, -0.643498, 2.633053, 1.762995, -0.510924, -0.157843, 3.614272, 1.428071, -0.992055, 1.717069, 0.262679, 0.385663, 0.696275, -1.930911, -1.280396, 2.892671, 1.054762, -2.512179, -1.38824, -3.455356, -1.328064, -1.914754, 2.88596, 0.650558, -0.604324, 2.127563, -0.224774, 1.72081, -3.023845, 3.124795, -3.288096, 3.528189, 0.031995, -0.16829, -1.020771, -1.094725, -0.392259, 1.013473, 2.629132, 3.525301, 3.655876, 0.07478 ], "llr_stats": { "count": 174, "avg_abs": 1.797615, "min_abs": 0.012473, "max_abs": 3.941346, "positive": 88, "negative": 86, "zero": 0 }, "rank_score": 107.19046 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "110110110000110101011000011011000000110110110011011101011011011011011110000011110000000000110110110110110110110101000110110110101000001000000011011011011011011000000000110110", "hard_bits_sha256_16": "a3bc479011ce4a15", "hard_weight_174": 85, "llr_full_174": [ -3.094951, -2.525721, 2.791094, -2.952382, -2.357858, 2.602808, -2.80825, -2.357814, 2.471283, 2.009328, 1.472762, 0.076048, -2.268011, -1.070106, 1.18165, 0.031995, -0.018546, -0.707767, 0.702666, -0.15375, -0.44973, 1.836311, 1.255658, 1.677405, 0.558635, -0.086929, -0.10828, 1.054762, -0.480008, -0.914412, 1.160611, 0.974389, 2.196125, 3.467575, 2.741051, 2.615855, -0.92263, -0.483617, 1.112234, -0.604324, -0.143564, 0.447328, -2.792717, -2.257874, 2.502086, 1.557574, -0.781374, -1.054794, 0.812812, -0.252483, -0.595697, -0.992055, 0.789782, -1.717345, 3.893301, -3.279384, -3.403494, 3.869408, -3.294368, -3.445112, 3.930965, -3.305922, -3.413828, 3.655876, -3.094003, -3.325365, 0.957257, -0.631723, -1.613076, -0.518214, -0.175753, 0.535019, 0.795027, 0.743295, 3.023102, 0.696275, -0.305691, -0.26775, -2.153076, -1.303311, 1.414173, 2.709315, 1.901636, 1.379178, 3.141765, 1.87015, 1.739244, 3.124795, 2.205169, 2.10626, -2.059014, -1.714275, 2.152551, -2.906972, -2.502767, 2.666175, -2.056204, -1.503575, 1.932265, -0.510924, -0.476206, 2.16226, -2.917279, -0.266628, 0.253256, -2.286634, -1.873996, 2.49127, -3.574547, -3.021998, 3.060961, -0.392259, 0.063928, -0.095938, 2.056989, 1.632911, 1.632955, -1.843185, -1.697135, 2.928292, -0.691594, -0.665479, 3.134979, -1.328064, -1.075131, 1.246898, -1.846512, 0.31201, -0.153976, 0.148531, 0.126195, 1.778641, 1.345744, 0.777546, -0.680672, 2.88596, 2.456278, 2.565251, 0.312531, 0.299812, 2.596389, 0.12106, -0.010299, -0.166101, 3.941346, -3.249726, -3.34582, 3.614272, -2.922202, -3.147826, 3.696102, -3.015126, -3.187108, 2.480678, -1.907045, -2.496121, 1.247575, -1.154974, -2.92181, 2.629132, 1.916993, 2.195186, 2.102243, 1.746647, 2.594592, 2.603538, 1.995124, 2.091112, -1.103242, -0.758164, 1.275203, -1.280396, -1.062439, 2.375189 ], "llr_stats": { "count": 174, "avg_abs": 1.74592, "min_abs": 0.010299, "max_abs": 3.941346, "positive": 89, "negative": 85, "zero": 0 }, "rank_score": 106.98368 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100001000011011011101000101111011111101000111100011001001011100100100111110000100000010011000101001000010100000101000010011110001000001111110110111010000111100011001111111111", "hard_bits_sha256_16": "a88e45ccc258bd8e", "hard_weight_174": 85, "llr_full_174": [ -3.094951, 3.124795, 2.502086, 1.778641, 1.255658, -3.021998, 0.957257, 2.480678, 0.076048, 1.932265, -3.279384, -0.010299, 3.467575, -0.691594, -0.26775, 2.594592, -2.80825, -2.906972, -0.595697, 2.565251, -0.480008, 1.632911, 0.795027, 2.629132, -0.707767, 0.253256, -3.305922, -2.922202, -0.604324, -1.846512, 1.901636, -0.758164, -2.952382, -2.059014, -1.054794, -0.680672, -0.086929, 0.063928, -0.518214, 1.247575, 1.18165, 2.16226, -3.294368, -3.249726, -0.92263, -1.328064, 1.414173, 2.091112, 2.009328, -2.056204, -1.717345, 2.596389, 0.974389, -1.697135, 0.696275, 2.102243, -0.44973, 2.49127, -3.094003, -3.015126, -2.792717, 0.148531, 1.87015, -1.062439, 2.791094, 2.10626, -0.781374, 0.777546, 0.558635, -0.392259, -1.613076, -2.496121, -1.070106, -0.476206, 3.869408, 3.941346, 2.615855, 3.134979, -1.303311, 1.995124, 2.471283, 2.666175, 0.789782, 0.299812, 1.160611, -1.843185, 3.023102, 2.195186, -0.15375, -1.873996, 3.655876, 3.696102, 0.447328, -0.153976, 3.141765, -1.280396, 2.602808, 2.152551, -0.252483, 2.456278, 1.054762, 2.056989, 0.535019, -2.92181, -0.018546, -0.266628, 3.930965, 3.614272, 1.112234, 1.246898, 2.709315, -1.103242, 1.472762, -1.503575, 3.893301, 0.12106, 2.196125, 2.928292, -0.305691, 1.746647, 1.836311, -3.574547, -3.325365, -3.187108, -2.257874, 0.126195, 1.739244, 2.375189, -2.525721, 2.205169, 1.557574, 1.345744, 1.677405, 3.060961, -0.631723, -1.907045, -2.268011, -0.510924, -3.403494, -0.166101, 2.741051, -0.665479, -2.153076, 2.603538, -2.357814, -2.502767, -0.992055, 0.312531, -0.914412, 1.632955, 0.743295, 1.916993, 0.702666, -2.286634, -3.413828, -3.147826, -0.143564, 0.31201, 1.379178, 1.275203, -2.357858, -1.714275, 0.812812, 2.88596, -0.10828, -0.095938, -0.175753, -1.154974, 0.031995, -2.917279, -3.445112, -3.34582, -0.483617, -1.075131 ], "llr_stats": { "count": 174, "avg_abs": 1.74592, "min_abs": 0.010299, "max_abs": 3.941346, "positive": 89, "negative": 85, "zero": 0 }, "rank_score": 106.98368 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "111001000000001100101110110111000101011100010000000101000010111110111001000010111001111101001110110000111000100110001011101001111101010011001000011001111100101010101111100000", "hard_bits_sha256_16": "4802fb194dc96e98", "hard_weight_174": 85, "llr_full_174": [ -3.094951, -0.153976, -3.094003, 2.196125, 1.916993, -2.056204, -0.018546, 3.941346, 1.414173, 0.812812, 0.063928, 2.471283, 2.456278, 0.795027, -0.143564, -1.103242, 0.253256, 0.558635, -3.187108, 2.205169, -3.403494, -0.691594, -2.357858, 1.345744, -1.613076, -0.92263, 2.594592, -0.476206, -0.44973, -2.922202, 3.141765, 0.789782, 1.632955, -2.268011, 2.596389, -0.305691, 2.502086, -1.062439, -3.574547, -0.480008, 1.247575, 2.152551, 3.930965, -1.075131, 2.791094, 0.126195, 0.957257, 2.741051, 2.102243, 1.932265, 0.702666, -3.34582, 1.901636, -0.595697, 2.056989, 1.472762, 0.312531, 3.023102, -2.792717, 1.275203, -1.873996, -0.10828, -1.907045, -2.059014, -3.294368, 3.134979, -2.80825, -0.680672, -0.175753, 1.112234, 1.995124, -2.917279, 1.255658, 3.696102, 1.739244, 3.893301, -1.697135, 1.18165, -0.010299, -2.153076, -0.781374, 3.060961, 1.160611, -2.92181, -2.502767, -3.413828, -1.846512, -2.525721, 0.148531, -3.325365, 3.467575, 2.195186, -1.503575, -0.707767, -3.249726, 2.709315, -0.252483, -0.095938, 2.009328, 2.565251, 0.743295, 0.447328, -0.758164, -2.286634, -0.086929, 2.480678, 2.10626, 3.869408, -0.665479, 2.602808, 0.777546, -0.518214, -0.483617, 2.603538, 2.16226, 1.836311, -3.147826, 1.87015, -1.717345, -1.843185, -1.070106, 0.12106, -0.26775, 1.557574, 2.375189, -3.021998, -0.914412, -1.154974, -2.906972, -3.305922, 1.246898, -2.952382, 1.778641, -0.631723, 2.615855, 1.746647, -0.510924, -0.15375, 3.614272, 1.379178, -0.992055, 1.632911, 0.076048, 0.299812, 0.696275, -2.257874, -1.280396, 2.49127, 1.054762, -2.496121, -1.714275, -3.445112, -1.328064, -2.357814, 2.88596, 0.535019, -0.604324, 2.091112, -0.266628, 1.677405, -3.015126, 3.124795, -3.279384, 2.928292, 0.031995, -0.166101, -1.303311, -1.054794, -0.392259, 0.974389, 2.629132, 2.666175, 3.655876, 0.31201 ], "llr_stats": { "count": 174, "avg_abs": 1.74592, "min_abs": 0.010299, "max_abs": 3.941346, "positive": 89, "negative": 85, "zero": 0 }, "rank_score": 106.98368 }, { "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": "101001111011011111101001101001010000100011110100110110010100101010101110100011111111100101101101101001011000000111010110011111101000111001101000001110101111111000010101010110", "hard_bits_sha256_16": "e154168e126e93c1", "hard_weight_174": 96, "llr_full_174": [ 3.628302, 3.356714, -3.094951, 3.456283, 3.155476, -2.952382, 2.993553, 3.366407, -2.80825, 0.092638, 2.320418, 2.009328, 2.759451, 1.393244, -2.268011, 1.343756, -1.323955, 0.031995, 4.290722, -0.462663, 0.702666, 2.868221, 2.029102, 1.836311, 0.705995, -0.321819, 0.558635, 2.734764, -1.064755, 1.054762, 3.248828, 2.621032, 1.160611, 3.223252, 3.399886, 3.467575, 3.153387, 1.237214, -0.92263, 2.949292, 0.498743, -0.604324, 3.258294, 3.13276, -2.792717, 2.493374, -1.296439, 1.557574, 2.825267, -0.676282, 0.812812, 2.512795, -2.303033, -0.992055, 4.13646, -4.057815, 3.893301, 4.155626, -4.120688, 3.869408, 4.143265, -4.071433, 3.930965, 4.10641, -3.937128, 3.655876, 4.256195, -1.684043, 0.957257, 1.971834, 0.721372, -0.518214, 4.009338, 3.488993, 0.795027, 0.605232, -0.977215, 0.696275, 2.454445, 1.829028, -2.153076, 1.761258, 2.482039, 2.709315, 2.72882, 2.1925, 3.141765, 2.890764, 2.708921, 3.124795, 2.76732, 2.92342, -2.059014, 3.163953, 3.59942, -2.906972, 3.029473, 2.331407, -2.056204, 2.505952, 3.387766, -0.510924, 2.533189, 0.297544, -2.917279, 3.499481, 2.942693, -2.286634, 3.643368, 3.877431, -3.574547, 0.598209, -0.33305, -0.392259, 2.057058, 2.670015, 2.056989, 3.579572, 3.663644, -1.843185, 3.662128, 4.026157, -0.691594, 1.567453, 2.478784, -1.328064, 0.756489, -0.432071, -1.846512, 2.418696, 2.512708, 0.148531, -1.151233, 1.486092, 1.345744, 3.059479, 3.503352, 2.88596, 2.915554, 3.889731, 0.312531, 4.285185, -0.170762, 0.12106, 4.143654, -3.94365, 3.941346, 4.13227, -3.614977, 3.614272, 4.071071, -3.719377, 3.696102, 4.083577, -2.723447, 2.480678, 3.762022, -3.485521, 1.247575, 3.326178, 2.580837, 2.629132, 3.842009, 2.931608, 2.102243, 2.7902, 2.770738, 2.603538, 2.095254, 1.820774, -1.103242, 4.003756, 2.591909, -1.280396 ], "llr_stats": { "count": 174, "avg_abs": 2.432167, "min_abs": 0.031995, "max_abs": 4.290722, "positive": 128, "negative": 46, "zero": 0 }, "rank_score": 101.728668 } ], "outputs": { "candidate_json": "/decoders/js8_decoder/runtime/step85_fec_candidates_window0/js8_step85_window_00_0024_0072_fec_candidate_step17.json", "selected_bits_file": "/decoders/js8_decoder/runtime/step85_fec_candidates_window0/js8_step85_window_00_0024_0072_fec_candidate_step17.bits" }, "decodes": [], "warnings": [ "Step 54 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 54 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 54 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 54 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation.", "Step 54 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] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window0_post_ldpc_info87_runtime_export_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "tool": "webftr-js8-post-ldpc-info87-runtime-export-probe", "tool_version": "step63-source-exact-interleaver-whitening-index-extract", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "input_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0024_0072.wav", "log_dir": "/decoders/js8_decoder/logs", "output_dir": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window0", "candidate_json": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window0/js8_step85_window_00_0024_0072_fec_candidate_step17.json", "matrix_error": null, "soft_error": null, "matrix_ok": true, "soft_ok": true, "runtime_info87_rows_count": 48, "zero_distance_candidate_count": 0, "best_distance": 3, "best_runtime_info87_row": { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_0", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_lsb_within_each_tone+no_interleaver" }, "runtime_info87_rows_preview": [ { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_0", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_lsb_within_each_tone+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_1", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+no_interleaver", "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_2", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_raw_msb+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_3", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "raw_msb_symbol_order" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_4", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ -3.094951, 3.124795, 3.258294, 2.418696, 2.029102, 3.877431, 0.957257, 2.480678, 0.092638, 3.029473, -4.057815, -0.170762, 3.467575, -0.691594, 0.605232, 3.842009, -2.80825, -2.906972, 2.825267, 3.059479, -1.064755, 2.670015, 0.795027, 2.629132, 1.343756, 2.533189, -4.071433, -3.614977, -0.604324, -1.846512, 2.482039, 1.820774, -2.952382, -2.059014, 2.493374, -1.151233, -0.321819, -0.33305, -0.518214, 1.247575, 2.759451, 2.505952, -4.120688, -3.94365, -0.92263, -1.328064, 2.454445, 2.7902, 2.009328, -2.056204, 2.512795, 2.915554, 2.621032, 3.663644, 0.696275, 2.102243, 4.290722, 3.499481, -3.937128, -3.719377, -2.792717, 0.148531, 2.1925, 2.591909, 3.628302, 2.890764, -1.296439, 1.486092, 0.558635, -0.392259, 4.256195, 4.083577, 1.393244, 3.387766, 3.869408, 3.941346, 3.223252, 3.662128, 1.829028, 2.770738, 2.993553, 3.163953, -2.303033, 3.889731, 1.160611, -1.843185, 4.009338 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 8, 61, 11, 36, 37, 69, 38, 68, 28, 14, 13, 54, 22, 44, 6, 20, 35, 84 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "lsb_within_each_tone" }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_0", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_1", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_2", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_3", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_4", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ -3.094951, 3.124795, 3.258294, 2.418696, 2.029102, 3.877431, 0.957257, 2.480678, 0.092638, 3.029473, -4.057815, -0.170762, 3.467575, -0.691594, 0.605232, 3.842009, -2.80825, -2.906972, 2.825267, 3.059479, -1.064755, 2.670015, 0.795027, 2.629132, 1.343756, 2.533189, -4.071433, -3.614977, -0.604324, -1.846512, 2.482039, 1.820774, -2.952382, -2.059014, 2.493374, -1.151233, -0.321819, -0.33305, -0.518214, 1.247575, 2.759451, 2.505952, -4.120688, -3.94365, -0.92263, -1.328064, 2.454445, 2.7902, 2.009328, -2.056204, 2.512795, 2.915554, 2.621032, 3.663644, 0.696275, 2.102243, 4.290722, 3.499481, -3.937128, -3.719377, -2.792717, 0.148531, 2.1925, 2.591909, 3.628302, 2.890764, -1.296439, 1.486092, 0.558635, -0.392259, 4.256195, 4.083577, 1.393244, 3.387766, 3.869408, 3.941346, 3.223252, 3.662128, 1.829028, 2.770738, 2.993553, 3.163953, -2.303033, 3.889731, 1.160611, -1.843185, 4.009338 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 8, 61, 11, 36, 37, 69, 38, 68, 28, 14, 13, 54, 22, 44, 6, 20, 35, 84 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_0", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_1", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_2", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_3", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_0", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "raw_msb_symbol_order" }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_1", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_lsb_within_each_tone+no_interleaver" }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_2", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "raw_msb_symbol_order" }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_3", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000", "info87_llr": [ 3.628302, 2.890764, -2.792717, 0.148531, 2.029102, 3.877431, 4.256195, 4.083577, 2.009328, -2.056204, -4.057815, -0.170762, 3.223252, 3.662128, 0.696275, 2.102243, 2.993553, 3.163953, 0.812812, 2.88596, -1.064755, 2.670015, 4.009338, 3.326178, 0.031995, -2.917279, -4.071433, -3.614977, 2.949292, 0.756489, 2.482039, 1.820774, 3.456283, 2.76732, 1.557574, 1.345744, -0.321819, -0.33305, 1.971834, 3.762022, -2.268011, -0.510924, -4.120688, -3.94365, 3.153387, 1.567453, -2.153076, 2.603538, 0.092638, 3.029473, -0.992055, 0.312531, 2.621032, 3.663644, 0.605232, 3.842009, 0.702666, -2.286634, -3.937128, -3.719377, 3.258294, 2.418696, 2.1925, 2.591909, -3.094951, 3.124795, -1.296439, 1.486092, 0.705995, 0.598209, 0.957257, 2.480678, 1.393244, 3.387766, 4.155626, 4.143654, 3.467575, -0.691594, 1.829028, 2.770738, -2.80825, -2.906972, -2.303033, 3.889731, 3.248828, 3.579572, 0.795027 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 24, 48, 3, 11, 51, 36, 37, 41, 69, 54, 77, 14, 56, 68, 29, 86, 18, 70 ], "message174_crc12": { "ok": true, "distance": 3, "crc_match": false, "received_crc12": 624, "computed_crc12": 2288, "message_preview_12chars": "8708y0po872W", "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_lsb_within_each_tone+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_16", "info87_bits": [ 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 ], "info87_bitstring": "010110011101111011111011101110101010110011111111111111111101110001001110111111000111110", "info87_llr": [ 3.094951, -0.756489, 3.937128, -3.248828, -2.580837, 2.056204, 1.323955, -3.941346, -2.454445, -0.812812, 0.33305, -2.993553, -3.503352, -0.795027, -0.498743, 1.103242, -2.533189, -0.558635, -4.071071, -2.708921, -4.13646, 0.691594, -3.155476, -1.345744, -4.256195, 0.92263, -3.842009, -3.387766, -4.290722, 3.614977, -3.141765, 2.303033, -2.057058, 2.268011, -2.915554, 0.977215, -3.258294, -2.591909, 3.574547, 1.064755, -1.247575, -2.76732, -3.930965, -2.478784, -3.628302, -2.512708, -0.957257, -3.399886, -2.102243, -3.029473, -0.702666, -4.143654, -2.482039, -2.825267, -2.056989, -2.320418, -0.312531, -4.009338, 2.792717, -2.095254, -2.942693, -0.705995, 2.723447, 2.059014, 4.120688, -3.662128, 2.80825, 1.151233, -0.721372, -3.153387, -2.770738, 2.917279, -2.029102, -3.696102, -2.72882, -3.893301, -3.663644, -2.759451, 0.170762, 2.153076, 1.296439, -3.643368, -1.160611, -3.762022, -3.59942, -4.143265, 1.846512 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 78, 56, 10, 14, 17, 21, 50, 61, 68, 1, 13, 9, 25, 46, 35, 39, 15, 67 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 3646, "computed_crc12": 3724, "message_preview_12chars": "MTxxkgp++znE", "message_words_6bit": [ 22, 29, 59, 59, 46, 42, 51, 63, 63, 61, 49, 14 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+no_interleaver+inverted_bits", "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_17", "info87_bits": [ 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 ], "info87_bitstring": "010110011101111011111011101110101010110011111111111111111101110001001110111111000111110", "info87_llr": [ 3.094951, -0.756489, 3.937128, -3.248828, -2.580837, 2.056204, 1.323955, -3.941346, -2.454445, -0.812812, 0.33305, -2.993553, -3.503352, -0.795027, -0.498743, 1.103242, -2.533189, -0.558635, -4.071071, -2.708921, -4.13646, 0.691594, -3.155476, -1.345744, -4.256195, 0.92263, -3.842009, -3.387766, -4.290722, 3.614977, -3.141765, 2.303033, -2.057058, 2.268011, -2.915554, 0.977215, -3.258294, -2.591909, 3.574547, 1.064755, -1.247575, -2.76732, -3.930965, -2.478784, -3.628302, -2.512708, -0.957257, -3.399886, -2.102243, -3.029473, -0.702666, -4.143654, -2.482039, -2.825267, -2.056989, -2.320418, -0.312531, -4.009338, 2.792717, -2.095254, -2.942693, -0.705995, 2.723447, 2.059014, 4.120688, -3.662128, 2.80825, 1.151233, -0.721372, -3.153387, -2.770738, 2.917279, -2.029102, -3.696102, -2.72882, -3.893301, -3.663644, -2.759451, 0.170762, 2.153076, 1.296439, -3.643368, -1.160611, -3.762022, -3.59942, -4.143265, 1.846512 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 78, 56, 10, 14, 17, 21, 50, 61, 68, 1, 13, 9, 25, 46, 35, 39, 15, 67 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 3646, "computed_crc12": 3724, "message_preview_12chars": "MTxxkgp++znE", "message_words_6bit": [ 22, 29, 59, 59, 46, 42, 51, 63, 63, 61, 49, 14 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "variant": "mapped_lsb_within_each_tone+no_interleaver" }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_16", "info87_bits": [ 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 ], "info87_bitstring": "010110011101111011111011101110101010110011111111111111111101110001001110111111000111110", "info87_llr": [ 3.094951, -0.756489, 3.937128, -3.248828, -2.580837, 2.056204, 1.323955, -3.941346, -2.454445, -0.812812, 0.33305, -2.993553, -3.503352, -0.795027, -0.498743, 1.103242, -2.533189, -0.558635, -4.071071, -2.708921, -4.13646, 0.691594, -3.155476, -1.345744, -4.256195, 0.92263, -3.842009, -3.387766, -4.290722, 3.614977, -3.141765, 2.303033, -2.057058, 2.268011, -2.915554, 0.977215, -3.258294, -2.591909, 3.574547, 1.064755, -1.247575, -2.76732, -3.930965, -2.478784, -3.628302, -2.512708, -0.957257, -3.399886, -2.102243, -3.029473, -0.702666, -4.143654, -2.482039, -2.825267, -2.056989, -2.320418, -0.312531, -4.009338, 2.792717, -2.095254, -2.942693, -0.705995, 2.723447, 2.059014, 4.120688, -3.662128, 2.80825, 1.151233, -0.721372, -3.153387, -2.770738, 2.917279, -2.029102, -3.696102, -2.72882, -3.893301, -3.663644, -2.759451, 0.170762, 2.153076, 1.296439, -3.643368, -1.160611, -3.762022, -3.59942, -4.143265, 1.846512 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 78, 56, 10, 14, 17, 21, 50, 61, 68, 1, 13, 9, 25, 46, 35, 39, 15, 67 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 3646, "computed_crc12": 3724, "message_preview_12chars": "MTxxkgp++znE", "message_words_6bit": [ 22, 29, 59, 59, 46, 42, 51, 63, 63, 61, 49, 14 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_17", "info87_bits": [ 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 ], "info87_bitstring": "010110011101111011111011101110101010110011111111111111111101110001001110111111000111110", "info87_llr": [ 3.094951, -0.756489, 3.937128, -3.248828, -2.580837, 2.056204, 1.323955, -3.941346, -2.454445, -0.812812, 0.33305, -2.993553, -3.503352, -0.795027, -0.498743, 1.103242, -2.533189, -0.558635, -4.071071, -2.708921, -4.13646, 0.691594, -3.155476, -1.345744, -4.256195, 0.92263, -3.842009, -3.387766, -4.290722, 3.614977, -3.141765, 2.303033, -2.057058, 2.268011, -2.915554, 0.977215, -3.258294, -2.591909, 3.574547, 1.064755, -1.247575, -2.76732, -3.930965, -2.478784, -3.628302, -2.512708, -0.957257, -3.399886, -2.102243, -3.029473, -0.702666, -4.143654, -2.482039, -2.825267, -2.056989, -2.320418, -0.312531, -4.009338, 2.792717, -2.095254, -2.942693, -0.705995, 2.723447, 2.059014, 4.120688, -3.662128, 2.80825, 1.151233, -0.721372, -3.153387, -2.770738, 2.917279, -2.029102, -3.696102, -2.72882, -3.893301, -3.663644, -2.759451, 0.170762, 2.153076, 1.296439, -3.643368, -1.160611, -3.762022, -3.59942, -4.143265, 1.846512 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 78, 56, 10, 14, 17, 21, 50, 61, 68, 1, 13, 9, 25, 46, 35, 39, 15, 67 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 3646, "computed_crc12": 3724, "message_preview_12chars": "MTxxkgp++znE", "message_words_6bit": [ 22, 29, 59, 59, 46, 42, 51, 63, 63, 61, 49, 14 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_14", "info87_bits": [ 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1 ], "info87_bitstring": "101001001001000110000100010001000101101101001000010000000011001111110101000001111100001", "info87_llr": [ -3.094951, 0.265633, -3.074918, 0.807343, 1.56298, -2.056204, -0.012522, 3.941346, -1.235251, 0.812812, 0.027595, -2.312276, 1.989534, 0.795027, -0.030255, -1.103242, -0.254539, 0.558635, 2.155938, 1.906594, 2.388401, -0.691594, 1.504915, 1.345744, 0.125536, -0.92263, 1.437034, 0.056596, -0.028132, -2.902368, 3.141765, 0.60186, 1.040929, -2.268011, 0.275471, -0.216704, -2.217217, 0.426397, -3.574547, -0.406906, 1.247575, -1.65234, 3.930965, 0.224997, -2.495026, 0.026202, 0.957257, 2.371572, 2.102243, -1.443385, 0.702666, 2.365302, 1.60823, -0.02684, 2.056989, 1.236802, 0.312531, 0.69175, -2.792717, -0.668942, 1.089519, -0.028623, -1.868876, -2.059014, -3.277485, -0.645631, -2.80825, -0.039629, -0.03673, -0.413417, 1.611618, -2.917279, 0.913937, 3.696102, 1.16093, 3.893301, 0.9472, -1.01421, -0.005862, -2.153076, -0.704836, -2.997287, 1.160611, 0.504594, 1.571948, 2.41155, -1.846512 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 78, 6, 45, 53, 10, 28, 61, 14, 68, 67, 27, 24, 35, 43, 16, 1, 34, 56 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 993, "computed_crc12": 322, "message_preview_12chars": "f964H5j8G3Fr", "message_words_6bit": [ 41, 9, 6, 4, 17, 5, 45, 8, 16, 3, 15, 53 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_15", "info87_bits": [ 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1 ], "info87_bitstring": "101001001001000110000100010001000101101101001000010000000011001111110101000001111100001", "info87_llr": [ -3.094951, 0.062601, -3.084456, 0.85119, 1.574626, -2.056204, -0.187209, 3.941346, -0.984814, 0.812812, -0.035911, -1.901269, 2.007719, 0.795027, -0.022477, -1.103242, -0.214854, 0.558635, 2.163281, 1.922015, 2.395541, -0.691594, 1.498763, 1.345744, 0.130134, -0.92263, 1.457111, 0.051291, -0.028664, -2.910525, 3.141765, 0.492136, 1.119347, -2.268011, 0.363552, -0.390542, -1.913977, 0.422852, -3.574547, -0.436311, 1.247575, -1.36417, 3.930965, 0.214651, -2.215442, 0.045374, 0.957257, 2.384368, 2.102243, -1.256793, 0.702666, 2.371897, 1.656517, -0.027112, 2.056989, 1.460963, 0.312531, 0.719755, -2.792717, -0.455641, 1.082659, -0.04992, -1.879044, -2.059014, -3.286396, -0.583741, -2.80825, 0.117939, -0.01223, -0.359801, 1.632674, -2.917279, 0.933183, 3.696102, 1.176859, 3.893301, 0.938218, -0.866742, -0.007105, -2.153076, -0.738484, -2.575552, 1.160611, 0.52263, 1.562406, 2.418539, -1.846512 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 78, 68, 14, 53, 28, 10, 45, 61, 27, 1, 67, 24, 6, 43, 16, 56, 69, 34 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 993, "computed_crc12": 322, "message_preview_12chars": "f964H5j8G3Fr", "message_words_6bit": [ 41, 9, 6, 4, 17, 5, 45, 8, 16, 3, 15, 53 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver" } ], "outputs": { "post_ldpc_info87_runtime_export_json": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window0/step61_post_ldpc_info87_runtime_export.json" }, "warnings": [ "This is still a diagnostic runtime export, not a final JS8 text decoder.", "Step61 patches the runtime LDPC probes to expose post-LDPC info87 rows and source-index context for the next reorder/whitening alignment step." ], "next_action": "If best_distance is 0, implement source-confirmed message174 text unpack. If best_distance remains >0, build Step62 to test source-derived deinterleaver/whitening index maps against these exact runtime rows." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "tool": "webftr-js8-source-exact-map-probe", "tool_version": "step64-source-confirmed-message174-decodes-output", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "source_checked": [ { "path": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "exists": true, "is_dir": true } ], "source": { "source_available": true, "source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "files_scanned": 16, "focused_files_present": [ "JS8_Mode/JS8.cpp", "JS8_Mode/JS8.h", "JS8_Mode/Decoder.cpp", "JS8_Mode/Decoder.h", "JS8_Mode/DecodedText.cpp", "JS8_Mode/DecodedText.h", "JS8_Mode/JS8Submode.cpp", "JS8_Mode/JS8Submode.h", "JS8_Mode/soft_combiner.h", "JS8_Mode/ldpc_feedback.h", "JS8_Mode/whitening_processor.h", "JS8_Include/commons.h", "JS8_Main/Varicode.cpp", "JS8_Main/Varicode.h", "JS8_JSC/JSC_map.cpp", "JS8_JSC/JSC_list.cpp" ], "focused_files_missing": [], "exact_maps": [], "source_evidence": [ { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 11, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 8, "end_line": 14, "lines": [ { "line": 8, "text": "#include \"JS8.h\"" }, { "line": 9, "text": "#include \"JS8_Include/commons.h\"" }, { "line": 10, "text": "#include \"JS8_Mode/FrequencyTracker.h\"" }, { "line": 11, "text": "#include \"JS8_Mode/whitening_processor.h\"" }, { "line": 12, "text": "#include \"ldpc_feedback.h\"" }, { "line": 13, "text": "#include \"soft_combiner.h\"" }, { "line": 14, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 12, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 9, "end_line": 15, "lines": [ { "line": 9, "text": "#include \"JS8_Include/commons.h\"" }, { "line": 10, "text": "#include \"JS8_Mode/FrequencyTracker.h\"" }, { "line": 11, "text": "#include \"JS8_Mode/whitening_processor.h\"" }, { "line": 12, "text": "#include \"ldpc_feedback.h\"" }, { "line": 13, "text": "#include \"soft_combiner.h\"" }, { "line": 14, "text": "" }, { "line": 15, "text": "#include " } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 729, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 726, "end_line": 732, "lines": [ { "line": 726, "text": "" }, { "line": 727, "text": "// Belief Propagation Decoder" }, { "line": 728, "text": "" }, { "line": 729, "text": "int bpdecode174(std::array const &llr, std::array &decoded," }, { "line": 730, "text": " std::array &cw) {" }, { "line": 731, "text": " // Initialize messages and variables" }, { "line": 732, "text": " std::array, N> tov =" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 748, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 745, "end_line": 751, "lines": [ { "line": 745, "text": " // Initialize toc (messages from bits to checks)" }, { "line": 746, "text": " for (int i = 0; i < M; ++i) {" }, { "line": 747, "text": " for (int j = 0; j < Nm[i].valid_neighbors; ++j) {" }, { "line": 748, "text": " toc[i][j] = llr[Nm[i].neighbors[j]];" }, { "line": 749, "text": " }" }, { "line": 750, "text": " }" }, { "line": 751, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 757, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 754, "end_line": 760, "lines": [ { "line": 754, "text": " // Update bit log likelihood ratios" }, { "line": 755, "text": " for (int i = 0; i < N; ++i) {" }, { "line": 756, "text": " zn[i] =" }, { "line": 757, "text": " llr[i] + std::accumulate(tov[i].begin()," }, { "line": 758, "text": " tov[i].begin() + BP_MAX_CHECKS, 0.0f);" }, { "line": 759, "text": " }" }, { "line": 760, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 782, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 779, "end_line": 785, "lines": [ { "line": 779, "text": " // Count errors" }, { "line": 780, "text": " int nerr = 0;" }, { "line": 781, "text": " for (int i = 0; i < N; ++i) {" }, { "line": 782, "text": " if ((2 * cw[i] - 1) * llr[i] < 0.0f) {" }, { "line": 783, "text": " ++nerr;" }, { "line": 784, "text": " }" }, { "line": 785, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 895, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "checkCRC12" ], "context": { "start_line": 892, "end_line": 898, "lines": [ { "line": 892, "text": " return boost::augmented_crc<12, 0xc06>(range.data(), range.size()) ^ 42;" }, { "line": 893, "text": "}" }, { "line": 894, "text": "" }, { "line": 895, "text": "bool checkCRC12(std::array const &decoded) {" }, { "line": 896, "text": " std::array bits = {};" }, { "line": 897, "text": "" }, { "line": 898, "text": " for (std::size_t i = 0; i < decoded.size(); ++i) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 918, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "message174", "extractmessage174" ], "context": { "start_line": 915, "end_line": 921, "lines": [ { "line": 915, "text": " return crc == CRC12(bits);" }, { "line": 916, "text": "}" }, { "line": 917, "text": "" }, { "line": 918, "text": "std::string extractmessage174(std::array const &decoded) {" }, { "line": 919, "text": " std::string message;" }, { "line": 920, "text": "" }, { "line": 921, "text": " // Ensure received CRC matches computed CRC." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 923, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "checkCRC12" ], "context": { "start_line": 920, "end_line": 926, "lines": [ { "line": 920, "text": "" }, { "line": 921, "text": " // Ensure received CRC matches computed CRC." }, { "line": 922, "text": "" }, { "line": 923, "text": " if (checkCRC12(decoded)) {" }, { "line": 924, "text": " message.reserve(12);" }, { "line": 925, "text": "" }, { "line": 926, "text": " // Decode the message from the 72 data bits" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 950, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 947, "end_line": 953, "lines": [ { "line": 947, "text": "// This should be 952 bytes in size; to store an 87x87 matrix of bits," }, { "line": 948, "text": "// you need 7569 bits, which requires 119 64-bit values, or 952 bytes." }, { "line": 949, "text": "//" }, { "line": 950, "text": "// Background here is that this is a low-density parity check code (LDPC)," }, { "line": 951, "text": "// generated using the PEG algorithm. In short, true values in a row i of" }, { "line": 952, "text": "// the matrix define which of the 87 message bits must be summed, modulo" }, { "line": 953, "text": "// 2, to produce the ith parity check bit. Decent references on this are:" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 959, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 956, "end_line": 962, "lines": [ { "line": 956, "text": "// 2. https://inference.org.uk/mackay/PEG_ECC.html" }, { "line": 957, "text": "// 3. https://github.com/Lcrypto/classic-PEG-" }, { "line": 958, "text": "//" }, { "line": 959, "text": "// The data used was harvested from the original 'ldpc_174_87_params.f90'," }, { "line": 960, "text": "// but you'll note that the rows have been reordered here, because this" }, { "line": 961, "text": "// isn't Fortran; C++ is row-major, not column-major." }, { "line": 962, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1084, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1081, "end_line": 1087, "lines": [ { "line": 1081, "text": " js8::SoftCombiner m_softCombiner;" }, { "line": 1082, "text": " bool m_enableFreqTracking = true;" }, { "line": 1083, "text": " bool m_enableTimingTracking = true;" }, { "line": 1084, "text": " float m_llrErasureThreshold = js8::llrErasureThreshold();" }, { "line": 1085, "text": " bool m_enableLdpcFeedback = js8::ldpcFeedbackEnabled();" }, { "line": 1086, "text": " int m_maxLdpcPasses = js8::ldpcFeedbackMaxPasses();" }, { "line": 1087, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1085, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1082, "end_line": 1088, "lines": [ { "line": 1082, "text": " bool m_enableFreqTracking = true;" }, { "line": 1083, "text": " bool m_enableTimingTracking = true;" }, { "line": 1084, "text": " float m_llrErasureThreshold = js8::llrErasureThreshold();" }, { "line": 1085, "text": " bool m_enableLdpcFeedback = js8::ldpcFeedbackEnabled();" }, { "line": 1086, "text": " int m_maxLdpcPasses = js8::ldpcFeedbackMaxPasses();" }, { "line": 1087, "text": "" }, { "line": 1088, "text": " using Plan = FFTWPlanManager::Type;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1086, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1083, "end_line": 1089, "lines": [ { "line": 1083, "text": " bool m_enableTimingTracking = true;" }, { "line": 1084, "text": " float m_llrErasureThreshold = js8::llrErasureThreshold();" }, { "line": 1085, "text": " bool m_enableLdpcFeedback = js8::ldpcFeedbackEnabled();" }, { "line": 1086, "text": " int m_maxLdpcPasses = js8::ldpcFeedbackMaxPasses();" }, { "line": 1087, "text": "" }, { "line": 1088, "text": " using Plan = FFTWPlanManager::Type;" }, { "line": 1089, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1473, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 1470, "end_line": 1476, "lines": [ { "line": 1470, "text": " symbolWinners[j] = winner;" }, { "line": 1471, "text": " }" }, { "line": 1472, "text": "" }, { "line": 1473, "text": " auto const whitening = js8::WhiteningProcessor::process(" }, { "line": 1474, "text": " s1, symbolWinners, m_llrErasureThreshold," }, { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1474, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1471, "end_line": 1477, "lines": [ { "line": 1471, "text": " }" }, { "line": 1472, "text": "" }, { "line": 1473, "text": " auto const whitening = js8::WhiteningProcessor::process(" }, { "line": 1474, "text": " s1, symbolWinners, m_llrErasureThreshold," }, { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" }, { "line": 1477, "text": " auto llr0 = whitening.llr0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1477, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten", "llr" ], "context": { "start_line": 1474, "end_line": 1480, "lines": [ { "line": 1474, "text": " s1, symbolWinners, m_llrErasureThreshold," }, { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" }, { "line": 1477, "text": " auto llr0 = whitening.llr0;" }, { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1478, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten", "llr" ], "context": { "start_line": 1475, "end_line": 1481, "lines": [ { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" }, { "line": 1477, "text": " auto llr0 = whitening.llr0;" }, { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1480, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 1477, "end_line": 1483, "lines": [ { "line": 1477, "text": " auto llr0 = whitening.llr0;" }, { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." }, { "line": 1482, "text": " if (!whitening.erasureApplied) {" }, { "line": 1483, "text": " std::size_t erasuresAfterThreshold = 0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1481, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1478, "end_line": 1484, "lines": [ { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." }, { "line": 1482, "text": " if (!whitening.erasureApplied) {" }, { "line": 1483, "text": " std::size_t erasuresAfterThreshold = 0;" }, { "line": 1484, "text": " double sumAbsPreErasure = 0.0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1482, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 1479, "end_line": 1485, "lines": [ { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." }, { "line": 1482, "text": " if (!whitening.erasureApplied) {" }, { "line": 1483, "text": " std::size_t erasuresAfterThreshold = 0;" }, { "line": 1484, "text": " double sumAbsPreErasure = 0.0;" }, { "line": 1485, "text": " double sumAbsPostErasure = 0.0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1487, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1484, "end_line": 1490, "lines": [ { "line": 1484, "text": " double sumAbsPreErasure = 0.0;" }, { "line": 1485, "text": " double sumAbsPostErasure = 0.0;" }, { "line": 1486, "text": "" }, { "line": 1487, "text": " auto const applyErasureThreshold = [&](auto &llr) {" }, { "line": 1488, "text": " for (auto const value : llr)" }, { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1488, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1485, "end_line": 1491, "lines": [ { "line": 1485, "text": " double sumAbsPostErasure = 0.0;" }, { "line": 1486, "text": "" }, { "line": 1487, "text": " auto const applyErasureThreshold = [&](auto &llr) {" }, { "line": 1488, "text": " for (auto const value : llr)" }, { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1491, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1488, "end_line": 1494, "lines": [ { "line": 1488, "text": " for (auto const value : llr)" }, { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" }, { "line": 1492, "text": " for (auto &value : llr) {" }, { "line": 1493, "text": " if (std::abs(value) < m_llrErasureThreshold) {" }, { "line": 1494, "text": " value = 0.0f;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1492, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1489, "end_line": 1495, "lines": [ { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" }, { "line": 1492, "text": " for (auto &value : llr) {" }, { "line": 1493, "text": " if (std::abs(value) < m_llrErasureThreshold) {" }, { "line": 1494, "text": " value = 0.0f;" }, { "line": 1495, "text": " ++erasuresAfterThreshold;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1493, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1490, "end_line": 1496, "lines": [ { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" }, { "line": 1492, "text": " for (auto &value : llr) {" }, { "line": 1493, "text": " if (std::abs(value) < m_llrErasureThreshold) {" }, { "line": 1494, "text": " value = 0.0f;" }, { "line": 1495, "text": " ++erasuresAfterThreshold;" }, { "line": 1496, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1501, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1498, "end_line": 1504, "lines": [ { "line": 1498, "text": " sumAbsPostErasure += std::abs(value);" }, { "line": 1499, "text": " }" }, { "line": 1500, "text": " } else {" }, { "line": 1501, "text": " for (auto const value : llr)" }, { "line": 1502, "text": " sumAbsPostErasure += std::abs(value);" }, { "line": 1503, "text": " }" }, { "line": 1504, "text": " };" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1506, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1503, "end_line": 1509, "lines": [ { "line": 1503, "text": " }" }, { "line": 1504, "text": " };" }, { "line": 1505, "text": "" }, { "line": 1506, "text": " applyErasureThreshold(llr0);" }, { "line": 1507, "text": " applyErasureThreshold(llr1);" }, { "line": 1508, "text": "" }, { "line": 1509, "text": " if (decoder_js8().isDebugEnabled()) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1507, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1504, "end_line": 1510, "lines": [ { "line": 1504, "text": " };" }, { "line": 1505, "text": "" }, { "line": 1506, "text": " applyErasureThreshold(llr0);" }, { "line": 1507, "text": " applyErasureThreshold(llr1);" }, { "line": 1508, "text": "" }, { "line": 1509, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1510, "text": " auto const total =" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1511, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1508, "end_line": 1514, "lines": [ { "line": 1508, "text": "" }, { "line": 1509, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1510, "text": " auto const total =" }, { "line": 1511, "text": " static_cast(llr0.size() + llr1.size());" }, { "line": 1512, "text": " double const avgPre =" }, { "line": 1513, "text": " total > 0.0 ? sumAbsPreErasure / total : 0.0;" }, { "line": 1514, "text": " double const avgPost =" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1518, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1515, "end_line": 1521, "lines": [ { "line": 1515, "text": " total > 0.0 ? sumAbsPostErasure / total : 0.0;" }, { "line": 1516, "text": "" }, { "line": 1517, "text": " qCDebug(decoder_js8)" }, { "line": 1518, "text": " << \"LLR erasure threshold\" << m_llrErasureThreshold" }, { "line": 1519, "text": " << \"erasures:\" << erasuresAfterThreshold" }, { "line": 1520, "text": " << \"avg|LLR| pre/post:\" << avgPre << avgPost;" }, { "line": 1521, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1520, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1517, "end_line": 1523, "lines": [ { "line": 1517, "text": " qCDebug(decoder_js8)" }, { "line": 1518, "text": " << \"LLR erasure threshold\" << m_llrErasureThreshold" }, { "line": 1519, "text": " << \"erasures:\" << erasuresAfterThreshold" }, { "line": 1520, "text": " << \"avg|LLR| pre/post:\" << avgPre << avgPost;" }, { "line": 1521, "text": " }" }, { "line": 1522, "text": " }" }, { "line": 1523, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1529, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1526, "end_line": 1532, "lines": [ { "line": 1526, "text": " m_softCombiner.flush(ttl);" }, { "line": 1527, "text": "" }, { "line": 1528, "text": " auto const key =" }, { "line": 1529, "text": " m_softCombiner.makeKey(Mode::NSUBMODE, f1, xdt, llr0, llr1);" }, { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1530, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1527, "end_line": 1533, "lines": [ { "line": 1527, "text": "" }, { "line": 1528, "text": " auto const key =" }, { "line": 1529, "text": " m_softCombiner.makeKey(Mode::NSUBMODE, f1, xdt, llr0, llr1);" }, { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" }, { "line": 1533, "text": " auto llr1Combined = combined.llr1;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1532, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1529, "end_line": 1535, "lines": [ { "line": 1529, "text": " m_softCombiner.makeKey(Mode::NSUBMODE, f1, xdt, llr0, llr1);" }, { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" }, { "line": 1533, "text": " auto llr1Combined = combined.llr1;" }, { "line": 1534, "text": "" }, { "line": 1535, "text": " std::array decoded;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1533, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1530, "end_line": 1536, "lines": [ { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" }, { "line": 1533, "text": " auto llr1Combined = combined.llr1;" }, { "line": 1534, "text": "" }, { "line": 1535, "text": " std::array decoded;" }, { "line": 1536, "text": " std::array cw;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1538, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1535, "end_line": 1541, "lines": [ { "line": 1535, "text": " std::array decoded;" }, { "line": 1536, "text": " std::array cw;" }, { "line": 1537, "text": "" }, { "line": 1538, "text": " int totalLdpcPasses = 0;" }, { "line": 1539, "text": " bool usedFeedbackPass = false;" }, { "line": 1540, "text": " bool feedbackTurnedSuccess = false;" }, { "line": 1541, "text": " int feedbackConfident = 0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1544, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1541, "end_line": 1547, "lines": [ { "line": 1541, "text": " int feedbackConfident = 0;" }, { "line": 1542, "text": " int feedbackUncertain = 0;" }, { "line": 1543, "text": "" }, { "line": 1544, "text": " auto const tryDecode = [&](std::array const &llrInput," }, { "line": 1545, "text": " int ipass) -> std::optional {" }, { "line": 1546, "text": " nharderrors = bpdecode174(llrInput, decoded, cw);" }, { "line": 1547, "text": " xsnr = -99.0f;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1546, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1543, "end_line": 1549, "lines": [ { "line": 1543, "text": "" }, { "line": 1544, "text": " auto const tryDecode = [&](std::array const &llrInput," }, { "line": 1545, "text": " int ipass) -> std::optional {" }, { "line": 1546, "text": " nharderrors = bpdecode174(llrInput, decoded, cw);" }, { "line": 1547, "text": " xsnr = -99.0f;" }, { "line": 1548, "text": "" }, { "line": 1549, "text": " if (std::all_of(cw.begin(), cw.end()," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1558, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "checkCRC12" ], "context": { "start_line": 1555, "end_line": 1561, "lines": [ { "line": 1555, "text": " !(sync < 2.0f && nharderrors > 35) &&" }, { "line": 1556, "text": " !(ipass > 2 && nharderrors > 39) &&" }, { "line": 1557, "text": " !(ipass == 4 && nharderrors > 30)) {" }, { "line": 1558, "text": " if (checkCRC12(decoded)) {" }, { "line": 1559, "text": " if (syncStats)" }, { "line": 1560, "text": " emitEvent(JS8::Event::SyncState{" }, { "line": 1561, "text": " JS8::Event::SyncState::Type::DECODED," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1567, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "message174", "extractmessage174" ], "context": { "start_line": 1564, "end_line": 1570, "lines": [ { "line": 1564, "text": " xdt2," }, { "line": 1565, "text": " {.decoded = sync}});" }, { "line": 1566, "text": "" }, { "line": 1567, "text": " auto message = extractmessage174(decoded);" }, { "line": 1568, "text": "" }, { "line": 1569, "text": " int const i3bit =" }, { "line": 1570, "text": " (decoded[72] << 2) | (decoded[73] << 1) | decoded[74];" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1604, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1601, "end_line": 1607, "lines": [ { "line": 1601, "text": " };" }, { "line": 1602, "text": "" }, { "line": 1603, "text": " // Loop over decoding passes" }, { "line": 1604, "text": " for (int ipass = 1; ipass <= 4 && totalLdpcPasses < m_maxLdpcPasses;" }, { "line": 1605, "text": " ++ipass) {" }, { "line": 1606, "text": " auto &llr = ipass == 2 ? llr1Combined : llr0Combined;" }, { "line": 1607, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1606, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1603, "end_line": 1609, "lines": [ { "line": 1603, "text": " // Loop over decoding passes" }, { "line": 1604, "text": " for (int ipass = 1; ipass <= 4 && totalLdpcPasses < m_maxLdpcPasses;" }, { "line": 1605, "text": " ++ipass) {" }, { "line": 1606, "text": " auto &llr = ipass == 2 ? llr1Combined : llr0Combined;" }, { "line": 1607, "text": "" }, { "line": 1608, "text": " // Zero ranges for certain passes to mirror legacy behavior." }, { "line": 1609, "text": " if (ipass == 3)" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1610, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1607, "end_line": 1613, "lines": [ { "line": 1607, "text": "" }, { "line": 1608, "text": " // Zero ranges for certain passes to mirror legacy behavior." }, { "line": 1609, "text": " if (ipass == 3)" }, { "line": 1610, "text": " std::fill(llr0Combined.begin(), llr0Combined.begin() + 24," }, { "line": 1611, "text": " 0.0f);" }, { "line": 1612, "text": " else if (ipass == 4)" }, { "line": 1613, "text": " std::fill(llr0Combined.begin() + 24, llr0Combined.begin() + 48," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1613, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1610, "end_line": 1616, "lines": [ { "line": 1610, "text": " std::fill(llr0Combined.begin(), llr0Combined.begin() + 24," }, { "line": 1611, "text": " 0.0f);" }, { "line": 1612, "text": " else if (ipass == 4)" }, { "line": 1613, "text": " std::fill(llr0Combined.begin() + 24, llr0Combined.begin() + 48," }, { "line": 1614, "text": " 0.0f);" }, { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1616, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1613, "end_line": 1619, "lines": [ { "line": 1613, "text": " std::fill(llr0Combined.begin() + 24, llr0Combined.begin() + 48," }, { "line": 1614, "text": " 0.0f);" }, { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" }, { "line": 1617, "text": " if (auto result = tryDecode(llrPrimary, ipass)) {" }, { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1617, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1614, "end_line": 1620, "lines": [ { "line": 1614, "text": " 0.0f);" }, { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" }, { "line": 1617, "text": " if (auto result = tryDecode(llrPrimary, ipass)) {" }, { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" }, { "line": 1620, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1618, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1615, "end_line": 1621, "lines": [ { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" }, { "line": 1617, "text": " if (auto result = tryDecode(llrPrimary, ipass)) {" }, { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" }, { "line": 1620, "text": " }" }, { "line": 1621, "text": " ++totalLdpcPasses;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1621, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1618, "end_line": 1624, "lines": [ { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" }, { "line": 1620, "text": " }" }, { "line": 1621, "text": " ++totalLdpcPasses;" }, { "line": 1622, "text": "" }, { "line": 1623, "text": " // Feedback refinement and second attempt, if enabled and budget" }, { "line": 1624, "text": " // allows." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1625, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1622, "end_line": 1628, "lines": [ { "line": 1622, "text": "" }, { "line": 1623, "text": " // Feedback refinement and second attempt, if enabled and budget" }, { "line": 1624, "text": " // allows." }, { "line": 1625, "text": " if (m_enableLdpcFeedback && totalLdpcPasses < m_maxLdpcPasses) {" }, { "line": 1626, "text": " std::array llrRefined;" }, { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1626, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1623, "end_line": 1629, "lines": [ { "line": 1623, "text": " // Feedback refinement and second attempt, if enabled and budget" }, { "line": 1624, "text": " // allows." }, { "line": 1625, "text": " if (m_enableLdpcFeedback && totalLdpcPasses < m_maxLdpcPasses) {" }, { "line": 1626, "text": " std::array llrRefined;" }, { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" }, { "line": 1629, "text": " js8::refineLlrsWithLdpcFeedback(" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1629, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr", "LDPC", "ldpc" ], "context": { "start_line": 1626, "end_line": 1632, "lines": [ { "line": 1626, "text": " std::array llrRefined;" }, { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" }, { "line": 1629, "text": " js8::refineLlrsWithLdpcFeedback(" }, { "line": 1630, "text": " llrPrimary, cw, m_llrErasureThreshold, llrRefined," }, { "line": 1631, "text": " confident, uncertain);" }, { "line": 1632, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1630, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1627, "end_line": 1633, "lines": [ { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" }, { "line": 1629, "text": " js8::refineLlrsWithLdpcFeedback(" }, { "line": 1630, "text": " llrPrimary, cw, m_llrErasureThreshold, llrRefined," }, { "line": 1631, "text": " confident, uncertain);" }, { "line": 1632, "text": "" }, { "line": 1633, "text": " if (decoder_js8().isDebugEnabled()) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1635, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1632, "end_line": 1638, "lines": [ { "line": 1632, "text": "" }, { "line": 1633, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1634, "text": " qCDebug(decoder_js8)" }, { "line": 1635, "text": " << \"LDPC feedback pass\"" }, { "line": 1636, "text": " << \"ipass\" << ipass << \"confident\" << confident" }, { "line": 1637, "text": " << \"uncertain\" << uncertain;" }, { "line": 1638, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1644, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1641, "end_line": 1647, "lines": [ { "line": 1641, "text": " feedbackConfident += confident;" }, { "line": 1642, "text": " feedbackUncertain += uncertain;" }, { "line": 1643, "text": "" }, { "line": 1644, "text": " if (auto result = tryDecode(llrRefined, ipass)) {" }, { "line": 1645, "text": " ++totalLdpcPasses;" }, { "line": 1646, "text": " feedbackTurnedSuccess = true;" }, { "line": 1647, "text": " if (decoder_js8().isDebugEnabled()) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1645, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1642, "end_line": 1648, "lines": [ { "line": 1642, "text": " feedbackUncertain += uncertain;" }, { "line": 1643, "text": "" }, { "line": 1644, "text": " if (auto result = tryDecode(llrRefined, ipass)) {" }, { "line": 1645, "text": " ++totalLdpcPasses;" }, { "line": 1646, "text": " feedbackTurnedSuccess = true;" }, { "line": 1647, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1648, "text": " qCDebug(decoder_js8)" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1649, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1646, "end_line": 1652, "lines": [ { "line": 1646, "text": " feedbackTurnedSuccess = true;" }, { "line": 1647, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1648, "text": " qCDebug(decoder_js8)" }, { "line": 1649, "text": " << \"LDPC feedback succeeded on second pass\"" }, { "line": 1650, "text": " << \"ipass\" << ipass << \"confident\"" }, { "line": 1651, "text": " << feedbackConfident << \"uncertain\"" }, { "line": 1652, "text": " << feedbackUncertain << \"passes\" << totalLdpcPasses;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1652, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1649, "end_line": 1655, "lines": [ { "line": 1649, "text": " << \"LDPC feedback succeeded on second pass\"" }, { "line": 1650, "text": " << \"ipass\" << ipass << \"confident\"" }, { "line": 1651, "text": " << feedbackConfident << \"uncertain\"" }, { "line": 1652, "text": " << feedbackUncertain << \"passes\" << totalLdpcPasses;" }, { "line": 1653, "text": " }" }, { "line": 1654, "text": " return result;" }, { "line": 1655, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1657, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1654, "end_line": 1660, "lines": [ { "line": 1654, "text": " return result;" }, { "line": 1655, "text": " }" }, { "line": 1656, "text": "" }, { "line": 1657, "text": " ++totalLdpcPasses;" }, { "line": 1658, "text": " }" }, { "line": 1659, "text": " }" }, { "line": 1660, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1663, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1660, "end_line": 1666, "lines": [ { "line": 1660, "text": "" }, { "line": 1661, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1662, "text": " qCDebug(decoder_js8)" }, { "line": 1663, "text": " << \"LDPC feedback summary\"" }, { "line": 1664, "text": " << \"used\" << usedFeedbackPass << \"success\"" }, { "line": 1665, "text": " << feedbackTurnedSuccess << \"confident\" << feedbackConfident" }, { "line": 1666, "text": " << \"uncertain\" << feedbackUncertain << \"passes\"" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1667, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1664, "end_line": 1670, "lines": [ { "line": 1664, "text": " << \"used\" << usedFeedbackPass << \"success\"" }, { "line": 1665, "text": " << feedbackTurnedSuccess << \"confident\" << feedbackConfident" }, { "line": 1666, "text": " << \"uncertain\" << feedbackUncertain << \"passes\"" }, { "line": 1667, "text": " << totalLdpcPasses;" }, { "line": 1668, "text": " }" }, { "line": 1669, "text": "" }, { "line": 1670, "text": " logTracker(\"fail\");" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 22, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 19, "end_line": 25, "lines": [ { "line": 19, "text": "" }, { "line": 20, "text": "namespace js8 {" }, { "line": 21, "text": "/**" }, { "line": 22, "text": " * @brief Cache and combine repeated LLR frames for the same decode candidate." }, { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 24, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 21, "end_line": 27, "lines": [ { "line": 21, "text": "/**" }, { "line": 22, "text": " * @brief Cache and combine repeated LLR frames for the same decode candidate." }, { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" }, { "line": 26, "text": " * over-the-air behavior. Templated on the LLR length so the caller binds it" }, { "line": 27, "text": " * to the decoder's bit count." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 25, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 22, "end_line": 28, "lines": [ { "line": 22, "text": " * @brief Cache and combine repeated LLR frames for the same decode candidate." }, { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" }, { "line": 26, "text": " * over-the-air behavior. Templated on the LLR length so the caller binds it" }, { "line": 27, "text": " * to the decoder's bit count." }, { "line": 28, "text": " */" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 26, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 23, "end_line": 29, "lines": [ { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" }, { "line": 26, "text": " * over-the-air behavior. Templated on the LLR length so the caller binds it" }, { "line": 27, "text": " * to the decoder's bit count." }, { "line": 28, "text": " */" }, { "line": 29, "text": "template class SoftCombiner {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 47, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 44, "end_line": 50, "lines": [ { "line": 44, "text": "" }, { "line": 45, "text": " struct Combined {" }, { "line": 46, "text": " Key key;" }, { "line": 47, "text": " std::array llr0;" }, { "line": 48, "text": " std::array llr1;" }, { "line": 49, "text": " int repeats;" }, { "line": 50, "text": " bool combined;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 48, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 45, "end_line": 51, "lines": [ { "line": 45, "text": " struct Combined {" }, { "line": 46, "text": " Key key;" }, { "line": 47, "text": " std::array llr0;" }, { "line": 48, "text": " std::array llr1;" }, { "line": 49, "text": " int repeats;" }, { "line": 50, "text": " bool combined;" }, { "line": 51, "text": " };" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 65, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 62, "end_line": 68, "lines": [ { "line": 62, "text": " maybeRunSelfTest();" }, { "line": 63, "text": " }" }, { "line": 64, "text": "" }, { "line": 65, "text": " Key makeKey(int mode, float f1, float dt, std::array const &llr0," }, { "line": 66, "text": " std::array const &llr1) const {" }, { "line": 67, "text": " return Key{mode, static_cast(std::lround(f1))," }, { "line": 68, "text": " static_cast(std::lround(dt * 10.0f)), // 100 ms bins" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 66, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 63, "end_line": 69, "lines": [ { "line": 63, "text": " }" }, { "line": 64, "text": "" }, { "line": 65, "text": " Key makeKey(int mode, float f1, float dt, std::array const &llr0," }, { "line": 66, "text": " std::array const &llr1) const {" }, { "line": 67, "text": " return Key{mode, static_cast(std::lround(f1))," }, { "line": 68, "text": " static_cast(std::lround(dt * 10.0f)), // 100 ms bins" }, { "line": 69, "text": " signature(llr0, llr1)};" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 69, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 66, "end_line": 72, "lines": [ { "line": 66, "text": " std::array const &llr1) const {" }, { "line": 67, "text": " return Key{mode, static_cast(std::lround(f1))," }, { "line": 68, "text": " static_cast(std::lround(dt * 10.0f)), // 100 ms bins" }, { "line": 69, "text": " signature(llr0, llr1)};" }, { "line": 70, "text": " }" }, { "line": 71, "text": "" }, { "line": 72, "text": " Combined combine(Key const &key, std::array const &llr0," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 72, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 69, "end_line": 75, "lines": [ { "line": 69, "text": " signature(llr0, llr1)};" }, { "line": 70, "text": " }" }, { "line": 71, "text": "" }, { "line": 72, "text": " Combined combine(Key const &key, std::array const &llr0," }, { "line": 73, "text": " std::array const &llr1," }, { "line": 74, "text": " std::chrono::seconds ttl) {" }, { "line": 75, "text": " flush(ttl);" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 73, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 70, "end_line": 76, "lines": [ { "line": 70, "text": " }" }, { "line": 71, "text": "" }, { "line": 72, "text": " Combined combine(Key const &key, std::array const &llr0," }, { "line": 73, "text": " std::array const &llr1," }, { "line": 74, "text": " std::chrono::seconds ttl) {" }, { "line": 75, "text": " flush(ttl);" }, { "line": 76, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 78, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 75, "end_line": 81, "lines": [ { "line": 75, "text": " flush(ttl);" }, { "line": 76, "text": "" }, { "line": 77, "text": " if (!m_enabled) {" }, { "line": 78, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 79, "text": " }" }, { "line": 80, "text": "" }, { "line": 81, "text": " auto &bucket = m_entries[keyForLookup(key)];" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 85, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 82, "end_line": 88, "lines": [ { "line": 82, "text": " auto it = findEntry(bucket, key.signature);" }, { "line": 83, "text": "" }, { "line": 84, "text": " if (it == bucket.end()) {" }, { "line": 85, "text": " bucket.push_back(makeEntry(key.signature, llr0, llr1));" }, { "line": 86, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 87, "text": " }" }, { "line": 88, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 86, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 83, "end_line": 89, "lines": [ { "line": 83, "text": "" }, { "line": 84, "text": " if (it == bucket.end()) {" }, { "line": 85, "text": " bucket.push_back(makeEntry(key.signature, llr0, llr1));" }, { "line": 86, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 87, "text": " }" }, { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 89, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 86, "end_line": 92, "lines": [ { "line": 86, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 87, "text": " }" }, { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" }, { "line": 90, "text": " it->llr0[i] += llr0[i];" }, { "line": 91, "text": " it->llr1[i] += llr1[i];" }, { "line": 92, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 90, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 87, "end_line": 93, "lines": [ { "line": 87, "text": " }" }, { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" }, { "line": 90, "text": " it->llr0[i] += llr0[i];" }, { "line": 91, "text": " it->llr1[i] += llr1[i];" }, { "line": 92, "text": " }" }, { "line": 93, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 91, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 88, "end_line": 94, "lines": [ { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" }, { "line": 90, "text": " it->llr0[i] += llr0[i];" }, { "line": 91, "text": " it->llr1[i] += llr1[i];" }, { "line": 92, "text": " }" }, { "line": 93, "text": "" }, { "line": 94, "text": " ++it->repeats;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 101, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 98, "end_line": 104, "lines": [ { "line": 98, "text": " << \"soft-combining repeats\" << it->repeats << \"mode\" << key.mode" }, { "line": 99, "text": " << \"freq\" << key.freqBin << \"dtbin\" << key.dtBin;" }, { "line": 100, "text": "" }, { "line": 101, "text": " return Combined{key, it->llr0, it->llr1, it->repeats, true};" }, { "line": 102, "text": " }" }, { "line": 103, "text": "" }, { "line": 104, "text": " void markDecoded(Key const &key) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 170, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 167, "end_line": 173, "lines": [ { "line": 167, "text": "" }, { "line": 168, "text": " struct Entry {" }, { "line": 169, "text": " uint32_t signature;" }, { "line": 170, "text": " std::array llr0;" }, { "line": 171, "text": " std::array llr1;" }, { "line": 172, "text": " int repeats;" }, { "line": 173, "text": " Clock::time_point lastSeen;" } ] } } ] }, "info87_rows_found": 781, "source_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T075340Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T075340Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T075340Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T071154Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T071154Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T071154Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070926Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070926Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070926Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/js8_step83_source_confirmed_message174_decode_latest.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/js8_step83_post_ldpc_info87_runtime_export_latest.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/js8_step83_candidate_export_latest.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/js8_real_wav_message174_regeneration_latest.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T035339Z_real_wav_message174_regeneration_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T035339Z_step83_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T035339Z_step83_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T035339Z_step83_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T033900Z_real-wav-message174-regeneration_manifest.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T033900Z_real_wav_message174_regeneration_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] } ], "source_exact_map_count": 0, "map_tests": 240, "zero_distance_candidate_count": 16, "best_distance": 0, "best_candidate": { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 214, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, "top_candidates": [ { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 214, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 215, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 187, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 188, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 160, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 161, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 133, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 134, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 106, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 107, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 79, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 80, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 52, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 53, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 25, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 26, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 162, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[0].info87_bits", "row_index": 163, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[1].info87_bits", "row_index": 164, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[2].info87_bits", "row_index": 165, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[3].info87_bits", "row_index": 166, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 54, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[0].info87_bits", "row_index": 55, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[1].info87_bits", "row_index": 56, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[2].info87_bits", "row_index": 57, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[3].info87_bits", "row_index": 58, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 216, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[0].info87_bits", "row_index": 217, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[1].info87_bits", "row_index": 218, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[2].info87_bits", "row_index": 219, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[3].info87_bits", "row_index": 220, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[4].info87_bits", "row_index": 221, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" } ], "decodes": [], "warnings": [ "Step63 is still a diagnostic/source-extraction step, not a final text decoder.", "It starts no JS8Call GUI/Qt process and performs no TX/PTT/Tune/Send actions." ], "next_action": "Zero-distance message174/CRC12 candidate found: build Step64 source-confirmed message174 text unpack and WebFTR-style decodes[] output." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-source-confirmed-message174-decode", "tool_version": "step64-source-confirmed-message174-decodes-output", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "log_dir": "/decoders/js8_decoder/logs", "source_contract": { "source": "JS8Call-Improved JS8_Mode/JS8.cpp extractmessage174/checkCRC12", "alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "crc_width": 12, "crc_poly_hex": "0xc06", "crc_xor_decimal": 42, "message_bits": "first 72 data bits as 12 x 6-bit words", "crc_gate": "Only zero-distance CRC12 candidates are emitted as decodes[]." }, "step63_source_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" } ], "runtime_fallback_reports": [], "candidate_source": "step63_source_exact_map_probe", "zero_distance_candidate_count": 2, "decode_count": 2, "top_candidates": [ { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "message_text_12chars": "001XqOA2iDZ0", "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "message_text_12chars": "Q0VsKWqfJ96x", "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" } ], "decodes": [ { "id": "js8-msg174-3fa90037", "mode": "JS8", "decoder": "webftr-js8lab-step64-message174-source-confirmed", "text": "001XqOA2iDZ0", "raw": "001XqOA2iDZ0", "message_text_12chars": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "parsed": { "raw": "001XqOA2iDZ0", "normalized": "001XQOA2IDZ0", "message_type": "MESSAGE", "directed_to": null, "callsigns": [], "primary_callsign": null, "locators": [], "primary_locator": null, "body": "001XQOA2IDZ0" }, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "confidence": "crc12_zero_distance_source_extractmessage174", "rx_only": true, "sort_index": 0 }, { "id": "js8-msg174-2dbbec06", "mode": "JS8", "decoder": "webftr-js8lab-step64-message174-source-confirmed", "text": "Q0VsKWqfJ96x", "raw": "Q0VsKWqfJ96x", "message_text_12chars": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "parsed": { "raw": "Q0VsKWqfJ96x", "normalized": "Q0VSKWQFJ96X", "message_type": "MESSAGE", "directed_to": null, "callsigns": [], "primary_callsign": null, "locators": [], "primary_locator": null, "body": "Q0VSKWQFJ96X" }, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "confidence": "crc12_zero_distance_source_extractmessage174", "rx_only": true, "sort_index": 1 } ], "warnings": [ "Step64 emits source-confirmed message174 CRC12-zero-distance text candidates; it is not yet a full live JS8 decoder chain from audio to final chat UI.", "It starts no JS8Call GUI/Qt process and performs no TX/PTT/Tune/Send actions.", "Random-looking 12-character payloads can still be valid message174 candidates until higher JS8 text/Varicode framing is connected." ], "next_action": "Use Step64 decodes[] as the contract for the next step: connect source-confirmed message174 output into a richer JS8 text/Varicode/framing interpretation and then feed WebFTR RX display fields." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_varicode_frame_unpack_probe_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-source-varicode-frame-unpack-probe", "tool_version": "step66-source-varicode-frame-unpack-probe", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "input_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "selected_input": true } ], "source_resolution": { "selected_source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "checked": [ { "path": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "exists": true, "is_dir": true } ] }, "source_snippets": { "source_available": true, "source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "focused_files_present": [ "JS8_Main/Varicode.cpp", "JS8_Main/Varicode.h", "JS8_JSC/JSC.cpp", "JS8_JSC/JSC.h", "JS8_JSC/JSC_map.cpp", "JS8_JSC/JSC_list.cpp", "JS8_Mode/JS8.cpp" ], "focused_files_missing": [], "snippets": [ { "name": "unpack72bits", "path": "JS8_Main/Varicode.cpp", "line": 767, "context": { "start_line": 762, "end_line": 772, "lines": [ { "line": 762, "text": " quint32 b = packed & 0xFFFFFFFF;" }, { "line": 763, "text": " return pack32bits(a) + pack32bits(b);" }, { "line": 764, "text": "}" }, { "line": 765, "text": "" }, { "line": 766, "text": "// returns the first 64 bits and sets the last 8 bits in pRem" }, { "line": 767, "text": "quint64 Varicode::unpack72bits(QString const &text, quint8 *pRem) {" }, { "line": 768, "text": " quint64 value = 0;" }, { "line": 769, "text": " quint8 rem = 0;" }, { "line": 770, "text": " quint8 mask2 = ((1 << 2) - 1);" }, { "line": 771, "text": "" }, { "line": 772, "text": " for (int i = 0; i < 10; i++) {" } ] } }, { "name": "pack72bits", "path": "JS8_Main/Varicode.cpp", "line": 767, "context": { "start_line": 762, "end_line": 772, "lines": [ { "line": 762, "text": " quint32 b = packed & 0xFFFFFFFF;" }, { "line": 763, "text": " return pack32bits(a) + pack32bits(b);" }, { "line": 764, "text": "}" }, { "line": 765, "text": "" }, { "line": 766, "text": "// returns the first 64 bits and sets the last 8 bits in pRem" }, { "line": 767, "text": "quint64 Varicode::unpack72bits(QString const &text, quint8 *pRem) {" }, { "line": 768, "text": " quint64 value = 0;" }, { "line": 769, "text": " quint8 rem = 0;" }, { "line": 770, "text": " quint8 mask2 = ((1 << 2) - 1);" }, { "line": 771, "text": "" }, { "line": 772, "text": " for (int i = 0; i < 10; i++) {" } ] } }, { "name": "unpackDirectedMessage", "path": "JS8_Main/Varicode.cpp", "line": 1716, "context": { "start_line": 1711, "end_line": 1721, "lines": [ { "line": 1711, "text": " if (n)" }, { "line": 1712, "text": " *n = match.captured(0).length();" }, { "line": 1713, "text": " return Varicode::pack72bits(Varicode::bitsToInt(bits), packed_extra);" }, { "line": 1714, "text": "}" }, { "line": 1715, "text": "" }, { "line": 1716, "text": "QStringList Varicode::unpackDirectedMessage(const QString &text," }, { "line": 1717, "text": " quint8 *pType) {" }, { "line": 1718, "text": " QStringList unpacked;" }, { "line": 1719, "text": "" }, { "line": 1720, "text": " if (text.length() < 12 || text.contains(\" \")) {" }, { "line": 1721, "text": " return unpacked;" } ] } }, { "name": "packDirectedMessage", "path": "JS8_Main/Varicode.cpp", "line": 1605, "context": { "start_line": 1600, "end_line": 1610, "lines": [ { "line": 1600, "text": "" }, { "line": 1601, "text": "// J1Y ACK" }, { "line": 1602, "text": "// J1Y?" }, { "line": 1603, "text": "// KN4CRD: J1Y$" }, { "line": 1604, "text": "// KN4CRD: J1Y! HELLO WORLD" }, { "line": 1605, "text": "QString Varicode::packDirectedMessage(const QString &text," }, { "line": 1606, "text": " const QString &mycall, QString *pTo," }, { "line": 1607, "text": " bool *pToCompound, QString *pCmd," }, { "line": 1608, "text": " QString *pNum, int *n) {" }, { "line": 1609, "text": " QString frame;" }, { "line": 1610, "text": "" } ] } }, { "name": "unpackCompoundFrame", "path": "JS8_Main/Varicode.cpp", "line": 1420, "context": { "start_line": 1415, "end_line": 1425, "lines": [ { "line": 1415, "text": " bool *isAlt, quint8 *pBits3) {" }, { "line": 1416, "text": " quint8 type = Varicode::FrameHeartbeat;" }, { "line": 1417, "text": " quint16 num = nmaxgrid;" }, { "line": 1418, "text": " quint8 bits3 = 0;" }, { "line": 1419, "text": "" }, { "line": 1420, "text": " QStringList unpacked = unpackCompoundFrame(text, &type, &num, &bits3);" }, { "line": 1421, "text": " if (unpacked.isEmpty() || type != Varicode::FrameHeartbeat) {" }, { "line": 1422, "text": " return QStringList{};" }, { "line": 1423, "text": " }" }, { "line": 1424, "text": "" }, { "line": 1425, "text": " unpacked.append(Varicode::unpackGrid(num & ((1 << 15) - 1)));" } ] } }, { "name": "packCompoundFrame", "path": "JS8_Main/Varicode.cpp", "line": 1401, "context": { "start_line": 1396, "end_line": 1406, "lines": [ { "line": 1396, "text": " if (isAlt) {" }, { "line": 1397, "text": " packed_extra |= (1 << 15);" }, { "line": 1398, "text": " cqNumber = cqs.key(type, 0);" }, { "line": 1399, "text": " }" }, { "line": 1400, "text": "" }, { "line": 1401, "text": " frame = packCompoundFrame(callsign, Varicode::FrameHeartbeat, packed_extra," }, { "line": 1402, "text": " cqNumber);" }, { "line": 1403, "text": " if (frame.isEmpty()) {" }, { "line": 1404, "text": " if (n)" }, { "line": 1405, "text": " *n = 0;" }, { "line": 1406, "text": " return frame;" } ] } }, { "name": "unpackCompoundMessage", "path": "JS8_Main/Varicode.cpp", "line": 1491, "context": { "start_line": 1486, "end_line": 1496, "lines": [ { "line": 1486, "text": " if (n)" }, { "line": 1487, "text": " *n = parsedText.captured(0).length();" }, { "line": 1488, "text": " return frame;" }, { "line": 1489, "text": "}" }, { "line": 1490, "text": "" }, { "line": 1491, "text": "QStringList Varicode::unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 1492, "text": " quint8 *pBits3) {" }, { "line": 1493, "text": " quint8 type = Varicode::FrameCompound;" }, { "line": 1494, "text": " quint16 extra = nmaxgrid;" }, { "line": 1495, "text": " quint8 bits3 = 0;" }, { "line": 1496, "text": "" } ] } }, { "name": "unpackHeartbeatMessage", "path": "JS8_Main/Varicode.cpp", "line": 1414, "context": { "start_line": 1409, "end_line": 1419, "lines": [ { "line": 1409, "text": " if (n)" }, { "line": 1410, "text": " *n = parsedText.captured(0).length();" }, { "line": 1411, "text": " return frame;" }, { "line": 1412, "text": "}" }, { "line": 1413, "text": "" }, { "line": 1414, "text": "QStringList Varicode::unpackHeartbeatMessage(const QString &text, quint8 *pType," }, { "line": 1415, "text": " bool *isAlt, quint8 *pBits3) {" }, { "line": 1416, "text": " quint8 type = Varicode::FrameHeartbeat;" }, { "line": 1417, "text": " quint16 num = nmaxgrid;" }, { "line": 1418, "text": " quint8 bits3 = 0;" }, { "line": 1419, "text": "" } ] } }, { "name": "unpackDataMessage", "path": "JS8_Main/Varicode.cpp", "line": 1912, "context": { "start_line": 1907, "end_line": 1917, "lines": [ { "line": 1907, "text": "}" }, { "line": 1908, "text": "" }, { "line": 1909, "text": "// TODO: DEPRECATED in 2.2 (still available for decoding legacy frames, but will" }, { "line": 1910, "text": "// eventually no longer be decodable) unpack data message using 70 bits" }, { "line": 1911, "text": "// available flagged as data by the first 2 bits" }, { "line": 1912, "text": "QString Varicode::unpackDataMessage(const QString &text) {" }, { "line": 1913, "text": " QString unpacked;" }, { "line": 1914, "text": "" }, { "line": 1915, "text": " if (text.length() < 12 || text.contains(\" \")) {" }, { "line": 1916, "text": " return unpacked;" }, { "line": 1917, "text": " }" } ] } }, { "name": "unpackFastDataMessage", "path": "JS8_Main/Varicode.cpp", "line": 1983, "context": { "start_line": 1978, "end_line": 1988, "lines": [ { "line": 1978, "text": "#endif" }, { "line": 1979, "text": "}" }, { "line": 1980, "text": "" }, { "line": 1981, "text": "// unpack data message using the full 72 bits available (with the data flag in" }, { "line": 1982, "text": "// the i3bit header)" }, { "line": 1983, "text": "QString Varicode::unpackFastDataMessage(const QString &text) {" }, { "line": 1984, "text": " QString unpacked;" }, { "line": 1985, "text": "" }, { "line": 1986, "text": " if (text.length() < 12 || text.contains(\" \")) {" }, { "line": 1987, "text": " return unpacked;" }, { "line": 1988, "text": " }" } ] } }, { "name": "unpackCallsign", "path": "JS8_Main/Varicode.cpp", "line": 1037, "context": { "start_line": 1032, "end_line": 1042, "lines": [ { "line": 1032, "text": " packed = 27 * packed + alphanumeric.indexOf(matched.at(5)) - 10;" }, { "line": 1033, "text": "" }, { "line": 1034, "text": " return packed;" }, { "line": 1035, "text": "}" }, { "line": 1036, "text": "" }, { "line": 1037, "text": "QString Varicode::unpackCallsign(quint32 value, bool portable) {" }, { "line": 1038, "text": " foreach (auto key, basecalls.keys()) {" }, { "line": 1039, "text": " if (basecalls[key] == value) {" }, { "line": 1040, "text": " return key;" }, { "line": 1041, "text": " }" }, { "line": 1042, "text": " }" } ] } }, { "name": "unpackAlphaNumeric50", "path": "JS8_Main/Varicode.cpp", "line": 905, "context": { "start_line": 900, "end_line": 910, "lines": [ { "line": 900, "text": " quint64 packed = a + b + c + d + e + f + g + h + i + j + k;" }, { "line": 901, "text": "" }, { "line": 902, "text": " return packed;" }, { "line": 903, "text": "}" }, { "line": 904, "text": "" }, { "line": 905, "text": "QString Varicode::unpackAlphaNumeric50(quint64 packed) {" }, { "line": 906, "text": " QChar word[11];" }, { "line": 907, "text": "" }, { "line": 908, "text": " quint64 tmp = packed % 38;" }, { "line": 909, "text": " word[10] = alphanumeric.at(tmp);" }, { "line": 910, "text": " packed = packed / 38;" } ] } }, { "name": "unpackGrid", "path": "JS8_Main/Varicode.cpp", "line": 1157, "context": { "start_line": 1152, "end_line": 1162, "lines": [ { "line": 1152, "text": " int ilat = pair.second + 90;" }, { "line": 1153, "text": "" }, { "line": 1154, "text": " return ((ilong + 180) / 2) * 180 + ilat;" }, { "line": 1155, "text": "}" }, { "line": 1156, "text": "" }, { "line": 1157, "text": "QString Varicode::unpackGrid(quint16 value) {" }, { "line": 1158, "text": " if (value > nbasegrid) {" }, { "line": 1159, "text": " return \"\";" }, { "line": 1160, "text": " }" }, { "line": 1161, "text": "" }, { "line": 1162, "text": " float dlat = value % 180 - 90;" } ] } }, { "name": "unpackCmd", "path": "JS8_Main/Varicode.cpp", "line": 1207, "context": { "start_line": 1202, "end_line": 1212, "lines": [ { "line": 1202, "text": " }" }, { "line": 1203, "text": "" }, { "line": 1204, "text": " return value;" }, { "line": 1205, "text": "}" }, { "line": 1206, "text": "" }, { "line": 1207, "text": "quint8 Varicode::unpackCmd(quint8 value, quint8 *pNum) {" }, { "line": 1208, "text": " // if the first bit is 1, this is an SNR with a number encoded in the lower" }, { "line": 1209, "text": " // 6 bits" }, { "line": 1210, "text": " if (value & (1 << 7)) {" }, { "line": 1211, "text": " if (pNum)" }, { "line": 1212, "text": " *pNum = value & ((1 << 6) - 1);" } ] } }, { "name": "huffDecode", "path": "JS8_Main/Varicode.cpp", "line": 597, "context": { "start_line": 592, "end_line": 602, "lines": [ { "line": 592, "text": " }" }, { "line": 593, "text": "" }, { "line": 594, "text": " return out;" }, { "line": 595, "text": "}" }, { "line": 596, "text": "" }, { "line": 597, "text": "QString Varicode::huffDecode(QMap const &huff," }, { "line": 598, "text": " QVector const &bitvec) {" }, { "line": 599, "text": " QString text;" }, { "line": 600, "text": "" }, { "line": 601, "text": " QString bits = Varicode::bitsToStr(bitvec);" }, { "line": 602, "text": "" } ] } }, { "name": "JSC::decompress", "path": "JS8_Main/Varicode.cpp", "line": 1938, "context": { "start_line": 1933, "end_line": 1943, "lines": [ { "line": 1933, "text": " // trim off the pad bits" }, { "line": 1934, "text": " bits = bits.mid(1, n - 1);" }, { "line": 1935, "text": "" }, { "line": 1936, "text": " if (compressed) {" }, { "line": 1937, "text": " // partial word (s,c)-dense coding with code tables" }, { "line": 1938, "text": " unpacked = JSC::decompress(bits);" }, { "line": 1939, "text": " } else {" }, { "line": 1940, "text": " // huff decode the bits (without escapes)" }, { "line": 1941, "text": " unpacked = Varicode::huffDecode(Varicode::defaultHuffTable(), bits);" }, { "line": 1942, "text": " }" }, { "line": 1943, "text": "" } ] } }, { "name": "unpack72bits", "path": "JS8_Main/Varicode.h", "line": 135, "context": { "start_line": 130, "end_line": 140, "lines": [ { "line": 130, "text": " static QString pack32bits(quint32 packed);" }, { "line": 131, "text": "" }, { "line": 132, "text": " static quint64 unpack64bits(QString const &value);" }, { "line": 133, "text": " static QString pack64bits(quint64 packed);" }, { "line": 134, "text": "" }, { "line": 135, "text": " static quint64 unpack72bits(QString const &value, quint8 *pRem);" }, { "line": 136, "text": " static QString pack72bits(quint64 value, quint8 rem);" }, { "line": 137, "text": "" }, { "line": 138, "text": " static quint32 packAlphaNumeric22(QString const &value, bool isFlag);" }, { "line": 139, "text": " static QString unpackAlphaNumeric22(quint32 packed, bool *isFlag);" }, { "line": 140, "text": "" } ] } }, { "name": "pack72bits", "path": "JS8_Main/Varicode.h", "line": 135, "context": { "start_line": 130, "end_line": 140, "lines": [ { "line": 130, "text": " static QString pack32bits(quint32 packed);" }, { "line": 131, "text": "" }, { "line": 132, "text": " static quint64 unpack64bits(QString const &value);" }, { "line": 133, "text": " static QString pack64bits(quint64 packed);" }, { "line": 134, "text": "" }, { "line": 135, "text": " static quint64 unpack72bits(QString const &value, quint8 *pRem);" }, { "line": 136, "text": " static QString pack72bits(quint64 value, quint8 rem);" }, { "line": 137, "text": "" }, { "line": 138, "text": " static quint32 packAlphaNumeric22(QString const &value, bool isFlag);" }, { "line": 139, "text": " static QString unpackAlphaNumeric22(quint32 packed, bool *isFlag);" }, { "line": 140, "text": "" } ] } }, { "name": "unpackDirectedMessage", "path": "JS8_Main/Varicode.h", "line": 185, "context": { "start_line": 180, "end_line": 190, "lines": [ { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," }, { "line": 182, "text": " QString const &mycall, QString *pTo," }, { "line": 183, "text": " bool *pToCompound, QString *pCmd," }, { "line": 184, "text": " QString *pNum, int *n);" }, { "line": 185, "text": " static QStringList unpackDirectedMessage(QString const &text," }, { "line": 186, "text": " quint8 *pType);" }, { "line": 187, "text": "" }, { "line": 188, "text": " static QString packDataMessage(QString const &text, int *n);" }, { "line": 189, "text": " static QString unpackDataMessage(QString const &text);" }, { "line": 190, "text": "" } ] } }, { "name": "packDirectedMessage", "path": "JS8_Main/Varicode.h", "line": 181, "context": { "start_line": 176, "end_line": 186, "lines": [ { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," }, { "line": 179, "text": " quint16 *pNum, quint8 *pBits3);" }, { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," }, { "line": 182, "text": " QString const &mycall, QString *pTo," }, { "line": 183, "text": " bool *pToCompound, QString *pCmd," }, { "line": 184, "text": " QString *pNum, int *n);" }, { "line": 185, "text": " static QStringList unpackDirectedMessage(QString const &text," }, { "line": 186, "text": " quint8 *pType);" } ] } }, { "name": "unpackCompoundFrame", "path": "JS8_Main/Varicode.h", "line": 178, "context": { "start_line": 173, "end_line": 183, "lines": [ { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 174, "text": " quint8 *pBits3);" }, { "line": 175, "text": "" }, { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," }, { "line": 179, "text": " quint16 *pNum, quint8 *pBits3);" }, { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," }, { "line": 182, "text": " QString const &mycall, QString *pTo," }, { "line": 183, "text": " bool *pToCompound, QString *pCmd," } ] } }, { "name": "packCompoundFrame", "path": "JS8_Main/Varicode.h", "line": 176, "context": { "start_line": 171, "end_line": 181, "lines": [ { "line": 171, "text": "" }, { "line": 172, "text": " static QString packCompoundMessage(QString const &text, int *n);" }, { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 174, "text": " quint8 *pBits3);" }, { "line": 175, "text": "" }, { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," }, { "line": 179, "text": " quint16 *pNum, quint8 *pBits3);" }, { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," } ] } }, { "name": "unpackCompoundMessage", "path": "JS8_Main/Varicode.h", "line": 173, "context": { "start_line": 168, "end_line": 178, "lines": [ { "line": 168, "text": " static QStringList unpackHeartbeatMessage(const QString &text," }, { "line": 169, "text": " quint8 *pType, bool *isAlt," }, { "line": 170, "text": " quint8 *pBits3);" }, { "line": 171, "text": "" }, { "line": 172, "text": " static QString packCompoundMessage(QString const &text, int *n);" }, { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 174, "text": " quint8 *pBits3);" }, { "line": 175, "text": "" }, { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," } ] } }, { "name": "unpackHeartbeatMessage", "path": "JS8_Main/Varicode.h", "line": 168, "context": { "start_line": 163, "end_line": 173, "lines": [ { "line": 163, "text": " static bool isCompoundCallsign(const QString &callsign);" }, { "line": 164, "text": " static bool isGroupAllowed(const QString &group);" }, { "line": 165, "text": "" }, { "line": 166, "text": " static QString packHeartbeatMessage(QString const &text," }, { "line": 167, "text": " QString const &callsign, int *n);" }, { "line": 168, "text": " static QStringList unpackHeartbeatMessage(const QString &text," }, { "line": 169, "text": " quint8 *pType, bool *isAlt," }, { "line": 170, "text": " quint8 *pBits3);" }, { "line": 171, "text": "" }, { "line": 172, "text": " static QString packCompoundMessage(QString const &text, int *n);" }, { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," } ] } }, { "name": "unpackDataMessage", "path": "JS8_Main/Varicode.h", "line": 189, "context": { "start_line": 184, "end_line": 194, "lines": [ { "line": 184, "text": " QString *pNum, int *n);" }, { "line": 185, "text": " static QStringList unpackDirectedMessage(QString const &text," }, { "line": 186, "text": " quint8 *pType);" }, { "line": 187, "text": "" }, { "line": 188, "text": " static QString packDataMessage(QString const &text, int *n);" }, { "line": 189, "text": " static QString unpackDataMessage(QString const &text);" }, { "line": 190, "text": "" }, { "line": 191, "text": " static QString packFastDataMessage(QString const &text, int *n);" }, { "line": 192, "text": " static QString unpackFastDataMessage(QString const &text);" }, { "line": 193, "text": "" }, { "line": 194, "text": " static QList>" } ] } }, { "name": "unpackFastDataMessage", "path": "JS8_Main/Varicode.h", "line": 192, "context": { "start_line": 187, "end_line": 197, "lines": [ { "line": 187, "text": "" }, { "line": 188, "text": " static QString packDataMessage(QString const &text, int *n);" }, { "line": 189, "text": " static QString unpackDataMessage(QString const &text);" }, { "line": 190, "text": "" }, { "line": 191, "text": " static QString packFastDataMessage(QString const &text, int *n);" }, { "line": 192, "text": " static QString unpackFastDataMessage(QString const &text);" }, { "line": 193, "text": "" }, { "line": 194, "text": " static QList>" }, { "line": 195, "text": " buildMessageFrames(QString const &mycall, QString const &mygrid," }, { "line": 196, "text": " QString const &selectedCall, QString const &text," }, { "line": 197, "text": " bool forceIdentify, bool forceData, int submode," } ] } }, { "name": "unpackCallsign", "path": "JS8_Main/Varicode.h", "line": 145, "context": { "start_line": 140, "end_line": 150, "lines": [ { "line": 140, "text": "" }, { "line": 141, "text": " static quint64 packAlphaNumeric50(QString const &value);" }, { "line": 142, "text": " static QString unpackAlphaNumeric50(quint64 packed);" }, { "line": 143, "text": "" }, { "line": 144, "text": " static quint32 packCallsign(QString const &value, bool *pPortable);" }, { "line": 145, "text": " static QString unpackCallsign(quint32 value, bool portable);" }, { "line": 146, "text": "" }, { "line": 147, "text": " static QString deg2grid(float dlong, float dlat);" }, { "line": 148, "text": " static QPair grid2deg(QString const &grid);" }, { "line": 149, "text": " static quint16 packGrid(QString const &value);" }, { "line": 150, "text": " static QString unpackGrid(quint16 value);" } ] } }, { "name": "unpackAlphaNumeric50", "path": "JS8_Main/Varicode.h", "line": 142, "context": { "start_line": 137, "end_line": 147, "lines": [ { "line": 137, "text": "" }, { "line": 138, "text": " static quint32 packAlphaNumeric22(QString const &value, bool isFlag);" }, { "line": 139, "text": " static QString unpackAlphaNumeric22(quint32 packed, bool *isFlag);" }, { "line": 140, "text": "" }, { "line": 141, "text": " static quint64 packAlphaNumeric50(QString const &value);" }, { "line": 142, "text": " static QString unpackAlphaNumeric50(quint64 packed);" }, { "line": 143, "text": "" }, { "line": 144, "text": " static quint32 packCallsign(QString const &value, bool *pPortable);" }, { "line": 145, "text": " static QString unpackCallsign(quint32 value, bool portable);" }, { "line": 146, "text": "" }, { "line": 147, "text": " static QString deg2grid(float dlong, float dlat);" } ] } }, { "name": "unpackGrid", "path": "JS8_Main/Varicode.h", "line": 150, "context": { "start_line": 145, "end_line": 155, "lines": [ { "line": 145, "text": " static QString unpackCallsign(quint32 value, bool portable);" }, { "line": 146, "text": "" }, { "line": 147, "text": " static QString deg2grid(float dlong, float dlat);" }, { "line": 148, "text": " static QPair grid2deg(QString const &grid);" }, { "line": 149, "text": " static quint16 packGrid(QString const &value);" }, { "line": 150, "text": " static QString unpackGrid(quint16 value);" }, { "line": 151, "text": "" }, { "line": 152, "text": " static quint8 packNum(QString const &num, bool *ok);" }, { "line": 153, "text": " static quint8 packPwr(QString const &pwr, bool *ok);" }, { "line": 154, "text": " static quint8 packCmd(quint8 cmd, quint8 num, bool *pPackedNum);" }, { "line": 155, "text": " static quint8 unpackCmd(quint8 value, quint8 *pNum);" } ] } }, { "name": "unpackCmd", "path": "JS8_Main/Varicode.h", "line": 155, "context": { "start_line": 150, "end_line": 160, "lines": [ { "line": 150, "text": " static QString unpackGrid(quint16 value);" }, { "line": 151, "text": "" }, { "line": 152, "text": " static quint8 packNum(QString const &num, bool *ok);" }, { "line": 153, "text": " static quint8 packPwr(QString const &pwr, bool *ok);" }, { "line": 154, "text": " static quint8 packCmd(quint8 cmd, quint8 num, bool *pPackedNum);" }, { "line": 155, "text": " static quint8 unpackCmd(quint8 value, quint8 *pNum);" }, { "line": 156, "text": "" }, { "line": 157, "text": " static bool isSNRCommand(const QString &cmd);" }, { "line": 158, "text": " static bool isCommandAllowed(const QString &cmd);" }, { "line": 159, "text": " static bool isCommandBuffered(const QString &cmd);" }, { "line": 160, "text": " static int isCommandChecksumed(const QString &cmd);" } ] } }, { "name": "huffDecode", "path": "JS8_Main/Varicode.h", "line": 107, "context": { "start_line": 102, "end_line": 112, "lines": [ { "line": 102, "text": " static QStringList parseCallsigns(QString const &input);" }, { "line": 103, "text": " static QStringList parseGrids(QString const &input);" }, { "line": 104, "text": "" }, { "line": 105, "text": " static QList>>" }, { "line": 106, "text": " huffEncode(const QMap &huff, QString const &text);" }, { "line": 107, "text": " static QString huffDecode(const QMap &huff," }, { "line": 108, "text": " QVector const &bitvec);" }, { "line": 109, "text": " static QSet huffValidChars(const QMap &huff);" }, { "line": 110, "text": "" }, { "line": 111, "text": " static QVector bytesToBits(char *bitvec, int n);" }, { "line": 112, "text": " static QVector strToBits(QString const &bitvec);" } ] } }, { "name": "JSC::decompress", "path": "JS8_JSC/JSC.cpp", "line": 127, "context": { "start_line": 122, "end_line": 132, "lines": [ { "line": 122, "text": " * @brief Decompresses the given bit vector into a string." }, { "line": 123, "text": " *" }, { "line": 124, "text": " * @param bitvec" }, { "line": 125, "text": " * @return QString" }, { "line": 126, "text": " */" }, { "line": 127, "text": "QString JSC::decompress(Codeword const &bitvec) {" }, { "line": 128, "text": " const quint32 b = 4;" }, { "line": 129, "text": " const quint32 s = 7;" }, { "line": 130, "text": " const quint32 c = pow(2, b) - s;" }, { "line": 131, "text": "" }, { "line": 132, "text": " QStringList out;" } ] } } ] }, "source_contract": { "message174_alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "alphabet72": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+/?.", "frame_types": { "0": "FrameHeartbeat", "1": "FrameCompound", "2": "FrameCompoundDirected", "3": "FrameDirected", "4": "FrameData", "5": "FrameData", "6": "FrameDataCompressed", "7": "FrameDataCompressed" }, "implemented_rx_unpack": [ "unpack72bits", "frame_type", "directed", "heartbeat", "compound", "callsign", "grid", "legacy_huff_data_probe" ], "not_yet_ported": [ "JSC::decompress full compressed text", "multi-frame buffer assembly", "WebFTR live integration" ] }, "input_decode_count": 2, "frame_probe_count": 2, "webftr_display_count": 0, "hidden_candidate_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "webftr_rx_rows": [], "candidate_rows": [ { "id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3fa90037", "mode": "JS8", "text": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "001XqOA2iDZ0", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 107552465662168, "value_hex": "0x000061d18282b0d8", "rem": 192, "top3": 0, "top2": 0, "first_16_bits": "0000000000000000" }, "frame_type": "FrameHeartbeat", "frame_type_bits": 0, "displayable_after_frame_unpack": false, "frame_fields": { "packed_type": 0, "callsign": "004REY/0V4", "packed_callsign": 52515852374, "packed_num": 6936, "bits3": 0, "valid_callsign_hint": true, "kind": "heartbeat_or_cq", "is_cq_alt": false, "grid": "OJ16", "message_token": "HB", "valid_grid_hint": true }, "plausibility": { "score": 6, "reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "HB 004REY/0V4 OJ16" }, "show_in_rx_list": false, "display_text": "HB 004REY/0V4 OJ16", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 0 }, { "id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-2dbbec06", "mode": "JS8", "text": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "Q0VsKWqfJ96x", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 7496230937050041489, "value_hex": "0x6807f6520d294c91", "rem": 187, "top3": 3, "top2": 1, "first_16_bits": "0110100000000111" }, "frame_type": "FrameDirected", "frame_type_bits": 3, "displayable_after_frame_unpack": false, "frame_fields": { "from": "9I2TZR/P", "to": "0Z0PMP", "cmd_id": 17, "cmd": " INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "portable_from": true, "portable_to": false, "valid_from_hint": true, "valid_to_hint": true }, "plausibility": { "score": 10, "reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "9I2TZR/P 0Z0PMP INFO 28" }, "show_in_rx_list": false, "display_text": "9I2TZR/P 0Z0PMP INFO 28", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 1 } ], "suppressed_candidates": [ { "id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3fa90037", "mode": "JS8", "text": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "001XqOA2iDZ0", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 107552465662168, "value_hex": "0x000061d18282b0d8", "rem": 192, "top3": 0, "top2": 0, "first_16_bits": "0000000000000000" }, "frame_type": "FrameHeartbeat", "frame_type_bits": 0, "displayable_after_frame_unpack": false, "frame_fields": { "packed_type": 0, "callsign": "004REY/0V4", "packed_callsign": 52515852374, "packed_num": 6936, "bits3": 0, "valid_callsign_hint": true, "kind": "heartbeat_or_cq", "is_cq_alt": false, "grid": "OJ16", "message_token": "HB", "valid_grid_hint": true }, "plausibility": { "score": 6, "reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "HB 004REY/0V4 OJ16" }, "show_in_rx_list": false, "display_text": "HB 004REY/0V4 OJ16", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 0 }, { "id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-2dbbec06", "mode": "JS8", "text": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "Q0VsKWqfJ96x", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 7496230937050041489, "value_hex": "0x6807f6520d294c91", "rem": 187, "top3": 3, "top2": 1, "first_16_bits": "0110100000000111" }, "frame_type": "FrameDirected", "frame_type_bits": 3, "displayable_after_frame_unpack": false, "frame_fields": { "from": "9I2TZR/P", "to": "0Z0PMP", "cmd_id": 17, "cmd": " INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "portable_from": true, "portable_to": false, "valid_from_hint": true, "valid_to_hint": true }, "plausibility": { "score": 10, "reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "9I2TZR/P 0Z0PMP INFO 28" }, "show_in_rx_list": false, "display_text": "9I2TZR/P 0Z0PMP INFO 28", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 1 } ], "verdict": "source_varicode_frames_classified_but_not_displayable", "warnings": [ "Step66 is still RX-only diagnostics. It classifies message174 text as JS8 Varicode frame families but does not start JS8Call GUI/Qt.", "Rows remain hidden unless callsign/grid/command/text plausibility survives source-style frame unpacking.", "Compressed Data frames still require a later JSC::decompress port before real JS8 chat text can be displayed." ], "next_action": "If frame types look plausible but hidden, port JSC::decompress and multi-frame assembly next; if a display row appears, wire webftr_rx_rows into the JS8 RX UI contract." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_control_frame_rx_release_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-source-confirmed-control-frame-rx-release", "tool_version": "step67-source-confirmed-control-frame-rx-release", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "input_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_varicode_frame_unpack_probe_output.json", "exists": true, "selected_input": true, "input_kind": "step66_source_varicode_frame_unpack_probe" } ], "source_step66_version": "step66-source-varicode-frame-unpack-probe", "source_frame_probe_count": 2, "source_webftr_display_count_before_release": 0, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "release_contract": { "allowed_to_display": [ "FrameCompound", "FrameCompoundDirected", "FrameDirected", "FrameHeartbeat" ], "blocked_until_future_steps": [ "FrameData", "FrameDataCompressed" ], "minimum_conditions": [ "valid_message174_crc12 == true", "crc12_distance == 0", "source Varicode frame unpack produced a supported fixed control frame", "frame_display_candidate == true" ], "data_text_rule": "FrameData and FrameDataCompressed stay hidden until JSC::decompress/multi-frame assembly is ported and tested." }, "input_candidate_count": 2, "webftr_display_count": 2, "hidden_candidate_count": 0, "webftr_rx_rows": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3fa90037", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-2dbbec06", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "candidate_rows": [ { "id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3fa90037", "mode": "JS8", "text": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "001XqOA2iDZ0", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 107552465662168, "value_hex": "0x000061d18282b0d8", "rem": 192, "top3": 0, "top2": 0, "first_16_bits": "0000000000000000" }, "frame_type": "FrameHeartbeat", "frame_type_bits": 0, "displayable_after_frame_unpack": false, "frame_fields": { "packed_type": 0, "callsign": "004REY/0V4", "packed_callsign": 52515852374, "packed_num": 6936, "bits3": 0, "valid_callsign_hint": true, "kind": "heartbeat_or_cq", "is_cq_alt": false, "grid": "OJ16", "message_token": "HB", "valid_grid_hint": true }, "plausibility": { "score": 6, "reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "HB 004REY/0V4 OJ16" }, "show_in_rx_list": false, "display_text": "HB 004REY/0V4 OJ16", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 0 }, { "id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-2dbbec06", "mode": "JS8", "text": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "Q0VsKWqfJ96x", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 7496230937050041489, "value_hex": "0x6807f6520d294c91", "rem": 187, "top3": 3, "top2": 1, "first_16_bits": "0110100000000111" }, "frame_type": "FrameDirected", "frame_type_bits": 3, "displayable_after_frame_unpack": false, "frame_fields": { "from": "9I2TZR/P", "to": "0Z0PMP", "cmd_id": 17, "cmd": " INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "portable_from": true, "portable_to": false, "valid_from_hint": true, "valid_to_hint": true }, "plausibility": { "score": 10, "reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "9I2TZR/P 0Z0PMP INFO 28" }, "show_in_rx_list": false, "display_text": "9I2TZR/P 0Z0PMP INFO 28", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 1 } ], "suppressed_candidates": [], "release_decisions": [ { "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "raw_message174": "001XqOA2iDZ0", "frame_type": "FrameHeartbeat", "decision": "released_source_confirmed_control_frame", "sort_index": 0, "released_row_id": "js8-rx67-de15d3110b0d" }, { "source_candidate_id": "js8-frame66-66ab29ded46c", "raw_message174": "Q0VsKWqfJ96x", "frame_type": "FrameDirected", "decision": "released_source_confirmed_control_frame", "sort_index": 1, "released_row_id": "js8-rx67-bd37f68199eb" } ], "verdict": "source_confirmed_control_frames_ready_for_webftr_rx_rows", "warnings": [ "Step67 is still RX-only and does not start JS8Call GUI/Qt.", "Only source-confirmed fixed control frames such as Heartbeat/Directed/Compound are released to webftr_rx_rows.", "Free-text Data/Compressed frames remain blocked until JSC::decompress and multi-frame assembly are source-ported and tested." ], "next_action": "Wire these guarded webftr_rx_rows into the JS8 RX display contract, then continue with JSC::decompress/multi-frame assembly for real JS8 chat text." } ---------- STEP85 WINDOW 1: 84.0s..132.0s score=7.7608 ---------- [webftr-js8-lab] window WAV: /decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_01_0084_0132.wav [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window1_candidate_export_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "mode": "JS8", "tool": "webftr-js8-fec-candidate-export", "tool_version": "step63-source-exact-interleaver-whitening-index-extract", "input_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_01_0084_0132.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step43_profile_anchor_candidate_export_no_message_unpack", "selected_profile": { "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": 11.223, "base_freq_hz": 1000.0, "candidate_score": 34.55, "costas_hits": 3, "avg_margin_db": -0.62, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 71, "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": 209.7525 }, "profile_selection_source": "profile_scan_prefer_js8", "profile_scan_json": null, "anchor_json": null, "anchor_selection": { "source": "candidate_export_local_profile_scan", "path": null, "selection": "local_profile_scan_selected_profile", "nsps": 6192, "start_seconds": 11.223, "base_freq_hz": 1000.0, "tone_spacing_hz": 1.937984 }, "anchor_attempts": [ { "source": "candidate_export_local_profile_scan", "path": null, "selection": "local_profile_scan_selected_profile", "nsps": 6192, "start_seconds": 11.223, "base_freq_hz": 1000.0, "tone_spacing_hz": 1.937984 } ], "anchor_expected_enabled": true, "prefer_js8_realistic_profile": true, "nsps_used": 6192, "nsps_is_js8_realistic": true, "wav": { "path": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_01_0084_0132.wav", "channels": 1, "sample_rate": 12000, "sample_width_bytes": 2, "frames": 576000, "duration_seconds": 48.0, "rms_dbfs": -9.12, "peak_dbfs": -2.1, "clipped": false }, "sync_candidate": { "start_sample": 134676, "start_seconds": 11.223, "base_freq_hz": 1000.0, "tone_spacing_hz": 1.937984, "nsps": 6192, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "candidate_export_local_profile_scan" }, "frame_candidate": { "input_symbol_count": 71, "excluded_costas_symbol_count": 0, "detected_costas_blocks": [], "data_symbol_count_available": 71, "data_symbol_count_used": 58, "expected_data_symbols_candidate": 58, "costas_policy": "js8_leading_only" }, "fec_input_summary": { "soft_bit_count": 174, "missing_soft_bits": 0, "complete_ldpc_input_candidate": true, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "anchor_context": { "enabled": true, "source": "candidate_export_local_profile_scan", "start_seconds": 11.223, "base_freq_hz": 1000.0, "tone_spacing_hz": 1.937984, "nsps": 6192, "symbol_count_extracted": 71 }, "variant_count": 23, "selected_variant": { "name": "raw_msb_symbol_order", "rank_score": 126.620168, "complete_174bit_candidate": true, "hard_bits_sha256_16": "c09d2157282e0031", "hard_weight_174": 62, "llr_stats": { "count": 174, "avg_abs": 2.155042, "min_abs": 0.018515, "max_abs": 4.728646, "positive": 111, "negative": 63, "zero": 0 } }, "variants": [ { "name": "raw_msb_symbol_order", "description": "Current FEC bridge: Costas-stripped symbols, MSB-first tone bits.", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "011100100000000000100011100100100000000001010001000101111111110000001000000000001010010010000001000001000010011011011001011011011011001000110100111111001000010000000001001011", "hard_bits_sha256_16": "c09d2157282e0031", "hard_weight_174": 62, "llr_full_174": [ 1.633064, -1.631368, -1.574281, -1.76176, 1.561064, 0.663107, -3.452614, 3.391474, 2.499076, 3.276848, 1.116321, 2.652777, 4.504143, 1.270082, 1.139946, 3.096907, 1.974989, 1.568439, -0.483434, 0.606103, 0.477851, 1.988315, -1.753778, -1.862566, -0.178398, 0.257703, 1.643774, -1.026773, 1.084321, 0.804825, -0.636096, 0.690672, 0.444356, 3.190836, 1.152519, 1.874325, 4.239997, 3.517692, 2.465215, 3.523283, 3.334664, -3.376877, 1.988147, -0.422549, 1.099215, 3.837496, 0.197421, -0.018515, 4.536053, 2.439239, 0.536783, -3.00248, 3.065736, -2.682066, -3.599576, -3.160694, -2.288811, -3.671427, -2.392557, -1.898565, -3.582343, -1.545558, 1.53032, 2.251942, 0.744535, 1.660356, 4.299086, 3.436269, -1.412322, 0.588611, 0.932634, -0.026131, 2.886539, 3.425073, 3.386407, 2.246844, 2.490385, 1.027258, 4.728646, 3.567218, -0.11538, 0.944531, -0.945201, 1.267445, 1.078551, -1.115434, 1.396525, 4.156156, -1.130571, 1.183036, 4.126879, 1.468985, 1.045646, 3.316425, 2.290162, -0.136005, 4.699025, 3.878235, 0.181983, 4.281536, 3.265498, -0.958075, 3.369667, 0.490512, 1.053258, 2.583423, -1.631158, 2.850878, 1.357721, -1.355811, -1.151342, 3.459089, -3.254627, -0.344806, 3.154483, -3.090977, -0.055006, 3.23499, 3.161744, -2.48777, 1.61847, -1.614968, -1.619767, 3.155401, -3.15181, -3.139324, 2.032908, -1.986055, -2.015791, 2.767821, -2.730089, -1.227843, 2.890183, 3.013762, -2.439619, 4.255831, 3.489516, 1.762176, -3.545572, -1.847744, 1.156592, -4.154313, 0.722649, 1.265602, -3.433394, -0.939924, -0.800163, -3.648329, -2.705101, -3.479748, 3.831314, 3.116813, -0.68465, 4.380442, 3.826223, 1.172412, 1.69897, -0.471866, 1.304231, 4.540544, 3.289736, 0.339261, 3.038146, 3.668167, 0.18622, 4.09835, 3.418868, -1.068462, 3.662905, 0.756926, -0.7355, 2.340398, -2.116588, -1.56285 ], "llr_stats": { "count": 174, "avg_abs": 2.155042, "min_abs": 0.018515, "max_abs": 4.728646, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 126.620168 }, { "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": "110001001000000000001110001001001000000100010100000101111111011000100000000000100010010010000100000100000010110110110100110110110110100000011001111111100000010000000100100110", "hard_bits_sha256_16": "98bb92af60ef3af8", "hard_weight_174": 62, "llr_full_174": [ 1.633064, -1.631368, -1.574281, -1.76176, 1.561064, 0.663107, -3.452614, 3.391474, 2.499076, 3.276848, 1.116321, 2.652777, 4.504143, 1.270082, 1.139946, 3.096907, 1.974989, 1.568439, -0.483434, 0.606103, 0.477851, 1.988315, -1.753778, -1.862566, -0.178398, 0.257703, 1.643774, -1.026773, 1.084321, 0.804825, -0.636096, 0.690672, 0.444356, 3.190836, 1.152519, 1.874325, 4.239997, 3.517692, 2.465215, 3.523283, 3.334664, -3.376877, 1.988147, -0.422549, 1.099215, 3.837496, 0.197421, -0.018515, 4.536053, 2.439239, 0.536783, -3.00248, 3.065736, -2.682066, -3.599576, -3.160694, -2.288811, -3.671427, -2.392557, -1.898565, -3.582343, -1.545558, 1.53032, 2.251942, 0.744535, 1.660356, 4.299086, 3.436269, -1.412322, 0.588611, 0.932634, -0.026131, 2.886539, 3.425073, 3.386407, 2.246844, 2.490385, 1.027258, 4.728646, 3.567218, -0.11538, 0.944531, -0.945201, 1.267445, 1.078551, -1.115434, 1.396525, 4.156156, -1.130571, 1.183036, 4.126879, 1.468985, 1.045646, 3.316425, 2.290162, -0.136005, 4.699025, 3.878235, 0.181983, 4.281536, 3.265498, -0.958075, 3.369667, 0.490512, 1.053258, 2.583423, -1.631158, 2.850878, 1.357721, -1.355811, -1.151342, 3.459089, -3.254627, -0.344806, 3.154483, -3.090977, -0.055006, 3.23499, 3.161744, -2.48777, 1.61847, -1.614968, -1.619767, 3.155401, -3.15181, -3.139324, 2.032908, -1.986055, -2.015791, 2.767821, -2.730089, -1.227843, 2.890183, 3.013762, -2.439619, 4.255831, 3.489516, 1.762176, -3.545572, -1.847744, 1.156592, -4.154313, 0.722649, 1.265602, -3.433394, -0.939924, -0.800163, -3.648329, -2.705101, -3.479748, 3.831314, 3.116813, -0.68465, 4.380442, 3.826223, 1.172412, 1.69897, -0.471866, 1.304231, 4.540544, 3.289736, 0.339261, 3.038146, 3.668167, 0.18622, 4.09835, 3.418868, -1.068462, 3.662905, 0.756926, -0.7355, 2.340398, -2.116588, -1.56285 ], "llr_stats": { "count": 174, "avg_abs": 2.155042, "min_abs": 0.018515, "max_abs": 4.728646, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 118.620168 }, { "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": "011001001000000010000001111111100110000001011011011011001011011011010000001000001000010010010001000000000001000110111111101000001010001000000100100100011100000000000100100011", "hard_bits_sha256_16": "5fafd839d321001b", "hard_weight_174": 62, "llr_full_174": [ -1.56285, -2.116588, 2.340398, -0.7355, 0.756926, 3.662905, -1.068462, 3.418868, 4.09835, 0.18622, 3.668167, 3.038146, 0.339261, 3.289736, 4.540544, 1.304231, -0.471866, 1.69897, 1.172412, 3.826223, 4.380442, -0.68465, 3.116813, 3.831314, -3.479748, -2.705101, -3.648329, -0.800163, -0.939924, -3.433394, 1.265602, 0.722649, -4.154313, 1.156592, -1.847744, -3.545572, 1.762176, 3.489516, 4.255831, -2.439619, 3.013762, 2.890183, -1.227843, -2.730089, 2.767821, -2.015791, -1.986055, 2.032908, -3.139324, -3.15181, 3.155401, -1.619767, -1.614968, 1.61847, -2.48777, 3.161744, 3.23499, -0.055006, -3.090977, 3.154483, -0.344806, -3.254627, 3.459089, -1.151342, -1.355811, 1.357721, 2.850878, -1.631158, 2.583423, 1.053258, 0.490512, 3.369667, -0.958075, 3.265498, 4.281536, 0.181983, 3.878235, 4.699025, -0.136005, 2.290162, 3.316425, 1.045646, 1.468985, 4.126879, 1.183036, -1.130571, 4.156156, 1.396525, -1.115434, 1.078551, 1.267445, -0.945201, 0.944531, -0.11538, 3.567218, 4.728646, 1.027258, 2.490385, 2.246844, 3.386407, 3.425073, 2.886539, -0.026131, 0.932634, 0.588611, -1.412322, 3.436269, 4.299086, 1.660356, 0.744535, 2.251942, 1.53032, -1.545558, -3.582343, -1.898565, -2.392557, -3.671427, -2.288811, -3.160694, -3.599576, -2.682066, 3.065736, -3.00248, 0.536783, 2.439239, 4.536053, -0.018515, 0.197421, 3.837496, 1.099215, -0.422549, 1.988147, -3.376877, 3.334664, 3.523283, 2.465215, 3.517692, 4.239997, 1.874325, 1.152519, 3.190836, 0.444356, 0.690672, -0.636096, 0.804825, 1.084321, -1.026773, 1.643774, 0.257703, -0.178398, -1.862566, -1.753778, 1.988315, 0.477851, 0.606103, -0.483434, 1.568439, 1.974989, 3.096907, 1.139946, 1.270082, 4.504143, 2.652777, 1.116321, 3.276848, 2.499076, 3.391474, -3.452614, 0.663107, 1.561064, -1.76176, -1.574281, -1.631368, 1.633064 ], "llr_stats": { "count": 174, "avg_abs": 2.155042, "min_abs": 0.018515, "max_abs": 4.728646, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 112.620168 }, { "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": "110100100000000010000100111111001011000100110110110110100110110110010000100000100000010010010100000000000100000011111111101000100010100000000001001001110001000000000001001110", "hard_bits_sha256_16": "cb769d2eec69798f", "hard_weight_174": 62, "llr_full_174": [ -1.56285, -2.116588, 2.340398, -0.7355, 0.756926, 3.662905, -1.068462, 3.418868, 4.09835, 0.18622, 3.668167, 3.038146, 0.339261, 3.289736, 4.540544, 1.304231, -0.471866, 1.69897, 1.172412, 3.826223, 4.380442, -0.68465, 3.116813, 3.831314, -3.479748, -2.705101, -3.648329, -0.800163, -0.939924, -3.433394, 1.265602, 0.722649, -4.154313, 1.156592, -1.847744, -3.545572, 1.762176, 3.489516, 4.255831, -2.439619, 3.013762, 2.890183, -1.227843, -2.730089, 2.767821, -2.015791, -1.986055, 2.032908, -3.139324, -3.15181, 3.155401, -1.619767, -1.614968, 1.61847, -2.48777, 3.161744, 3.23499, -0.055006, -3.090977, 3.154483, -0.344806, -3.254627, 3.459089, -1.151342, -1.355811, 1.357721, 2.850878, -1.631158, 2.583423, 1.053258, 0.490512, 3.369667, -0.958075, 3.265498, 4.281536, 0.181983, 3.878235, 4.699025, -0.136005, 2.290162, 3.316425, 1.045646, 1.468985, 4.126879, 1.183036, -1.130571, 4.156156, 1.396525, -1.115434, 1.078551, 1.267445, -0.945201, 0.944531, -0.11538, 3.567218, 4.728646, 1.027258, 2.490385, 2.246844, 3.386407, 3.425073, 2.886539, -0.026131, 0.932634, 0.588611, -1.412322, 3.436269, 4.299086, 1.660356, 0.744535, 2.251942, 1.53032, -1.545558, -3.582343, -1.898565, -2.392557, -3.671427, -2.288811, -3.160694, -3.599576, -2.682066, 3.065736, -3.00248, 0.536783, 2.439239, 4.536053, -0.018515, 0.197421, 3.837496, 1.099215, -0.422549, 1.988147, -3.376877, 3.334664, 3.523283, 2.465215, 3.517692, 4.239997, 1.874325, 1.152519, 3.190836, 0.444356, 0.690672, -0.636096, 0.804825, 1.084321, -1.026773, 1.643774, 0.257703, -0.178398, -1.862566, -1.753778, 1.988315, 0.477851, 0.606103, -0.483434, 1.568439, 1.974989, 3.096907, 1.139946, 1.270082, 4.504143, 2.652777, 1.116321, 3.276848, 2.499076, 3.391474, -3.452614, 0.663107, 1.561064, -1.76176, -1.574281, -1.631368, 1.633064 ], "llr_stats": { "count": 174, "avg_abs": 2.155042, "min_abs": 0.018515, "max_abs": 4.728646, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 111.620168 }, { "name": "mapped_raw_msb+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "011100100000000000100011100100100000000001010001000101111111110000001000000000001010010010000001000001000010011011011001011011011011001000110100111111001000010000000001001011", "hard_bits_sha256_16": "c09d2157282e0031", "hard_weight_174": 62, "llr_full_174": [ 1.633064, -1.631368, -1.574281, -1.76176, 1.561064, 0.663107, -3.452614, 3.391474, 2.499076, 3.276848, 1.116321, 2.652777, 4.504143, 1.270082, 1.139946, 3.096907, 1.974989, 1.568439, -0.483434, 0.606103, 0.477851, 1.988315, -1.753778, -1.862566, -0.178398, 0.257703, 1.643774, -1.026773, 1.084321, 0.804825, -0.636096, 0.690672, 0.444356, 3.190836, 1.152519, 1.874325, 4.239997, 3.517692, 2.465215, 3.523283, 3.334664, -3.376877, 1.988147, -0.422549, 1.099215, 3.837496, 0.197421, -0.018515, 4.536053, 2.439239, 0.536783, -3.00248, 3.065736, -2.682066, -3.599576, -3.160694, -2.288811, -3.671427, -2.392557, -1.898565, -3.582343, -1.545558, 1.53032, 2.251942, 0.744535, 1.660356, 4.299086, 3.436269, -1.412322, 0.588611, 0.932634, -0.026131, 2.886539, 3.425073, 3.386407, 2.246844, 2.490385, 1.027258, 4.728646, 3.567218, -0.11538, 0.944531, -0.945201, 1.267445, 1.078551, -1.115434, 1.396525, 4.156156, -1.130571, 1.183036, 4.126879, 1.468985, 1.045646, 3.316425, 2.290162, -0.136005, 4.699025, 3.878235, 0.181983, 4.281536, 3.265498, -0.958075, 3.369667, 0.490512, 1.053258, 2.583423, -1.631158, 2.850878, 1.357721, -1.355811, -1.151342, 3.459089, -3.254627, -0.344806, 3.154483, -3.090977, -0.055006, 3.23499, 3.161744, -2.48777, 1.61847, -1.614968, -1.619767, 3.155401, -3.15181, -3.139324, 2.032908, -1.986055, -2.015791, 2.767821, -2.730089, -1.227843, 2.890183, 3.013762, -2.439619, 4.255831, 3.489516, 1.762176, -3.545572, -1.847744, 1.156592, -4.154313, 0.722649, 1.265602, -3.433394, -0.939924, -0.800163, -3.648329, -2.705101, -3.479748, 3.831314, 3.116813, -0.68465, 4.380442, 3.826223, 1.172412, 1.69897, -0.471866, 1.304231, 4.540544, 3.289736, 0.339261, 3.038146, 3.668167, 0.18622, 4.09835, 3.418868, -1.068462, 3.662905, 0.756926, -0.7355, 2.340398, -2.116588, -1.56285 ], "llr_stats": { "count": 174, "avg_abs": 2.155042, "min_abs": 0.018515, "max_abs": 4.728646, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 108.620168 }, { "name": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000111000010000010000100001100101011010001110011001000000000001110001010001101000101100001001100000010000011010000110100000111011100110000100100001101001001010100000101001101", "hard_bits_sha256_16": "497770972cff4236", "hard_weight_174": 62, "llr_full_174": [ 1.633064, 4.156156, 1.099215, -1.227843, -1.753778, -1.355811, 4.299086, 4.380442, 2.652777, 0.181983, -3.160694, 0.722649, 3.190836, 1.61847, 1.027258, 0.18622, -3.452614, 3.316425, 0.536783, 1.762176, 1.084321, -3.090977, 2.886539, 4.540544, 1.568439, 1.053258, -1.545558, -2.705101, 3.523283, 2.032908, -0.945201, 0.756926, -1.76176, 4.126879, -0.018515, -2.439619, 0.257703, -3.254627, 0.588611, 1.69897, 1.139946, -0.958075, -2.392557, -0.939924, 4.239997, 3.155401, -0.11538, -1.068462, 3.276848, 4.699025, -2.682066, 1.156592, 0.690672, 3.161744, 2.246844, 3.038146, 0.477851, 2.850878, 0.744535, 3.116813, 1.988147, 2.767821, -1.115434, -2.116588, -1.574281, 1.183036, 0.197421, 3.013762, -0.178398, 3.459089, -1.412322, 1.172412, 1.270082, 3.265498, -3.671427, -3.433394, 1.874325, -1.619767, 3.567218, 3.418868, 2.499076, -0.136005, 3.065736, -1.847744, -0.636096, 3.23499, 3.386407, 0.339261, 0.606103, -1.631158, 2.251942, 3.831314, -3.376877, -2.015791, 1.078551, 2.340398, 0.663107, 1.045646, 2.439239, 3.489516, -1.026773, 3.154483, -0.026131, 1.304231, 1.974989, 0.490512, -3.582343, -3.648329, 2.465215, -3.139324, 0.944531, 3.662905, 1.116321, 3.878235, -3.599576, -4.154313, 0.444356, -2.48777, 2.490385, 3.668167, 1.988315, 1.357721, 1.660356, -0.68465, -0.422549, -2.730089, 1.396525, -1.56285, -1.631368, -1.130571, 3.837496, 2.890183, -1.862566, -1.151342, 3.436269, 3.826223, 4.504143, 4.281536, -2.288811, 1.265602, 1.152519, -1.614968, 4.728646, 4.09835, 3.391474, 2.290162, -3.00248, -3.545572, 0.804825, -0.055006, 3.425073, 3.289736, -0.483434, 2.583423, 1.53032, -3.479748, 3.334664, -1.986055, 1.267445, -0.7355, 1.561064, 1.468985, 4.536053, 4.255831, 1.643774, -0.344806, 0.932634, -0.471866, 3.096907, 3.369667, -1.898565, -0.800163, 3.517692, -3.15181 ], "llr_stats": { "count": 174, "avg_abs": 2.155042, "min_abs": 0.018515, "max_abs": 4.728646, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 108.620168 }, { "name": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "010000011010000001111000100001001000010000111100001110001001100011110000100100000110000100000010010001000001100000101110010011010111100000101101010010010000010100110001000101", "hard_bits_sha256_16": "75d0ef5a709b6939", "hard_weight_174": 62, "llr_full_174": [ 1.633064, -2.015791, 0.744535, 0.444356, 3.289736, 4.699025, 1.974989, -3.433394, -0.11538, 4.536053, -3.254627, 2.499076, 3.489516, 2.886539, 3.334664, 3.662905, 1.053258, -0.178398, -0.68465, -1.130571, -2.288811, 1.61847, 1.561064, 2.890183, -1.412322, 4.239997, 0.18622, 3.265498, 0.477851, -2.705101, 1.078551, 3.065736, -0.055006, 4.504143, 1.156592, 2.490385, 1.099215, -2.116588, 1.357721, 1.084321, 1.69897, 1.045646, -3.582343, -3.15181, -1.574281, -2.730089, 4.299086, 1.152519, 3.038146, 0.181983, -0.483434, -0.800163, -0.945201, 0.536783, 3.154483, 1.116321, -3.545572, 3.386407, 1.988147, -0.7355, -1.631158, 1.643774, 3.826223, 4.126879, -2.392557, -1.619767, -3.452614, -2.439619, 0.932634, 2.465215, 3.418868, 3.369667, -1.753778, 3.831314, 1.396525, -3.599576, 3.161744, 1.139946, 0.722649, 4.728646, 0.197421, -1.151342, -0.636096, 1.304231, 2.290162, 1.53032, 2.032908, -1.631368, 2.767821, 1.660356, 3.190836, 0.339261, 3.878235, 1.568439, -0.939924, 0.944531, 2.439239, -0.344806, 3.276848, 1.762176, 3.425073, -3.376877, 0.756926, 2.583423, 0.257703, 4.380442, 1.183036, -3.671427, -1.614968, 0.663107, 3.013762, 0.588611, 3.517692, 4.09835, -0.958075, 1.988315, -3.479748, -1.115434, -2.682066, 3.23499, 1.270082, -4.154313, 1.027258, 3.837496, -1.56285, -1.355811, 0.804825, -0.471866, 3.316425, -1.545558, -3.139324, -1.76176, -1.227843, 3.436269, 1.874325, 3.668167, 4.281536, 0.606103, -3.648329, 1.267445, -3.00248, -3.090977, 2.652777, -1.847744, 2.246844, -0.422549, 2.340398, 2.850878, -1.026773, 1.172412, 1.468985, -1.898565, 3.155401, 3.391474, 4.255831, -0.026131, 3.523283, -1.068462, 0.490512, -1.862566, 3.116813, 4.156156, -3.160694, -2.48777, 3.096907, 1.265602, 3.567218, -0.018515, 3.459089, 0.690672, 4.540544, -0.136005, 2.251942, -1.986055 ], "llr_stats": { "count": 174, "avg_abs": 2.155042, "min_abs": 0.018515, "max_abs": 4.728646, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 108.620168 }, { "name": "mapped_lsb_within_each_tone+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "110001001000000000001110001001001000000100010100000101111111011000100000000000100010010010000100000100000010110110110100110110110110100000011001111111100000010000000100100110", "hard_bits_sha256_16": "98bb92af60ef3af8", "hard_weight_174": 62, "llr_full_174": [ -1.574281, -1.631368, 1.633064, 0.663107, 1.561064, -1.76176, 2.499076, 3.391474, -3.452614, 2.652777, 1.116321, 3.276848, 1.139946, 1.270082, 4.504143, 1.568439, 1.974989, 3.096907, 0.477851, 0.606103, -0.483434, -1.862566, -1.753778, 1.988315, 1.643774, 0.257703, -0.178398, 0.804825, 1.084321, -1.026773, 0.444356, 0.690672, -0.636096, 1.874325, 1.152519, 3.190836, 2.465215, 3.517692, 4.239997, -3.376877, 3.334664, 3.523283, 1.099215, -0.422549, 1.988147, -0.018515, 0.197421, 3.837496, 0.536783, 2.439239, 4.536053, -2.682066, 3.065736, -3.00248, -2.288811, -3.160694, -3.599576, -1.898565, -2.392557, -3.671427, 1.53032, -1.545558, -3.582343, 1.660356, 0.744535, 2.251942, -1.412322, 3.436269, 4.299086, -0.026131, 0.932634, 0.588611, 3.386407, 3.425073, 2.886539, 1.027258, 2.490385, 2.246844, -0.11538, 3.567218, 4.728646, 1.267445, -0.945201, 0.944531, 1.396525, -1.115434, 1.078551, 1.183036, -1.130571, 4.156156, 1.045646, 1.468985, 4.126879, -0.136005, 2.290162, 3.316425, 0.181983, 3.878235, 4.699025, -0.958075, 3.265498, 4.281536, 1.053258, 0.490512, 3.369667, 2.850878, -1.631158, 2.583423, -1.151342, -1.355811, 1.357721, -0.344806, -3.254627, 3.459089, -0.055006, -3.090977, 3.154483, -2.48777, 3.161744, 3.23499, -1.619767, -1.614968, 1.61847, -3.139324, -3.15181, 3.155401, -2.015791, -1.986055, 2.032908, -1.227843, -2.730089, 2.767821, -2.439619, 3.013762, 2.890183, 1.762176, 3.489516, 4.255831, 1.156592, -1.847744, -3.545572, 1.265602, 0.722649, -4.154313, -0.800163, -0.939924, -3.433394, -3.479748, -2.705101, -3.648329, -0.68465, 3.116813, 3.831314, 1.172412, 3.826223, 4.380442, 1.304231, -0.471866, 1.69897, 0.339261, 3.289736, 4.540544, 0.18622, 3.668167, 3.038146, -1.068462, 3.418868, 4.09835, -0.7355, 0.756926, 3.662905, -1.56285, -2.116588, 2.340398 ], "llr_stats": { "count": 174, "avg_abs": 2.155042, "min_abs": 0.018515, "max_abs": 4.728646, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 108.620168 }, { "name": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100011100010010001000100001111100000010000110100001100001000011100000100001100001001010001010001100001000001000100101000110011001111000001110111001010000011010000001001001101", "hard_bits_sha256_16": "1693cad161d635f1", "hard_weight_174": 62, "llr_full_174": [ -1.574281, 1.183036, 1.988147, 2.767821, -1.753778, -1.355811, -1.412322, 1.172412, 3.276848, 4.699025, -3.160694, 0.722649, 1.874325, -1.619767, 2.246844, 3.038146, 2.499076, -0.136005, 4.536053, 4.255831, 1.084321, -3.090977, 3.386407, 0.339261, 3.096907, 3.369667, -1.545558, -2.705101, -3.376877, -2.015791, -0.945201, 0.756926, 0.663107, 1.045646, 3.837496, 2.890183, 0.257703, -3.254627, -0.026131, 1.304231, 4.504143, 4.281536, -2.392557, -0.939924, 2.465215, -3.139324, 4.728646, 4.09835, 2.652777, 0.181983, -3.00248, -3.545572, 0.690672, 3.161744, 1.027258, 0.18622, -0.483434, 2.583423, 0.744535, 3.116813, 1.099215, -1.227843, -1.115434, -2.116588, 1.633064, 4.156156, 0.197421, 3.013762, 1.643774, -0.344806, 4.299086, 4.380442, 1.270082, 3.265498, -1.898565, -0.800163, 3.190836, 1.61847, 3.567218, 3.418868, -3.452614, 3.316425, 3.065736, -1.847744, 0.444356, -2.48777, 2.886539, 4.540544, 0.606103, -1.631158, 1.660356, -0.68465, 3.523283, 2.032908, 1.396525, -1.56285, -1.76176, 4.126879, 2.439239, 3.489516, 0.804825, -0.055006, 0.588611, 1.69897, 1.974989, 0.490512, 1.53032, -3.479748, 4.239997, 3.155401, 1.267445, -0.7355, 1.116321, 3.878235, -2.288811, 1.265602, -0.636096, 3.23499, 2.490385, 3.668167, -1.862566, -1.151342, 2.251942, 3.831314, -0.422549, -2.730089, 1.078551, 2.340398, -1.631368, -1.130571, -0.018515, -2.439619, 1.988315, 1.357721, 3.436269, 3.826223, 1.139946, -0.958075, -3.599576, -4.154313, 1.152519, -1.614968, -0.11538, -1.068462, 3.391474, 2.290162, -2.682066, 1.156592, -1.026773, 3.154483, 3.425073, 3.289736, 0.477851, 2.850878, -3.582343, -3.648329, 3.334664, -1.986055, 0.944531, 3.662905, 1.561064, 1.468985, 0.536783, 1.762176, -0.178398, 3.459089, 0.932634, -0.471866, 1.568439, 1.053258, -3.671427, -3.433394, 3.517692, -3.15181 ], "llr_stats": { "count": 174, "avg_abs": 2.155042, "min_abs": 0.018515, "max_abs": 4.728646, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 108.620168 }, { "name": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100100010011000100011101000011000010011000010110000110100000110010000000110100010000011110000010000000000001110001011111000101111100000010101101011000011000100000100100100001", "hard_bits_sha256_16": "9fabdc6ea877e546", "hard_weight_174": 62, "llr_full_174": [ -1.574281, 2.032908, 0.744535, -0.636096, 3.289736, 0.181983, 1.974989, -0.800163, 4.728646, 0.536783, -3.254627, -3.452614, 3.489516, 3.386407, 3.334664, -0.7355, 3.369667, 1.643774, 3.831314, -1.130571, -3.599576, -1.619767, 1.561064, -2.439619, 4.299086, 2.465215, 3.038146, 3.265498, -0.483434, -2.705101, 1.396525, 3.065736, 3.154483, 1.139946, -3.545572, 2.490385, 1.988147, -2.116588, -1.151342, 1.084321, 1.304231, 4.126879, 1.53032, -3.15181, 1.633064, -2.730089, -1.412322, 1.152519, 0.18622, 4.699025, 0.477851, -3.433394, -0.945201, 4.536053, -0.055006, 1.116321, 1.156592, 2.886539, 1.099215, 3.662905, -1.631158, -0.178398, 3.826223, 1.045646, -2.392557, 1.61847, 2.499076, 2.890183, 0.932634, 4.239997, 3.418868, 1.053258, -1.753778, -0.68465, 1.078551, -2.288811, 3.161744, 4.504143, 0.722649, -0.11538, 0.197421, 1.357721, 0.444356, 1.69897, 2.290162, -3.582343, -2.015791, -1.631368, -1.227843, 2.251942, 1.874325, 4.540544, 3.878235, 3.096907, -0.939924, 1.267445, 2.439239, 3.459089, 2.652777, 4.255831, 3.425073, 3.523283, 0.756926, 2.850878, 0.257703, 1.172412, 4.156156, -1.898565, -1.614968, -1.76176, 3.013762, -0.026131, 3.517692, -1.068462, 4.281536, -1.862566, -3.648329, -1.115434, -3.00248, -2.48777, 1.270082, 1.265602, 2.246844, -0.018515, 2.340398, -1.355811, -1.026773, -0.471866, -0.136005, -1.545558, 3.155401, 0.663107, 2.767821, 3.436269, 3.190836, 3.668167, -0.958075, 0.606103, -3.479748, 0.944531, -2.682066, -3.090977, 3.276848, -1.847744, 1.027258, -0.422549, -1.56285, 2.583423, 0.804825, 4.380442, 1.468985, -3.671427, -3.139324, 3.391474, 1.762176, 0.588611, -3.376877, 4.09835, 0.490512, 1.988315, 3.116813, 1.183036, -3.160694, 3.23499, 1.568439, -4.154313, 3.567218, 3.837496, -0.344806, 0.690672, 0.339261, 3.316425, 1.660356, -1.986055 ], "llr_stats": { "count": 174, "avg_abs": 2.155042, "min_abs": 0.018515, "max_abs": 4.728646, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 108.620168 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "010110110000000000110010110110110000000001011001000100111111101000001000000000001011011011000001000001000011010010010001010010010010001000101110111111001000011000000001001010", "hard_bits_sha256_16": "76c54e7affa74888", "hard_weight_174": 64, "llr_full_174": [ 1.633064, -1.49945, 0.531574, -1.76176, -0.165531, 1.348962, -3.452614, -1.900471, 3.324464, 3.276848, 1.02575, 0.950294, 4.504143, 1.243091, 0.602263, 3.096907, 1.743145, 1.116668, -0.483434, 0.139277, 0.422629, 1.988315, -1.665831, 0.7732, -0.178398, 0.0224, 0.219348, -1.026773, -0.017372, 0.88089, -0.636096, 0.135224, 0.49459, 3.190836, 1.057226, 0.816674, 4.239997, 3.148534, 2.179752, 3.523283, 3.308455, -2.301985, 1.988147, -0.344498, -0.234413, 3.837496, 0.193269, 0.002367, 4.536053, 2.365444, 0.461278, -3.00248, 2.195917, 2.377793, -3.599576, -1.964437, -2.701831, -3.671427, -1.453236, -2.178419, -3.582343, 0.820957, -1.524149, 2.251942, 0.616912, 0.51742, 4.299086, 3.357766, -1.237124, 0.588611, 0.57948, 0.305753, 2.886539, 2.450604, 2.741623, 2.246844, 1.847462, 0.952162, 4.728646, 3.430348, -0.091472, 0.944531, -0.50637, -0.621243, 1.078551, -0.619671, -0.745502, 4.156156, -1.098077, -0.565632, 4.126879, 1.421357, 0.631099, 3.316425, 2.140122, -0.049808, 4.699025, 3.664017, 0.190441, 4.281536, 3.170893, -0.834123, 3.369667, 0.465416, 0.241623, 2.583423, -1.335079, -1.399833, 1.357721, -1.18624, 0.247472, 3.459089, -2.968546, 0.251264, 3.154483, -2.722721, -0.02656, 3.23499, 3.09533, -1.788637, 1.61847, -1.488388, 0.53832, 3.155401, -3.11291, 2.039716, 2.032908, -1.892133, 0.908162, 2.767821, -2.541954, 0.846606, 2.890183, 2.931158, -1.633238, 4.255831, 3.15641, 1.617679, -3.545572, 0.727256, -1.806833, -4.154313, -0.375583, 0.717301, -3.433394, -0.353653, -0.893591, -3.648329, -2.336355, -2.386564, 3.831314, 2.967212, -0.566201, 4.380442, 3.463596, 1.126198, 1.69897, -0.354286, -0.298284, 4.540544, 3.136004, 0.331195, 3.038146, 2.973596, 0.256684, 4.09835, 3.298537, -0.931735, 3.662905, 0.743483, -0.230999, 2.340398, -1.997748, 0.844951 ], "llr_stats": { "count": 174, "avg_abs": 1.901495, "min_abs": 0.002367, "max_abs": 4.728646, "positive": 113, "negative": 61, "zero": 0 }, "rank_score": 107.60598 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001011000011000010001100000100101011110001110011000110000100001101001010001100000100100011001000000010010011000000110100000111101100000000100100101100001011011110000001001101", "hard_bits_sha256_16": "0a5444359fd5fb17", "hard_weight_174": 64, "llr_full_174": [ 1.633064, 4.156156, -0.234413, 0.846606, -1.665831, -1.18624, 4.299086, 4.380442, 0.950294, 0.190441, -1.964437, -0.375583, 3.190836, 1.61847, 0.952162, 0.256684, -3.452614, 3.316425, 0.461278, 1.617679, -0.017372, -2.722721, 2.886539, 4.540544, 1.116668, 0.241623, 0.820957, -2.336355, 3.523283, 2.032908, -0.50637, 0.743483, -1.76176, 4.126879, 0.002367, -1.633238, 0.0224, -2.968546, 0.588611, 1.69897, 0.602263, -0.834123, -1.453236, -0.353653, 4.239997, 3.155401, -0.091472, -0.931735, 3.276848, 4.699025, 2.377793, -1.806833, 0.135224, 3.09533, 2.246844, 3.038146, 0.422629, -1.399833, 0.616912, 2.967212, 1.988147, 2.767821, -0.619671, -1.997748, 0.531574, -0.565632, 0.193269, 2.931158, -0.178398, 3.459089, -1.237124, 1.126198, 1.243091, 3.170893, -3.671427, -3.433394, 0.816674, 0.53832, 3.430348, 3.298537, 3.324464, -0.049808, 2.195917, 0.727256, -0.636096, 3.23499, 2.741623, 0.331195, 0.139277, -1.335079, 2.251942, 3.831314, -2.301985, 0.908162, 1.078551, 2.340398, 1.348962, 0.631099, 2.365444, 3.15641, -1.026773, 3.154483, 0.305753, -0.298284, 1.743145, 0.465416, -3.582343, -3.648329, 2.179752, 2.039716, 0.944531, 3.662905, 1.02575, 3.664017, -3.599576, -4.154313, 0.49459, -1.788637, 1.847462, 2.973596, 1.988315, 1.357721, 0.51742, -0.566201, -0.344498, -2.541954, -0.745502, 0.844951, -1.49945, -1.098077, 3.837496, 2.890183, 0.7732, 0.247472, 3.357766, 3.463596, 4.504143, 4.281536, -2.701831, 0.717301, 1.057226, -1.488388, 4.728646, 4.09835, -1.900471, 2.140122, -3.00248, -3.545572, 0.88089, -0.02656, 2.450604, 3.136004, -0.483434, 2.583423, -1.524149, -2.386564, 3.308455, -1.892133, -0.621243, -0.230999, -0.165531, 1.421357, 4.536053, 4.255831, 0.219348, 0.251264, 0.57948, -0.354286, 3.096907, 3.369667, -2.178419, -0.893591, 3.148534, -3.11291 ], "llr_stats": { "count": 174, "avg_abs": 1.901495, "min_abs": 0.002367, "max_abs": 4.728646, "positive": 113, "negative": 61, "zero": 0 }, "rank_score": 107.60598 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000011010000001111010100001000010110100110100001110001001100010110000101100100011010100000010000001001011100000101100010001010001000001111100010110010100010000110001010101", "hard_bits_sha256_16": "9e541a86c67fdd93", "hard_weight_174": 64, "llr_full_174": [ 1.633064, 0.908162, 0.616912, 0.49459, 3.136004, 4.699025, 1.743145, -3.433394, -0.091472, 4.536053, -2.968546, 3.324464, 3.15641, 2.886539, 3.308455, 3.662905, 0.241623, -0.178398, -0.566201, -1.098077, -2.701831, 1.61847, -0.165531, 2.890183, -1.237124, 4.239997, 0.256684, 3.170893, 0.422629, -2.336355, 1.078551, 2.195917, -0.02656, 4.504143, -1.806833, 1.847462, -0.234413, -1.997748, 1.357721, -0.017372, 1.69897, 0.631099, -3.582343, -3.11291, 0.531574, -2.541954, 4.299086, 1.057226, 3.038146, 0.190441, -0.483434, -0.893591, -0.50637, 0.461278, 3.154483, 1.02575, -3.545572, 2.741623, 1.988147, -0.230999, -1.335079, 0.219348, 3.463596, 4.126879, -1.453236, 0.53832, -3.452614, -1.633238, 0.57948, 2.179752, 3.298537, 3.369667, -1.665831, 3.831314, -0.745502, -3.599576, 3.09533, 0.602263, -0.375583, 4.728646, 0.193269, 0.247472, -0.636096, -0.298284, 2.140122, -1.524149, 2.032908, -1.49945, 2.767821, 0.51742, 3.190836, 0.331195, 3.664017, 1.116668, -0.353653, 0.944531, 2.365444, 0.251264, 3.276848, 1.617679, 2.450604, -2.301985, 0.743483, 2.583423, 0.0224, 4.380442, -0.565632, -3.671427, -1.488388, 1.348962, 2.931158, 0.588611, 3.148534, 4.09835, -0.834123, 1.988315, -2.386564, -0.619671, 2.377793, 3.23499, 1.243091, -4.154313, 0.952162, 3.837496, 0.844951, -1.18624, 0.88089, -0.354286, 3.316425, 0.820957, 2.039716, -1.76176, 0.846606, 3.357766, 0.816674, 2.973596, 4.281536, 0.139277, -3.648329, -0.621243, -3.00248, -2.722721, 0.950294, 0.727256, 2.246844, -0.344498, 2.340398, -1.399833, -1.026773, 1.126198, 1.421357, -2.178419, 3.155401, -1.900471, 4.255831, 0.305753, 3.523283, -0.931735, 0.465416, 0.7732, 2.967212, 4.156156, -1.964437, -1.788637, 3.096907, 0.717301, 3.430348, 0.002367, 3.459089, 0.135224, 4.540544, -0.049808, 2.251942, -1.892133 ], "llr_stats": { "count": 174, "avg_abs": 1.901495, "min_abs": 0.002367, "max_abs": 4.728646, "positive": 113, "negative": 61, "zero": 0 }, "rank_score": 107.60598 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "010110110000000000110010110110110000000001011001000111100100101000001000000000001011011011000001000001000011010010010001010010010010001000101110100100001000011000000001001010", "hard_bits_sha256_16": "cbeb732bf46b1db8", "hard_weight_174": 58, "llr_full_174": [ 1.633064, -0.976575, 0.949003, -1.76176, -0.998655, 0.42406, -3.452614, -2.729495, 2.15848, 3.276848, 1.019515, 0.944271, 4.504143, 1.234543, 0.595757, 3.096907, 1.699334, 1.086551, -0.483434, -0.1397, 0.138142, 1.988315, -1.194467, 1.140072, -0.178398, -0.022801, 0.173709, -1.026773, -0.476301, 0.382498, -0.636096, -0.2052, 0.145504, 3.190836, 1.042991, 0.803846, 4.239997, 3.122279, 2.168316, 3.523283, 2.732436, -2.663617, 1.988147, -0.318737, -0.209038, 3.837496, 0.189042, -0.001822, 4.536053, 2.324306, 0.447453, -3.00248, -2.342773, -2.16565, -3.599576, 2.66426, 1.943738, -3.671427, 2.149308, 1.435812, -3.582343, 1.428856, -0.889879, 2.251942, 0.593224, 0.494359, 4.299086, 3.084662, -1.296027, 0.588611, 0.250325, -0.011372, 2.886539, 2.42865, 2.713506, 2.246844, 1.676796, 0.848254, 4.728646, 3.295123, -0.109031, 0.944531, -0.392447, -0.50408, 1.078551, -0.50936, -0.630976, 4.156156, -1.088228, -0.557625, 4.126879, 1.404943, 0.619719, 3.316425, 1.987563, -0.110939, 4.699025, 3.513722, 0.174568, 4.281536, 2.957052, -0.877744, 3.369667, 0.456697, 0.233234, 2.583423, -1.319503, -1.383653, 1.357721, -0.727815, 0.633561, 3.459089, -2.659708, 0.318725, 3.154483, -2.431016, 0.05022, 3.23499, 2.506215, -2.079386, 1.61847, -0.962235, 0.962833, 3.155401, -2.462278, 2.454251, 2.032908, -1.333872, 1.325782, 2.767821, -2.059717, 1.045761, 2.890183, 2.259643, -1.997165, 4.255831, 3.108283, 1.60379, -3.545572, 1.684159, -0.798844, -4.154313, -0.698419, 0.392908, -3.433394, 0.873068, 0.336155, -3.648329, 2.377991, 2.32813, 3.831314, 2.719375, -0.622542, 4.380442, 3.372545, 1.11112, 1.69897, -0.322823, -0.267091, 4.540544, 3.038384, 0.314465, 3.038146, 2.612415, 0.176901, 4.09835, 3.009371, -0.988594, 3.662905, 0.715639, -0.255808, 2.340398, -1.540628, 1.133647 ], "llr_stats": { "count": 174, "avg_abs": 1.857143, "min_abs": 0.001822, "max_abs": 4.728646, "positive": 115, "negative": 59, "zero": 0 }, "rank_score": 107.428572 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001011000001000010001100000000101011110001000011001110000100001101001010001100000110100011001000000010010011000000110100000111101100000000000100101100001010011110000001000001", "hard_bits_sha256_16": "a63a4229ee53d9ac", "hard_weight_174": 58, "llr_full_174": [ 1.633064, 4.156156, -0.209038, 1.045761, -1.194467, -0.727815, 4.299086, 4.380442, 0.944271, 0.174568, 2.66426, -0.698419, 3.190836, 1.61847, 0.848254, 0.176901, -3.452614, 3.316425, 0.447453, 1.60379, -0.476301, -2.431016, 2.886539, 4.540544, 1.086551, 0.233234, 1.428856, 2.377991, 3.523283, 2.032908, -0.392447, 0.715639, -1.76176, 4.126879, -0.001822, -1.997165, -0.022801, -2.659708, 0.588611, 1.69897, 0.595757, -0.877744, 2.149308, 0.873068, 4.239997, 3.155401, -0.109031, -0.988594, 3.276848, 4.699025, -2.16565, -0.798844, -0.2052, 2.506215, 2.246844, 3.038146, 0.138142, -1.383653, 0.593224, 2.719375, 1.988147, 2.767821, -0.50936, -1.540628, 0.949003, -0.557625, 0.189042, 2.259643, -0.178398, 3.459089, -1.296027, 1.11112, 1.234543, 2.957052, -3.671427, -3.433394, 0.803846, 0.962833, 3.295123, 3.009371, 2.15848, -0.110939, -2.342773, 1.684159, -0.636096, 3.23499, 2.713506, 0.314465, -0.1397, -1.319503, 2.251942, 3.831314, -2.663617, 1.325782, 1.078551, 2.340398, 0.42406, 0.619719, 2.324306, 3.108283, -1.026773, 3.154483, -0.011372, -0.267091, 1.699334, 0.456697, -3.582343, -3.648329, 2.168316, 2.454251, 0.944531, 3.662905, 1.019515, 3.513722, -3.599576, -4.154313, 0.145504, -2.079386, 1.676796, 2.612415, 1.988315, 1.357721, 0.494359, -0.622542, -0.318737, -2.059717, -0.630976, 1.133647, -0.976575, -1.088228, 3.837496, 2.890183, 1.140072, 0.633561, 3.084662, 3.372545, 4.504143, 4.281536, 1.943738, 0.392908, 1.042991, -0.962235, 4.728646, 4.09835, -2.729495, 1.987563, -3.00248, -3.545572, 0.382498, 0.05022, 2.42865, 3.038384, -0.483434, 2.583423, -0.889879, 2.32813, 2.732436, -1.333872, -0.50408, -0.255808, -0.998655, 1.404943, 4.536053, 4.255831, 0.173709, 0.318725, 0.250325, -0.322823, 3.096907, 3.369667, 1.435812, 0.336155, 3.122279, -2.462278 ], "llr_stats": { "count": 174, "avg_abs": 1.857143, "min_abs": 0.001822, "max_abs": 4.728646, "positive": 115, "negative": 59, "zero": 0 }, "rank_score": 107.428572 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000011010000001110010100000010010110100110100001010001001100000110000101100100011010100000000000001001011100000100110010001010001000001111100010110000100010000010001010101", "hard_bits_sha256_16": "e6068b7195412c0a", "hard_weight_174": 58, "llr_full_174": [ 1.633064, 1.325782, 0.593224, 0.145504, 3.038384, 4.699025, 1.699334, -3.433394, -0.109031, 4.536053, -2.659708, 2.15848, 3.108283, 2.886539, 2.732436, 3.662905, 0.233234, -0.178398, -0.622542, -1.088228, 1.943738, 1.61847, -0.998655, 2.890183, -1.296027, 4.239997, 0.176901, 2.957052, 0.138142, 2.377991, 1.078551, -2.342773, 0.05022, 4.504143, -0.798844, 1.676796, -0.209038, -1.540628, 1.357721, -0.476301, 1.69897, 0.619719, -3.582343, -2.462278, 0.949003, -2.059717, 4.299086, 1.042991, 3.038146, 0.174568, -0.483434, 0.336155, -0.392447, 0.447453, 3.154483, 1.019515, -3.545572, 2.713506, 1.988147, -0.255808, -1.319503, 0.173709, 3.372545, 4.126879, 2.149308, 0.962833, -3.452614, -1.997165, 0.250325, 2.168316, 3.009371, 3.369667, -1.194467, 3.831314, -0.630976, -3.599576, 2.506215, 0.595757, -0.698419, 4.728646, 0.189042, 0.633561, -0.636096, -0.267091, 1.987563, -0.889879, 2.032908, -0.976575, 2.767821, 0.494359, 3.190836, 0.314465, 3.513722, 1.086551, 0.873068, 0.944531, 2.324306, 0.318725, 3.276848, 1.60379, 2.42865, -2.663617, 0.715639, 2.583423, -0.022801, 4.380442, -0.557625, -3.671427, -0.962235, 0.42406, 2.259643, 0.588611, 3.122279, 4.09835, -0.877744, 1.988315, 2.32813, -0.50936, -2.16565, 3.23499, 1.234543, -4.154313, 0.848254, 3.837496, 1.133647, -0.727815, 0.382498, -0.322823, 3.316425, 1.428856, 2.454251, -1.76176, 1.045761, 3.084662, 0.803846, 2.612415, 4.281536, -0.1397, -3.648329, -0.50408, -3.00248, -2.431016, 0.944271, 1.684159, 2.246844, -0.318737, 2.340398, -1.383653, -1.026773, 1.11112, 1.404943, 1.435812, 3.155401, -2.729495, 4.255831, -0.011372, 3.523283, -0.988594, 0.456697, 1.140072, 2.719375, 4.156156, 2.66426, -2.079386, 3.096907, 0.392908, 3.295123, -0.001822, 3.459089, -0.2052, 4.540544, -0.110939, 2.251942, -1.333872 ], "llr_stats": { "count": 174, "avg_abs": 1.857143, "min_abs": 0.001822, "max_abs": 4.728646, "positive": 115, "negative": 59, "zero": 0 }, "rank_score": 107.428572 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101001001000000000001101001001001000000110011110000100111111010000110000000000110011011011000110000110000011101101101110101101101101110000010001111111110000011000000110110101", "hard_bits_sha256_16": "c23766538d9b5b63", "hard_weight_174": 76, "llr_full_174": [ -1.574281, 0.531574, -1.49945, 0.663107, 1.348962, -0.165531, 2.499076, 3.324464, -1.900471, 2.652777, 0.950294, 1.02575, 1.139946, 0.602263, 1.243091, 1.568439, 1.116668, 1.743145, 0.477851, 0.422629, 0.139277, -1.862566, 0.7732, -1.665831, 1.643774, 0.219348, 0.0224, 0.804825, 0.88089, -0.017372, 0.444356, 0.49459, 0.135224, 1.874325, 0.816674, 1.057226, 2.465215, 2.179752, 3.148534, -3.376877, -2.301985, 3.308455, 1.099215, -0.234413, -0.344498, -0.018515, 0.002367, 0.193269, 0.536783, 0.461278, 2.365444, -2.682066, 2.377793, 2.195917, -2.288811, -2.701831, -1.964437, -1.898565, -2.178419, -1.453236, 1.53032, -1.524149, 0.820957, 1.660356, 0.51742, 0.616912, -1.412322, -1.237124, 3.357766, -0.026131, 0.305753, 0.57948, 3.386407, 2.741623, 2.450604, 1.027258, 0.952162, 1.847462, -0.11538, -0.091472, 3.430348, 1.267445, -0.621243, -0.50637, 1.396525, -0.745502, -0.619671, 1.183036, -0.565632, -1.098077, 1.045646, 0.631099, 1.421357, -0.136005, -0.049808, 2.140122, 0.181983, 0.190441, 3.664017, -0.958075, -0.834123, 3.170893, 1.053258, 0.241623, 0.465416, 2.850878, -1.399833, -1.335079, -1.151342, 0.247472, -1.18624, -0.344806, 0.251264, -2.968546, -0.055006, -0.02656, -2.722721, -2.48777, -1.788637, 3.09533, -1.619767, 0.53832, -1.488388, -3.139324, 2.039716, -3.11291, -2.015791, 0.908162, -1.892133, -1.227843, 0.846606, -2.541954, -2.439619, -1.633238, 2.931158, 1.762176, 1.617679, 3.15641, 1.156592, -1.806833, 0.727256, 1.265602, 0.717301, -0.375583, -0.800163, -0.893591, -0.353653, -3.479748, -2.386564, -2.336355, -0.68465, -0.566201, 2.967212, 1.172412, 1.126198, 3.463596, 1.304231, -0.298284, -0.354286, 0.339261, 0.331195, 3.136004, 0.18622, 0.256684, 2.973596, -1.068462, -0.931735, 3.298537, -0.7355, -0.230999, 0.743483, -1.56285, 0.844951, -1.997748 ], "llr_stats": { "count": 174, "avg_abs": 1.371232, "min_abs": 0.002367, "max_abs": 3.664017, "positive": 100, "negative": 74, "zero": 0 }, "rank_score": 105.484928 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101100100010010001000000001111110000000000110100000001001101011011110100011101111001010001010101100001010001010100101000110010110111111001110011011011000001101000001101001100", "hard_bits_sha256_16": "e5cd54ff50bc7424", "hard_weight_174": 76, "llr_full_174": [ -1.574281, 1.183036, -0.344498, -2.541954, 0.7732, 0.247472, -1.412322, 1.172412, 1.02575, 3.664017, -2.701831, 0.717301, 1.874325, -1.619767, 1.847462, 2.973596, 2.499076, -0.136005, 2.365444, 3.15641, 0.88089, -0.02656, 3.386407, 0.339261, 1.743145, 0.465416, -1.524149, -2.386564, -3.376877, -2.015791, -0.621243, -0.230999, 0.663107, 1.045646, 0.193269, 2.931158, 0.219348, 0.251264, -0.026131, 1.304231, 1.243091, 3.170893, -2.178419, -0.893591, 2.465215, -3.139324, 3.430348, 3.298537, 2.652777, 0.181983, 2.195917, 0.727256, 0.49459, -1.788637, 1.027258, 0.18622, 0.139277, -1.335079, 0.51742, -0.566201, 1.099215, -1.227843, -0.745502, 0.844951, -1.49945, -1.098077, 0.002367, -1.633238, 1.643774, -0.344806, 3.357766, 3.463596, 0.602263, -0.834123, -1.898565, -0.800163, 1.057226, -1.488388, -0.091472, -0.931735, -1.900471, 2.140122, 2.377793, -1.806833, 0.444356, -2.48777, 2.450604, 3.136004, 0.422629, -1.399833, 1.660356, -0.68465, 3.308455, -1.892133, 1.396525, -1.56285, -0.165531, 1.421357, 0.461278, 1.617679, 0.804825, -0.055006, 0.57948, -0.354286, 1.116668, 0.241623, 1.53032, -3.479748, 3.148534, -3.11291, 1.267445, -0.7355, 0.950294, 0.190441, -2.288811, 1.265602, 0.135224, 3.09533, 0.952162, 0.256684, -1.862566, -1.151342, 0.616912, 2.967212, -0.234413, 0.846606, -0.619671, -1.997748, 0.531574, -0.565632, -0.018515, -2.439619, -1.665831, -1.18624, -1.237124, 1.126198, 1.139946, -0.958075, -1.964437, -0.375583, 0.816674, 0.53832, -0.11538, -1.068462, 3.324464, -0.049808, -2.682066, 1.156592, -0.017372, -2.722721, 2.741623, 0.331195, 0.477851, 2.850878, 0.820957, -2.336355, -2.301985, 0.908162, -0.50637, 0.743483, 1.348962, 0.631099, 0.536783, 1.762176, 0.0224, -2.968546, 0.305753, -0.298284, 1.568439, 1.053258, -1.453236, -0.353653, 2.179752, 2.039716 ], "llr_stats": { "count": 174, "avg_abs": 1.371232, "min_abs": 0.002367, "max_abs": 3.664017, "positive": 100, "negative": 74, "zero": 0 }, "rank_score": 105.484928 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "110100010001001100011101000111001000101000001010000110100000110011000010011110011101101010000010010000100011011001011101000110111110110010111001011100011000100110100110100000", "hard_bits_sha256_16": "07c59a8e8331501f", "hard_weight_174": 76, "llr_full_174": [ -1.574281, -1.892133, 0.51742, 0.135224, 0.331195, 0.181983, 1.116668, -0.800163, 3.430348, 0.536783, 0.251264, -1.900471, 1.617679, 3.386407, -2.301985, -0.7355, 0.465416, 1.643774, 2.967212, -0.565632, -1.964437, -1.619767, 1.348962, -2.439619, 3.357766, 2.465215, 2.973596, -0.834123, 0.139277, -2.386564, 1.396525, 2.377793, -2.722721, 1.139946, 0.727256, 0.952162, -0.344498, 0.844951, -1.151342, 0.88089, 1.304231, 1.421357, 1.53032, 2.039716, -1.49945, 0.846606, -1.412322, 0.816674, 0.18622, 3.664017, 0.477851, -0.353653, -0.621243, 2.365444, -0.055006, 0.950294, 1.156592, 2.450604, 1.099215, 0.743483, -1.399833, 0.0224, 1.126198, 1.045646, -2.178419, -1.488388, 2.499076, 2.931158, 0.305753, 3.148534, -0.931735, 1.053258, 0.7732, -0.68465, -0.619671, -2.288811, -1.788637, 1.243091, 0.717301, -0.11538, 0.002367, -1.18624, 0.444356, -0.354286, -0.049808, 0.820957, -2.015791, 0.531574, -1.227843, 0.616912, 1.874325, 3.136004, 0.190441, 1.743145, -0.893591, 1.267445, 0.461278, -2.968546, 2.652777, 3.15641, 2.741623, 3.308455, -0.230999, 2.850878, 0.219348, 1.172412, -1.098077, -1.898565, 0.53832, -0.165531, -1.633238, -0.026131, 2.179752, -1.068462, 3.170893, -1.862566, -2.336355, -0.745502, 2.195917, -2.48777, 0.602263, 1.265602, 1.847462, -0.018515, -1.997748, 0.247472, -0.017372, -0.298284, -0.136005, -1.524149, -3.11291, 0.663107, -2.541954, -1.237124, 1.057226, 0.256684, -0.958075, 0.422629, -3.479748, -0.50637, -2.682066, -0.02656, 1.02575, -1.806833, 1.027258, -0.234413, -1.56285, -1.335079, 0.804825, 3.463596, 0.631099, -1.453236, -3.139324, 3.324464, 1.762176, 0.57948, -3.376877, 3.298537, 0.241623, -1.665831, -0.566201, 1.183036, -2.701831, 3.09533, 1.568439, -0.375583, -0.091472, 0.193269, -0.344806, 0.49459, 0.339261, 2.140122, 1.660356, 0.908162 ], "llr_stats": { "count": 174, "avg_abs": 1.371232, "min_abs": 0.002367, "max_abs": 3.664017, "positive": 100, "negative": 74, "zero": 0 }, "rank_score": 105.484928 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101001001000000000001101001001001000000110011110000111100100010000110000000000110011011011000110000110000011101101101110101101101101110000010001100100110000011000000110110101", "hard_bits_sha256_16": "6c642be1c57de065", "hard_weight_174": 70, "llr_full_174": [ -1.574281, 0.949003, -0.976575, 0.663107, 0.42406, -0.998655, 2.499076, 2.15848, -2.729495, 2.652777, 0.944271, 1.019515, 1.139946, 0.595757, 1.234543, 1.568439, 1.086551, 1.699334, 0.477851, 0.138142, -0.1397, -1.862566, 1.140072, -1.194467, 1.643774, 0.173709, -0.022801, 0.804825, 0.382498, -0.476301, 0.444356, 0.145504, -0.2052, 1.874325, 0.803846, 1.042991, 2.465215, 2.168316, 3.122279, -3.376877, -2.663617, 2.732436, 1.099215, -0.209038, -0.318737, -0.018515, -0.001822, 0.189042, 0.536783, 0.447453, 2.324306, -2.682066, -2.16565, -2.342773, -2.288811, 1.943738, 2.66426, -1.898565, 1.435812, 2.149308, 1.53032, -0.889879, 1.428856, 1.660356, 0.494359, 0.593224, -1.412322, -1.296027, 3.084662, -0.026131, -0.011372, 0.250325, 3.386407, 2.713506, 2.42865, 1.027258, 0.848254, 1.676796, -0.11538, -0.109031, 3.295123, 1.267445, -0.50408, -0.392447, 1.396525, -0.630976, -0.50936, 1.183036, -0.557625, -1.088228, 1.045646, 0.619719, 1.404943, -0.136005, -0.110939, 1.987563, 0.181983, 0.174568, 3.513722, -0.958075, -0.877744, 2.957052, 1.053258, 0.233234, 0.456697, 2.850878, -1.383653, -1.319503, -1.151342, 0.633561, -0.727815, -0.344806, 0.318725, -2.659708, -0.055006, 0.05022, -2.431016, -2.48777, -2.079386, 2.506215, -1.619767, 0.962833, -0.962235, -3.139324, 2.454251, -2.462278, -2.015791, 1.325782, -1.333872, -1.227843, 1.045761, -2.059717, -2.439619, -1.997165, 2.259643, 1.762176, 1.60379, 3.108283, 1.156592, -0.798844, 1.684159, 1.265602, 0.392908, -0.698419, -0.800163, 0.336155, 0.873068, -3.479748, 2.32813, 2.377991, -0.68465, -0.622542, 2.719375, 1.172412, 1.11112, 3.372545, 1.304231, -0.267091, -0.322823, 0.339261, 0.314465, 3.038384, 0.18622, 0.176901, 2.612415, -1.068462, -0.988594, 3.009371, -0.7355, -0.255808, 0.715639, -1.56285, 1.133647, -1.540628 ], "llr_stats": { "count": 174, "avg_abs": 1.326879, "min_abs": 0.001822, "max_abs": 3.513722, "positive": 102, "negative": 72, "zero": 0 }, "rank_score": 105.307516 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101100100000010001000000001011110000000000000100001001001101011011110100011101111011010001010101100001010001010100101000110010110111111001010011011011000000101000001101000000", "hard_bits_sha256_16": "860dcb08c251341a", "hard_weight_174": 70, "llr_full_174": [ -1.574281, 1.183036, -0.318737, -2.059717, 1.140072, 0.633561, -1.412322, 1.172412, 1.019515, 3.513722, 1.943738, 0.392908, 1.874325, -1.619767, 1.676796, 2.612415, 2.499076, -0.136005, 2.324306, 3.108283, 0.382498, 0.05022, 3.386407, 0.339261, 1.699334, 0.456697, -0.889879, 2.32813, -3.376877, -2.015791, -0.50408, -0.255808, 0.663107, 1.045646, 0.189042, 2.259643, 0.173709, 0.318725, -0.026131, 1.304231, 1.234543, 2.957052, 1.435812, 0.336155, 2.465215, -3.139324, 3.295123, 3.009371, 2.652777, 0.181983, -2.342773, 1.684159, 0.145504, -2.079386, 1.027258, 0.18622, -0.1397, -1.319503, 0.494359, -0.622542, 1.099215, -1.227843, -0.630976, 1.133647, -0.976575, -1.088228, -0.001822, -1.997165, 1.643774, -0.344806, 3.084662, 3.372545, 0.595757, -0.877744, -1.898565, -0.800163, 1.042991, -0.962235, -0.109031, -0.988594, -2.729495, 1.987563, -2.16565, -0.798844, 0.444356, -2.48777, 2.42865, 3.038384, 0.138142, -1.383653, 1.660356, -0.68465, 2.732436, -1.333872, 1.396525, -1.56285, -0.998655, 1.404943, 0.447453, 1.60379, 0.804825, -0.055006, 0.250325, -0.322823, 1.086551, 0.233234, 1.53032, -3.479748, 3.122279, -2.462278, 1.267445, -0.7355, 0.944271, 0.174568, -2.288811, 1.265602, -0.2052, 2.506215, 0.848254, 0.176901, -1.862566, -1.151342, 0.593224, 2.719375, -0.209038, 1.045761, -0.50936, -1.540628, 0.949003, -0.557625, -0.018515, -2.439619, -1.194467, -0.727815, -1.296027, 1.11112, 1.139946, -0.958075, 2.66426, -0.698419, 0.803846, 0.962833, -0.11538, -1.068462, 2.15848, -0.110939, -2.682066, 1.156592, -0.476301, -2.431016, 2.713506, 0.314465, 0.477851, 2.850878, 1.428856, 2.377991, -2.663617, 1.325782, -0.392447, 0.715639, 0.42406, 0.619719, 0.536783, 1.762176, -0.022801, -2.659708, -0.011372, -0.267091, 1.568439, 1.053258, 2.149308, 0.873068, 2.168316, 2.454251 ], "llr_stats": { "count": 174, "avg_abs": 1.326879, "min_abs": 0.001822, "max_abs": 3.513722, "positive": 102, "negative": 72, "zero": 0 }, "rank_score": 105.307516 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "110100010001001100010101000110011000101000001010000010100000110001000010011110011101101010000000010000100011011001010111000110111110110010111001011100001000100110000110100000", "hard_bits_sha256_16": "b4730774683dc71c", "hard_weight_174": 70, "llr_full_174": [ -1.574281, -1.333872, 0.494359, -0.2052, 0.314465, 0.181983, 1.086551, -0.800163, 3.295123, 0.536783, 0.318725, -2.729495, 1.60379, 3.386407, -2.663617, -0.7355, 0.456697, 1.643774, 2.719375, -0.557625, 2.66426, -1.619767, 0.42406, -2.439619, 3.084662, 2.465215, 2.612415, -0.877744, -0.1397, 2.32813, 1.396525, -2.16565, -2.431016, 1.139946, 1.684159, 0.848254, -0.318737, 1.133647, -1.151342, 0.382498, 1.304231, 1.404943, 1.53032, 2.454251, -0.976575, 1.045761, -1.412322, 0.803846, 0.18622, 3.513722, 0.477851, 0.873068, -0.50408, 2.324306, -0.055006, 0.944271, 1.156592, 2.42865, 1.099215, 0.715639, -1.383653, -0.022801, 1.11112, 1.045646, 1.435812, -0.962235, 2.499076, 2.259643, -0.011372, 3.122279, -0.988594, 1.053258, 1.140072, -0.68465, -0.50936, -2.288811, -2.079386, 1.234543, 0.392908, -0.11538, -0.001822, -0.727815, 0.444356, -0.322823, -0.110939, 1.428856, -2.015791, 0.949003, -1.227843, 0.593224, 1.874325, 3.038384, 0.174568, 1.699334, 0.336155, 1.267445, 0.447453, -2.659708, 2.652777, 3.108283, 2.713506, 2.732436, -0.255808, 2.850878, 0.173709, 1.172412, -1.088228, -1.898565, 0.962833, -0.998655, -1.997165, -0.026131, 2.168316, -1.068462, 2.957052, -1.862566, 2.377991, -0.630976, -2.342773, -2.48777, 0.595757, 1.265602, 1.676796, -0.018515, -1.540628, 0.633561, -0.476301, -0.267091, -0.136005, -0.889879, -2.462278, 0.663107, -2.059717, -1.296027, 1.042991, 0.176901, -0.958075, 0.138142, -3.479748, -0.392447, -2.682066, 0.05022, 1.019515, -0.798844, 1.027258, -0.209038, -1.56285, -1.319503, 0.804825, 3.372545, 0.619719, 2.149308, -3.139324, 2.15848, 1.762176, 0.250325, -3.376877, 3.009371, 0.233234, -1.194467, -0.622542, 1.183036, 1.943738, 2.506215, 1.568439, -0.698419, -0.109031, 0.189042, -0.344806, 0.145504, 0.339261, 1.987563, 1.660356, 1.325782 ], "llr_stats": { "count": 174, "avg_abs": 1.326879, "min_abs": 0.001822, "max_abs": 3.513722, "positive": 102, "negative": 72, "zero": 0 }, "rank_score": 105.307516 }, { "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": "111100010011010100011010011111110000101011101111100000111001001000110111100001111101110111100101100001010011010111001110001101101011010001011110100011110101111000010100010100", "hard_bits_sha256_16": "cbe3c57b1b0efecf", "hard_weight_174": 93, "llr_full_174": [ 1.633064, -1.631368, -1.574281, -1.76176, 1.561064, 0.663107, -3.452614, 3.391474, 2.499076, 3.276848, 1.116321, 2.652777, 4.504143, 1.270082, 1.139946, 3.096907, 1.974989, 1.568439, -0.483434, 0.606103, 0.477851, 1.988315, -1.753778, -1.862566, -0.178398, 0.257703, 1.643774, -1.026773, 1.084321, 0.804825, -0.636096, 0.690672, 0.444356, 3.190836, 1.152519, 1.874325, 4.239997, 3.517692, 2.465215, 3.523283, 3.334664, -3.376877, 1.988147, -0.422549, 1.099215, 3.837496, 0.197421, -0.018515, 4.536053, 2.439239, 0.536783, -3.00248, 3.065736, -2.682066, -3.599576, -3.160694, -2.288811, -3.671427, -2.392557, -1.898565, -3.582343, -1.545558, 1.53032, 2.251942, 0.744535, 1.660356, 4.299086, 3.436269, -1.412322, 0.588611, 0.932634, -0.026131, 2.886539, 3.425073, 3.386407, 2.246844, 2.490385, 1.027258, 4.728646, 3.567218, -0.11538, 0.944531, -0.945201, 1.267445, 1.078551, -1.115434, 1.396525, 4.156156, -1.130571, 1.183036, 4.126879, 1.468985, 1.045646, 3.316425, 2.290162, -0.136005, 4.699025, 3.878235, 0.181983, 4.281536, 3.265498, -0.958075, 3.369667, 0.490512, 1.053258, 2.583423, -1.631158, 2.850878, 1.357721, -1.355811, -1.151342, 3.459089, -3.254627, -0.344806, 3.154483, -3.090977, -0.055006, 3.23499, 3.161744, -2.48777, 1.61847, -1.614968, -1.619767, 3.155401, -3.15181, -3.139324, 2.032908, -1.986055, -2.015791, 2.767821, -2.730089, -1.227843, 2.890183, 3.013762, -2.439619, 4.255831, 3.489516, 1.762176, -3.545572, -1.847744, 1.156592, -4.154313, 0.722649, 1.265602, -3.433394, -0.939924, -0.800163, -3.648329, -2.705101, -3.479748, 3.831314, 3.116813, -0.68465, 4.380442, 3.826223, 1.172412, 1.69897, -0.471866, 1.304231, 4.540544, 3.289736, 0.339261, 3.038146, 3.668167, 0.18622, 4.09835, 3.418868, -1.068462, 3.662905, 0.756926, -0.7355, 2.340398, -2.116588, -1.56285 ], "llr_stats": { "count": 174, "avg_abs": 2.155042, "min_abs": 0.018515, "max_abs": 4.728646, "positive": 111, "negative": 63, "zero": 0 }, "rank_score": 100.620168 } ], "outputs": { "candidate_json": "/decoders/js8_decoder/runtime/step85_fec_candidates_window1/js8_step85_window_01_0084_0132_fec_candidate_step17.json", "selected_bits_file": "/decoders/js8_decoder/runtime/step85_fec_candidates_window1/js8_step85_window_01_0084_0132_fec_candidate_step17.bits" }, "decodes": [], "warnings": [ "Step 54 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 54 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 54 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 54 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation.", "Step 54 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] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window1_post_ldpc_info87_runtime_export_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "tool": "webftr-js8-post-ldpc-info87-runtime-export-probe", "tool_version": "step63-source-exact-interleaver-whitening-index-extract", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "input_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_01_0084_0132.wav", "log_dir": "/decoders/js8_decoder/logs", "output_dir": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window1", "candidate_json": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window1/js8_step85_window_01_0084_0132_fec_candidate_step17.json", "matrix_error": null, "soft_error": null, "matrix_ok": true, "soft_ok": true, "runtime_info87_rows_count": 48, "zero_distance_candidate_count": 0, "best_distance": 4, "best_runtime_info87_row": { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_0", "info87_bits": [ 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "110100110110110110010110011011010110111110111010111100011111000010011100101111101110000", "info87_llr": [ -1.633064, -0.339261, 0.90932, -2.563673, 2.292927, 2.057038, -0.197421, -2.583423, 0.659296, -0.854155, -1.878093, 1.573246, -4.126879, -1.988315, 1.075745, -1.575695, -4.299086, 2.015791, 2.557767, -3.693664, 2.341573, -3.146243, -1.270082, 0.7355, 2.690204, -0.928213, -1.619264, 0.755118, -1.69897, -1.396525, 0.123856, -2.532422, 1.227843, -2.251942, -0.056328, 1.064539, -0.655045, -1.049257, -3.459089, -3.334664, -0.655197, 0.929403, -0.656785, -2.006556, -0.257703, 0.68465, -2.16629, 0.202325, -0.181983, -0.663107, -0.630564, -0.599657, 0.32095, 1.802793, 3.433394, -4.536053, -0.730158, -2.922368, -1.140611, -2.663182, 2.392557, 1.130571, 0.584996, 0.749455, -1.058462, 0.400946, 0.105928, -0.799798, -1.568439, -3.662905, 0.16162, 1.403876, -1.437994, 0.955878, -2.850878, -3.391474, -0.015545, -0.852224, -2.798072, 0.148871, -2.490096, -0.86147, -0.349999, 0.986726, 0.945201, 2.48777, 2.755829 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 76, 34, 66, 30, 79, 70, 48, 6, 47, 44, 52, 1, 82, 65, 62, 51, 50, 36 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 3952, "computed_crc12": 3602, "message_preview_12chars": "qssMRM-wyV2S", "message_words_6bit": [ 52, 54, 54, 22, 27, 22, 62, 58, 60, 31, 2, 28 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword" }, "runtime_info87_rows_preview": [ { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_0", "info87_bits": [ 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "110100110110110110010110011011010110111110111010111100011111000010011100101111101110000", "info87_llr": [ -1.633064, -0.339261, 0.90932, -2.563673, 2.292927, 2.057038, -0.197421, -2.583423, 0.659296, -0.854155, -1.878093, 1.573246, -4.126879, -1.988315, 1.075745, -1.575695, -4.299086, 2.015791, 2.557767, -3.693664, 2.341573, -3.146243, -1.270082, 0.7355, 2.690204, -0.928213, -1.619264, 0.755118, -1.69897, -1.396525, 0.123856, -2.532422, 1.227843, -2.251942, -0.056328, 1.064539, -0.655045, -1.049257, -3.459089, -3.334664, -0.655197, 0.929403, -0.656785, -2.006556, -0.257703, 0.68465, -2.16629, 0.202325, -0.181983, -0.663107, -0.630564, -0.599657, 0.32095, 1.802793, 3.433394, -4.536053, -0.730158, -2.922368, -1.140611, -2.663182, 2.392557, 1.130571, 0.584996, 0.749455, -1.058462, 0.400946, 0.105928, -0.799798, -1.568439, -3.662905, 0.16162, 1.403876, -1.437994, 0.955878, -2.850878, -3.391474, -0.015545, -0.852224, -2.798072, 0.148871, -2.490096, -0.86147, -0.349999, 0.986726, 0.945201, 2.48777, 2.755829 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 76, 34, 66, 30, 79, 70, 48, 6, 47, 44, 52, 1, 82, 65, 62, 51, 50, 36 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 3952, "computed_crc12": 3602, "message_preview_12chars": "qssMRM-wyV2S", "message_words_6bit": [ 52, 54, 54, 22, 27, 22, 62, 58, 60, 31, 2, 28 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword" }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_0", "info87_bits": [ 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0 ], "info87_bitstring": "110100110110110110010110011011010110111110111010111100011111000010011100101111101110000", "info87_llr": [ -1.633064, -0.339261, 0.90932, -2.563673, 2.292927, 2.057038, -0.197421, -2.583423, 0.659296, -0.854155, -1.878093, 1.573246, -4.126879, -1.988315, 1.075745, -1.575695, -4.299086, 2.015791, 2.557767, -3.693664, 2.341573, -3.146243, -1.270082, 0.7355, 2.690204, -0.928213, -1.619264, 0.755118, -1.69897, -1.396525, 0.123856, -2.532422, 1.227843, -2.251942, -0.056328, 1.064539, -0.655045, -1.049257, -3.459089, -3.334664, -0.655197, 0.929403, -0.656785, -2.006556, -0.257703, 0.68465, -2.16629, 0.202325, -0.181983, -0.663107, -0.630564, -0.599657, 0.32095, 1.802793, 3.433394, -4.536053, -0.730158, -2.922368, -1.140611, -2.663182, 2.392557, 1.130571, 0.584996, 0.749455, -1.058462, 0.400946, 0.105928, -0.799798, -1.568439, -3.662905, 0.16162, 1.403876, -1.437994, 0.955878, -2.850878, -3.391474, -0.015545, -0.852224, -2.798072, 0.148871, -2.490096, -0.86147, -0.349999, 0.986726, 0.945201, 2.48777, 2.755829 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 76, 34, 66, 30, 79, 70, 48, 6, 47, 44, 52, 1, 82, 65, 62, 51, 50, 36 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 3952, "computed_crc12": 3602, "message_preview_12chars": "qssMRM-wyV2S", "message_words_6bit": [ 52, 54, 54, 22, 27, 22, 62, 58, 60, 31, 2, 28 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_11", "info87_bits": [ 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1 ], "info87_bitstring": "110000011000001001111100100101101000001010001000001110100011100011110010000110001110101", "info87_llr": [ -1.49945, -2.015791, 0.51742, 0.444356, 0.331195, 3.664017, 1.116668, -0.353653, -0.11538, 2.365444, 0.251264, 2.499076, 1.617679, 2.450604, -2.301985, 0.743483, 1.053258, 0.0224, -0.68465, -0.565632, -2.288811, -1.488388, 1.348962, 2.931158, -1.412322, 3.148534, 0.18622, -0.834123, 0.477851, -2.386564, -0.619671, 2.377793, -0.055006, 1.243091, 1.156592, 0.952162, 1.099215, 0.844951, -1.18624, 0.88089, -0.354286, 1.045646, 0.820957, 2.039716, -1.574281, 0.846606, 3.357766, 0.816674, 2.973596, 0.181983, 0.139277, -0.800163, -0.621243, 0.536783, -2.722721, 0.950294, 0.727256, 3.386407, -0.344498, -0.7355, -1.399833, 1.643774, 1.126198, 1.421357, -2.178419, -1.619767, -1.900471, -2.439619, 0.305753, 2.465215, -0.931735, 0.465416, 0.7732, 2.967212, 1.396525, -1.964437, -1.788637, 1.139946, 0.717301, 3.430348, 0.002367, -1.151342, 0.135224, 1.304231, -0.049808, 1.53032, -1.892133 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 80, 17, 84, 32, 8, 82, 50, 49, 26, 10, 68, 4, 58, 7, 40, 3, 71, 28 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 3189, "computed_crc12": 3688, "message_preview_12chars": "mO9ybeA8EZZo", "message_words_6bit": [ 48, 24, 9, 60, 37, 40, 10, 8, 14, 35, 35, 50 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_9", "info87_bits": [ 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0 ], "info87_bitstring": "010100011111001001001010000101111010100010010100001000010000011010001001110100111001000", "info87_llr": [ 1.988147, -1.631158, 0.623184, -0.01627, 2.952323, 1.154068, 1.643774, -3.648329, -3.026307, -1.241997, 0.016528, -0.086844, 2.890183, 2.251942, -0.281342, 1.018455, 3.276848, -1.56285, 0.180843, 1.123419, -2.380414, 1.078886, -1.898565, 1.468985, 2.265744, 0.527345, 0.142299, -0.952317, 4.281536, -1.631368, -1.410824, -0.611286, -1.355811, 3.523283, -2.667403, 0.976721, -1.205127, 1.0985, 4.380442, 0.944531, -1.121169, 0.779188, 0.680933, -1.592172, -0.026131, -2.730089, 3.393467, 0.907606, 0.722649, 2.439239, -0.591369, 1.006524, 0.602803, 2.233124, 1.61847, -0.178398, 3.809238, 1.481113, 1.624921, 0.489611, 2.465215, -2.439619, -2.15391, 2.804706, -0.495449, 0.603879, 4.654706, 1.260932, -1.545558, 3.878235, 0.450525, -3.533669, -1.261354, 0.002239, 3.116813, -2.682066, 1.061245, 0.606444, -2.37135, -0.169344, -0.596728, 1.322099, 0.68897, -3.811179, 0.663107, 3.668167, 2.695585 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 73, 3, 10, 44, 11, 26, 79, 55, 18, 14, 70, 59, 64, 25, 50, 80, 52, 65 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 2504, "computed_crc12": 3820, "message_preview_12chars": "KV9A5wYK8GQ9", "message_words_6bit": [ 20, 31, 9, 10, 5, 58, 34, 20, 8, 16, 26, 9 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword" }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_11", "info87_bits": [ 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1 ], "info87_bitstring": "110000011000001001111100100101101000001010001000001110100011100011110010000110001110101", "info87_llr": [ -1.49945, -2.015791, 0.51742, 0.444356, 0.331195, 3.664017, 1.116668, -0.353653, -0.11538, 2.365444, 0.251264, 2.499076, 1.617679, 2.450604, -2.301985, 0.743483, 1.053258, 0.0224, -0.68465, -0.565632, -2.288811, -1.488388, 1.348962, 2.931158, -1.412322, 3.148534, 0.18622, -0.834123, 0.477851, -2.386564, -0.619671, 2.377793, -0.055006, 1.243091, 1.156592, 0.952162, 1.099215, 0.844951, -1.18624, 0.88089, -0.354286, 1.045646, 0.820957, 2.039716, -1.574281, 0.846606, 3.357766, 0.816674, 2.973596, 0.181983, 0.139277, -0.800163, -0.621243, 0.536783, -2.722721, 0.950294, 0.727256, 3.386407, -0.344498, -0.7355, -1.399833, 1.643774, 1.126198, 1.421357, -2.178419, -1.619767, -1.900471, -2.439619, 0.305753, 2.465215, -0.931735, 0.465416, 0.7732, 2.967212, 1.396525, -1.964437, -1.788637, 1.139946, 0.717301, 3.430348, 0.002367, -1.151342, 0.135224, 1.304231, -0.049808, 1.53032, -1.892133 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 80, 17, 84, 32, 8, 82, 50, 49, 26, 10, 68, 4, 58, 7, 40, 3, 71, 28 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 3189, "computed_crc12": 3688, "message_preview_12chars": "mO9ybeA8EZZo", "message_words_6bit": [ 48, 24, 9, 60, 37, 40, 10, 8, 14, 35, 35, 50 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_9", "info87_bits": [ 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0 ], "info87_bitstring": "010100011111001001001010000101111010100010010100001000010000011010001001110100111001000", "info87_llr": [ 1.988147, -1.631158, 0.623184, -0.01627, 2.952323, 1.154068, 1.643774, -3.648329, -3.026307, -1.241997, 0.016528, -0.086844, 2.890183, 2.251942, -0.281342, 1.018455, 3.276848, -1.56285, 0.180843, 1.123419, -2.380414, 1.078886, -1.898565, 1.468985, 2.265744, 0.527345, 0.142299, -0.952317, 4.281536, -1.631368, -1.410824, -0.611286, -1.355811, 3.523283, -2.667403, 0.976721, -1.205127, 1.0985, 4.380442, 0.944531, -1.121169, 0.779188, 0.680933, -1.592172, -0.026131, -2.730089, 3.393467, 0.907606, 0.722649, 2.439239, -0.591369, 1.006524, 0.602803, 2.233124, 1.61847, -0.178398, 3.809238, 1.481113, 1.624921, 0.489611, 2.465215, -2.439619, -2.15391, 2.804706, -0.495449, 0.603879, 4.654706, 1.260932, -1.545558, 3.878235, 0.450525, -3.533669, -1.261354, 0.002239, 3.116813, -2.682066, 1.061245, 0.606444, -2.37135, -0.169344, -0.596728, 1.322099, 0.68897, -3.811179, 0.663107, 3.668167, 2.695585 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 73, 3, 10, 44, 11, 26, 79, 55, 18, 14, 70, 59, 64, 25, 50, 80, 52, 65 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 2504, "computed_crc12": 3820, "message_preview_12chars": "KV9A5wYK8GQ9", "message_words_6bit": [ 20, 31, 9, 10, 5, 58, 34, 20, 8, 16, 26, 9 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_2", "info87_bits": [ 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ], "info87_bitstring": "000011000111000110001100010100101001010011100001000110000100001110101010001100000000100", "info87_llr": [ 1.633064, 4.156156, -0.234413, 0.846606, -1.665831, -1.18624, 4.299086, 4.380442, 0.950294, 0.190441, -1.964437, -0.375583, 3.190836, 1.61847, 0.952162, 0.256684, -3.452614, 3.316425, 0.461278, 1.617679, -0.017372, -2.722721, 2.886539, 4.540544, 1.116668, 0.241623, 0.820957, -2.336355, 3.523283, 2.032908, -0.50637, 0.743483, -1.76176, 4.126879, 0.002367, -1.633238, 0.0224, -2.968546, 0.588611, 1.69897, 0.602263, -0.834123, -1.453236, -0.353653, 4.239997, 3.155401, -0.091472, -0.931735, 3.276848, 4.699025, 2.377793, -1.806833, 0.135224, 3.09533, 2.246844, 3.038146, 0.422629, -1.399833, 0.616912, 2.967212, 1.988147, 2.767821, -0.619671, -1.997748, 0.531574, -0.565632, 0.193269, 2.931158, -0.178398, 3.459089, -1.237124, 1.126198, 1.243091, 3.170893, -3.671427, -3.433394, 0.816674, 0.53832, 3.430348, 3.298537, 3.324464, -0.049808, 2.195917, 0.727256, -0.636096, 3.23499, 2.741623 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 34, 20, 36, 81, 46, 52, 68, 9, 66, 2, 25, 15, 43, 11, 56, 18, 30, 64 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 2052, "computed_crc12": 3848, "message_preview_12chars": "376CKfJX64Eg", "message_words_6bit": [ 3, 7, 6, 12, 20, 41, 19, 33, 6, 4, 14, 42 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_3", "info87_bits": [ 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ], "info87_bitstring": "001011000111000010001100000100101011010001110001000100000100001101001010001100000000100", "info87_llr": [ 1.633064, 4.156156, -0.234413, 0.846606, -1.665831, -1.18624, 4.299086, 4.380442, 0.950294, 0.190441, -1.964437, -0.375583, 3.190836, 1.61847, 0.952162, 0.256684, -3.452614, 3.316425, 0.461278, 1.617679, -0.017372, -2.722721, 2.886539, 4.540544, 1.116668, 0.241623, 0.820957, -2.336355, 3.523283, 2.032908, -0.50637, 0.743483, -1.76176, 4.126879, 0.002367, -1.633238, 0.0224, -2.968546, 0.588611, 1.69897, 0.602263, -0.834123, -1.453236, -0.353653, 4.239997, 3.155401, -0.091472, -0.931735, 3.276848, 4.699025, 2.377793, -1.806833, 0.135224, 3.09533, 2.246844, 3.038146, 0.422629, -1.399833, 0.616912, 2.967212, 1.988147, 2.767821, -0.619671, -1.997748, 0.531574, -0.565632, 0.193269, 2.931158, -0.178398, 3.459089, -1.237124, 1.126198, 1.243091, 3.170893, -3.671427, -3.433394, 0.816674, 0.53832, 3.430348, 3.298537, 3.324464, -0.049808, 2.195917, 0.727256, -0.636096, 3.23499, 2.741623 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 34, 20, 36, 81, 46, 52, 68, 9, 66, 2, 25, 15, 43, 11, 56, 18, 30, 64 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 2052, "computed_crc12": 2896, "message_preview_12chars": "B72C4hHn44DA", "message_words_6bit": [ 11, 7, 2, 12, 4, 43, 17, 49, 4, 4, 13, 10 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_2", "info87_bits": [ 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ], "info87_bitstring": "000011000111000110001100010100101001010011100001000110000100001110101010001100000000100", "info87_llr": [ 1.633064, 4.156156, -0.234413, 0.846606, -1.665831, -1.18624, 4.299086, 4.380442, 0.950294, 0.190441, -1.964437, -0.375583, 3.190836, 1.61847, 0.952162, 0.256684, -3.452614, 3.316425, 0.461278, 1.617679, -0.017372, -2.722721, 2.886539, 4.540544, 1.116668, 0.241623, 0.820957, -2.336355, 3.523283, 2.032908, -0.50637, 0.743483, -1.76176, 4.126879, 0.002367, -1.633238, 0.0224, -2.968546, 0.588611, 1.69897, 0.602263, -0.834123, -1.453236, -0.353653, 4.239997, 3.155401, -0.091472, -0.931735, 3.276848, 4.699025, 2.377793, -1.806833, 0.135224, 3.09533, 2.246844, 3.038146, 0.422629, -1.399833, 0.616912, 2.967212, 1.988147, 2.767821, -0.619671, -1.997748, 0.531574, -0.565632, 0.193269, 2.931158, -0.178398, 3.459089, -1.237124, 1.126198, 1.243091, 3.170893, -3.671427, -3.433394, 0.816674, 0.53832, 3.430348, 3.298537, 3.324464, -0.049808, 2.195917, 0.727256, -0.636096, 3.23499, 2.741623 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 34, 20, 36, 81, 46, 52, 68, 9, 66, 2, 25, 15, 43, 11, 56, 18, 30, 64 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 2052, "computed_crc12": 3848, "message_preview_12chars": "376CKfJX64Eg", "message_words_6bit": [ 3, 7, 6, 12, 20, 41, 19, 33, 6, 4, 14, 42 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "lsb_within_each_tone" }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_3", "info87_bits": [ 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ], "info87_bitstring": "001011000111000010001100000100101011010001110001000100000100001101001010001100000000100", "info87_llr": [ 1.633064, 4.156156, -0.234413, 0.846606, -1.665831, -1.18624, 4.299086, 4.380442, 0.950294, 0.190441, -1.964437, -0.375583, 3.190836, 1.61847, 0.952162, 0.256684, -3.452614, 3.316425, 0.461278, 1.617679, -0.017372, -2.722721, 2.886539, 4.540544, 1.116668, 0.241623, 0.820957, -2.336355, 3.523283, 2.032908, -0.50637, 0.743483, -1.76176, 4.126879, 0.002367, -1.633238, 0.0224, -2.968546, 0.588611, 1.69897, 0.602263, -0.834123, -1.453236, -0.353653, 4.239997, 3.155401, -0.091472, -0.931735, 3.276848, 4.699025, 2.377793, -1.806833, 0.135224, 3.09533, 2.246844, 3.038146, 0.422629, -1.399833, 0.616912, 2.967212, 1.988147, 2.767821, -0.619671, -1.997748, 0.531574, -0.565632, 0.193269, 2.931158, -0.178398, 3.459089, -1.237124, 1.126198, 1.243091, 3.170893, -3.671427, -3.433394, 0.816674, 0.53832, 3.430348, 3.298537, 3.324464, -0.049808, 2.195917, 0.727256, -0.636096, 3.23499, 2.741623 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 34, 20, 36, 81, 46, 52, 68, 9, 66, 2, 25, 15, 43, 11, 56, 18, 30, 64 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 2052, "computed_crc12": 2896, "message_preview_12chars": "B72C4hHn44DA", "message_words_6bit": [ 11, 7, 2, 12, 4, 43, 17, 49, 4, 4, 13, 10 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "lsb_within_each_tone" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_13", "info87_bits": [ 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1 ], "info87_bitstring": "100010110100011010000000000100010000010010110010001010010000001100001010011000000011001", "info87_llr": [ -0.209038, 0.685227, 0.714256, 0.582374, -0.80529, 2.324306, -2.974916, -3.00248, 2.49754, -2.16565, 0.952565, 3.805061, 3.712501, -3.671427, -0.11257, 1.435812, -0.039765, 1.428856, 2.529762, -0.012252, 2.287475, 0.494359, -0.002196, 3.084662, 1.036543, 0.588611, 3.913359, -0.933482, 1.010807, 0.371795, 2.713506, -0.195533, 0.085494, 0.848254, 0.318754, 0.788456, 0.677186, -0.137352, 0.944531, 1.91386, -0.50408, 3.578498, -0.50936, -0.120429, 2.358856, 3.353018, -0.178398, 0.001336, 0.173709, 0.16822, -0.476301, 1.70184, -1.745484, 4.353645, 0.145504, 0.486012, 1.042991, 2.854612, 4.239997, 2.652104, 0.370016, 0.137897, -0.728006, -2.663617, 0.577676, 1.104997, 0.944271, 0.332044, -0.611242, -0.627615, 0.081808, 1.699334, 2.87139, -0.483434, -0.424825, 0.138142, 1.638114, 1.489949, 4.314578, 2.15848, 0.043362, 1.804286, -1.76176, -1.254454, 0.905334, 2.208874, -0.976575 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 47, 22, 19, 16, 80, 70, 32, 14, 43, 37, 61, 75, 54, 49, 48, 46, 31, 0 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 25, "computed_crc12": 2218, "message_preview_12chars": "YqQ04GIoAGCA", "message_words_6bit": [ 34, 52, 26, 0, 4, 16, 18, 50, 10, 16, 12, 10 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword" }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_13", "info87_bits": [ 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1 ], "info87_bitstring": "100010110100011010000000000100010000010010110010001010010000001100001010011000000011001", "info87_llr": [ -0.209038, 0.685227, 0.714256, 0.582374, -0.80529, 2.324306, -2.974916, -3.00248, 2.49754, -2.16565, 0.952565, 3.805061, 3.712501, -3.671427, -0.11257, 1.435812, -0.039765, 1.428856, 2.529762, -0.012252, 2.287475, 0.494359, -0.002196, 3.084662, 1.036543, 0.588611, 3.913359, -0.933482, 1.010807, 0.371795, 2.713506, -0.195533, 0.085494, 0.848254, 0.318754, 0.788456, 0.677186, -0.137352, 0.944531, 1.91386, -0.50408, 3.578498, -0.50936, -0.120429, 2.358856, 3.353018, -0.178398, 0.001336, 0.173709, 0.16822, -0.476301, 1.70184, -1.745484, 4.353645, 0.145504, 0.486012, 1.042991, 2.854612, 4.239997, 2.652104, 0.370016, 0.137897, -0.728006, -2.663617, 0.577676, 1.104997, 0.944271, 0.332044, -0.611242, -0.627615, 0.081808, 1.699334, 2.87139, -0.483434, -0.424825, 0.138142, 1.638114, 1.489949, 4.314578, 2.15848, 0.043362, 1.804286, -1.76176, -1.254454, 0.905334, 2.208874, -0.976575 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 47, 22, 19, 16, 80, 70, 32, 14, 43, 37, 61, 75, 54, 49, 48, 46, 31, 0 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 25, "computed_crc12": 2218, "message_preview_12chars": "YqQ04GIoAGCA", "message_words_6bit": [ 34, 52, 26, 0, 4, 16, 18, 50, 10, 16, 12, 10 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_0", "info87_bits": [ 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0 ], "info87_bitstring": "101100100010010001000000001111110010001000110100010001000101011011010100011101111001010", "info87_llr": [ -1.574281, 1.183036, -0.344498, -2.541954, 0.7732, 0.247472, -1.412322, 1.172412, 1.02575, 3.664017, -2.701831, 0.717301, 1.874325, -1.619767, 1.847462, 2.973596, 2.499076, -0.136005, 2.365444, 3.15641, 0.88089, -0.02656, 3.386407, 0.339261, 1.743145, 0.465416, -1.524149, -2.386564, -3.376877, -2.015791, -0.621243, -0.230999, 0.663107, 1.045646, 0.193269, 2.931158, 0.219348, 0.251264, -0.026131, 1.304231, 1.243091, 3.170893, -2.178419, -0.893591, 2.465215, -3.139324, 3.430348, 3.298537, 2.652777, 0.181983, 2.195917, 0.727256, 0.49459, -1.788637, 1.027258, 0.18622, 0.139277, -1.335079, 0.51742, -0.566201, 1.099215, -1.227843, -0.745502, 0.844951, -1.49945, -1.098077, 0.002367, -1.633238, 1.643774, -0.344806, 3.357766, 3.463596, 0.602263, -0.834123, -1.898565, -0.800163, 1.057226, -1.488388, -0.091472, -0.931735, -1.900471, 2.140122, 2.377793, -1.806833, 0.444356, -2.48777, 2.450604 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 66, 38, 21, 78, 17, 56, 49, 55, 34, 36, 31, 5, 37, 23, 2, 69, 84, 25 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3018, "computed_crc12": 3414, "message_preview_12chars": "iYH0Fo8qH5RK", "message_words_6bit": [ 44, 34, 17, 0, 15, 50, 8, 52, 17, 5, 27, 20 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_1", "info87_bits": [ 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0 ], "info87_bitstring": "101100100010010001000000001111110010001000110100010001000101011011010100011101111001010", "info87_llr": [ -1.574281, 1.183036, -0.344498, -2.541954, 0.7732, 0.247472, -1.412322, 1.172412, 1.02575, 3.664017, -2.701831, 0.717301, 1.874325, -1.619767, 1.847462, 2.973596, 2.499076, -0.136005, 2.365444, 3.15641, 0.88089, -0.02656, 3.386407, 0.339261, 1.743145, 0.465416, -1.524149, -2.386564, -3.376877, -2.015791, -0.621243, -0.230999, 0.663107, 1.045646, 0.193269, 2.931158, 0.219348, 0.251264, -0.026131, 1.304231, 1.243091, 3.170893, -2.178419, -0.893591, 2.465215, -3.139324, 3.430348, 3.298537, 2.652777, 0.181983, 2.195917, 0.727256, 0.49459, -1.788637, 1.027258, 0.18622, 0.139277, -1.335079, 0.51742, -0.566201, 1.099215, -1.227843, -0.745502, 0.844951, -1.49945, -1.098077, 0.002367, -1.633238, 1.643774, -0.344806, 3.357766, 3.463596, 0.602263, -0.834123, -1.898565, -0.800163, 1.057226, -1.488388, -0.091472, -0.931735, -1.900471, 2.140122, 2.377793, -1.806833, 0.444356, -2.48777, 2.450604 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 66, 38, 21, 78, 17, 56, 49, 55, 34, 36, 31, 5, 37, 23, 2, 69, 84, 25 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3018, "computed_crc12": 3414, "message_preview_12chars": "iYH0Fo8qH5RK", "message_words_6bit": [ 44, 34, 17, 0, 15, 50, 8, 52, 17, 5, 27, 20 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_4", "info87_bits": [ 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0 ], "info87_bitstring": "101100100010010000000100001111110010011000110100000001010101011011010100011101111001010", "info87_llr": [ -1.574281, 1.183036, -0.344498, -2.541954, 0.7732, 0.247472, -1.412322, 1.172412, 1.02575, 3.664017, -2.701831, 0.717301, 1.874325, -1.619767, 1.847462, 2.973596, 2.499076, -0.136005, 2.365444, 3.15641, 0.88089, -0.02656, 3.386407, 0.339261, 1.743145, 0.465416, -1.524149, -2.386564, -3.376877, -2.015791, -0.621243, -0.230999, 0.663107, 1.045646, 0.193269, 2.931158, 0.219348, 0.251264, -0.026131, 1.304231, 1.243091, 3.170893, -2.178419, -0.893591, 2.465215, -3.139324, 3.430348, 3.298537, 2.652777, 0.181983, 2.195917, 0.727256, 0.49459, -1.788637, 1.027258, 0.18622, 0.139277, -1.335079, 0.51742, -0.566201, 1.099215, -1.227843, -0.745502, 0.844951, -1.49945, -1.098077, 0.002367, -1.633238, 1.643774, -0.344806, 3.357766, 3.463596, 0.602263, -0.834123, -1.898565, -0.800163, 1.057226, -1.488388, -0.091472, -0.931735, -1.900471, 2.140122, 2.377793, -1.806833, 0.444356, -2.48777, 2.450604 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 66, 38, 21, 78, 17, 56, 49, 55, 34, 36, 31, 5, 37, 23, 2, 69, 84, 25 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3018, "computed_crc12": 236, "message_preview_12chars": "iYG4FoOq1LRK", "message_words_6bit": [ 44, 34, 16, 4, 15, 50, 24, 52, 1, 21, 27, 20 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_5", "info87_bits": [ 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0 ], "info87_bitstring": "101100100010010000000100001111110010011000110100000001010101011011010100011101111001010", "info87_llr": [ -1.574281, 1.183036, -0.344498, -2.541954, 0.7732, 0.247472, -1.412322, 1.172412, 1.02575, 3.664017, -2.701831, 0.717301, 1.874325, -1.619767, 1.847462, 2.973596, 2.499076, -0.136005, 2.365444, 3.15641, 0.88089, -0.02656, 3.386407, 0.339261, 1.743145, 0.465416, -1.524149, -2.386564, -3.376877, -2.015791, -0.621243, -0.230999, 0.663107, 1.045646, 0.193269, 2.931158, 0.219348, 0.251264, -0.026131, 1.304231, 1.243091, 3.170893, -2.178419, -0.893591, 2.465215, -3.139324, 3.430348, 3.298537, 2.652777, 0.181983, 2.195917, 0.727256, 0.49459, -1.788637, 1.027258, 0.18622, 0.139277, -1.335079, 0.51742, -0.566201, 1.099215, -1.227843, -0.745502, 0.844951, -1.49945, -1.098077, 0.002367, -1.633238, 1.643774, -0.344806, 3.357766, 3.463596, 0.602263, -0.834123, -1.898565, -0.800163, 1.057226, -1.488388, -0.091472, -0.931735, -1.900471, 2.140122, 2.377793, -1.806833, 0.444356, -2.48777, 2.450604 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 66, 38, 21, 78, 17, 56, 49, 55, 34, 36, 31, 5, 37, 23, 2, 69, 84, 25 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3018, "computed_crc12": 236, "message_preview_12chars": "iYG4FoOq1LRK", "message_words_6bit": [ 44, 34, 16, 4, 15, 50, 24, 52, 1, 21, 27, 20 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_0", "info87_bits": [ 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0 ], "info87_bitstring": "101100100010010001000000001111110010001000110100010001000101011011010100011101111001010", "info87_llr": [ -1.574281, 1.183036, -0.344498, -2.541954, 0.7732, 0.247472, -1.412322, 1.172412, 1.02575, 3.664017, -2.701831, 0.717301, 1.874325, -1.619767, 1.847462, 2.973596, 2.499076, -0.136005, 2.365444, 3.15641, 0.88089, -0.02656, 3.386407, 0.339261, 1.743145, 0.465416, -1.524149, -2.386564, -3.376877, -2.015791, -0.621243, -0.230999, 0.663107, 1.045646, 0.193269, 2.931158, 0.219348, 0.251264, -0.026131, 1.304231, 1.243091, 3.170893, -2.178419, -0.893591, 2.465215, -3.139324, 3.430348, 3.298537, 2.652777, 0.181983, 2.195917, 0.727256, 0.49459, -1.788637, 1.027258, 0.18622, 0.139277, -1.335079, 0.51742, -0.566201, 1.099215, -1.227843, -0.745502, 0.844951, -1.49945, -1.098077, 0.002367, -1.633238, 1.643774, -0.344806, 3.357766, 3.463596, 0.602263, -0.834123, -1.898565, -0.800163, 1.057226, -1.488388, -0.091472, -0.931735, -1.900471, 2.140122, 2.377793, -1.806833, 0.444356, -2.48777, 2.450604 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 66, 38, 21, 78, 17, 56, 49, 55, 34, 36, 31, 5, 37, 23, 2, 69, 84, 25 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3018, "computed_crc12": 3414, "message_preview_12chars": "iYH0Fo8qH5RK", "message_words_6bit": [ 44, 34, 17, 0, 15, 50, 8, 52, 17, 5, 27, 20 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "raw_msb_symbol_order" }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_1", "info87_bits": [ 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0 ], "info87_bitstring": "101100100010010001000000001111110010001000110100010001000101011011010100011101111001010", "info87_llr": [ -1.574281, 1.183036, -0.344498, -2.541954, 0.7732, 0.247472, -1.412322, 1.172412, 1.02575, 3.664017, -2.701831, 0.717301, 1.874325, -1.619767, 1.847462, 2.973596, 2.499076, -0.136005, 2.365444, 3.15641, 0.88089, -0.02656, 3.386407, 0.339261, 1.743145, 0.465416, -1.524149, -2.386564, -3.376877, -2.015791, -0.621243, -0.230999, 0.663107, 1.045646, 0.193269, 2.931158, 0.219348, 0.251264, -0.026131, 1.304231, 1.243091, 3.170893, -2.178419, -0.893591, 2.465215, -3.139324, 3.430348, 3.298537, 2.652777, 0.181983, 2.195917, 0.727256, 0.49459, -1.788637, 1.027258, 0.18622, 0.139277, -1.335079, 0.51742, -0.566201, 1.099215, -1.227843, -0.745502, 0.844951, -1.49945, -1.098077, 0.002367, -1.633238, 1.643774, -0.344806, 3.357766, 3.463596, 0.602263, -0.834123, -1.898565, -0.800163, 1.057226, -1.488388, -0.091472, -0.931735, -1.900471, 2.140122, 2.377793, -1.806833, 0.444356, -2.48777, 2.450604 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 66, 38, 21, 78, 17, 56, 49, 55, 34, 36, 31, 5, 37, 23, 2, 69, 84, 25 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3018, "computed_crc12": 3414, "message_preview_12chars": "iYH0Fo8qH5RK", "message_words_6bit": [ 44, 34, 17, 0, 15, 50, 8, 52, 17, 5, 27, 20 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_lsb_within_each_tone+no_interleaver" }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_4", "info87_bits": [ 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0 ], "info87_bitstring": "101100100010010000000100001111110010011000110100000001010101011011010100011101111001010", "info87_llr": [ -1.574281, 1.183036, -0.344498, -2.541954, 0.7732, 0.247472, -1.412322, 1.172412, 1.02575, 3.664017, -2.701831, 0.717301, 1.874325, -1.619767, 1.847462, 2.973596, 2.499076, -0.136005, 2.365444, 3.15641, 0.88089, -0.02656, 3.386407, 0.339261, 1.743145, 0.465416, -1.524149, -2.386564, -3.376877, -2.015791, -0.621243, -0.230999, 0.663107, 1.045646, 0.193269, 2.931158, 0.219348, 0.251264, -0.026131, 1.304231, 1.243091, 3.170893, -2.178419, -0.893591, 2.465215, -3.139324, 3.430348, 3.298537, 2.652777, 0.181983, 2.195917, 0.727256, 0.49459, -1.788637, 1.027258, 0.18622, 0.139277, -1.335079, 0.51742, -0.566201, 1.099215, -1.227843, -0.745502, 0.844951, -1.49945, -1.098077, 0.002367, -1.633238, 1.643774, -0.344806, 3.357766, 3.463596, 0.602263, -0.834123, -1.898565, -0.800163, 1.057226, -1.488388, -0.091472, -0.931735, -1.900471, 2.140122, 2.377793, -1.806833, 0.444356, -2.48777, 2.450604 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 66, 38, 21, 78, 17, 56, 49, 55, 34, 36, 31, 5, 37, 23, 2, 69, 84, 25 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3018, "computed_crc12": 236, "message_preview_12chars": "iYG4FoOq1LRK", "message_words_6bit": [ 44, 34, 16, 4, 15, 50, 24, 52, 1, 21, 27, 20 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "raw_msb_symbol_order" }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_5", "info87_bits": [ 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0 ], "info87_bitstring": "101100100010010000000100001111110010011000110100000001010101011011010100011101111001010", "info87_llr": [ -1.574281, 1.183036, -0.344498, -2.541954, 0.7732, 0.247472, -1.412322, 1.172412, 1.02575, 3.664017, -2.701831, 0.717301, 1.874325, -1.619767, 1.847462, 2.973596, 2.499076, -0.136005, 2.365444, 3.15641, 0.88089, -0.02656, 3.386407, 0.339261, 1.743145, 0.465416, -1.524149, -2.386564, -3.376877, -2.015791, -0.621243, -0.230999, 0.663107, 1.045646, 0.193269, 2.931158, 0.219348, 0.251264, -0.026131, 1.304231, 1.243091, 3.170893, -2.178419, -0.893591, 2.465215, -3.139324, 3.430348, 3.298537, 2.652777, 0.181983, 2.195917, 0.727256, 0.49459, -1.788637, 1.027258, 0.18622, 0.139277, -1.335079, 0.51742, -0.566201, 1.099215, -1.227843, -0.745502, 0.844951, -1.49945, -1.098077, 0.002367, -1.633238, 1.643774, -0.344806, 3.357766, 3.463596, 0.602263, -0.834123, -1.898565, -0.800163, 1.057226, -1.488388, -0.091472, -0.931735, -1.900471, 2.140122, 2.377793, -1.806833, 0.444356, -2.48777, 2.450604 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 66, 38, 21, 78, 17, 56, 49, 55, 34, 36, 31, 5, 37, 23, 2, 69, 84, 25 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3018, "computed_crc12": 236, "message_preview_12chars": "iYG4FoOq1LRK", "message_words_6bit": [ 44, 34, 16, 4, 15, 50, 24, 52, 1, 21, 27, 20 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_lsb_within_each_tone+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_1", "info87_bits": [ 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0 ], "info87_bitstring": "101100100010010001000000001111110000000000110100000001001101011011110100011101111001010", "info87_llr": [ -1.574281, 1.183036, -0.344498, -2.541954, 0.7732, 0.247472, -1.412322, 1.172412, 1.02575, 3.664017, -2.701831, 0.717301, 1.874325, -1.619767, 1.847462, 2.973596, 2.499076, -0.136005, 2.365444, 3.15641, 0.88089, -0.02656, 3.386407, 0.339261, 1.743145, 0.465416, -1.524149, -2.386564, -3.376877, -2.015791, -0.621243, -0.230999, 0.663107, 1.045646, 0.193269, 2.931158, 0.219348, 0.251264, -0.026131, 1.304231, 1.243091, 3.170893, -2.178419, -0.893591, 2.465215, -3.139324, 3.430348, 3.298537, 2.652777, 0.181983, 2.195917, 0.727256, 0.49459, -1.788637, 1.027258, 0.18622, 0.139277, -1.335079, 0.51742, -0.566201, 1.099215, -1.227843, -0.745502, 0.844951, -1.49945, -1.098077, 0.002367, -1.633238, 1.643774, -0.344806, 3.357766, 3.463596, 0.602263, -0.834123, -1.898565, -0.800163, 1.057226, -1.488388, -0.091472, -0.931735, -1.900471, 2.140122, 2.377793, -1.806833, 0.444356, -2.48777, 2.450604 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 66, 38, 21, 78, 17, 56, 49, 55, 34, 36, 31, 5, 37, 23, 2, 69, 84, 25 ], "message174_crc12": { "ok": true, "distance": 7, "crc_match": false, "received_crc12": 3018, "computed_crc12": 2364, "message_preview_12chars": "iYH0Fm0q1DRq", "message_words_6bit": [ 44, 34, 17, 0, 15, 48, 0, 52, 1, 13, 27, 52 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+no_interleaver", "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_10", "info87_bits": [ 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0 ], "info87_bitstring": "010001001111111100111001000000110101111001010010010010001010010010100111001111001111100", "info87_llr": [ -2.340398, 1.997748, -0.844951, -3.662905, -0.743483, 0.230999, -4.09835, -3.298537, 0.931735, -3.038146, -2.973596, -0.256684, -4.540544, -3.136004, -0.331195, -1.69897, 0.354286, 0.298284, -4.380442, -3.463596, -1.126198, -3.831314, -2.967212, 0.566201, 3.648329, 2.336355, 2.386564, 3.433394, 0.353653, 0.893591, 4.154313, 0.375583, -0.717301, 3.545572, -0.727256, 1.806833, -4.255831, -3.15641, -1.617679, -2.890183, -2.931158, 1.633238, -2.767821, 2.541954, -0.846606, -2.032908, 1.892133, -0.908162, -3.155401, 3.11291, -2.039716, -1.61847, 1.488388, -0.53832, -3.23499, -3.09533, 1.788637, -3.154483, 2.722721, 0.02656, -3.459089, 2.968546, -0.251264, -1.357721, 1.18624, -0.247472, -2.583423, 1.335079, 1.399833, -3.369667, -0.465416, -0.241623, -4.281536, -3.170893, 0.834123, -4.699025, -3.664017, -0.190441, -3.316425, -2.140122, 0.049808, -4.126879, -1.421357, -0.631099, -4.156156, 1.098077, 0.565632 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 59, 80, 77, 5, 71, 65, 62, 11, 17, 14, 28, 16, 31, 70, 53, 86, 23, 83 ], "message174_crc12": { "ok": true, "distance": 7, "crc_match": false, "received_crc12": 3708, "computed_crc12": 1378, "message_preview_12chars": "HFyv0rvIIAId", "message_words_6bit": [ 17, 15, 60, 57, 0, 53, 57, 18, 18, 10, 18, 39 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver+inverted_bits", "variant": "reverse_symbol_order" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_12", "info87_bits": [ 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0 ], "info87_bitstring": "010001001111111100111001000000110101111001010010010010001010010010100111001111001111100", "info87_llr": [ 1.56285, -0.844951, 1.997748, 0.7355, 0.230999, -0.743483, 1.068462, 0.931735, -3.298537, -0.18622, -0.256684, -2.973596, -0.339261, -0.331195, -3.136004, -1.304231, 0.298284, 0.354286, -1.172412, -1.126198, -3.463596, 0.68465, 0.566201, -2.967212, 3.479748, 2.386564, 2.336355, 0.800163, 0.893591, 0.353653, -1.265602, -0.717301, 0.375583, -1.156592, 1.806833, -0.727256, -1.762176, -1.617679, -3.15641, 2.439619, 1.633238, -2.931158, 1.227843, -0.846606, 2.541954, 2.015791, -0.908162, 1.892133, 3.139324, -2.039716, 3.11291, 1.619767, -0.53832, 1.488388, 2.48777, 1.788637, -3.09533, 0.055006, 0.02656, 2.722721, 0.344806, -0.251264, 2.968546, 1.151342, -0.247472, 1.18624, -2.850878, 1.399833, 1.335079, -1.053258, -0.241623, -0.465416, 0.958075, 0.834123, -3.170893, -0.181983, -0.190441, -3.664017, 0.136005, 0.049808, -2.140122, -1.045646, -0.631099, -1.421357, -1.183036, 0.565632, 1.098077 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 58, 79, 57, 78, 75, 9, 76, 4, 70, 64, 61, 10, 16, 13, 12, 60, 29, 17 ], "message174_crc12": { "ok": true, "distance": 7, "crc_match": false, "received_crc12": 3708, "computed_crc12": 1378, "message_preview_12chars": "HFyv0rvIIAId", "message_words_6bit": [ 17, 15, 60, 57, 0, 53, 57, 18, 18, 10, 18, 39 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits", "variant": "reverse_full_bitstream" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_2", "info87_bits": [ 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0 ], "info87_bitstring": "101100100010010001000000001111110000000000110100000001001101011011110100011101111001010", "info87_llr": [ -1.574281, 1.183036, -0.344498, -2.541954, 0.7732, 0.247472, -1.412322, 1.172412, 1.02575, 3.664017, -2.701831, 0.717301, 1.874325, -1.619767, 1.847462, 2.973596, 2.499076, -0.136005, 2.365444, 3.15641, 0.88089, -0.02656, 3.386407, 0.339261, 1.743145, 0.465416, -1.524149, -2.386564, -3.376877, -2.015791, -0.621243, -0.230999, 0.663107, 1.045646, 0.193269, 2.931158, 0.219348, 0.251264, -0.026131, 1.304231, 1.243091, 3.170893, -2.178419, -0.893591, 2.465215, -3.139324, 3.430348, 3.298537, 2.652777, 0.181983, 2.195917, 0.727256, 0.49459, -1.788637, 1.027258, 0.18622, 0.139277, -1.335079, 0.51742, -0.566201, 1.099215, -1.227843, -0.745502, 0.844951, -1.49945, -1.098077, 0.002367, -1.633238, 1.643774, -0.344806, 3.357766, 3.463596, 0.602263, -0.834123, -1.898565, -0.800163, 1.057226, -1.488388, -0.091472, -0.931735, -1.900471, 2.140122, 2.377793, -1.806833, 0.444356, -2.48777, 2.450604 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 66, 38, 21, 78, 17, 56, 49, 55, 34, 36, 31, 5, 37, 23, 2, 69, 84, 25 ], "message174_crc12": { "ok": true, "distance": 7, "crc_match": false, "received_crc12": 3018, "computed_crc12": 2364, "message_preview_12chars": "iYH0Fm0q1DRq", "message_words_6bit": [ 44, 34, 17, 0, 15, 48, 0, 52, 1, 13, 27, 52 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver" } ], "outputs": { "post_ldpc_info87_runtime_export_json": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window1/step61_post_ldpc_info87_runtime_export.json" }, "warnings": [ "This is still a diagnostic runtime export, not a final JS8 text decoder.", "Step61 patches the runtime LDPC probes to expose post-LDPC info87 rows and source-index context for the next reorder/whitening alignment step." ], "next_action": "If best_distance is 0, implement source-confirmed message174 text unpack. If best_distance remains >0, build Step62 to test source-derived deinterleaver/whitening index maps against these exact runtime rows." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "tool": "webftr-js8-source-exact-map-probe", "tool_version": "step64-source-confirmed-message174-decodes-output", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "source_checked": [ { "path": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "exists": true, "is_dir": true } ], "source": { "source_available": true, "source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "files_scanned": 16, "focused_files_present": [ "JS8_Mode/JS8.cpp", "JS8_Mode/JS8.h", "JS8_Mode/Decoder.cpp", "JS8_Mode/Decoder.h", "JS8_Mode/DecodedText.cpp", "JS8_Mode/DecodedText.h", "JS8_Mode/JS8Submode.cpp", "JS8_Mode/JS8Submode.h", "JS8_Mode/soft_combiner.h", "JS8_Mode/ldpc_feedback.h", "JS8_Mode/whitening_processor.h", "JS8_Include/commons.h", "JS8_Main/Varicode.cpp", "JS8_Main/Varicode.h", "JS8_JSC/JSC_map.cpp", "JS8_JSC/JSC_list.cpp" ], "focused_files_missing": [], "exact_maps": [], "source_evidence": [ { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 11, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 8, "end_line": 14, "lines": [ { "line": 8, "text": "#include \"JS8.h\"" }, { "line": 9, "text": "#include \"JS8_Include/commons.h\"" }, { "line": 10, "text": "#include \"JS8_Mode/FrequencyTracker.h\"" }, { "line": 11, "text": "#include \"JS8_Mode/whitening_processor.h\"" }, { "line": 12, "text": "#include \"ldpc_feedback.h\"" }, { "line": 13, "text": "#include \"soft_combiner.h\"" }, { "line": 14, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 12, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 9, "end_line": 15, "lines": [ { "line": 9, "text": "#include \"JS8_Include/commons.h\"" }, { "line": 10, "text": "#include \"JS8_Mode/FrequencyTracker.h\"" }, { "line": 11, "text": "#include \"JS8_Mode/whitening_processor.h\"" }, { "line": 12, "text": "#include \"ldpc_feedback.h\"" }, { "line": 13, "text": "#include \"soft_combiner.h\"" }, { "line": 14, "text": "" }, { "line": 15, "text": "#include " } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 729, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 726, "end_line": 732, "lines": [ { "line": 726, "text": "" }, { "line": 727, "text": "// Belief Propagation Decoder" }, { "line": 728, "text": "" }, { "line": 729, "text": "int bpdecode174(std::array const &llr, std::array &decoded," }, { "line": 730, "text": " std::array &cw) {" }, { "line": 731, "text": " // Initialize messages and variables" }, { "line": 732, "text": " std::array, N> tov =" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 748, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 745, "end_line": 751, "lines": [ { "line": 745, "text": " // Initialize toc (messages from bits to checks)" }, { "line": 746, "text": " for (int i = 0; i < M; ++i) {" }, { "line": 747, "text": " for (int j = 0; j < Nm[i].valid_neighbors; ++j) {" }, { "line": 748, "text": " toc[i][j] = llr[Nm[i].neighbors[j]];" }, { "line": 749, "text": " }" }, { "line": 750, "text": " }" }, { "line": 751, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 757, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 754, "end_line": 760, "lines": [ { "line": 754, "text": " // Update bit log likelihood ratios" }, { "line": 755, "text": " for (int i = 0; i < N; ++i) {" }, { "line": 756, "text": " zn[i] =" }, { "line": 757, "text": " llr[i] + std::accumulate(tov[i].begin()," }, { "line": 758, "text": " tov[i].begin() + BP_MAX_CHECKS, 0.0f);" }, { "line": 759, "text": " }" }, { "line": 760, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 782, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 779, "end_line": 785, "lines": [ { "line": 779, "text": " // Count errors" }, { "line": 780, "text": " int nerr = 0;" }, { "line": 781, "text": " for (int i = 0; i < N; ++i) {" }, { "line": 782, "text": " if ((2 * cw[i] - 1) * llr[i] < 0.0f) {" }, { "line": 783, "text": " ++nerr;" }, { "line": 784, "text": " }" }, { "line": 785, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 895, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "checkCRC12" ], "context": { "start_line": 892, "end_line": 898, "lines": [ { "line": 892, "text": " return boost::augmented_crc<12, 0xc06>(range.data(), range.size()) ^ 42;" }, { "line": 893, "text": "}" }, { "line": 894, "text": "" }, { "line": 895, "text": "bool checkCRC12(std::array const &decoded) {" }, { "line": 896, "text": " std::array bits = {};" }, { "line": 897, "text": "" }, { "line": 898, "text": " for (std::size_t i = 0; i < decoded.size(); ++i) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 918, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "message174", "extractmessage174" ], "context": { "start_line": 915, "end_line": 921, "lines": [ { "line": 915, "text": " return crc == CRC12(bits);" }, { "line": 916, "text": "}" }, { "line": 917, "text": "" }, { "line": 918, "text": "std::string extractmessage174(std::array const &decoded) {" }, { "line": 919, "text": " std::string message;" }, { "line": 920, "text": "" }, { "line": 921, "text": " // Ensure received CRC matches computed CRC." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 923, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "checkCRC12" ], "context": { "start_line": 920, "end_line": 926, "lines": [ { "line": 920, "text": "" }, { "line": 921, "text": " // Ensure received CRC matches computed CRC." }, { "line": 922, "text": "" }, { "line": 923, "text": " if (checkCRC12(decoded)) {" }, { "line": 924, "text": " message.reserve(12);" }, { "line": 925, "text": "" }, { "line": 926, "text": " // Decode the message from the 72 data bits" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 950, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 947, "end_line": 953, "lines": [ { "line": 947, "text": "// This should be 952 bytes in size; to store an 87x87 matrix of bits," }, { "line": 948, "text": "// you need 7569 bits, which requires 119 64-bit values, or 952 bytes." }, { "line": 949, "text": "//" }, { "line": 950, "text": "// Background here is that this is a low-density parity check code (LDPC)," }, { "line": 951, "text": "// generated using the PEG algorithm. In short, true values in a row i of" }, { "line": 952, "text": "// the matrix define which of the 87 message bits must be summed, modulo" }, { "line": 953, "text": "// 2, to produce the ith parity check bit. Decent references on this are:" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 959, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 956, "end_line": 962, "lines": [ { "line": 956, "text": "// 2. https://inference.org.uk/mackay/PEG_ECC.html" }, { "line": 957, "text": "// 3. https://github.com/Lcrypto/classic-PEG-" }, { "line": 958, "text": "//" }, { "line": 959, "text": "// The data used was harvested from the original 'ldpc_174_87_params.f90'," }, { "line": 960, "text": "// but you'll note that the rows have been reordered here, because this" }, { "line": 961, "text": "// isn't Fortran; C++ is row-major, not column-major." }, { "line": 962, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1084, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1081, "end_line": 1087, "lines": [ { "line": 1081, "text": " js8::SoftCombiner m_softCombiner;" }, { "line": 1082, "text": " bool m_enableFreqTracking = true;" }, { "line": 1083, "text": " bool m_enableTimingTracking = true;" }, { "line": 1084, "text": " float m_llrErasureThreshold = js8::llrErasureThreshold();" }, { "line": 1085, "text": " bool m_enableLdpcFeedback = js8::ldpcFeedbackEnabled();" }, { "line": 1086, "text": " int m_maxLdpcPasses = js8::ldpcFeedbackMaxPasses();" }, { "line": 1087, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1085, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1082, "end_line": 1088, "lines": [ { "line": 1082, "text": " bool m_enableFreqTracking = true;" }, { "line": 1083, "text": " bool m_enableTimingTracking = true;" }, { "line": 1084, "text": " float m_llrErasureThreshold = js8::llrErasureThreshold();" }, { "line": 1085, "text": " bool m_enableLdpcFeedback = js8::ldpcFeedbackEnabled();" }, { "line": 1086, "text": " int m_maxLdpcPasses = js8::ldpcFeedbackMaxPasses();" }, { "line": 1087, "text": "" }, { "line": 1088, "text": " using Plan = FFTWPlanManager::Type;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1086, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1083, "end_line": 1089, "lines": [ { "line": 1083, "text": " bool m_enableTimingTracking = true;" }, { "line": 1084, "text": " float m_llrErasureThreshold = js8::llrErasureThreshold();" }, { "line": 1085, "text": " bool m_enableLdpcFeedback = js8::ldpcFeedbackEnabled();" }, { "line": 1086, "text": " int m_maxLdpcPasses = js8::ldpcFeedbackMaxPasses();" }, { "line": 1087, "text": "" }, { "line": 1088, "text": " using Plan = FFTWPlanManager::Type;" }, { "line": 1089, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1473, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 1470, "end_line": 1476, "lines": [ { "line": 1470, "text": " symbolWinners[j] = winner;" }, { "line": 1471, "text": " }" }, { "line": 1472, "text": "" }, { "line": 1473, "text": " auto const whitening = js8::WhiteningProcessor::process(" }, { "line": 1474, "text": " s1, symbolWinners, m_llrErasureThreshold," }, { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1474, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1471, "end_line": 1477, "lines": [ { "line": 1471, "text": " }" }, { "line": 1472, "text": "" }, { "line": 1473, "text": " auto const whitening = js8::WhiteningProcessor::process(" }, { "line": 1474, "text": " s1, symbolWinners, m_llrErasureThreshold," }, { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" }, { "line": 1477, "text": " auto llr0 = whitening.llr0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1477, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten", "llr" ], "context": { "start_line": 1474, "end_line": 1480, "lines": [ { "line": 1474, "text": " s1, symbolWinners, m_llrErasureThreshold," }, { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" }, { "line": 1477, "text": " auto llr0 = whitening.llr0;" }, { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1478, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten", "llr" ], "context": { "start_line": 1475, "end_line": 1481, "lines": [ { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" }, { "line": 1477, "text": " auto llr0 = whitening.llr0;" }, { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1480, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 1477, "end_line": 1483, "lines": [ { "line": 1477, "text": " auto llr0 = whitening.llr0;" }, { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." }, { "line": 1482, "text": " if (!whitening.erasureApplied) {" }, { "line": 1483, "text": " std::size_t erasuresAfterThreshold = 0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1481, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1478, "end_line": 1484, "lines": [ { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." }, { "line": 1482, "text": " if (!whitening.erasureApplied) {" }, { "line": 1483, "text": " std::size_t erasuresAfterThreshold = 0;" }, { "line": 1484, "text": " double sumAbsPreErasure = 0.0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1482, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 1479, "end_line": 1485, "lines": [ { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." }, { "line": 1482, "text": " if (!whitening.erasureApplied) {" }, { "line": 1483, "text": " std::size_t erasuresAfterThreshold = 0;" }, { "line": 1484, "text": " double sumAbsPreErasure = 0.0;" }, { "line": 1485, "text": " double sumAbsPostErasure = 0.0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1487, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1484, "end_line": 1490, "lines": [ { "line": 1484, "text": " double sumAbsPreErasure = 0.0;" }, { "line": 1485, "text": " double sumAbsPostErasure = 0.0;" }, { "line": 1486, "text": "" }, { "line": 1487, "text": " auto const applyErasureThreshold = [&](auto &llr) {" }, { "line": 1488, "text": " for (auto const value : llr)" }, { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1488, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1485, "end_line": 1491, "lines": [ { "line": 1485, "text": " double sumAbsPostErasure = 0.0;" }, { "line": 1486, "text": "" }, { "line": 1487, "text": " auto const applyErasureThreshold = [&](auto &llr) {" }, { "line": 1488, "text": " for (auto const value : llr)" }, { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1491, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1488, "end_line": 1494, "lines": [ { "line": 1488, "text": " for (auto const value : llr)" }, { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" }, { "line": 1492, "text": " for (auto &value : llr) {" }, { "line": 1493, "text": " if (std::abs(value) < m_llrErasureThreshold) {" }, { "line": 1494, "text": " value = 0.0f;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1492, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1489, "end_line": 1495, "lines": [ { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" }, { "line": 1492, "text": " for (auto &value : llr) {" }, { "line": 1493, "text": " if (std::abs(value) < m_llrErasureThreshold) {" }, { "line": 1494, "text": " value = 0.0f;" }, { "line": 1495, "text": " ++erasuresAfterThreshold;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1493, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1490, "end_line": 1496, "lines": [ { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" }, { "line": 1492, "text": " for (auto &value : llr) {" }, { "line": 1493, "text": " if (std::abs(value) < m_llrErasureThreshold) {" }, { "line": 1494, "text": " value = 0.0f;" }, { "line": 1495, "text": " ++erasuresAfterThreshold;" }, { "line": 1496, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1501, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1498, "end_line": 1504, "lines": [ { "line": 1498, "text": " sumAbsPostErasure += std::abs(value);" }, { "line": 1499, "text": " }" }, { "line": 1500, "text": " } else {" }, { "line": 1501, "text": " for (auto const value : llr)" }, { "line": 1502, "text": " sumAbsPostErasure += std::abs(value);" }, { "line": 1503, "text": " }" }, { "line": 1504, "text": " };" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1506, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1503, "end_line": 1509, "lines": [ { "line": 1503, "text": " }" }, { "line": 1504, "text": " };" }, { "line": 1505, "text": "" }, { "line": 1506, "text": " applyErasureThreshold(llr0);" }, { "line": 1507, "text": " applyErasureThreshold(llr1);" }, { "line": 1508, "text": "" }, { "line": 1509, "text": " if (decoder_js8().isDebugEnabled()) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1507, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1504, "end_line": 1510, "lines": [ { "line": 1504, "text": " };" }, { "line": 1505, "text": "" }, { "line": 1506, "text": " applyErasureThreshold(llr0);" }, { "line": 1507, "text": " applyErasureThreshold(llr1);" }, { "line": 1508, "text": "" }, { "line": 1509, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1510, "text": " auto const total =" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1511, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1508, "end_line": 1514, "lines": [ { "line": 1508, "text": "" }, { "line": 1509, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1510, "text": " auto const total =" }, { "line": 1511, "text": " static_cast(llr0.size() + llr1.size());" }, { "line": 1512, "text": " double const avgPre =" }, { "line": 1513, "text": " total > 0.0 ? sumAbsPreErasure / total : 0.0;" }, { "line": 1514, "text": " double const avgPost =" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1518, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1515, "end_line": 1521, "lines": [ { "line": 1515, "text": " total > 0.0 ? sumAbsPostErasure / total : 0.0;" }, { "line": 1516, "text": "" }, { "line": 1517, "text": " qCDebug(decoder_js8)" }, { "line": 1518, "text": " << \"LLR erasure threshold\" << m_llrErasureThreshold" }, { "line": 1519, "text": " << \"erasures:\" << erasuresAfterThreshold" }, { "line": 1520, "text": " << \"avg|LLR| pre/post:\" << avgPre << avgPost;" }, { "line": 1521, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1520, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1517, "end_line": 1523, "lines": [ { "line": 1517, "text": " qCDebug(decoder_js8)" }, { "line": 1518, "text": " << \"LLR erasure threshold\" << m_llrErasureThreshold" }, { "line": 1519, "text": " << \"erasures:\" << erasuresAfterThreshold" }, { "line": 1520, "text": " << \"avg|LLR| pre/post:\" << avgPre << avgPost;" }, { "line": 1521, "text": " }" }, { "line": 1522, "text": " }" }, { "line": 1523, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1529, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1526, "end_line": 1532, "lines": [ { "line": 1526, "text": " m_softCombiner.flush(ttl);" }, { "line": 1527, "text": "" }, { "line": 1528, "text": " auto const key =" }, { "line": 1529, "text": " m_softCombiner.makeKey(Mode::NSUBMODE, f1, xdt, llr0, llr1);" }, { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1530, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1527, "end_line": 1533, "lines": [ { "line": 1527, "text": "" }, { "line": 1528, "text": " auto const key =" }, { "line": 1529, "text": " m_softCombiner.makeKey(Mode::NSUBMODE, f1, xdt, llr0, llr1);" }, { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" }, { "line": 1533, "text": " auto llr1Combined = combined.llr1;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1532, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1529, "end_line": 1535, "lines": [ { "line": 1529, "text": " m_softCombiner.makeKey(Mode::NSUBMODE, f1, xdt, llr0, llr1);" }, { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" }, { "line": 1533, "text": " auto llr1Combined = combined.llr1;" }, { "line": 1534, "text": "" }, { "line": 1535, "text": " std::array decoded;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1533, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1530, "end_line": 1536, "lines": [ { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" }, { "line": 1533, "text": " auto llr1Combined = combined.llr1;" }, { "line": 1534, "text": "" }, { "line": 1535, "text": " std::array decoded;" }, { "line": 1536, "text": " std::array cw;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1538, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1535, "end_line": 1541, "lines": [ { "line": 1535, "text": " std::array decoded;" }, { "line": 1536, "text": " std::array cw;" }, { "line": 1537, "text": "" }, { "line": 1538, "text": " int totalLdpcPasses = 0;" }, { "line": 1539, "text": " bool usedFeedbackPass = false;" }, { "line": 1540, "text": " bool feedbackTurnedSuccess = false;" }, { "line": 1541, "text": " int feedbackConfident = 0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1544, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1541, "end_line": 1547, "lines": [ { "line": 1541, "text": " int feedbackConfident = 0;" }, { "line": 1542, "text": " int feedbackUncertain = 0;" }, { "line": 1543, "text": "" }, { "line": 1544, "text": " auto const tryDecode = [&](std::array const &llrInput," }, { "line": 1545, "text": " int ipass) -> std::optional {" }, { "line": 1546, "text": " nharderrors = bpdecode174(llrInput, decoded, cw);" }, { "line": 1547, "text": " xsnr = -99.0f;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1546, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1543, "end_line": 1549, "lines": [ { "line": 1543, "text": "" }, { "line": 1544, "text": " auto const tryDecode = [&](std::array const &llrInput," }, { "line": 1545, "text": " int ipass) -> std::optional {" }, { "line": 1546, "text": " nharderrors = bpdecode174(llrInput, decoded, cw);" }, { "line": 1547, "text": " xsnr = -99.0f;" }, { "line": 1548, "text": "" }, { "line": 1549, "text": " if (std::all_of(cw.begin(), cw.end()," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1558, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "checkCRC12" ], "context": { "start_line": 1555, "end_line": 1561, "lines": [ { "line": 1555, "text": " !(sync < 2.0f && nharderrors > 35) &&" }, { "line": 1556, "text": " !(ipass > 2 && nharderrors > 39) &&" }, { "line": 1557, "text": " !(ipass == 4 && nharderrors > 30)) {" }, { "line": 1558, "text": " if (checkCRC12(decoded)) {" }, { "line": 1559, "text": " if (syncStats)" }, { "line": 1560, "text": " emitEvent(JS8::Event::SyncState{" }, { "line": 1561, "text": " JS8::Event::SyncState::Type::DECODED," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1567, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "message174", "extractmessage174" ], "context": { "start_line": 1564, "end_line": 1570, "lines": [ { "line": 1564, "text": " xdt2," }, { "line": 1565, "text": " {.decoded = sync}});" }, { "line": 1566, "text": "" }, { "line": 1567, "text": " auto message = extractmessage174(decoded);" }, { "line": 1568, "text": "" }, { "line": 1569, "text": " int const i3bit =" }, { "line": 1570, "text": " (decoded[72] << 2) | (decoded[73] << 1) | decoded[74];" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1604, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1601, "end_line": 1607, "lines": [ { "line": 1601, "text": " };" }, { "line": 1602, "text": "" }, { "line": 1603, "text": " // Loop over decoding passes" }, { "line": 1604, "text": " for (int ipass = 1; ipass <= 4 && totalLdpcPasses < m_maxLdpcPasses;" }, { "line": 1605, "text": " ++ipass) {" }, { "line": 1606, "text": " auto &llr = ipass == 2 ? llr1Combined : llr0Combined;" }, { "line": 1607, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1606, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1603, "end_line": 1609, "lines": [ { "line": 1603, "text": " // Loop over decoding passes" }, { "line": 1604, "text": " for (int ipass = 1; ipass <= 4 && totalLdpcPasses < m_maxLdpcPasses;" }, { "line": 1605, "text": " ++ipass) {" }, { "line": 1606, "text": " auto &llr = ipass == 2 ? llr1Combined : llr0Combined;" }, { "line": 1607, "text": "" }, { "line": 1608, "text": " // Zero ranges for certain passes to mirror legacy behavior." }, { "line": 1609, "text": " if (ipass == 3)" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1610, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1607, "end_line": 1613, "lines": [ { "line": 1607, "text": "" }, { "line": 1608, "text": " // Zero ranges for certain passes to mirror legacy behavior." }, { "line": 1609, "text": " if (ipass == 3)" }, { "line": 1610, "text": " std::fill(llr0Combined.begin(), llr0Combined.begin() + 24," }, { "line": 1611, "text": " 0.0f);" }, { "line": 1612, "text": " else if (ipass == 4)" }, { "line": 1613, "text": " std::fill(llr0Combined.begin() + 24, llr0Combined.begin() + 48," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1613, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1610, "end_line": 1616, "lines": [ { "line": 1610, "text": " std::fill(llr0Combined.begin(), llr0Combined.begin() + 24," }, { "line": 1611, "text": " 0.0f);" }, { "line": 1612, "text": " else if (ipass == 4)" }, { "line": 1613, "text": " std::fill(llr0Combined.begin() + 24, llr0Combined.begin() + 48," }, { "line": 1614, "text": " 0.0f);" }, { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1616, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1613, "end_line": 1619, "lines": [ { "line": 1613, "text": " std::fill(llr0Combined.begin() + 24, llr0Combined.begin() + 48," }, { "line": 1614, "text": " 0.0f);" }, { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" }, { "line": 1617, "text": " if (auto result = tryDecode(llrPrimary, ipass)) {" }, { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1617, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1614, "end_line": 1620, "lines": [ { "line": 1614, "text": " 0.0f);" }, { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" }, { "line": 1617, "text": " if (auto result = tryDecode(llrPrimary, ipass)) {" }, { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" }, { "line": 1620, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1618, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1615, "end_line": 1621, "lines": [ { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" }, { "line": 1617, "text": " if (auto result = tryDecode(llrPrimary, ipass)) {" }, { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" }, { "line": 1620, "text": " }" }, { "line": 1621, "text": " ++totalLdpcPasses;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1621, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1618, "end_line": 1624, "lines": [ { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" }, { "line": 1620, "text": " }" }, { "line": 1621, "text": " ++totalLdpcPasses;" }, { "line": 1622, "text": "" }, { "line": 1623, "text": " // Feedback refinement and second attempt, if enabled and budget" }, { "line": 1624, "text": " // allows." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1625, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1622, "end_line": 1628, "lines": [ { "line": 1622, "text": "" }, { "line": 1623, "text": " // Feedback refinement and second attempt, if enabled and budget" }, { "line": 1624, "text": " // allows." }, { "line": 1625, "text": " if (m_enableLdpcFeedback && totalLdpcPasses < m_maxLdpcPasses) {" }, { "line": 1626, "text": " std::array llrRefined;" }, { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1626, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1623, "end_line": 1629, "lines": [ { "line": 1623, "text": " // Feedback refinement and second attempt, if enabled and budget" }, { "line": 1624, "text": " // allows." }, { "line": 1625, "text": " if (m_enableLdpcFeedback && totalLdpcPasses < m_maxLdpcPasses) {" }, { "line": 1626, "text": " std::array llrRefined;" }, { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" }, { "line": 1629, "text": " js8::refineLlrsWithLdpcFeedback(" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1629, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr", "LDPC", "ldpc" ], "context": { "start_line": 1626, "end_line": 1632, "lines": [ { "line": 1626, "text": " std::array llrRefined;" }, { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" }, { "line": 1629, "text": " js8::refineLlrsWithLdpcFeedback(" }, { "line": 1630, "text": " llrPrimary, cw, m_llrErasureThreshold, llrRefined," }, { "line": 1631, "text": " confident, uncertain);" }, { "line": 1632, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1630, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1627, "end_line": 1633, "lines": [ { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" }, { "line": 1629, "text": " js8::refineLlrsWithLdpcFeedback(" }, { "line": 1630, "text": " llrPrimary, cw, m_llrErasureThreshold, llrRefined," }, { "line": 1631, "text": " confident, uncertain);" }, { "line": 1632, "text": "" }, { "line": 1633, "text": " if (decoder_js8().isDebugEnabled()) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1635, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1632, "end_line": 1638, "lines": [ { "line": 1632, "text": "" }, { "line": 1633, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1634, "text": " qCDebug(decoder_js8)" }, { "line": 1635, "text": " << \"LDPC feedback pass\"" }, { "line": 1636, "text": " << \"ipass\" << ipass << \"confident\" << confident" }, { "line": 1637, "text": " << \"uncertain\" << uncertain;" }, { "line": 1638, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1644, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1641, "end_line": 1647, "lines": [ { "line": 1641, "text": " feedbackConfident += confident;" }, { "line": 1642, "text": " feedbackUncertain += uncertain;" }, { "line": 1643, "text": "" }, { "line": 1644, "text": " if (auto result = tryDecode(llrRefined, ipass)) {" }, { "line": 1645, "text": " ++totalLdpcPasses;" }, { "line": 1646, "text": " feedbackTurnedSuccess = true;" }, { "line": 1647, "text": " if (decoder_js8().isDebugEnabled()) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1645, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1642, "end_line": 1648, "lines": [ { "line": 1642, "text": " feedbackUncertain += uncertain;" }, { "line": 1643, "text": "" }, { "line": 1644, "text": " if (auto result = tryDecode(llrRefined, ipass)) {" }, { "line": 1645, "text": " ++totalLdpcPasses;" }, { "line": 1646, "text": " feedbackTurnedSuccess = true;" }, { "line": 1647, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1648, "text": " qCDebug(decoder_js8)" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1649, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1646, "end_line": 1652, "lines": [ { "line": 1646, "text": " feedbackTurnedSuccess = true;" }, { "line": 1647, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1648, "text": " qCDebug(decoder_js8)" }, { "line": 1649, "text": " << \"LDPC feedback succeeded on second pass\"" }, { "line": 1650, "text": " << \"ipass\" << ipass << \"confident\"" }, { "line": 1651, "text": " << feedbackConfident << \"uncertain\"" }, { "line": 1652, "text": " << feedbackUncertain << \"passes\" << totalLdpcPasses;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1652, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1649, "end_line": 1655, "lines": [ { "line": 1649, "text": " << \"LDPC feedback succeeded on second pass\"" }, { "line": 1650, "text": " << \"ipass\" << ipass << \"confident\"" }, { "line": 1651, "text": " << feedbackConfident << \"uncertain\"" }, { "line": 1652, "text": " << feedbackUncertain << \"passes\" << totalLdpcPasses;" }, { "line": 1653, "text": " }" }, { "line": 1654, "text": " return result;" }, { "line": 1655, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1657, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1654, "end_line": 1660, "lines": [ { "line": 1654, "text": " return result;" }, { "line": 1655, "text": " }" }, { "line": 1656, "text": "" }, { "line": 1657, "text": " ++totalLdpcPasses;" }, { "line": 1658, "text": " }" }, { "line": 1659, "text": " }" }, { "line": 1660, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1663, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1660, "end_line": 1666, "lines": [ { "line": 1660, "text": "" }, { "line": 1661, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1662, "text": " qCDebug(decoder_js8)" }, { "line": 1663, "text": " << \"LDPC feedback summary\"" }, { "line": 1664, "text": " << \"used\" << usedFeedbackPass << \"success\"" }, { "line": 1665, "text": " << feedbackTurnedSuccess << \"confident\" << feedbackConfident" }, { "line": 1666, "text": " << \"uncertain\" << feedbackUncertain << \"passes\"" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1667, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1664, "end_line": 1670, "lines": [ { "line": 1664, "text": " << \"used\" << usedFeedbackPass << \"success\"" }, { "line": 1665, "text": " << feedbackTurnedSuccess << \"confident\" << feedbackConfident" }, { "line": 1666, "text": " << \"uncertain\" << feedbackUncertain << \"passes\"" }, { "line": 1667, "text": " << totalLdpcPasses;" }, { "line": 1668, "text": " }" }, { "line": 1669, "text": "" }, { "line": 1670, "text": " logTracker(\"fail\");" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 22, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 19, "end_line": 25, "lines": [ { "line": 19, "text": "" }, { "line": 20, "text": "namespace js8 {" }, { "line": 21, "text": "/**" }, { "line": 22, "text": " * @brief Cache and combine repeated LLR frames for the same decode candidate." }, { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 24, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 21, "end_line": 27, "lines": [ { "line": 21, "text": "/**" }, { "line": 22, "text": " * @brief Cache and combine repeated LLR frames for the same decode candidate." }, { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" }, { "line": 26, "text": " * over-the-air behavior. Templated on the LLR length so the caller binds it" }, { "line": 27, "text": " * to the decoder's bit count." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 25, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 22, "end_line": 28, "lines": [ { "line": 22, "text": " * @brief Cache and combine repeated LLR frames for the same decode candidate." }, { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" }, { "line": 26, "text": " * over-the-air behavior. Templated on the LLR length so the caller binds it" }, { "line": 27, "text": " * to the decoder's bit count." }, { "line": 28, "text": " */" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 26, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 23, "end_line": 29, "lines": [ { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" }, { "line": 26, "text": " * over-the-air behavior. Templated on the LLR length so the caller binds it" }, { "line": 27, "text": " * to the decoder's bit count." }, { "line": 28, "text": " */" }, { "line": 29, "text": "template class SoftCombiner {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 47, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 44, "end_line": 50, "lines": [ { "line": 44, "text": "" }, { "line": 45, "text": " struct Combined {" }, { "line": 46, "text": " Key key;" }, { "line": 47, "text": " std::array llr0;" }, { "line": 48, "text": " std::array llr1;" }, { "line": 49, "text": " int repeats;" }, { "line": 50, "text": " bool combined;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 48, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 45, "end_line": 51, "lines": [ { "line": 45, "text": " struct Combined {" }, { "line": 46, "text": " Key key;" }, { "line": 47, "text": " std::array llr0;" }, { "line": 48, "text": " std::array llr1;" }, { "line": 49, "text": " int repeats;" }, { "line": 50, "text": " bool combined;" }, { "line": 51, "text": " };" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 65, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 62, "end_line": 68, "lines": [ { "line": 62, "text": " maybeRunSelfTest();" }, { "line": 63, "text": " }" }, { "line": 64, "text": "" }, { "line": 65, "text": " Key makeKey(int mode, float f1, float dt, std::array const &llr0," }, { "line": 66, "text": " std::array const &llr1) const {" }, { "line": 67, "text": " return Key{mode, static_cast(std::lround(f1))," }, { "line": 68, "text": " static_cast(std::lround(dt * 10.0f)), // 100 ms bins" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 66, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 63, "end_line": 69, "lines": [ { "line": 63, "text": " }" }, { "line": 64, "text": "" }, { "line": 65, "text": " Key makeKey(int mode, float f1, float dt, std::array const &llr0," }, { "line": 66, "text": " std::array const &llr1) const {" }, { "line": 67, "text": " return Key{mode, static_cast(std::lround(f1))," }, { "line": 68, "text": " static_cast(std::lround(dt * 10.0f)), // 100 ms bins" }, { "line": 69, "text": " signature(llr0, llr1)};" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 69, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 66, "end_line": 72, "lines": [ { "line": 66, "text": " std::array const &llr1) const {" }, { "line": 67, "text": " return Key{mode, static_cast(std::lround(f1))," }, { "line": 68, "text": " static_cast(std::lround(dt * 10.0f)), // 100 ms bins" }, { "line": 69, "text": " signature(llr0, llr1)};" }, { "line": 70, "text": " }" }, { "line": 71, "text": "" }, { "line": 72, "text": " Combined combine(Key const &key, std::array const &llr0," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 72, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 69, "end_line": 75, "lines": [ { "line": 69, "text": " signature(llr0, llr1)};" }, { "line": 70, "text": " }" }, { "line": 71, "text": "" }, { "line": 72, "text": " Combined combine(Key const &key, std::array const &llr0," }, { "line": 73, "text": " std::array const &llr1," }, { "line": 74, "text": " std::chrono::seconds ttl) {" }, { "line": 75, "text": " flush(ttl);" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 73, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 70, "end_line": 76, "lines": [ { "line": 70, "text": " }" }, { "line": 71, "text": "" }, { "line": 72, "text": " Combined combine(Key const &key, std::array const &llr0," }, { "line": 73, "text": " std::array const &llr1," }, { "line": 74, "text": " std::chrono::seconds ttl) {" }, { "line": 75, "text": " flush(ttl);" }, { "line": 76, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 78, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 75, "end_line": 81, "lines": [ { "line": 75, "text": " flush(ttl);" }, { "line": 76, "text": "" }, { "line": 77, "text": " if (!m_enabled) {" }, { "line": 78, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 79, "text": " }" }, { "line": 80, "text": "" }, { "line": 81, "text": " auto &bucket = m_entries[keyForLookup(key)];" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 85, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 82, "end_line": 88, "lines": [ { "line": 82, "text": " auto it = findEntry(bucket, key.signature);" }, { "line": 83, "text": "" }, { "line": 84, "text": " if (it == bucket.end()) {" }, { "line": 85, "text": " bucket.push_back(makeEntry(key.signature, llr0, llr1));" }, { "line": 86, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 87, "text": " }" }, { "line": 88, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 86, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 83, "end_line": 89, "lines": [ { "line": 83, "text": "" }, { "line": 84, "text": " if (it == bucket.end()) {" }, { "line": 85, "text": " bucket.push_back(makeEntry(key.signature, llr0, llr1));" }, { "line": 86, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 87, "text": " }" }, { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 89, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 86, "end_line": 92, "lines": [ { "line": 86, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 87, "text": " }" }, { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" }, { "line": 90, "text": " it->llr0[i] += llr0[i];" }, { "line": 91, "text": " it->llr1[i] += llr1[i];" }, { "line": 92, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 90, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 87, "end_line": 93, "lines": [ { "line": 87, "text": " }" }, { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" }, { "line": 90, "text": " it->llr0[i] += llr0[i];" }, { "line": 91, "text": " it->llr1[i] += llr1[i];" }, { "line": 92, "text": " }" }, { "line": 93, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 91, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 88, "end_line": 94, "lines": [ { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" }, { "line": 90, "text": " it->llr0[i] += llr0[i];" }, { "line": 91, "text": " it->llr1[i] += llr1[i];" }, { "line": 92, "text": " }" }, { "line": 93, "text": "" }, { "line": 94, "text": " ++it->repeats;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 101, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 98, "end_line": 104, "lines": [ { "line": 98, "text": " << \"soft-combining repeats\" << it->repeats << \"mode\" << key.mode" }, { "line": 99, "text": " << \"freq\" << key.freqBin << \"dtbin\" << key.dtBin;" }, { "line": 100, "text": "" }, { "line": 101, "text": " return Combined{key, it->llr0, it->llr1, it->repeats, true};" }, { "line": 102, "text": " }" }, { "line": 103, "text": "" }, { "line": 104, "text": " void markDecoded(Key const &key) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 170, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 167, "end_line": 173, "lines": [ { "line": 167, "text": "" }, { "line": 168, "text": " struct Entry {" }, { "line": 169, "text": " uint32_t signature;" }, { "line": 170, "text": " std::array llr0;" }, { "line": 171, "text": " std::array llr1;" }, { "line": 172, "text": " int repeats;" }, { "line": 173, "text": " Clock::time_point lastSeen;" } ] } } ] }, "info87_rows_found": 808, "source_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T075340Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T075340Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T075340Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T071154Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T071154Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T071154Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070926Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070926Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070926Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/js8_step83_source_confirmed_message174_decode_latest.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/js8_step83_post_ldpc_info87_runtime_export_latest.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/js8_step83_candidate_export_latest.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/js8_real_wav_message174_regeneration_latest.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T035339Z_real_wav_message174_regeneration_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T035339Z_step83_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T035339Z_step83_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] } ], "source_exact_map_count": 0, "map_tests": 240, "zero_distance_candidate_count": 16, "best_distance": 0, "best_candidate": { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 214, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, "top_candidates": [ { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 214, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 215, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 187, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 188, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 160, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 161, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 133, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 134, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 106, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 107, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 79, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 80, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 52, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 53, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 25, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 26, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 189, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[0].info87_bits", "row_index": 190, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[1].info87_bits", "row_index": 191, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[2].info87_bits", "row_index": 192, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[3].info87_bits", "row_index": 193, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 81, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[0].info87_bits", "row_index": 82, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[1].info87_bits", "row_index": 83, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[2].info87_bits", "row_index": 84, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[3].info87_bits", "row_index": 85, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 135, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[0].info87_bits", "row_index": 136, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[1].info87_bits", "row_index": 137, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[2].info87_bits", "row_index": 138, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[3].info87_bits", "row_index": 139, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[4].info87_bits", "row_index": 140, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" } ], "decodes": [], "warnings": [ "Step63 is still a diagnostic/source-extraction step, not a final text decoder.", "It starts no JS8Call GUI/Qt process and performs no TX/PTT/Tune/Send actions." ], "next_action": "Zero-distance message174/CRC12 candidate found: build Step64 source-confirmed message174 text unpack and WebFTR-style decodes[] output." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-source-confirmed-message174-decode", "tool_version": "step64-source-confirmed-message174-decodes-output", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "log_dir": "/decoders/js8_decoder/logs", "source_contract": { "source": "JS8Call-Improved JS8_Mode/JS8.cpp extractmessage174/checkCRC12", "alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "crc_width": 12, "crc_poly_hex": "0xc06", "crc_xor_decimal": 42, "message_bits": "first 72 data bits as 12 x 6-bit words", "crc_gate": "Only zero-distance CRC12 candidates are emitted as decodes[]." }, "step63_source_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" } ], "runtime_fallback_reports": [], "candidate_source": "step63_source_exact_map_probe", "zero_distance_candidate_count": 2, "decode_count": 2, "top_candidates": [ { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "message_text_12chars": "001XqOA2iDZ0", "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "message_text_12chars": "Q0VsKWqfJ96x", "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" } ], "decodes": [ { "id": "js8-msg174-3655f200", "mode": "JS8", "decoder": "webftr-js8lab-step64-message174-source-confirmed", "text": "001XqOA2iDZ0", "raw": "001XqOA2iDZ0", "message_text_12chars": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "parsed": { "raw": "001XqOA2iDZ0", "normalized": "001XQOA2IDZ0", "message_type": "MESSAGE", "directed_to": null, "callsigns": [], "primary_callsign": null, "locators": [], "primary_locator": null, "body": "001XQOA2IDZ0" }, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "confidence": "crc12_zero_distance_source_extractmessage174", "rx_only": true, "sort_index": 0 }, { "id": "js8-msg174-9af968ad", "mode": "JS8", "decoder": "webftr-js8lab-step64-message174-source-confirmed", "text": "Q0VsKWqfJ96x", "raw": "Q0VsKWqfJ96x", "message_text_12chars": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "parsed": { "raw": "Q0VsKWqfJ96x", "normalized": "Q0VSKWQFJ96X", "message_type": "MESSAGE", "directed_to": null, "callsigns": [], "primary_callsign": null, "locators": [], "primary_locator": null, "body": "Q0VSKWQFJ96X" }, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "confidence": "crc12_zero_distance_source_extractmessage174", "rx_only": true, "sort_index": 1 } ], "warnings": [ "Step64 emits source-confirmed message174 CRC12-zero-distance text candidates; it is not yet a full live JS8 decoder chain from audio to final chat UI.", "It starts no JS8Call GUI/Qt process and performs no TX/PTT/Tune/Send actions.", "Random-looking 12-character payloads can still be valid message174 candidates until higher JS8 text/Varicode framing is connected." ], "next_action": "Use Step64 decodes[] as the contract for the next step: connect source-confirmed message174 output into a richer JS8 text/Varicode/framing interpretation and then feed WebFTR RX display fields." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_varicode_frame_unpack_probe_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-source-varicode-frame-unpack-probe", "tool_version": "step66-source-varicode-frame-unpack-probe", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "input_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "selected_input": true } ], "source_resolution": { "selected_source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "checked": [ { "path": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "exists": true, "is_dir": true } ] }, "source_snippets": { "source_available": true, "source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "focused_files_present": [ "JS8_Main/Varicode.cpp", "JS8_Main/Varicode.h", "JS8_JSC/JSC.cpp", "JS8_JSC/JSC.h", "JS8_JSC/JSC_map.cpp", "JS8_JSC/JSC_list.cpp", "JS8_Mode/JS8.cpp" ], "focused_files_missing": [], "snippets": [ { "name": "unpack72bits", "path": "JS8_Main/Varicode.cpp", "line": 767, "context": { "start_line": 762, "end_line": 772, "lines": [ { "line": 762, "text": " quint32 b = packed & 0xFFFFFFFF;" }, { "line": 763, "text": " return pack32bits(a) + pack32bits(b);" }, { "line": 764, "text": "}" }, { "line": 765, "text": "" }, { "line": 766, "text": "// returns the first 64 bits and sets the last 8 bits in pRem" }, { "line": 767, "text": "quint64 Varicode::unpack72bits(QString const &text, quint8 *pRem) {" }, { "line": 768, "text": " quint64 value = 0;" }, { "line": 769, "text": " quint8 rem = 0;" }, { "line": 770, "text": " quint8 mask2 = ((1 << 2) - 1);" }, { "line": 771, "text": "" }, { "line": 772, "text": " for (int i = 0; i < 10; i++) {" } ] } }, { "name": "pack72bits", "path": "JS8_Main/Varicode.cpp", "line": 767, "context": { "start_line": 762, "end_line": 772, "lines": [ { "line": 762, "text": " quint32 b = packed & 0xFFFFFFFF;" }, { "line": 763, "text": " return pack32bits(a) + pack32bits(b);" }, { "line": 764, "text": "}" }, { "line": 765, "text": "" }, { "line": 766, "text": "// returns the first 64 bits and sets the last 8 bits in pRem" }, { "line": 767, "text": "quint64 Varicode::unpack72bits(QString const &text, quint8 *pRem) {" }, { "line": 768, "text": " quint64 value = 0;" }, { "line": 769, "text": " quint8 rem = 0;" }, { "line": 770, "text": " quint8 mask2 = ((1 << 2) - 1);" }, { "line": 771, "text": "" }, { "line": 772, "text": " for (int i = 0; i < 10; i++) {" } ] } }, { "name": "unpackDirectedMessage", "path": "JS8_Main/Varicode.cpp", "line": 1716, "context": { "start_line": 1711, "end_line": 1721, "lines": [ { "line": 1711, "text": " if (n)" }, { "line": 1712, "text": " *n = match.captured(0).length();" }, { "line": 1713, "text": " return Varicode::pack72bits(Varicode::bitsToInt(bits), packed_extra);" }, { "line": 1714, "text": "}" }, { "line": 1715, "text": "" }, { "line": 1716, "text": "QStringList Varicode::unpackDirectedMessage(const QString &text," }, { "line": 1717, "text": " quint8 *pType) {" }, { "line": 1718, "text": " QStringList unpacked;" }, { "line": 1719, "text": "" }, { "line": 1720, "text": " if (text.length() < 12 || text.contains(\" \")) {" }, { "line": 1721, "text": " return unpacked;" } ] } }, { "name": "packDirectedMessage", "path": "JS8_Main/Varicode.cpp", "line": 1605, "context": { "start_line": 1600, "end_line": 1610, "lines": [ { "line": 1600, "text": "" }, { "line": 1601, "text": "// J1Y ACK" }, { "line": 1602, "text": "// J1Y?" }, { "line": 1603, "text": "// KN4CRD: J1Y$" }, { "line": 1604, "text": "// KN4CRD: J1Y! HELLO WORLD" }, { "line": 1605, "text": "QString Varicode::packDirectedMessage(const QString &text," }, { "line": 1606, "text": " const QString &mycall, QString *pTo," }, { "line": 1607, "text": " bool *pToCompound, QString *pCmd," }, { "line": 1608, "text": " QString *pNum, int *n) {" }, { "line": 1609, "text": " QString frame;" }, { "line": 1610, "text": "" } ] } }, { "name": "unpackCompoundFrame", "path": "JS8_Main/Varicode.cpp", "line": 1420, "context": { "start_line": 1415, "end_line": 1425, "lines": [ { "line": 1415, "text": " bool *isAlt, quint8 *pBits3) {" }, { "line": 1416, "text": " quint8 type = Varicode::FrameHeartbeat;" }, { "line": 1417, "text": " quint16 num = nmaxgrid;" }, { "line": 1418, "text": " quint8 bits3 = 0;" }, { "line": 1419, "text": "" }, { "line": 1420, "text": " QStringList unpacked = unpackCompoundFrame(text, &type, &num, &bits3);" }, { "line": 1421, "text": " if (unpacked.isEmpty() || type != Varicode::FrameHeartbeat) {" }, { "line": 1422, "text": " return QStringList{};" }, { "line": 1423, "text": " }" }, { "line": 1424, "text": "" }, { "line": 1425, "text": " unpacked.append(Varicode::unpackGrid(num & ((1 << 15) - 1)));" } ] } }, { "name": "packCompoundFrame", "path": "JS8_Main/Varicode.cpp", "line": 1401, "context": { "start_line": 1396, "end_line": 1406, "lines": [ { "line": 1396, "text": " if (isAlt) {" }, { "line": 1397, "text": " packed_extra |= (1 << 15);" }, { "line": 1398, "text": " cqNumber = cqs.key(type, 0);" }, { "line": 1399, "text": " }" }, { "line": 1400, "text": "" }, { "line": 1401, "text": " frame = packCompoundFrame(callsign, Varicode::FrameHeartbeat, packed_extra," }, { "line": 1402, "text": " cqNumber);" }, { "line": 1403, "text": " if (frame.isEmpty()) {" }, { "line": 1404, "text": " if (n)" }, { "line": 1405, "text": " *n = 0;" }, { "line": 1406, "text": " return frame;" } ] } }, { "name": "unpackCompoundMessage", "path": "JS8_Main/Varicode.cpp", "line": 1491, "context": { "start_line": 1486, "end_line": 1496, "lines": [ { "line": 1486, "text": " if (n)" }, { "line": 1487, "text": " *n = parsedText.captured(0).length();" }, { "line": 1488, "text": " return frame;" }, { "line": 1489, "text": "}" }, { "line": 1490, "text": "" }, { "line": 1491, "text": "QStringList Varicode::unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 1492, "text": " quint8 *pBits3) {" }, { "line": 1493, "text": " quint8 type = Varicode::FrameCompound;" }, { "line": 1494, "text": " quint16 extra = nmaxgrid;" }, { "line": 1495, "text": " quint8 bits3 = 0;" }, { "line": 1496, "text": "" } ] } }, { "name": "unpackHeartbeatMessage", "path": "JS8_Main/Varicode.cpp", "line": 1414, "context": { "start_line": 1409, "end_line": 1419, "lines": [ { "line": 1409, "text": " if (n)" }, { "line": 1410, "text": " *n = parsedText.captured(0).length();" }, { "line": 1411, "text": " return frame;" }, { "line": 1412, "text": "}" }, { "line": 1413, "text": "" }, { "line": 1414, "text": "QStringList Varicode::unpackHeartbeatMessage(const QString &text, quint8 *pType," }, { "line": 1415, "text": " bool *isAlt, quint8 *pBits3) {" }, { "line": 1416, "text": " quint8 type = Varicode::FrameHeartbeat;" }, { "line": 1417, "text": " quint16 num = nmaxgrid;" }, { "line": 1418, "text": " quint8 bits3 = 0;" }, { "line": 1419, "text": "" } ] } }, { "name": "unpackDataMessage", "path": "JS8_Main/Varicode.cpp", "line": 1912, "context": { "start_line": 1907, "end_line": 1917, "lines": [ { "line": 1907, "text": "}" }, { "line": 1908, "text": "" }, { "line": 1909, "text": "// TODO: DEPRECATED in 2.2 (still available for decoding legacy frames, but will" }, { "line": 1910, "text": "// eventually no longer be decodable) unpack data message using 70 bits" }, { "line": 1911, "text": "// available flagged as data by the first 2 bits" }, { "line": 1912, "text": "QString Varicode::unpackDataMessage(const QString &text) {" }, { "line": 1913, "text": " QString unpacked;" }, { "line": 1914, "text": "" }, { "line": 1915, "text": " if (text.length() < 12 || text.contains(\" \")) {" }, { "line": 1916, "text": " return unpacked;" }, { "line": 1917, "text": " }" } ] } }, { "name": "unpackFastDataMessage", "path": "JS8_Main/Varicode.cpp", "line": 1983, "context": { "start_line": 1978, "end_line": 1988, "lines": [ { "line": 1978, "text": "#endif" }, { "line": 1979, "text": "}" }, { "line": 1980, "text": "" }, { "line": 1981, "text": "// unpack data message using the full 72 bits available (with the data flag in" }, { "line": 1982, "text": "// the i3bit header)" }, { "line": 1983, "text": "QString Varicode::unpackFastDataMessage(const QString &text) {" }, { "line": 1984, "text": " QString unpacked;" }, { "line": 1985, "text": "" }, { "line": 1986, "text": " if (text.length() < 12 || text.contains(\" \")) {" }, { "line": 1987, "text": " return unpacked;" }, { "line": 1988, "text": " }" } ] } }, { "name": "unpackCallsign", "path": "JS8_Main/Varicode.cpp", "line": 1037, "context": { "start_line": 1032, "end_line": 1042, "lines": [ { "line": 1032, "text": " packed = 27 * packed + alphanumeric.indexOf(matched.at(5)) - 10;" }, { "line": 1033, "text": "" }, { "line": 1034, "text": " return packed;" }, { "line": 1035, "text": "}" }, { "line": 1036, "text": "" }, { "line": 1037, "text": "QString Varicode::unpackCallsign(quint32 value, bool portable) {" }, { "line": 1038, "text": " foreach (auto key, basecalls.keys()) {" }, { "line": 1039, "text": " if (basecalls[key] == value) {" }, { "line": 1040, "text": " return key;" }, { "line": 1041, "text": " }" }, { "line": 1042, "text": " }" } ] } }, { "name": "unpackAlphaNumeric50", "path": "JS8_Main/Varicode.cpp", "line": 905, "context": { "start_line": 900, "end_line": 910, "lines": [ { "line": 900, "text": " quint64 packed = a + b + c + d + e + f + g + h + i + j + k;" }, { "line": 901, "text": "" }, { "line": 902, "text": " return packed;" }, { "line": 903, "text": "}" }, { "line": 904, "text": "" }, { "line": 905, "text": "QString Varicode::unpackAlphaNumeric50(quint64 packed) {" }, { "line": 906, "text": " QChar word[11];" }, { "line": 907, "text": "" }, { "line": 908, "text": " quint64 tmp = packed % 38;" }, { "line": 909, "text": " word[10] = alphanumeric.at(tmp);" }, { "line": 910, "text": " packed = packed / 38;" } ] } }, { "name": "unpackGrid", "path": "JS8_Main/Varicode.cpp", "line": 1157, "context": { "start_line": 1152, "end_line": 1162, "lines": [ { "line": 1152, "text": " int ilat = pair.second + 90;" }, { "line": 1153, "text": "" }, { "line": 1154, "text": " return ((ilong + 180) / 2) * 180 + ilat;" }, { "line": 1155, "text": "}" }, { "line": 1156, "text": "" }, { "line": 1157, "text": "QString Varicode::unpackGrid(quint16 value) {" }, { "line": 1158, "text": " if (value > nbasegrid) {" }, { "line": 1159, "text": " return \"\";" }, { "line": 1160, "text": " }" }, { "line": 1161, "text": "" }, { "line": 1162, "text": " float dlat = value % 180 - 90;" } ] } }, { "name": "unpackCmd", "path": "JS8_Main/Varicode.cpp", "line": 1207, "context": { "start_line": 1202, "end_line": 1212, "lines": [ { "line": 1202, "text": " }" }, { "line": 1203, "text": "" }, { "line": 1204, "text": " return value;" }, { "line": 1205, "text": "}" }, { "line": 1206, "text": "" }, { "line": 1207, "text": "quint8 Varicode::unpackCmd(quint8 value, quint8 *pNum) {" }, { "line": 1208, "text": " // if the first bit is 1, this is an SNR with a number encoded in the lower" }, { "line": 1209, "text": " // 6 bits" }, { "line": 1210, "text": " if (value & (1 << 7)) {" }, { "line": 1211, "text": " if (pNum)" }, { "line": 1212, "text": " *pNum = value & ((1 << 6) - 1);" } ] } }, { "name": "huffDecode", "path": "JS8_Main/Varicode.cpp", "line": 597, "context": { "start_line": 592, "end_line": 602, "lines": [ { "line": 592, "text": " }" }, { "line": 593, "text": "" }, { "line": 594, "text": " return out;" }, { "line": 595, "text": "}" }, { "line": 596, "text": "" }, { "line": 597, "text": "QString Varicode::huffDecode(QMap const &huff," }, { "line": 598, "text": " QVector const &bitvec) {" }, { "line": 599, "text": " QString text;" }, { "line": 600, "text": "" }, { "line": 601, "text": " QString bits = Varicode::bitsToStr(bitvec);" }, { "line": 602, "text": "" } ] } }, { "name": "JSC::decompress", "path": "JS8_Main/Varicode.cpp", "line": 1938, "context": { "start_line": 1933, "end_line": 1943, "lines": [ { "line": 1933, "text": " // trim off the pad bits" }, { "line": 1934, "text": " bits = bits.mid(1, n - 1);" }, { "line": 1935, "text": "" }, { "line": 1936, "text": " if (compressed) {" }, { "line": 1937, "text": " // partial word (s,c)-dense coding with code tables" }, { "line": 1938, "text": " unpacked = JSC::decompress(bits);" }, { "line": 1939, "text": " } else {" }, { "line": 1940, "text": " // huff decode the bits (without escapes)" }, { "line": 1941, "text": " unpacked = Varicode::huffDecode(Varicode::defaultHuffTable(), bits);" }, { "line": 1942, "text": " }" }, { "line": 1943, "text": "" } ] } }, { "name": "unpack72bits", "path": "JS8_Main/Varicode.h", "line": 135, "context": { "start_line": 130, "end_line": 140, "lines": [ { "line": 130, "text": " static QString pack32bits(quint32 packed);" }, { "line": 131, "text": "" }, { "line": 132, "text": " static quint64 unpack64bits(QString const &value);" }, { "line": 133, "text": " static QString pack64bits(quint64 packed);" }, { "line": 134, "text": "" }, { "line": 135, "text": " static quint64 unpack72bits(QString const &value, quint8 *pRem);" }, { "line": 136, "text": " static QString pack72bits(quint64 value, quint8 rem);" }, { "line": 137, "text": "" }, { "line": 138, "text": " static quint32 packAlphaNumeric22(QString const &value, bool isFlag);" }, { "line": 139, "text": " static QString unpackAlphaNumeric22(quint32 packed, bool *isFlag);" }, { "line": 140, "text": "" } ] } }, { "name": "pack72bits", "path": "JS8_Main/Varicode.h", "line": 135, "context": { "start_line": 130, "end_line": 140, "lines": [ { "line": 130, "text": " static QString pack32bits(quint32 packed);" }, { "line": 131, "text": "" }, { "line": 132, "text": " static quint64 unpack64bits(QString const &value);" }, { "line": 133, "text": " static QString pack64bits(quint64 packed);" }, { "line": 134, "text": "" }, { "line": 135, "text": " static quint64 unpack72bits(QString const &value, quint8 *pRem);" }, { "line": 136, "text": " static QString pack72bits(quint64 value, quint8 rem);" }, { "line": 137, "text": "" }, { "line": 138, "text": " static quint32 packAlphaNumeric22(QString const &value, bool isFlag);" }, { "line": 139, "text": " static QString unpackAlphaNumeric22(quint32 packed, bool *isFlag);" }, { "line": 140, "text": "" } ] } }, { "name": "unpackDirectedMessage", "path": "JS8_Main/Varicode.h", "line": 185, "context": { "start_line": 180, "end_line": 190, "lines": [ { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," }, { "line": 182, "text": " QString const &mycall, QString *pTo," }, { "line": 183, "text": " bool *pToCompound, QString *pCmd," }, { "line": 184, "text": " QString *pNum, int *n);" }, { "line": 185, "text": " static QStringList unpackDirectedMessage(QString const &text," }, { "line": 186, "text": " quint8 *pType);" }, { "line": 187, "text": "" }, { "line": 188, "text": " static QString packDataMessage(QString const &text, int *n);" }, { "line": 189, "text": " static QString unpackDataMessage(QString const &text);" }, { "line": 190, "text": "" } ] } }, { "name": "packDirectedMessage", "path": "JS8_Main/Varicode.h", "line": 181, "context": { "start_line": 176, "end_line": 186, "lines": [ { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," }, { "line": 179, "text": " quint16 *pNum, quint8 *pBits3);" }, { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," }, { "line": 182, "text": " QString const &mycall, QString *pTo," }, { "line": 183, "text": " bool *pToCompound, QString *pCmd," }, { "line": 184, "text": " QString *pNum, int *n);" }, { "line": 185, "text": " static QStringList unpackDirectedMessage(QString const &text," }, { "line": 186, "text": " quint8 *pType);" } ] } }, { "name": "unpackCompoundFrame", "path": "JS8_Main/Varicode.h", "line": 178, "context": { "start_line": 173, "end_line": 183, "lines": [ { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 174, "text": " quint8 *pBits3);" }, { "line": 175, "text": "" }, { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," }, { "line": 179, "text": " quint16 *pNum, quint8 *pBits3);" }, { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," }, { "line": 182, "text": " QString const &mycall, QString *pTo," }, { "line": 183, "text": " bool *pToCompound, QString *pCmd," } ] } }, { "name": "packCompoundFrame", "path": "JS8_Main/Varicode.h", "line": 176, "context": { "start_line": 171, "end_line": 181, "lines": [ { "line": 171, "text": "" }, { "line": 172, "text": " static QString packCompoundMessage(QString const &text, int *n);" }, { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 174, "text": " quint8 *pBits3);" }, { "line": 175, "text": "" }, { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," }, { "line": 179, "text": " quint16 *pNum, quint8 *pBits3);" }, { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," } ] } }, { "name": "unpackCompoundMessage", "path": "JS8_Main/Varicode.h", "line": 173, "context": { "start_line": 168, "end_line": 178, "lines": [ { "line": 168, "text": " static QStringList unpackHeartbeatMessage(const QString &text," }, { "line": 169, "text": " quint8 *pType, bool *isAlt," }, { "line": 170, "text": " quint8 *pBits3);" }, { "line": 171, "text": "" }, { "line": 172, "text": " static QString packCompoundMessage(QString const &text, int *n);" }, { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 174, "text": " quint8 *pBits3);" }, { "line": 175, "text": "" }, { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," } ] } }, { "name": "unpackHeartbeatMessage", "path": "JS8_Main/Varicode.h", "line": 168, "context": { "start_line": 163, "end_line": 173, "lines": [ { "line": 163, "text": " static bool isCompoundCallsign(const QString &callsign);" }, { "line": 164, "text": " static bool isGroupAllowed(const QString &group);" }, { "line": 165, "text": "" }, { "line": 166, "text": " static QString packHeartbeatMessage(QString const &text," }, { "line": 167, "text": " QString const &callsign, int *n);" }, { "line": 168, "text": " static QStringList unpackHeartbeatMessage(const QString &text," }, { "line": 169, "text": " quint8 *pType, bool *isAlt," }, { "line": 170, "text": " quint8 *pBits3);" }, { "line": 171, "text": "" }, { "line": 172, "text": " static QString packCompoundMessage(QString const &text, int *n);" }, { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," } ] } }, { "name": "unpackDataMessage", "path": "JS8_Main/Varicode.h", "line": 189, "context": { "start_line": 184, "end_line": 194, "lines": [ { "line": 184, "text": " QString *pNum, int *n);" }, { "line": 185, "text": " static QStringList unpackDirectedMessage(QString const &text," }, { "line": 186, "text": " quint8 *pType);" }, { "line": 187, "text": "" }, { "line": 188, "text": " static QString packDataMessage(QString const &text, int *n);" }, { "line": 189, "text": " static QString unpackDataMessage(QString const &text);" }, { "line": 190, "text": "" }, { "line": 191, "text": " static QString packFastDataMessage(QString const &text, int *n);" }, { "line": 192, "text": " static QString unpackFastDataMessage(QString const &text);" }, { "line": 193, "text": "" }, { "line": 194, "text": " static QList>" } ] } }, { "name": "unpackFastDataMessage", "path": "JS8_Main/Varicode.h", "line": 192, "context": { "start_line": 187, "end_line": 197, "lines": [ { "line": 187, "text": "" }, { "line": 188, "text": " static QString packDataMessage(QString const &text, int *n);" }, { "line": 189, "text": " static QString unpackDataMessage(QString const &text);" }, { "line": 190, "text": "" }, { "line": 191, "text": " static QString packFastDataMessage(QString const &text, int *n);" }, { "line": 192, "text": " static QString unpackFastDataMessage(QString const &text);" }, { "line": 193, "text": "" }, { "line": 194, "text": " static QList>" }, { "line": 195, "text": " buildMessageFrames(QString const &mycall, QString const &mygrid," }, { "line": 196, "text": " QString const &selectedCall, QString const &text," }, { "line": 197, "text": " bool forceIdentify, bool forceData, int submode," } ] } }, { "name": "unpackCallsign", "path": "JS8_Main/Varicode.h", "line": 145, "context": { "start_line": 140, "end_line": 150, "lines": [ { "line": 140, "text": "" }, { "line": 141, "text": " static quint64 packAlphaNumeric50(QString const &value);" }, { "line": 142, "text": " static QString unpackAlphaNumeric50(quint64 packed);" }, { "line": 143, "text": "" }, { "line": 144, "text": " static quint32 packCallsign(QString const &value, bool *pPortable);" }, { "line": 145, "text": " static QString unpackCallsign(quint32 value, bool portable);" }, { "line": 146, "text": "" }, { "line": 147, "text": " static QString deg2grid(float dlong, float dlat);" }, { "line": 148, "text": " static QPair grid2deg(QString const &grid);" }, { "line": 149, "text": " static quint16 packGrid(QString const &value);" }, { "line": 150, "text": " static QString unpackGrid(quint16 value);" } ] } }, { "name": "unpackAlphaNumeric50", "path": "JS8_Main/Varicode.h", "line": 142, "context": { "start_line": 137, "end_line": 147, "lines": [ { "line": 137, "text": "" }, { "line": 138, "text": " static quint32 packAlphaNumeric22(QString const &value, bool isFlag);" }, { "line": 139, "text": " static QString unpackAlphaNumeric22(quint32 packed, bool *isFlag);" }, { "line": 140, "text": "" }, { "line": 141, "text": " static quint64 packAlphaNumeric50(QString const &value);" }, { "line": 142, "text": " static QString unpackAlphaNumeric50(quint64 packed);" }, { "line": 143, "text": "" }, { "line": 144, "text": " static quint32 packCallsign(QString const &value, bool *pPortable);" }, { "line": 145, "text": " static QString unpackCallsign(quint32 value, bool portable);" }, { "line": 146, "text": "" }, { "line": 147, "text": " static QString deg2grid(float dlong, float dlat);" } ] } }, { "name": "unpackGrid", "path": "JS8_Main/Varicode.h", "line": 150, "context": { "start_line": 145, "end_line": 155, "lines": [ { "line": 145, "text": " static QString unpackCallsign(quint32 value, bool portable);" }, { "line": 146, "text": "" }, { "line": 147, "text": " static QString deg2grid(float dlong, float dlat);" }, { "line": 148, "text": " static QPair grid2deg(QString const &grid);" }, { "line": 149, "text": " static quint16 packGrid(QString const &value);" }, { "line": 150, "text": " static QString unpackGrid(quint16 value);" }, { "line": 151, "text": "" }, { "line": 152, "text": " static quint8 packNum(QString const &num, bool *ok);" }, { "line": 153, "text": " static quint8 packPwr(QString const &pwr, bool *ok);" }, { "line": 154, "text": " static quint8 packCmd(quint8 cmd, quint8 num, bool *pPackedNum);" }, { "line": 155, "text": " static quint8 unpackCmd(quint8 value, quint8 *pNum);" } ] } }, { "name": "unpackCmd", "path": "JS8_Main/Varicode.h", "line": 155, "context": { "start_line": 150, "end_line": 160, "lines": [ { "line": 150, "text": " static QString unpackGrid(quint16 value);" }, { "line": 151, "text": "" }, { "line": 152, "text": " static quint8 packNum(QString const &num, bool *ok);" }, { "line": 153, "text": " static quint8 packPwr(QString const &pwr, bool *ok);" }, { "line": 154, "text": " static quint8 packCmd(quint8 cmd, quint8 num, bool *pPackedNum);" }, { "line": 155, "text": " static quint8 unpackCmd(quint8 value, quint8 *pNum);" }, { "line": 156, "text": "" }, { "line": 157, "text": " static bool isSNRCommand(const QString &cmd);" }, { "line": 158, "text": " static bool isCommandAllowed(const QString &cmd);" }, { "line": 159, "text": " static bool isCommandBuffered(const QString &cmd);" }, { "line": 160, "text": " static int isCommandChecksumed(const QString &cmd);" } ] } }, { "name": "huffDecode", "path": "JS8_Main/Varicode.h", "line": 107, "context": { "start_line": 102, "end_line": 112, "lines": [ { "line": 102, "text": " static QStringList parseCallsigns(QString const &input);" }, { "line": 103, "text": " static QStringList parseGrids(QString const &input);" }, { "line": 104, "text": "" }, { "line": 105, "text": " static QList>>" }, { "line": 106, "text": " huffEncode(const QMap &huff, QString const &text);" }, { "line": 107, "text": " static QString huffDecode(const QMap &huff," }, { "line": 108, "text": " QVector const &bitvec);" }, { "line": 109, "text": " static QSet huffValidChars(const QMap &huff);" }, { "line": 110, "text": "" }, { "line": 111, "text": " static QVector bytesToBits(char *bitvec, int n);" }, { "line": 112, "text": " static QVector strToBits(QString const &bitvec);" } ] } }, { "name": "JSC::decompress", "path": "JS8_JSC/JSC.cpp", "line": 127, "context": { "start_line": 122, "end_line": 132, "lines": [ { "line": 122, "text": " * @brief Decompresses the given bit vector into a string." }, { "line": 123, "text": " *" }, { "line": 124, "text": " * @param bitvec" }, { "line": 125, "text": " * @return QString" }, { "line": 126, "text": " */" }, { "line": 127, "text": "QString JSC::decompress(Codeword const &bitvec) {" }, { "line": 128, "text": " const quint32 b = 4;" }, { "line": 129, "text": " const quint32 s = 7;" }, { "line": 130, "text": " const quint32 c = pow(2, b) - s;" }, { "line": 131, "text": "" }, { "line": 132, "text": " QStringList out;" } ] } } ] }, "source_contract": { "message174_alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "alphabet72": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+/?.", "frame_types": { "0": "FrameHeartbeat", "1": "FrameCompound", "2": "FrameCompoundDirected", "3": "FrameDirected", "4": "FrameData", "5": "FrameData", "6": "FrameDataCompressed", "7": "FrameDataCompressed" }, "implemented_rx_unpack": [ "unpack72bits", "frame_type", "directed", "heartbeat", "compound", "callsign", "grid", "legacy_huff_data_probe" ], "not_yet_ported": [ "JSC::decompress full compressed text", "multi-frame buffer assembly", "WebFTR live integration" ] }, "input_decode_count": 2, "frame_probe_count": 2, "webftr_display_count": 0, "hidden_candidate_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "webftr_rx_rows": [], "candidate_rows": [ { "id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3655f200", "mode": "JS8", "text": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "001XqOA2iDZ0", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 107552465662168, "value_hex": "0x000061d18282b0d8", "rem": 192, "top3": 0, "top2": 0, "first_16_bits": "0000000000000000" }, "frame_type": "FrameHeartbeat", "frame_type_bits": 0, "displayable_after_frame_unpack": false, "frame_fields": { "packed_type": 0, "callsign": "004REY/0V4", "packed_callsign": 52515852374, "packed_num": 6936, "bits3": 0, "valid_callsign_hint": true, "kind": "heartbeat_or_cq", "is_cq_alt": false, "grid": "OJ16", "message_token": "HB", "valid_grid_hint": true }, "plausibility": { "score": 6, "reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "HB 004REY/0V4 OJ16" }, "show_in_rx_list": false, "display_text": "HB 004REY/0V4 OJ16", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 0 }, { "id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9af968ad", "mode": "JS8", "text": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "Q0VsKWqfJ96x", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 7496230937050041489, "value_hex": "0x6807f6520d294c91", "rem": 187, "top3": 3, "top2": 1, "first_16_bits": "0110100000000111" }, "frame_type": "FrameDirected", "frame_type_bits": 3, "displayable_after_frame_unpack": false, "frame_fields": { "from": "9I2TZR/P", "to": "0Z0PMP", "cmd_id": 17, "cmd": " INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "portable_from": true, "portable_to": false, "valid_from_hint": true, "valid_to_hint": true }, "plausibility": { "score": 10, "reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "9I2TZR/P 0Z0PMP INFO 28" }, "show_in_rx_list": false, "display_text": "9I2TZR/P 0Z0PMP INFO 28", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 1 } ], "suppressed_candidates": [ { "id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3655f200", "mode": "JS8", "text": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "001XqOA2iDZ0", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 107552465662168, "value_hex": "0x000061d18282b0d8", "rem": 192, "top3": 0, "top2": 0, "first_16_bits": "0000000000000000" }, "frame_type": "FrameHeartbeat", "frame_type_bits": 0, "displayable_after_frame_unpack": false, "frame_fields": { "packed_type": 0, "callsign": "004REY/0V4", "packed_callsign": 52515852374, "packed_num": 6936, "bits3": 0, "valid_callsign_hint": true, "kind": "heartbeat_or_cq", "is_cq_alt": false, "grid": "OJ16", "message_token": "HB", "valid_grid_hint": true }, "plausibility": { "score": 6, "reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "HB 004REY/0V4 OJ16" }, "show_in_rx_list": false, "display_text": "HB 004REY/0V4 OJ16", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 0 }, { "id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9af968ad", "mode": "JS8", "text": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "Q0VsKWqfJ96x", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 7496230937050041489, "value_hex": "0x6807f6520d294c91", "rem": 187, "top3": 3, "top2": 1, "first_16_bits": "0110100000000111" }, "frame_type": "FrameDirected", "frame_type_bits": 3, "displayable_after_frame_unpack": false, "frame_fields": { "from": "9I2TZR/P", "to": "0Z0PMP", "cmd_id": 17, "cmd": " INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "portable_from": true, "portable_to": false, "valid_from_hint": true, "valid_to_hint": true }, "plausibility": { "score": 10, "reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "9I2TZR/P 0Z0PMP INFO 28" }, "show_in_rx_list": false, "display_text": "9I2TZR/P 0Z0PMP INFO 28", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 1 } ], "verdict": "source_varicode_frames_classified_but_not_displayable", "warnings": [ "Step66 is still RX-only diagnostics. It classifies message174 text as JS8 Varicode frame families but does not start JS8Call GUI/Qt.", "Rows remain hidden unless callsign/grid/command/text plausibility survives source-style frame unpacking.", "Compressed Data frames still require a later JSC::decompress port before real JS8 chat text can be displayed." ], "next_action": "If frame types look plausible but hidden, port JSC::decompress and multi-frame assembly next; if a display row appears, wire webftr_rx_rows into the JS8 RX UI contract." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_control_frame_rx_release_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-source-confirmed-control-frame-rx-release", "tool_version": "step67-source-confirmed-control-frame-rx-release", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "input_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_varicode_frame_unpack_probe_output.json", "exists": true, "selected_input": true, "input_kind": "step66_source_varicode_frame_unpack_probe" } ], "source_step66_version": "step66-source-varicode-frame-unpack-probe", "source_frame_probe_count": 2, "source_webftr_display_count_before_release": 0, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "release_contract": { "allowed_to_display": [ "FrameCompound", "FrameCompoundDirected", "FrameDirected", "FrameHeartbeat" ], "blocked_until_future_steps": [ "FrameData", "FrameDataCompressed" ], "minimum_conditions": [ "valid_message174_crc12 == true", "crc12_distance == 0", "source Varicode frame unpack produced a supported fixed control frame", "frame_display_candidate == true" ], "data_text_rule": "FrameData and FrameDataCompressed stay hidden until JSC::decompress/multi-frame assembly is ported and tested." }, "input_candidate_count": 2, "webftr_display_count": 2, "hidden_candidate_count": 0, "webftr_rx_rows": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3655f200", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9af968ad", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "candidate_rows": [ { "id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3655f200", "mode": "JS8", "text": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "001XqOA2iDZ0", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 107552465662168, "value_hex": "0x000061d18282b0d8", "rem": 192, "top3": 0, "top2": 0, "first_16_bits": "0000000000000000" }, "frame_type": "FrameHeartbeat", "frame_type_bits": 0, "displayable_after_frame_unpack": false, "frame_fields": { "packed_type": 0, "callsign": "004REY/0V4", "packed_callsign": 52515852374, "packed_num": 6936, "bits3": 0, "valid_callsign_hint": true, "kind": "heartbeat_or_cq", "is_cq_alt": false, "grid": "OJ16", "message_token": "HB", "valid_grid_hint": true }, "plausibility": { "score": 6, "reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "HB 004REY/0V4 OJ16" }, "show_in_rx_list": false, "display_text": "HB 004REY/0V4 OJ16", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 0 }, { "id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9af968ad", "mode": "JS8", "text": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "Q0VsKWqfJ96x", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 7496230937050041489, "value_hex": "0x6807f6520d294c91", "rem": 187, "top3": 3, "top2": 1, "first_16_bits": "0110100000000111" }, "frame_type": "FrameDirected", "frame_type_bits": 3, "displayable_after_frame_unpack": false, "frame_fields": { "from": "9I2TZR/P", "to": "0Z0PMP", "cmd_id": 17, "cmd": " INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "portable_from": true, "portable_to": false, "valid_from_hint": true, "valid_to_hint": true }, "plausibility": { "score": 10, "reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "9I2TZR/P 0Z0PMP INFO 28" }, "show_in_rx_list": false, "display_text": "9I2TZR/P 0Z0PMP INFO 28", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 1 } ], "suppressed_candidates": [], "release_decisions": [ { "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "raw_message174": "001XqOA2iDZ0", "frame_type": "FrameHeartbeat", "decision": "released_source_confirmed_control_frame", "sort_index": 0, "released_row_id": "js8-rx67-de15d3110b0d" }, { "source_candidate_id": "js8-frame66-66ab29ded46c", "raw_message174": "Q0VsKWqfJ96x", "frame_type": "FrameDirected", "decision": "released_source_confirmed_control_frame", "sort_index": 1, "released_row_id": "js8-rx67-bd37f68199eb" } ], "verdict": "source_confirmed_control_frames_ready_for_webftr_rx_rows", "warnings": [ "Step67 is still RX-only and does not start JS8Call GUI/Qt.", "Only source-confirmed fixed control frames such as Heartbeat/Directed/Compound are released to webftr_rx_rows.", "Free-text Data/Compressed frames remain blocked until JSC::decompress and multi-frame assembly are source-ported and tested." ], "next_action": "Wire these guarded webftr_rx_rows into the JS8 RX display contract, then continue with JSC::decompress/multi-frame assembly for real JS8 chat text." } ---------- STEP85 WINDOW 2: 120.0s..168.0s score=7.6539 ---------- [webftr-js8-lab] window WAV: /decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_02_0120_0168.wav [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window2_candidate_export_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "mode": "JS8", "tool": "webftr-js8-fec-candidate-export", "tool_version": "step63-source-exact-interleaver-whitening-index-extract", "input_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_02_0120_0168.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step43_profile_anchor_candidate_export_no_message_unpack", "selected_profile": { "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": 33.75, "base_freq_hz": 967.5, "candidate_score": 39.47, "costas_hits": 3, "avg_margin_db": 4.03, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 28, "data_symbol_count_estimate": 21, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 63, "missing_soft_bits_estimate": 111, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 96.201776 }, "profile_selection_source": "profile_scan_prefer_js8", "profile_scan_json": null, "anchor_json": null, "anchor_selection": { "source": "candidate_export_local_profile_scan", "path": null, "selection": "local_profile_scan_selected_profile", "nsps": 6000, "start_seconds": 33.75, "base_freq_hz": 967.5, "tone_spacing_hz": 2.0 }, "anchor_attempts": [ { "source": "candidate_export_local_profile_scan", "path": null, "selection": "local_profile_scan_selected_profile", "nsps": 6000, "start_seconds": 33.75, "base_freq_hz": 967.5, "tone_spacing_hz": 2.0 } ], "anchor_expected_enabled": true, "prefer_js8_realistic_profile": true, "nsps_used": 6000, "nsps_is_js8_realistic": true, "wav": { "path": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_02_0120_0168.wav", "channels": 1, "sample_rate": 12000, "sample_width_bytes": 2, "frames": 576000, "duration_seconds": 48.0, "rms_dbfs": -9.27, "peak_dbfs": -0.72, "clipped": false }, "sync_candidate": { "start_sample": 405000, "start_seconds": 33.75, "base_freq_hz": 967.5, "tone_spacing_hz": 2.0, "nsps": 6000, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "candidate_export_local_profile_scan" }, "frame_candidate": { "input_symbol_count": 28, "excluded_costas_symbol_count": 0, "detected_costas_blocks": [], "data_symbol_count_available": 28, "data_symbol_count_used": 28, "expected_data_symbols_candidate": 58, "costas_policy": "js8_leading_only" }, "fec_input_summary": { "soft_bit_count": 84, "missing_soft_bits": 90, "complete_ldpc_input_candidate": false, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "anchor_context": { "enabled": true, "source": "candidate_export_local_profile_scan", "start_seconds": 33.75, "base_freq_hz": 967.5, "tone_spacing_hz": 2.0, "nsps": 6000, "symbol_count_extracted": 28 }, "variant_count": 23, "selected_variant": { "name": "mapped_raw_msb+no_interleaver", "rank_score": 104.013232, "complete_174bit_candidate": true, "hard_bits_sha256_16": "b6513152484a17aa", "hard_weight_174": 34, "llr_stats": { "count": 174, "avg_abs": 1.003308, "min_abs": 0.0, "max_abs": 4.733609, "positive": 51, "negative": 33, "zero": 90 } }, "variants": [ { "name": "mapped_raw_msb+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "011000110000110011011011001100000000110111000111110000011000110101000000000011000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "hard_bits_sha256_16": "b6513152484a17aa", "hard_weight_174": 34, "llr_full_174": [ 3.498287, -3.589507, -3.374406, 1.391345, 3.206228, 1.23885, -0.561701, 0.315352, 1.085254, 3.698812, 3.693185, 1.992279, -3.960953, -2.348789, 1.988467, 3.028813, -1.772239, -1.201558, 2.945828, -2.482501, -1.829154, 1.368162, -1.535585, -1.302908, 0.152229, 1.732054, -1.731499, -0.296855, 1.016879, 0.739719, 1.157751, 1.650627, 1.918928, 3.524827, 3.577036, 0.17585, -4.733609, -3.633911, 0.223255, -2.481224, -1.927965, -2.423703, 3.141261, 2.876491, 1.526605, -2.935799, -2.365317, -2.773032, -4.373506, -0.252611, 0.169182, 3.17644, 3.289909, 3.059876, 2.390617, -2.228947, -2.469197, 3.799079, 3.705281, 0.731184, -4.120689, -1.16185, 0.634639, -1.520616, 0.108292, -0.971153, 0.390353, 1.309657, 1.872055, 1.300899, 1.521969, 1.499435, 2.735424, 2.687783, 3.053047, 1.150028, -1.319124, -0.13445, 3.905997, 3.931653, 2.143171, -3.990768, -0.741094, 0.599103, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 1.003308, "min_abs": 0.0, "max_abs": 4.733609, "positive": 51, "negative": 33, "zero": 90 }, "rank_score": 104.013232 }, { "name": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000010000010001010000000101010100010000000001000000000001000000010100000100000000000000010101000001010001010001000000010001000001010100010100000100000000000100000101000000010", "hard_bits_sha256_16": "bb13d849ef0b902f", "hard_weight_174": 34, "llr_full_174": [ 3.498287, 0.0, 1.526605, 0.0, -1.535585, 0.0, 0.390353, 0.0, 1.992279, 0.0, -2.228947, 0.0, 3.524827, 0.0, -0.13445, 0.0, -0.561701, 0.0, 0.169182, 0.0, 1.016879, 0.0, 2.735424, 0.0, -1.201558, 0.0, -1.16185, 0.0, -2.481224, 0.0, -0.741094, 0.0, 1.391345, 0.0, -2.773032, 0.0, 1.732054, 0.0, 1.300899, 0.0, 1.988467, 0.0, 3.705281, 0.0, -4.733609, 0.0, 2.143171, 0.0, 3.698812, 0.0, 3.059876, 0.0, 1.650627, 0.0, 1.150028, 0.0, -1.829154, 0.0, 0.108292, 0.0, 3.141261, 0.0, 0.0, 0.0, -3.374406, 0.0, -2.365317, 0.0, 0.152229, 0.0, 1.872055, 0.0, -2.348789, 0.0, 3.799079, 0.0, 0.17585, 0.0, 3.931653, 0.0, 1.085254, 0.0, 3.289909, 0.0, 1.157751, 0.0, 3.053047, 0.0, -2.482501, 0.0, -1.520616, 0.0, -2.423703, 0.0, 0.0, 0.0, 1.23885, 0.0, -0.252611, 0.0, -0.296855, 0.0, 1.499435, 0.0, -1.772239, 0.0, -4.120689, 0.0, 0.223255, 0.0, -3.990768, 0.0, 3.693185, 0.0, 2.390617, 0.0, 1.918928, 0.0, -1.319124, 0.0, 1.368162, 0.0, -0.971153, 0.0, 2.876491, 0.0, 0.0, 0.0, -3.589507, 0.0, -2.935799, 0.0, -1.302908, 0.0, 1.309657, 0.0, -3.960953, 0.0, -2.469197, 0.0, 3.577036, 0.0, 3.905997, 0.0, 0.315352, 0.0, 3.17644, 0.0, 0.739719, 0.0, 2.687783, 0.0, 2.945828, 0.0, 0.634639, 0.0, -1.927965, 0.0, 0.599103, 0.0, 3.206228, 0.0, -4.373506, 0.0, -1.731499, 0.0, 1.521969, 0.0, 3.028813, 0.0, 0.731184, 0.0, -3.633911, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 1.003308, "min_abs": 0.0, "max_abs": 4.733609, "positive": 51, "negative": 33, "zero": 90 }, "rank_score": 104.013232 }, { "name": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000100100001000001000010010000101000000101000000010000000010000100000100000001000000101000101100001000000000010000000101100000100000001000000000010000100100100100001000010", "hard_bits_sha256_16": "31556f46d6316b94", "hard_weight_174": 34, "llr_full_174": [ 3.498287, 0.0, 0.108292, 1.918928, 0.0, 0.0, -1.772239, 0.0, 2.143171, -4.373506, 0.0, 1.085254, 0.0, 2.735424, -1.927965, 0.0, 0.0, 0.152229, 0.0, 0.0, -2.469197, 0.0, 3.206228, 0.0, 1.872055, -4.733609, 0.0, 0.0, -1.829154, 0.0, 0.0, 3.289909, 0.0, -3.960953, 0.0, -1.319124, 1.526605, 0.0, 0.0, 1.016879, 0.0, 0.0, -4.120689, 0.0, -3.374406, 0.0, 0.390353, 3.577036, 0.0, 0.0, 2.945828, 0.0, -0.741094, 0.169182, 0.0, 3.693185, 0.0, 3.053047, 3.141261, 0.0, 0.0, -1.731499, 0.0, 0.0, 3.705281, 0.0, -0.561701, 0.0, 1.521969, 0.223255, 0.0, 0.0, -1.535585, 0.0, 0.0, 2.390617, 0.0, 1.988467, 0.0, 3.905997, -2.365317, 0.0, 1.157751, 0.0, 0.0, 0.634639, 0.0, -3.589507, 0.0, -0.971153, 3.524827, 0.0, 0.0, -1.201558, 0.0, -3.990768, -0.252611, 0.0, 3.698812, 0.0, 2.687783, -2.423703, 0.0, 0.0, 1.732054, 0.0, 0.0, 3.799079, 0.0, 1.23885, 0.0, 1.300899, -3.633911, 0.0, 0.0, 1.368162, 0.0, 0.0, 3.059876, 0.0, -2.348789, 0.0, -0.13445, -2.935799, 0.0, 0.0, 0.739719, 0.0, 0.0, -1.16185, 0.0, 1.391345, 0.0, 1.309657, 0.17585, 0.0, 0.0, -2.482501, 0.0, 0.599103, 3.17644, 0.0, 1.992279, 0.0, 1.150028, 2.876491, 0.0, 0.0, -0.296855, 0.0, 0.0, 0.731184, 0.0, 0.315352, 0.0, 1.499435, -2.481224, 0.0, 0.0, -1.302908, 0.0, 0.0, -2.228947, 0.0, 3.028813, 0.0, 3.931653, -2.773032, 0.0, 1.650627, 0.0, 0.0, -1.520616, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 1.003308, "min_abs": 0.0, "max_abs": 4.733609, "positive": 51, "negative": 33, "zero": 90 }, "rank_score": 104.013232 }, { "name": "mapped_lsb_within_each_tone+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "110000011000011110110110100001000000011111000111011000110000011101000000000110000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "hard_bits_sha256_16": "b4535c8e53792d78", "hard_weight_174": 34, "llr_full_174": [ -3.374406, -3.589507, 3.498287, 1.23885, 3.206228, 1.391345, 1.085254, 0.315352, -0.561701, 1.992279, 3.693185, 3.698812, 1.988467, -2.348789, -3.960953, -1.201558, -1.772239, 3.028813, -1.829154, -2.482501, 2.945828, -1.302908, -1.535585, 1.368162, -1.731499, 1.732054, 0.152229, 0.739719, 1.016879, -0.296855, 1.918928, 1.650627, 1.157751, 0.17585, 3.577036, 3.524827, 0.223255, -3.633911, -4.733609, -2.423703, -1.927965, -2.481224, 1.526605, 2.876491, 3.141261, -2.773032, -2.365317, -2.935799, 0.169182, -0.252611, -4.373506, 3.059876, 3.289909, 3.17644, -2.469197, -2.228947, 2.390617, 0.731184, 3.705281, 3.799079, 0.634639, -1.16185, -4.120689, -0.971153, 0.108292, -1.520616, 1.872055, 1.309657, 0.390353, 1.499435, 1.521969, 1.300899, 3.053047, 2.687783, 2.735424, -0.13445, -1.319124, 1.150028, 2.143171, 3.931653, 3.905997, 0.599103, -0.741094, -3.990768, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 1.003308, "min_abs": 0.0, "max_abs": 4.733609, "positive": 51, "negative": 33, "zero": 90 }, "rank_score": 104.013232 }, { "name": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100010000010000000100000001010100010000010000000000000100000000000101000100000001000000010101000001000001000100000100010101000001010000000000000100010001010101000000000100010", "hard_bits_sha256_16": "95c73bba8d923138", "hard_weight_174": 34, "llr_full_174": [ -3.374406, 0.0, 3.141261, 0.0, -1.535585, 0.0, 1.872055, 0.0, 3.698812, 0.0, -2.228947, 0.0, 0.17585, 0.0, 1.150028, 0.0, 1.085254, 0.0, -4.373506, 0.0, 1.016879, 0.0, 3.053047, 0.0, 3.028813, 0.0, -1.16185, 0.0, -2.423703, 0.0, -0.741094, 0.0, 1.23885, 0.0, -2.935799, 0.0, 1.732054, 0.0, 1.499435, 0.0, -3.960953, 0.0, 3.705281, 0.0, 0.223255, 0.0, 3.905997, 0.0, 1.992279, 0.0, 3.17644, 0.0, 1.650627, 0.0, -0.13445, 0.0, 2.945828, 0.0, 0.108292, 0.0, 1.526605, 0.0, 0.0, 0.0, 3.498287, 0.0, -2.365317, 0.0, -1.731499, 0.0, 0.390353, 0.0, -2.348789, 0.0, 0.731184, 0.0, 3.524827, 0.0, 3.931653, 0.0, -0.561701, 0.0, 3.289909, 0.0, 1.918928, 0.0, 2.735424, 0.0, -2.482501, 0.0, -0.971153, 0.0, -2.481224, 0.0, 0.0, 0.0, 1.391345, 0.0, -0.252611, 0.0, 0.739719, 0.0, 1.300899, 0.0, -1.772239, 0.0, 0.634639, 0.0, -4.733609, 0.0, 0.599103, 0.0, 3.693185, 0.0, -2.469197, 0.0, 1.157751, 0.0, -1.319124, 0.0, -1.302908, 0.0, -1.520616, 0.0, 2.876491, 0.0, 0.0, 0.0, -3.589507, 0.0, -2.773032, 0.0, 1.368162, 0.0, 1.309657, 0.0, 1.988467, 0.0, 2.390617, 0.0, 3.577036, 0.0, 2.143171, 0.0, 0.315352, 0.0, 3.059876, 0.0, -0.296855, 0.0, 2.687783, 0.0, -1.829154, 0.0, -4.120689, 0.0, -1.927965, 0.0, -3.990768, 0.0, 3.206228, 0.0, 0.169182, 0.0, 0.152229, 0.0, 1.521969, 0.0, -1.201558, 0.0, 3.799079, 0.0, -3.633911, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 1.003308, "min_abs": 0.0, "max_abs": 4.733609, "positive": 51, "negative": 33, "zero": 90 }, "rank_score": 104.013232 }, { "name": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100000100001001001000000000000000001000000000000001011000000000000000100100101001000010101000000100001000000000010010000100100100100000001010000100000000100100000101001000010", "hard_bits_sha256_16": "9b2d77b4cede38de", "hard_weight_174": 34, "llr_full_174": [ -3.374406, 0.0, 0.108292, 1.157751, 0.0, 0.0, -1.772239, 0.0, 3.905997, 0.169182, 0.0, -0.561701, 0.0, 3.053047, -1.927965, 0.0, 0.0, -1.731499, 0.0, 0.0, 2.390617, 0.0, 3.206228, 0.0, 0.390353, 0.223255, 0.0, 0.0, 2.945828, 0.0, 0.0, 3.289909, 0.0, 1.988467, 0.0, -1.319124, 3.141261, 0.0, 0.0, 1.016879, 0.0, 0.0, 0.634639, 0.0, 3.498287, 0.0, 1.872055, 3.577036, 0.0, 0.0, -1.829154, 0.0, -0.741094, -4.373506, 0.0, 3.693185, 0.0, 2.735424, 1.526605, 0.0, 0.0, 0.152229, 0.0, 0.0, 3.705281, 0.0, 1.085254, 0.0, 1.521969, -4.733609, 0.0, 0.0, -1.535585, 0.0, 0.0, -2.469197, 0.0, -3.960953, 0.0, 2.143171, -2.365317, 0.0, 1.918928, 0.0, 0.0, -4.120689, 0.0, -3.589507, 0.0, -1.520616, 0.17585, 0.0, 0.0, 3.028813, 0.0, 0.599103, -0.252611, 0.0, 1.992279, 0.0, 2.687783, -2.481224, 0.0, 0.0, 1.732054, 0.0, 0.0, 0.731184, 0.0, 1.391345, 0.0, 1.499435, -3.633911, 0.0, 0.0, -1.302908, 0.0, 0.0, 3.17644, 0.0, -2.348789, 0.0, 1.150028, -2.773032, 0.0, 0.0, -0.296855, 0.0, 0.0, -1.16185, 0.0, 1.23885, 0.0, 1.309657, 3.524827, 0.0, 0.0, -2.482501, 0.0, -3.990768, 3.059876, 0.0, 3.698812, 0.0, -0.13445, 2.876491, 0.0, 0.0, 0.739719, 0.0, 0.0, 3.799079, 0.0, 0.315352, 0.0, 1.300899, -2.423703, 0.0, 0.0, 1.368162, 0.0, 0.0, -2.228947, 0.0, -1.201558, 0.0, 3.931653, -2.935799, 0.0, 1.650627, 0.0, 0.0, -0.971153, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 1.003308, "min_abs": 0.0, "max_abs": 4.733609, "positive": 51, "negative": 33, "zero": 90 }, "rank_score": 104.013232 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "010000101000101010010010001110000000101111000111101000010000101100000000000010000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "hard_bits_sha256_16": "860eee6c81bd0929", "hard_weight_174": 28, "llr_full_174": [ 3.498287, -3.554904, 2.37551, 1.391345, 1.507206, 1.356466, -0.561701, 0.014992, 0.256805, 3.698812, 3.066475, 1.851338, -3.960953, 1.385281, -2.325656, 3.028813, -1.712555, 0.688081, 2.945828, -2.403098, 1.205518, 1.368162, -1.354276, 0.330354, 0.152229, 1.393061, 0.120228, -0.296855, 0.210124, 0.707306, 1.157751, 0.836071, 1.225068, 3.524827, 3.129336, 0.216063, -4.733609, 0.19311, -3.496638, -2.481224, -1.496118, -1.517206, 3.141261, 2.392607, 1.348141, -2.935799, -1.882489, -1.944481, -4.373506, 0.017813, -0.249701, 3.17644, 2.564815, 2.500422, 2.390617, -2.170231, 1.251915, 3.799079, 3.229301, 0.723765, -4.120689, 0.301831, -1.145961, -1.520616, 0.059436, 0.080078, 0.390353, 0.348841, 1.055091, 1.300899, 0.888438, 0.988454, 2.735424, 2.046008, 2.190091, 1.150028, -0.965357, -0.219975, 3.905997, 3.281581, 2.009815, -3.990768, 0.190193, -0.730678, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.853093, "min_abs": 0.0, "max_abs": 4.733609, "positive": 58, "negative": 26, "zero": 90 }, "rank_score": 103.412372 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000010000010000010101000000010000010000010001000000000000000000000100000000000001000000010101000000010001010101000000010000000001010000010000000000000000010101000101000000000", "hard_bits_sha256_16": "2cd7e02f3189fb1f", "hard_weight_174": 28, "llr_full_174": [ 3.498287, 0.0, 1.348141, 0.0, -1.354276, 0.0, 0.390353, 0.0, 1.851338, 0.0, -2.170231, 0.0, 3.524827, 0.0, -0.219975, 0.0, -0.561701, 0.0, -0.249701, 0.0, 0.210124, 0.0, 2.735424, 0.0, 0.688081, 0.0, 0.301831, 0.0, -2.481224, 0.0, 0.190193, 0.0, 1.391345, 0.0, -1.944481, 0.0, 1.393061, 0.0, 1.300899, 0.0, -2.325656, 0.0, 3.229301, 0.0, -4.733609, 0.0, 2.009815, 0.0, 3.698812, 0.0, 2.500422, 0.0, 0.836071, 0.0, 1.150028, 0.0, 1.205518, 0.0, 0.059436, 0.0, 3.141261, 0.0, 0.0, 0.0, 2.37551, 0.0, -1.882489, 0.0, 0.152229, 0.0, 1.055091, 0.0, 1.385281, 0.0, 3.799079, 0.0, 0.216063, 0.0, 3.281581, 0.0, 0.256805, 0.0, 2.564815, 0.0, 1.157751, 0.0, 2.190091, 0.0, -2.403098, 0.0, -1.520616, 0.0, -1.517206, 0.0, 0.0, 0.0, 1.356466, 0.0, 0.017813, 0.0, -0.296855, 0.0, 0.988454, 0.0, -1.712555, 0.0, -4.120689, 0.0, -3.496638, 0.0, -3.990768, 0.0, 3.066475, 0.0, 2.390617, 0.0, 1.225068, 0.0, -0.965357, 0.0, 1.368162, 0.0, 0.080078, 0.0, 2.392607, 0.0, 0.0, 0.0, -3.554904, 0.0, -2.935799, 0.0, 0.330354, 0.0, 0.348841, 0.0, -3.960953, 0.0, 1.251915, 0.0, 3.129336, 0.0, 3.905997, 0.0, 0.014992, 0.0, 3.17644, 0.0, 0.707306, 0.0, 2.046008, 0.0, 2.945828, 0.0, -1.145961, 0.0, -1.496118, 0.0, -0.730678, 0.0, 1.507206, 0.0, -4.373506, 0.0, 0.120228, 0.0, 0.888438, 0.0, 3.028813, 0.0, 0.723765, 0.0, 0.19311, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.853093, "min_abs": 0.0, "max_abs": 4.733609, "positive": 58, "negative": 26, "zero": 90 }, "rank_score": 103.412372 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000000100101001000000000010000000101000100100000000001000000010000100100100001001000010100000001000001000000000000000000000100000000000001010000000010000000100000100001000010", "hard_bits_sha256_16": "c62125da702d2318", "hard_weight_174": 28, "llr_full_174": [ 3.498287, 0.0, 0.059436, 1.225068, 0.0, 0.0, -1.712555, 0.0, 2.009815, -4.373506, 0.0, 0.256805, 0.0, 2.735424, -1.496118, 0.0, 0.0, 0.152229, 0.0, 0.0, 1.251915, 0.0, 1.507206, 0.0, 1.055091, -4.733609, 0.0, 0.0, 1.205518, 0.0, 0.0, 2.564815, 0.0, -3.960953, 0.0, -0.965357, 1.348141, 0.0, 0.0, 0.210124, 0.0, 0.0, -4.120689, 0.0, 2.37551, 0.0, 0.390353, 3.129336, 0.0, 0.0, 2.945828, 0.0, 0.190193, -0.249701, 0.0, 3.066475, 0.0, 2.190091, 3.141261, 0.0, 0.0, 0.120228, 0.0, 0.0, 3.229301, 0.0, -0.561701, 0.0, 0.888438, -3.496638, 0.0, 0.0, -1.354276, 0.0, 0.0, 2.390617, 0.0, -2.325656, 0.0, 3.905997, -1.882489, 0.0, 1.157751, 0.0, 0.0, -1.145961, 0.0, -3.554904, 0.0, 0.080078, 3.524827, 0.0, 0.0, 0.688081, 0.0, -3.990768, 0.017813, 0.0, 3.698812, 0.0, 2.046008, -1.517206, 0.0, 0.0, 1.393061, 0.0, 0.0, 3.799079, 0.0, 1.356466, 0.0, 1.300899, 0.19311, 0.0, 0.0, 1.368162, 0.0, 0.0, 2.500422, 0.0, 1.385281, 0.0, -0.219975, -2.935799, 0.0, 0.0, 0.707306, 0.0, 0.0, 0.301831, 0.0, 1.391345, 0.0, 0.348841, 0.216063, 0.0, 0.0, -2.403098, 0.0, -0.730678, 3.17644, 0.0, 1.851338, 0.0, 1.150028, 2.392607, 0.0, 0.0, -0.296855, 0.0, 0.0, 0.723765, 0.0, 0.014992, 0.0, 0.988454, -2.481224, 0.0, 0.0, 0.330354, 0.0, 0.0, -2.170231, 0.0, 3.028813, 0.0, 3.281581, -1.944481, 0.0, 0.836071, 0.0, 0.0, -1.520616, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.853093, "min_abs": 0.0, "max_abs": 4.733609, "positive": 58, "negative": 26, "zero": 90 }, "rank_score": 103.412372 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "010000101000101010010010001110000000101100000100101000010000101111000000000010000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "hard_bits_sha256_16": "9ff0eb1c43b67f91", "hard_weight_174": 26, "llr_full_174": [ 3.498287, -2.850545, 2.783982, 1.391345, 1.250491, 1.119645, -0.561701, -0.085653, 0.15512, 3.698812, 3.003463, 1.828022, -3.960953, 2.168738, -1.472327, 3.028813, -1.529958, 0.803428, 2.945828, -1.998801, 1.423568, 1.368162, -0.808594, 0.776213, 0.152229, 0.106356, -1.069467, -0.296855, -0.138352, 0.33483, 1.157751, 0.739533, 1.110438, 3.524827, 2.858267, 0.166239, -4.733609, 3.346733, -0.211677, -2.481224, 1.485755, 1.46508, 3.141261, 2.309424, 1.308238, -2.935799, 1.922243, 1.861241, -4.373506, 0.246256, -0.021206, 3.17644, 2.539972, 2.476891, 2.390617, -1.62318, 1.657798, 3.799079, 3.058484, 0.693121, -4.120689, 1.116338, -0.324225, -1.520616, -0.069403, -0.048769, 0.390353, 0.222525, 0.899359, 1.300899, 0.769926, 0.865074, 2.735424, 2.022576, 2.163889, 1.150028, -0.619122, 0.077644, 3.905997, 3.22599, 1.990849, -3.990768, 0.711812, -0.206968, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.826872, "min_abs": 0.0, "max_abs": 4.733609, "positive": 58, "negative": 26, "zero": 90 }, "rank_score": 103.307488 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "000010000010000010101000000010000000000010001000000000000010000000000000000000001000000010100000000010001010101000000010001000001010000010000000000000000010001000101000000000", "hard_bits_sha256_16": "ab422f15fa977bce", "hard_weight_174": 26, "llr_full_174": [ 3.498287, 0.0, 1.308238, 0.0, -0.808594, 0.0, 0.390353, 0.0, 1.828022, 0.0, -1.62318, 0.0, 3.524827, 0.0, 0.077644, 0.0, -0.561701, 0.0, -0.021206, 0.0, -0.138352, 0.0, 2.735424, 0.0, 0.803428, 0.0, 1.116338, 0.0, -2.481224, 0.0, 0.711812, 0.0, 1.391345, 0.0, 1.861241, 0.0, 0.106356, 0.0, 1.300899, 0.0, -1.472327, 0.0, 3.058484, 0.0, -4.733609, 0.0, 1.990849, 0.0, 3.698812, 0.0, 2.476891, 0.0, 0.739533, 0.0, 1.150028, 0.0, 1.423568, 0.0, -0.069403, 0.0, 3.141261, 0.0, 0.0, 0.0, 2.783982, 0.0, 1.922243, 0.0, 0.152229, 0.0, 0.899359, 0.0, 2.168738, 0.0, 3.799079, 0.0, 0.166239, 0.0, 3.22599, 0.0, 0.15512, 0.0, 2.539972, 0.0, 1.157751, 0.0, 2.163889, 0.0, -1.998801, 0.0, -1.520616, 0.0, 1.46508, 0.0, 0.0, 0.0, 1.119645, 0.0, 0.246256, 0.0, -0.296855, 0.0, 0.865074, 0.0, -1.529958, 0.0, -4.120689, 0.0, -0.211677, 0.0, -3.990768, 0.0, 3.003463, 0.0, 2.390617, 0.0, 1.110438, 0.0, -0.619122, 0.0, 1.368162, 0.0, -0.048769, 0.0, 2.309424, 0.0, 0.0, 0.0, -2.850545, 0.0, -2.935799, 0.0, 0.776213, 0.0, 0.222525, 0.0, -3.960953, 0.0, 1.657798, 0.0, 2.858267, 0.0, 3.905997, 0.0, -0.085653, 0.0, 3.17644, 0.0, 0.33483, 0.0, 2.022576, 0.0, 2.945828, 0.0, -0.324225, 0.0, 1.485755, 0.0, -0.206968, 0.0, 1.250491, 0.0, -4.373506, 0.0, -1.069467, 0.0, 0.769926, 0.0, 3.028813, 0.0, 0.693121, 0.0, 3.346733, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.826872, "min_abs": 0.0, "max_abs": 4.733609, "positive": 58, "negative": 26, "zero": 90 }, "rank_score": 103.307488 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "001000100101000000000000010000000101000100100000000001000000010000100100100001000000010101000001000000000000000000000000000100000000000001010000000010000000100000100000000010", "hard_bits_sha256_16": "f79960400ad74174", "hard_weight_174": 26, "llr_full_174": [ 3.498287, 0.0, -0.069403, 1.110438, 0.0, 0.0, -1.529958, 0.0, 1.990849, -4.373506, 0.0, 0.15512, 0.0, 2.735424, 1.485755, 0.0, 0.0, 0.152229, 0.0, 0.0, 1.657798, 0.0, 1.250491, 0.0, 0.899359, -4.733609, 0.0, 0.0, 1.423568, 0.0, 0.0, 2.539972, 0.0, -3.960953, 0.0, -0.619122, 1.308238, 0.0, 0.0, -0.138352, 0.0, 0.0, -4.120689, 0.0, 2.783982, 0.0, 0.390353, 2.858267, 0.0, 0.0, 2.945828, 0.0, 0.711812, -0.021206, 0.0, 3.003463, 0.0, 2.163889, 3.141261, 0.0, 0.0, -1.069467, 0.0, 0.0, 3.058484, 0.0, -0.561701, 0.0, 0.769926, -0.211677, 0.0, 0.0, -0.808594, 0.0, 0.0, 2.390617, 0.0, -1.472327, 0.0, 3.905997, 1.922243, 0.0, 1.157751, 0.0, 0.0, -0.324225, 0.0, -2.850545, 0.0, -0.048769, 3.524827, 0.0, 0.0, 0.803428, 0.0, -3.990768, 0.246256, 0.0, 3.698812, 0.0, 2.022576, 1.46508, 0.0, 0.0, 0.106356, 0.0, 0.0, 3.799079, 0.0, 1.119645, 0.0, 1.300899, 3.346733, 0.0, 0.0, 1.368162, 0.0, 0.0, 2.476891, 0.0, 2.168738, 0.0, 0.077644, -2.935799, 0.0, 0.0, 0.33483, 0.0, 0.0, 1.116338, 0.0, 1.391345, 0.0, 0.222525, 0.166239, 0.0, 0.0, -1.998801, 0.0, -0.206968, 3.17644, 0.0, 1.828022, 0.0, 1.150028, 2.309424, 0.0, 0.0, -0.296855, 0.0, 0.0, 0.693121, 0.0, -0.085653, 0.0, 0.865074, -2.481224, 0.0, 0.0, 0.776213, 0.0, 0.0, -1.62318, 0.0, 3.028813, 0.0, 3.22599, 1.861241, 0.0, 0.739533, 0.0, 0.0, -1.520616, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.826872, "min_abs": 0.0, "max_abs": 4.733609, "positive": 58, "negative": 26, "zero": 90 }, "rank_score": 103.307488 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101000010000010101101101110001000000010111000111010000101000010100000000000101000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "hard_bits_sha256_16": "5a233088f8ae9134", "hard_weight_174": 28, "llr_full_174": [ -3.374406, 2.37551, -3.554904, 1.23885, 1.356466, 1.507206, 1.085254, 0.256805, 0.014992, 1.992279, 1.851338, 3.066475, 1.988467, -2.325656, 1.385281, -1.201558, 0.688081, -1.712555, -1.829154, 1.205518, -2.403098, -1.302908, 0.330354, -1.354276, -1.731499, 0.120228, 1.393061, 0.739719, 0.707306, 0.210124, 1.918928, 1.225068, 0.836071, 0.17585, 0.216063, 3.129336, 0.223255, -3.496638, 0.19311, -2.423703, -1.517206, -1.496118, 1.526605, 1.348141, 2.392607, -2.773032, -1.944481, -1.882489, 0.169182, -0.249701, 0.017813, 3.059876, 2.500422, 2.564815, -2.469197, 1.251915, -2.170231, 0.731184, 0.723765, 3.229301, 0.634639, -1.145961, 0.301831, -0.971153, 0.080078, 0.059436, 1.872055, 1.055091, 0.348841, 1.499435, 0.988454, 0.888438, 3.053047, 2.190091, 2.046008, -0.13445, -0.219975, -0.965357, 2.143171, 2.009815, 3.281581, 0.599103, -0.730678, 0.190193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.687174, "min_abs": 0.0, "max_abs": 3.554904, "positive": 58, "negative": 26, "zero": 90 }, "rank_score": 102.748696 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100000000000001000000000101010100010100000000000000000101000000010101000100000000000000000101000001000000000000000100000100000000010100000100000100010001000100000000000100010", "hard_bits_sha256_16": "d0257a202c9ecf8f", "hard_weight_174": 28, "llr_full_174": [ -3.374406, 0.0, 2.392607, 0.0, 0.330354, 0.0, 1.872055, 0.0, 3.066475, 0.0, 1.251915, 0.0, 0.17585, 0.0, -0.965357, 0.0, 1.085254, 0.0, 0.017813, 0.0, 0.707306, 0.0, 3.053047, 0.0, -1.712555, 0.0, -1.145961, 0.0, -2.423703, 0.0, -0.730678, 0.0, 1.23885, 0.0, -1.882489, 0.0, 0.120228, 0.0, 1.499435, 0.0, 1.385281, 0.0, 0.723765, 0.0, 0.223255, 0.0, 3.281581, 0.0, 1.992279, 0.0, 2.564815, 0.0, 1.225068, 0.0, -0.13445, 0.0, -2.403098, 0.0, 0.080078, 0.0, 1.526605, 0.0, 0.0, 0.0, -3.554904, 0.0, -1.944481, 0.0, -1.731499, 0.0, 0.348841, 0.0, -2.325656, 0.0, 0.731184, 0.0, 3.129336, 0.0, 2.009815, 0.0, 0.014992, 0.0, 2.500422, 0.0, 1.918928, 0.0, 2.046008, 0.0, 1.205518, 0.0, -0.971153, 0.0, -1.496118, 0.0, 0.0, 0.0, 1.507206, 0.0, -0.249701, 0.0, 0.739719, 0.0, 0.888438, 0.0, 0.688081, 0.0, 0.634639, 0.0, 0.19311, 0.0, 0.599103, 0.0, 1.851338, 0.0, -2.469197, 0.0, 0.836071, 0.0, -0.219975, 0.0, -1.302908, 0.0, 0.059436, 0.0, 1.348141, 0.0, 0.0, 0.0, 2.37551, 0.0, -2.773032, 0.0, -1.354276, 0.0, 1.055091, 0.0, 1.988467, 0.0, -2.170231, 0.0, 0.216063, 0.0, 2.143171, 0.0, 0.256805, 0.0, 3.059876, 0.0, 0.210124, 0.0, 2.190091, 0.0, -1.829154, 0.0, 0.301831, 0.0, -1.517206, 0.0, 0.190193, 0.0, 1.356466, 0.0, 0.169182, 0.0, 1.393061, 0.0, 0.988454, 0.0, -1.201558, 0.0, 3.229301, 0.0, -3.496638, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.687174, "min_abs": 0.0, "max_abs": 3.554904, "positive": 58, "negative": 26, "zero": 90 }, "rank_score": 102.748696 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100000000000001001001000000010000000000000001000001010000000000000000000000100001000000000000100100001001000000010010000101100100100000000000000100000000100100100001001000010", "hard_bits_sha256_16": "c73cc2fe1369c2a4", "hard_weight_174": 28, "llr_full_174": [ -3.374406, 0.0, 0.080078, 0.836071, 0.0, 0.0, 0.688081, 0.0, 3.281581, 0.169182, 0.0, 0.014992, 0.0, 3.053047, -1.517206, 0.0, 0.0, -1.731499, 0.0, 0.0, -2.170231, 0.0, 1.356466, 0.0, 0.348841, 0.223255, 0.0, 0.0, -2.403098, 0.0, 0.0, 2.500422, 0.0, 1.988467, 0.0, -0.219975, 2.392607, 0.0, 0.0, 0.707306, 0.0, 0.0, 0.634639, 0.0, -3.554904, 0.0, 1.872055, 0.216063, 0.0, 0.0, -1.829154, 0.0, -0.730678, 0.017813, 0.0, 1.851338, 0.0, 2.046008, 1.526605, 0.0, 0.0, 1.393061, 0.0, 0.0, 0.723765, 0.0, 1.085254, 0.0, 0.988454, 0.19311, 0.0, 0.0, 0.330354, 0.0, 0.0, -2.469197, 0.0, 1.385281, 0.0, 2.143171, -1.944481, 0.0, 1.918928, 0.0, 0.0, 0.301831, 0.0, 2.37551, 0.0, 0.059436, 0.17585, 0.0, 0.0, -1.712555, 0.0, 0.599103, -0.249701, 0.0, 1.992279, 0.0, 2.190091, -1.496118, 0.0, 0.0, 0.120228, 0.0, 0.0, 0.731184, 0.0, 1.507206, 0.0, 1.499435, -3.496638, 0.0, 0.0, -1.302908, 0.0, 0.0, 2.564815, 0.0, -2.325656, 0.0, -0.965357, -2.773032, 0.0, 0.0, 0.210124, 0.0, 0.0, -1.145961, 0.0, 1.23885, 0.0, 1.055091, 3.129336, 0.0, 0.0, 1.205518, 0.0, 0.190193, 3.059876, 0.0, 3.066475, 0.0, -0.13445, 1.348141, 0.0, 0.0, 0.739719, 0.0, 0.0, 3.229301, 0.0, 0.256805, 0.0, 0.888438, -2.423703, 0.0, 0.0, -1.354276, 0.0, 0.0, 1.251915, 0.0, -1.201558, 0.0, 2.009815, -1.882489, 0.0, 1.225068, 0.0, 0.0, -0.971153, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.687174, "min_abs": 0.0, "max_abs": 3.554904, "positive": 58, "negative": 26, "zero": 90 }, "rank_score": 102.748696 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101000010000010101101101110001000000010100000100010000101000010111000000000101000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "hard_bits_sha256_16": "b889f1977627d7e3", "hard_weight_174": 26, "llr_full_174": [ -3.374406, 2.783982, -2.850545, 1.23885, 1.119645, 1.250491, 1.085254, 0.15512, -0.085653, 1.992279, 1.828022, 3.003463, 1.988467, -1.472327, 2.168738, -1.201558, 0.803428, -1.529958, -1.829154, 1.423568, -1.998801, -1.302908, 0.776213, -0.808594, -1.731499, -1.069467, 0.106356, 0.739719, 0.33483, -0.138352, 1.918928, 1.110438, 0.739533, 0.17585, 0.166239, 2.858267, 0.223255, -0.211677, 3.346733, -2.423703, 1.46508, 1.485755, 1.526605, 1.308238, 2.309424, -2.773032, 1.861241, 1.922243, 0.169182, -0.021206, 0.246256, 3.059876, 2.476891, 2.539972, -2.469197, 1.657798, -1.62318, 0.731184, 0.693121, 3.058484, 0.634639, -0.324225, 1.116338, -0.971153, -0.048769, -0.069403, 1.872055, 0.899359, 0.222525, 1.499435, 0.865074, 0.769926, 3.053047, 2.163889, 2.022576, -0.13445, 0.077644, -0.619122, 2.143171, 1.990849, 3.22599, 0.599103, -0.206968, 0.711812, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.660953, "min_abs": 0.0, "max_abs": 3.374406, "positive": 58, "negative": 26, "zero": 90 }, "rank_score": 102.643812 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100000000000001000000000101010100000100000000000000000101010000010001000100000000000000000100000001000000000000000100000101000000010100000100000100010001000000000000000100010", "hard_bits_sha256_16": "e6b6b184584556c2", "hard_weight_174": 26, "llr_full_174": [ -3.374406, 0.0, 2.309424, 0.0, 0.776213, 0.0, 1.872055, 0.0, 3.003463, 0.0, 1.657798, 0.0, 0.17585, 0.0, -0.619122, 0.0, 1.085254, 0.0, 0.246256, 0.0, 0.33483, 0.0, 3.053047, 0.0, -1.529958, 0.0, -0.324225, 0.0, -2.423703, 0.0, -0.206968, 0.0, 1.23885, 0.0, 1.922243, 0.0, -1.069467, 0.0, 1.499435, 0.0, 2.168738, 0.0, 0.693121, 0.0, 0.223255, 0.0, 3.22599, 0.0, 1.992279, 0.0, 2.539972, 0.0, 1.110438, 0.0, -0.13445, 0.0, -1.998801, 0.0, -0.048769, 0.0, 1.526605, 0.0, 0.0, 0.0, -2.850545, 0.0, 1.861241, 0.0, -1.731499, 0.0, 0.222525, 0.0, -1.472327, 0.0, 0.731184, 0.0, 2.858267, 0.0, 1.990849, 0.0, -0.085653, 0.0, 2.476891, 0.0, 1.918928, 0.0, 2.022576, 0.0, 1.423568, 0.0, -0.971153, 0.0, 1.485755, 0.0, 0.0, 0.0, 1.250491, 0.0, -0.021206, 0.0, 0.739719, 0.0, 0.769926, 0.0, 0.803428, 0.0, 0.634639, 0.0, 3.346733, 0.0, 0.599103, 0.0, 1.828022, 0.0, -2.469197, 0.0, 0.739533, 0.0, 0.077644, 0.0, -1.302908, 0.0, -0.069403, 0.0, 1.308238, 0.0, 0.0, 0.0, 2.783982, 0.0, -2.773032, 0.0, -0.808594, 0.0, 0.899359, 0.0, 1.988467, 0.0, -1.62318, 0.0, 0.166239, 0.0, 2.143171, 0.0, 0.15512, 0.0, 3.059876, 0.0, -0.138352, 0.0, 2.163889, 0.0, -1.829154, 0.0, 1.116338, 0.0, 1.46508, 0.0, 0.711812, 0.0, 1.119645, 0.0, 0.169182, 0.0, 0.106356, 0.0, 0.865074, 0.0, -1.201558, 0.0, 3.058484, 0.0, -0.211677, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.660953, "min_abs": 0.0, "max_abs": 3.374406, "positive": 58, "negative": 26, "zero": 90 }, "rank_score": 102.643812 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101000000000000001001000000010000000000000001000001010000000000000000000000100000000000001000100100000001000000010010000101100100100000000000000100000000100100100001000000010", "hard_bits_sha256_16": "bcb674a92dd8a29e", "hard_weight_174": 26, "llr_full_174": [ -3.374406, 0.0, -0.048769, 0.739533, 0.0, 0.0, 0.803428, 0.0, 3.22599, 0.169182, 0.0, -0.085653, 0.0, 3.053047, 1.46508, 0.0, 0.0, -1.731499, 0.0, 0.0, -1.62318, 0.0, 1.119645, 0.0, 0.222525, 0.223255, 0.0, 0.0, -1.998801, 0.0, 0.0, 2.476891, 0.0, 1.988467, 0.0, 0.077644, 2.309424, 0.0, 0.0, 0.33483, 0.0, 0.0, 0.634639, 0.0, -2.850545, 0.0, 1.872055, 0.166239, 0.0, 0.0, -1.829154, 0.0, -0.206968, 0.246256, 0.0, 1.828022, 0.0, 2.022576, 1.526605, 0.0, 0.0, 0.106356, 0.0, 0.0, 0.693121, 0.0, 1.085254, 0.0, 0.865074, 3.346733, 0.0, 0.0, 0.776213, 0.0, 0.0, -2.469197, 0.0, 2.168738, 0.0, 2.143171, 1.861241, 0.0, 1.918928, 0.0, 0.0, 1.116338, 0.0, 2.783982, 0.0, -0.069403, 0.17585, 0.0, 0.0, -1.529958, 0.0, 0.599103, -0.021206, 0.0, 1.992279, 0.0, 2.163889, 1.485755, 0.0, 0.0, -1.069467, 0.0, 0.0, 0.731184, 0.0, 1.250491, 0.0, 1.499435, -0.211677, 0.0, 0.0, -1.302908, 0.0, 0.0, 2.539972, 0.0, -1.472327, 0.0, -0.619122, -2.773032, 0.0, 0.0, -0.138352, 0.0, 0.0, -0.324225, 0.0, 1.23885, 0.0, 0.899359, 2.858267, 0.0, 0.0, 1.423568, 0.0, 0.711812, 3.059876, 0.0, 3.003463, 0.0, -0.13445, 1.308238, 0.0, 0.0, 0.739719, 0.0, 0.0, 3.058484, 0.0, 0.15512, 0.0, 0.769926, -2.423703, 0.0, 0.0, -0.808594, 0.0, 0.0, 1.657798, 0.0, -1.201558, 0.0, 1.990849, 1.922243, 0.0, 1.110438, 0.0, 0.0, -0.971153, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.660953, "min_abs": 0.0, "max_abs": 3.374406, "positive": 58, "negative": 26, "zero": 90 }, "rank_score": 102.643812 }, { "name": "raw_msb_symbol_order", "description": "Current FEC bridge: Costas-stripped symbols, MSB-first tone bits.", "bit_count": 84, "llr_count": 84, "complete_174bit_candidate": false, "hard_bits_174": "011000110000110011011011001100000000110111000111110000011000110101000000000011000110", "hard_bits_sha256_16": "a4b5c1f4596092a0", "hard_weight_174": 34, "llr_full_174": [ 3.498287, -3.589507, -3.374406, 1.391345, 3.206228, 1.23885, -0.561701, 0.315352, 1.085254, 3.698812, 3.693185, 1.992279, -3.960953, -2.348789, 1.988467, 3.028813, -1.772239, -1.201558, 2.945828, -2.482501, -1.829154, 1.368162, -1.535585, -1.302908, 0.152229, 1.732054, -1.731499, -0.296855, 1.016879, 0.739719, 1.157751, 1.650627, 1.918928, 3.524827, 3.577036, 0.17585, -4.733609, -3.633911, 0.223255, -2.481224, -1.927965, -2.423703, 3.141261, 2.876491, 1.526605, -2.935799, -2.365317, -2.773032, -4.373506, -0.252611, 0.169182, 3.17644, 3.289909, 3.059876, 2.390617, -2.228947, -2.469197, 3.799079, 3.705281, 0.731184, -4.120689, -1.16185, 0.634639, -1.520616, 0.108292, -0.971153, 0.390353, 1.309657, 1.872055, 1.300899, 1.521969, 1.499435, 2.735424, 2.687783, 3.053047, 1.150028, -1.319124, -0.13445, 3.905997, 3.931653, 2.143171, -3.990768, -0.741094, 0.599103 ], "llr_stats": { "count": 84, "avg_abs": 2.078282, "min_abs": 0.108292, "max_abs": 4.733609, "positive": 51, "negative": 33, "zero": 0 }, "rank_score": 74.58899 }, { "name": "lsb_within_each_tone", "description": "Same symbols, but each 3-bit tone value reversed for bit-order comparison.", "bit_count": 84, "llr_count": 84, "complete_174bit_candidate": false, "hard_bits_174": "110000011000011110110110100001000000011111000111011000110000011101000000000110000011", "hard_bits_sha256_16": "852c1b9d0dc08893", "hard_weight_174": 34, "llr_full_174": [ 3.498287, -3.589507, -3.374406, 1.391345, 3.206228, 1.23885, -0.561701, 0.315352, 1.085254, 3.698812, 3.693185, 1.992279, -3.960953, -2.348789, 1.988467, 3.028813, -1.772239, -1.201558, 2.945828, -2.482501, -1.829154, 1.368162, -1.535585, -1.302908, 0.152229, 1.732054, -1.731499, -0.296855, 1.016879, 0.739719, 1.157751, 1.650627, 1.918928, 3.524827, 3.577036, 0.17585, -4.733609, -3.633911, 0.223255, -2.481224, -1.927965, -2.423703, 3.141261, 2.876491, 1.526605, -2.935799, -2.365317, -2.773032, -4.373506, -0.252611, 0.169182, 3.17644, 3.289909, 3.059876, 2.390617, -2.228947, -2.469197, 3.799079, 3.705281, 0.731184, -4.120689, -1.16185, 0.634639, -1.520616, 0.108292, -0.971153, 0.390353, 1.309657, 1.872055, 1.300899, 1.521969, 1.499435, 2.735424, 2.687783, 3.053047, 1.150028, -1.319124, -0.13445, 3.905997, 3.931653, 2.143171, -3.990768, -0.741094, 0.599103 ], "llr_stats": { "count": 84, "avg_abs": 2.078282, "min_abs": 0.108292, "max_abs": 4.733609, "positive": 51, "negative": 33, "zero": 0 }, "rank_score": 66.58899 }, { "name": "reverse_symbol_order", "description": "Same 3-bit symbols in reverse order; diagnostic only.", "bit_count": 84, "llr_count": 84, "complete_174bit_candidate": false, "hard_bits_174": "110000011000000000101110000011000110111000111110000000100001011011011110000110000011", "hard_bits_sha256_16": "62d51bd2c8d40afb", "hard_weight_174": 34, "llr_full_174": [ 0.599103, -0.741094, -3.990768, 2.143171, 3.931653, 3.905997, -0.13445, -1.319124, 1.150028, 3.053047, 2.687783, 2.735424, 1.499435, 1.521969, 1.300899, 1.872055, 1.309657, 0.390353, -0.971153, 0.108292, -1.520616, 0.634639, -1.16185, -4.120689, 0.731184, 3.705281, 3.799079, -2.469197, -2.228947, 2.390617, 3.059876, 3.289909, 3.17644, 0.169182, -0.252611, -4.373506, -2.773032, -2.365317, -2.935799, 1.526605, 2.876491, 3.141261, -2.423703, -1.927965, -2.481224, 0.223255, -3.633911, -4.733609, 0.17585, 3.577036, 3.524827, 1.918928, 1.650627, 1.157751, 0.739719, 1.016879, -0.296855, -1.731499, 1.732054, 0.152229, -1.302908, -1.535585, 1.368162, -1.829154, -2.482501, 2.945828, -1.201558, -1.772239, 3.028813, 1.988467, -2.348789, -3.960953, 1.992279, 3.693185, 3.698812, 1.085254, 0.315352, -0.561701, 1.23885, 3.206228, 1.391345, -3.374406, -3.589507, 3.498287 ], "llr_stats": { "count": 84, "avg_abs": 2.078282, "min_abs": 0.108292, "max_abs": 4.733609, "positive": 51, "negative": 33, "zero": 0 }, "rank_score": 60.58899 }, { "name": "reverse_full_bitstream", "description": "Full hard-bit stream reversed; diagnostic only.", "bit_count": 84, "llr_count": 84, "complete_174bit_candidate": false, "hard_bits_174": "011000110000000000101011000110000011111000111011000000001100110110110011000011000110", "hard_bits_sha256_16": "3801d54eec75d819", "hard_weight_174": 34, "llr_full_174": [ 0.599103, -0.741094, -3.990768, 2.143171, 3.931653, 3.905997, -0.13445, -1.319124, 1.150028, 3.053047, 2.687783, 2.735424, 1.499435, 1.521969, 1.300899, 1.872055, 1.309657, 0.390353, -0.971153, 0.108292, -1.520616, 0.634639, -1.16185, -4.120689, 0.731184, 3.705281, 3.799079, -2.469197, -2.228947, 2.390617, 3.059876, 3.289909, 3.17644, 0.169182, -0.252611, -4.373506, -2.773032, -2.365317, -2.935799, 1.526605, 2.876491, 3.141261, -2.423703, -1.927965, -2.481224, 0.223255, -3.633911, -4.733609, 0.17585, 3.577036, 3.524827, 1.918928, 1.650627, 1.157751, 0.739719, 1.016879, -0.296855, -1.731499, 1.732054, 0.152229, -1.302908, -1.535585, 1.368162, -1.829154, -2.482501, 2.945828, -1.201558, -1.772239, 3.028813, 1.988467, -2.348789, -3.960953, 1.992279, 3.693185, 3.698812, 1.085254, 0.315352, -0.561701, 1.23885, 3.206228, 1.391345, -3.374406, -3.589507, 3.498287 ], "llr_stats": { "count": 84, "avg_abs": 2.078282, "min_abs": 0.108292, "max_abs": 4.733609, "positive": 51, "negative": 33, "zero": 0 }, "rank_score": 59.58899 }, { "name": "lab_mask_xor_preview", "description": "Deterministic lab-only XOR mask preview; not the real JS8 whitening polynomial.", "bit_count": 84, "llr_count": 84, "complete_174bit_candidate": false, "hard_bits_174": "111000000011100111100010110111010000011101111001010101011110001101111111100010110001", "hard_bits_sha256_16": "5fe2a7a4be86f9a0", "hard_weight_174": 46, "llr_full_174": [ 3.498287, -3.589507, -3.374406, 1.391345, 3.206228, 1.23885, -0.561701, 0.315352, 1.085254, 3.698812, 3.693185, 1.992279, -3.960953, -2.348789, 1.988467, 3.028813, -1.772239, -1.201558, 2.945828, -2.482501, -1.829154, 1.368162, -1.535585, -1.302908, 0.152229, 1.732054, -1.731499, -0.296855, 1.016879, 0.739719, 1.157751, 1.650627, 1.918928, 3.524827, 3.577036, 0.17585, -4.733609, -3.633911, 0.223255, -2.481224, -1.927965, -2.423703, 3.141261, 2.876491, 1.526605, -2.935799, -2.365317, -2.773032, -4.373506, -0.252611, 0.169182, 3.17644, 3.289909, 3.059876, 2.390617, -2.228947, -2.469197, 3.799079, 3.705281, 0.731184, -4.120689, -1.16185, 0.634639, -1.520616, 0.108292, -0.971153, 0.390353, 1.309657, 1.872055, 1.300899, 1.521969, 1.499435, 2.735424, 2.687783, 3.053047, 1.150028, -1.319124, -0.13445, 3.905997, 3.931653, 2.143171, -3.990768, -0.741094, 0.599103 ], "llr_stats": { "count": 84, "avg_abs": 2.078282, "min_abs": 0.108292, "max_abs": 4.733609, "positive": 51, "negative": 33, "zero": 0 }, "rank_score": 48.58899 } ], "outputs": { "candidate_json": "/decoders/js8_decoder/runtime/step85_fec_candidates_window2/js8_step85_window_02_0120_0168_fec_candidate_step17.json", "selected_bits_file": "/decoders/js8_decoder/runtime/step85_fec_candidates_window2/js8_step85_window_02_0120_0168_fec_candidate_step17.bits" }, "decodes": [], "warnings": [ "FEC candidate is incomplete: 84/174 soft bits available; missing 90. Use a longer/complete JS8 frame WAV for LDPC experiments.", "Step 54 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 54 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 54 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 54 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation.", "Step 54 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] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "tool": "webftr-js8-post-ldpc-info87-runtime-export-probe", "tool_version": "step63-source-exact-interleaver-whitening-index-extract", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "input_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_02_0120_0168.wav", "log_dir": "/decoders/js8_decoder/logs", "output_dir": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window2", "candidate_json": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window2/js8_step85_window_02_0120_0168_fec_candidate_step17.json", "matrix_error": null, "soft_error": null, "matrix_ok": true, "soft_ok": true, "runtime_info87_rows_count": 48, "zero_distance_candidate_count": 0, "best_distance": 2, "best_runtime_info87_row": { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_4", "info87_bits": [ 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000", "info87_llr": [ -0.108292, -0.0, 3.374406, -0.0, -0.0, -1.157751, -3.905997, -0.0, 1.772239, 0.561701, -0.0, -0.169182, 1.927965, -3.053047, -0.0, 1.731499, -0.0, -0.0, -2.390617, -0.0, -0.0, -0.0, -3.206228, -0.0, -0.0, -0.223255, -0.390353, -0.0, -2.945828, -0.0, -0.0, -3.289909, -0.0, 1.319124, -0.0, -1.988467, -0.0, -0.0, -3.141261, -0.0, -0.0, -1.016879, -3.498287, -0.0, -0.634639, -3.577036, -1.872055, -0.0, 1.829154, -0.0, -0.0, 4.373506, 0.741094, -0.0, -0.0, -3.693185, -0.0, -0.0, -1.526605, -2.735424, -0.0, -0.152229, -0.0, -0.0, -3.705281, -0.0, -1.521969, -0.0, -1.085254, -0.0, -0.0, 4.733609, -0.0, -0.0, 1.535585, 3.960953, -0.0, 2.469197, 2.365317, -2.143171, -0.0, -0.0, -1.918928, -0.0, -0.0, 4.120689, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 4, 7, 10, 14, 16, 17, 19, 20, 21, 23, 24, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 2, "crc_match": false, "received_crc12": 144, "computed_crc12": 432, "message_preview_12chars": "XXGYQH9k0JIe", "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, "runtime_info87_rows_preview": [ { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_4", "info87_bits": [ 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000", "info87_llr": [ -0.108292, -0.0, 3.374406, -0.0, -0.0, -1.157751, -3.905997, -0.0, 1.772239, 0.561701, -0.0, -0.169182, 1.927965, -3.053047, -0.0, 1.731499, -0.0, -0.0, -2.390617, -0.0, -0.0, -0.0, -3.206228, -0.0, -0.0, -0.223255, -0.390353, -0.0, -2.945828, -0.0, -0.0, -3.289909, -0.0, 1.319124, -0.0, -1.988467, -0.0, -0.0, -3.141261, -0.0, -0.0, -1.016879, -3.498287, -0.0, -0.634639, -3.577036, -1.872055, -0.0, 1.829154, -0.0, -0.0, 4.373506, 0.741094, -0.0, -0.0, -3.693185, -0.0, -0.0, -1.526605, -2.735424, -0.0, -0.152229, -0.0, -0.0, -3.705281, -0.0, -1.521969, -0.0, -1.085254, -0.0, -0.0, 4.733609, -0.0, -0.0, 1.535585, 3.960953, -0.0, 2.469197, 2.365317, -2.143171, -0.0, -0.0, -1.918928, -0.0, -0.0, 4.120689, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 4, 7, 10, 14, 16, 17, 19, 20, 21, 23, 24, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 2, "crc_match": false, "received_crc12": 144, "computed_crc12": 432, "message_preview_12chars": "XXGYQH9k0JIe", "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_5", "info87_bits": [ 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000", "info87_llr": [ -0.108292, -0.0, 3.374406, -0.0, -0.0, -1.157751, -3.905997, -0.0, 1.772239, 0.561701, -0.0, -0.169182, 1.927965, -3.053047, -0.0, 1.731499, -0.0, -0.0, -2.390617, -0.0, -0.0, -0.0, -3.206228, -0.0, -0.0, -0.223255, -0.390353, -0.0, -2.945828, -0.0, -0.0, -3.289909, -0.0, 1.319124, -0.0, -1.988467, -0.0, -0.0, -3.141261, -0.0, -0.0, -1.016879, -3.498287, -0.0, -0.634639, -3.577036, -1.872055, -0.0, 1.829154, -0.0, -0.0, 4.373506, 0.741094, -0.0, -0.0, -3.693185, -0.0, -0.0, -1.526605, -2.735424, -0.0, -0.152229, -0.0, -0.0, -3.705281, -0.0, -1.521969, -0.0, -1.085254, -0.0, -0.0, 4.733609, -0.0, -0.0, 1.535585, 3.960953, -0.0, 2.469197, 2.365317, -2.143171, -0.0, -0.0, -1.918928, -0.0, -0.0, 4.120689, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 4, 7, 10, 14, 16, 17, 19, 20, 21, 23, 24, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 2, "crc_match": false, "received_crc12": 144, "computed_crc12": 432, "message_preview_12chars": "XXGYQH9k0JIe", "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_4", "info87_bits": [ 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000", "info87_llr": [ -0.108292, -0.0, 3.374406, -0.0, -0.0, -1.157751, -3.905997, -0.0, 1.772239, 0.561701, -0.0, -0.169182, 1.927965, -3.053047, -0.0, 1.731499, -0.0, -0.0, -2.390617, -0.0, -0.0, -0.0, -3.206228, -0.0, -0.0, -0.223255, -0.390353, -0.0, -2.945828, -0.0, -0.0, -3.289909, -0.0, 1.319124, -0.0, -1.988467, -0.0, -0.0, -3.141261, -0.0, -0.0, -1.016879, -3.498287, -0.0, -0.634639, -3.577036, -1.872055, -0.0, 1.829154, -0.0, -0.0, 4.373506, 0.741094, -0.0, -0.0, -3.693185, -0.0, -0.0, -1.526605, -2.735424, -0.0, -0.152229, -0.0, -0.0, -3.705281, -0.0, -1.521969, -0.0, -1.085254, -0.0, -0.0, 4.733609, -0.0, -0.0, 1.535585, 3.960953, -0.0, 2.469197, 2.365317, -2.143171, -0.0, -0.0, -1.918928, -0.0, -0.0, 4.120689, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 4, 7, 10, 14, 16, 17, 19, 20, 21, 23, 24, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 2, "crc_match": false, "received_crc12": 144, "computed_crc12": 432, "message_preview_12chars": "XXGYQH9k0JIe", "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse" }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_5", "info87_bits": [ 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000", "info87_llr": [ -0.108292, -0.0, 3.374406, -0.0, -0.0, -1.157751, -3.905997, -0.0, 1.772239, 0.561701, -0.0, -0.169182, 1.927965, -3.053047, -0.0, 1.731499, -0.0, -0.0, -2.390617, -0.0, -0.0, -0.0, -3.206228, -0.0, -0.0, -0.223255, -0.390353, -0.0, -2.945828, -0.0, -0.0, -3.289909, -0.0, 1.319124, -0.0, -1.988467, -0.0, -0.0, -3.141261, -0.0, -0.0, -1.016879, -3.498287, -0.0, -0.634639, -3.577036, -1.872055, -0.0, 1.829154, -0.0, -0.0, 4.373506, 0.741094, -0.0, -0.0, -3.693185, -0.0, -0.0, -1.526605, -2.735424, -0.0, -0.152229, -0.0, -0.0, -3.705281, -0.0, -1.521969, -0.0, -1.085254, -0.0, -0.0, 4.733609, -0.0, -0.0, 1.535585, 3.960953, -0.0, 2.469197, 2.365317, -2.143171, -0.0, -0.0, -1.918928, -0.0, -0.0, 4.120689, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 4, 7, 10, 14, 16, 17, 19, 20, 21, 23, 24, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 2, "crc_match": false, "received_crc12": 144, "computed_crc12": 432, "message_preview_12chars": "XXGYQH9k0JIe", "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "lsb_within_each_tone+no_interleaver+inverted_bits", "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse" }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_0", "info87_bits": [ 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 ], "info87_bitstring": "100100001001011001001010100010010000100000001011001010010110000010001000000100011010000", "info87_llr": [ -3.498287, -0.0, 0.069403, -1.110438, -0.0, -0.0, 1.529958, -0.0, -1.990849, 4.373506, -0.0, -0.15512, -0.0, -2.735424, -1.485755, -0.0, -0.0, -0.152229, -0.0, -0.0, -1.657798, -0.0, -1.250491, -0.0, -0.899359, 4.733609, -0.0, -0.0, -1.423568, -0.0, -0.0, -2.539972, -0.0, 3.960953, -0.0, 0.619122, -1.308238, -0.0, -0.0, 0.138352, -0.0, -0.0, 4.120689, -0.0, -2.783982, -0.0, -0.390353, -2.858267, -0.0, -0.0, -2.945828, -0.0, -0.711812, 0.021206, -0.0, -3.003463, -0.0, -2.163889, -3.141261, -0.0, -0.0, 1.069467, -0.0, -0.0, -3.058484, -0.0, 0.561701, -0.0, -0.769926, 0.211677, -0.0, -0.0, 0.808594, -0.0, -0.0, -2.390617, -0.0, 1.472327, -0.0, -3.905997, -1.922243, -0.0, -1.157751, -0.0, -0.0, 0.324225, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 4, 5, 7, 10, 12, 15, 16, 18, 19, 21, 23, 26, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 2256, "computed_crc12": 2328, "message_preview_12chars": "a9PAYGWBAM28", "message_words_6bit": [ 36, 9, 25, 10, 34, 16, 32, 11, 10, 22, 2, 8 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_1", "info87_bits": [ 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 ], "info87_bitstring": "100100001001011001001010100010010000100000001011001010010110000010001000000100011010000", "info87_llr": [ -3.498287, -0.0, 0.069403, -1.110438, -0.0, -0.0, 1.529958, -0.0, -1.990849, 4.373506, -0.0, -0.15512, -0.0, -2.735424, -1.485755, -0.0, -0.0, -0.152229, -0.0, -0.0, -1.657798, -0.0, -1.250491, -0.0, -0.899359, 4.733609, -0.0, -0.0, -1.423568, -0.0, -0.0, -2.539972, -0.0, 3.960953, -0.0, 0.619122, -1.308238, -0.0, -0.0, 0.138352, -0.0, -0.0, 4.120689, -0.0, -2.783982, -0.0, -0.390353, -2.858267, -0.0, -0.0, -2.945828, -0.0, -0.711812, 0.021206, -0.0, -3.003463, -0.0, -2.163889, -3.141261, -0.0, -0.0, 1.069467, -0.0, -0.0, -3.058484, -0.0, 0.561701, -0.0, -0.769926, 0.211677, -0.0, -0.0, 0.808594, -0.0, -0.0, -2.390617, -0.0, 1.472327, -0.0, -3.905997, -1.922243, -0.0, -1.157751, -0.0, -0.0, 0.324225, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 4, 5, 7, 10, 12, 15, 16, 18, 19, 21, 23, 26, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 2256, "computed_crc12": 2328, "message_preview_12chars": "a9PAYGWBAM28", "message_words_6bit": [ 36, 9, 25, 10, 34, 16, 32, 11, 10, 22, 2, 8 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_0", "info87_bits": [ 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 ], "info87_bitstring": "100100001001011001001010100010010000100000001011001010010110000010001000000100011010000", "info87_llr": [ -3.498287, -0.0, 0.069403, -1.110438, -0.0, -0.0, 1.529958, -0.0, -1.990849, 4.373506, -0.0, -0.15512, -0.0, -2.735424, -1.485755, -0.0, -0.0, -0.152229, -0.0, -0.0, -1.657798, -0.0, -1.250491, -0.0, -0.899359, 4.733609, -0.0, -0.0, -1.423568, -0.0, -0.0, -2.539972, -0.0, 3.960953, -0.0, 0.619122, -1.308238, -0.0, -0.0, 0.138352, -0.0, -0.0, 4.120689, -0.0, -2.783982, -0.0, -0.390353, -2.858267, -0.0, -0.0, -2.945828, -0.0, -0.711812, 0.021206, -0.0, -3.003463, -0.0, -2.163889, -3.141261, -0.0, -0.0, 1.069467, -0.0, -0.0, -3.058484, -0.0, 0.561701, -0.0, -0.769926, 0.211677, -0.0, -0.0, 0.808594, -0.0, -0.0, -2.390617, -0.0, 1.472327, -0.0, -3.905997, -1.922243, -0.0, -1.157751, -0.0, -0.0, 0.324225, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 4, 5, 7, 10, 12, 15, 16, 18, 19, 21, 23, 26, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 2256, "computed_crc12": 2328, "message_preview_12chars": "a9PAYGWBAM28", "message_words_6bit": [ 36, 9, 25, 10, 34, 16, 32, 11, 10, 22, 2, 8 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "variant": "mapped_lsb_within_each_tone+no_interleaver" }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_1", "info87_bits": [ 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 ], "info87_bitstring": "100100001001011001001010100010010000100000001011001010010110000010001000000100011010000", "info87_llr": [ -3.498287, -0.0, 0.069403, -1.110438, -0.0, -0.0, 1.529958, -0.0, -1.990849, 4.373506, -0.0, -0.15512, -0.0, -2.735424, -1.485755, -0.0, -0.0, -0.152229, -0.0, -0.0, -1.657798, -0.0, -1.250491, -0.0, -0.899359, 4.733609, -0.0, -0.0, -1.423568, -0.0, -0.0, -2.539972, -0.0, 3.960953, -0.0, 0.619122, -1.308238, -0.0, -0.0, 0.138352, -0.0, -0.0, 4.120689, -0.0, -2.783982, -0.0, -0.390353, -2.858267, -0.0, -0.0, -2.945828, -0.0, -0.711812, 0.021206, -0.0, -3.003463, -0.0, -2.163889, -3.141261, -0.0, -0.0, 1.069467, -0.0, -0.0, -3.058484, -0.0, 0.561701, -0.0, -0.769926, 0.211677, -0.0, -0.0, 0.808594, -0.0, -0.0, -2.390617, -0.0, 1.472327, -0.0, -3.905997, -1.922243, -0.0, -1.157751, -0.0, -0.0, 0.324225, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 4, 5, 7, 10, 12, 15, 16, 18, 19, 21, 23, 26, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 2256, "computed_crc12": 2328, "message_preview_12chars": "a9PAYGWBAM28", "message_words_6bit": [ 36, 9, 25, 10, 34, 16, 32, 11, 10, 22, 2, 8 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "variant": "mapped_lsb_within_each_tone+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_1", "info87_bits": [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], "info87_bitstring": "011111111111110111111111010111011101011111111111111111010101111101111111011111111111111", "info87_llr": [ 2.850545, -0.0, -1.526605, -0.0, -0.776213, -0.0, -0.222525, -0.0, -1.992279, -0.0, -1.657798, -0.0, -2.858267, -0.0, 0.13445, -0.0, 0.085653, -0.0, -0.169182, -0.0, -0.33483, -0.0, -2.022576, -0.0, 1.201558, -0.0, 0.324225, -0.0, -1.485755, -0.0, 0.206968, -0.0, -1.250491, -0.0, 2.773032, -0.0, 1.069467, -0.0, -0.769926, -0.0, -1.988467, -0.0, -0.693121, -0.0, -3.346733, -0.0, -2.143171, -0.0, -3.003463, -0.0, -3.059876, -0.0, -1.110438, -0.0, 0.619122, -0.0, 1.829154, -0.0, 0.048769, -0.0, -2.309424, -0.0, -0.0, -0.0, 3.374406, -0.0, -1.861241, -0.0, -0.106356, -0.0, -1.872055, -0.0, 1.472327, -0.0, -3.058484, -0.0, -0.17585, -0.0, -1.990849, -0.0, -1.085254, -0.0, -2.476891, -0.0, -0.739533, -0.0, -3.053047 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 4095, "computed_crc12": 1972, "message_preview_12chars": "V+t+NTV++Lz+", "message_words_6bit": [ 31, 63, 55, 63, 23, 29, 31, 63, 63, 21, 61, 63 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_11", "info87_bits": [ 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 ], "info87_bitstring": "010000101000101010010010001110000000101100000100101100010000101111000000000010000101000", "info87_llr": [ 3.498287, -2.850545, 0.0, -0.0, 0.0, 0.0, -0.561701, -0.085653, 0.0, 0.0, 0.0, 0.0, -3.960953, 2.168738, 0.0, 0.0, -1.529958, 0.803428, 0.0, 0.0, 0.0, 0.0, -0.808594, 0.776213, 0.0, 0.0, 0.0, 0.0, -0.138352, 0.33483, 0.0, 0.0, 1.110438, 3.524827, 0.347086, 0.018378, -0.881543, 1.188864, -0.211677, -2.481224, 1.248327, 1.042438, 1.849445, 0.908162, 1.308238, -2.935799, 1.796303, 1.639907, -4.373506, 0.246256, -0.007244, -0.19028, 0.0, 0.0, 2.390617, -1.62318, 0.0, 0.0, 0.0, 0.0, -4.120689, 1.116338, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.899359, 1.300899, 0.0, 0.0, 0.0, 0.0, 2.163889, 1.150028, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 4, 5, 8, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 27 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 1064, "computed_crc12": 20, "message_preview_12chars": "GegIE0i4iGl0", "message_words_6bit": [ 16, 40, 42, 18, 14, 0, 44, 4, 44, 16, 47, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_16", "info87_bits": [ 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "001000100100001000001000010010000101000000101000000000000000010000100000100000001000000", "info87_llr": [ 3.498287, 0.0, -0.013832, 0.448101, 0.0, 0.0, -1.395544, 0.0, 1.758353, -4.373506, 0.0, -0.056936, 0.0, 2.735424, -0.652059, 0.0, 0.0, 0.152229, 0.0, 0.0, -1.030034, 0.0, 0.819224, 0.0, 0.145429, -4.733609, 0.0, 0.0, -1.047381, 0.0, 0.0, 2.146517, 0.0, -3.960953, 0.0, -0.458009, 1.059235, 0.0, 0.0, -0.045753, 0.0, 0.0, -4.120689, 0.0, -2.143226, 0.0, 0.390353, 2.616756, 0.0, 0.0, 2.945828, 0.0, 0.081616, 0.243127, 0.0, 2.647999, 0.0, 1.44351, 3.141261, 0.0, 0.0, 0.02114, 0.0, 0.0, 2.784941, 0.0, -0.561701, 0.0, 0.524636, 3.218019, 0.0, 0.0, -0.568851, 0.0, 0.0, 2.390617, 0.0, 2.043845, 0.0, 3.905997, -1.044299, 0.0, 1.157751, 0.0, 0.0, 1.091224, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 4, 5, 7, 10, 12, 15, 16, 18, 19, 21, 23, 26, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 64, "computed_crc12": 1052, "message_preview_12chars": "8a88I50e00GW", "message_words_6bit": [ 8, 36, 8, 8, 18, 5, 0, 40, 0, 0, 16, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_17", "info87_bits": [ 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1 ], "info87_bitstring": "111101111101110101011111010101011111111101110111111111110111111101011111011111110111111", "info87_llr": [ -3.498287, -0.0, -1.021786, -0.0, 0.464018, -0.0, -0.390353, -0.0, -1.566944, -0.0, 1.259774, -0.0, -3.524827, -0.0, 0.023285, -0.0, 0.561701, -0.0, 0.002598, -0.0, -0.020354, -0.0, -2.735424, -0.0, 0.501516, -0.0, 1.073259, -0.0, 2.481224, -0.0, 0.683867, -0.0, -1.391345, -0.0, -1.220618, -0.0, -0.008072, -0.0, -1.300899, -0.0, 1.093835, -0.0, -2.669637, -0.0, 4.733609, -0.0, -1.741001, -0.0, -3.698812, -0.0, -1.82139, -0.0, -0.37353, -0.0, -1.150028, -0.0, 1.009348, -0.0, -0.044495, -0.0, -3.141261, -0.0, -0.0, -0.0, 2.127129, -0.0, 1.620345, -0.0, -0.152229, -0.0, -0.093507, -0.0, 2.016827, -0.0, -3.799079, -0.0, -0.14813, -0.0, -2.816924, -0.0, 0.006626, -0.0, -2.118541, -0.0, -1.157751, -0.0, -1.412677 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 4031, "computed_crc12": 1910, "message_preview_12chars": "zzrVLVzt+tzV", "message_words_6bit": [ 61, 61, 53, 31, 21, 31, 61, 55, 63, 55, 61, 31 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver" }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_1", "info87_bits": [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], "info87_bitstring": "011111111111110111111111010111011101011111111111111111010101111101111111011111111111111", "info87_llr": [ 2.850545, -0.0, -1.526605, -0.0, -0.776213, -0.0, -0.222525, -0.0, -1.992279, -0.0, -1.657798, -0.0, -2.858267, -0.0, 0.13445, -0.0, 0.085653, -0.0, -0.169182, -0.0, -0.33483, -0.0, -2.022576, -0.0, 1.201558, -0.0, 0.324225, -0.0, -1.485755, -0.0, 0.206968, -0.0, -1.250491, -0.0, 2.773032, -0.0, 1.069467, -0.0, -0.769926, -0.0, -1.988467, -0.0, -0.693121, -0.0, -3.346733, -0.0, -2.143171, -0.0, -3.003463, -0.0, -3.059876, -0.0, -1.110438, -0.0, 0.619122, -0.0, 1.829154, -0.0, 0.048769, -0.0, -2.309424, -0.0, -0.0, -0.0, 3.374406, -0.0, -1.861241, -0.0, -0.106356, -0.0, -1.872055, -0.0, 1.472327, -0.0, -3.058484, -0.0, -0.17585, -0.0, -1.990849, -0.0, -1.085254, -0.0, -2.476891, -0.0, -0.739533, -0.0, -3.053047 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 4095, "computed_crc12": 1972, "message_preview_12chars": "V+t+NTV++Lz+", "message_words_6bit": [ 31, 63, 55, 63, 23, 29, 31, 63, 63, 21, 61, 63 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_11", "info87_bits": [ 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 ], "info87_bitstring": "010000101000101010010010001110000000101100000100101100010000101111000000000010000101000", "info87_llr": [ 3.498287, -2.850545, 0.0, -0.0, 0.0, 0.0, -0.561701, -0.085653, 0.0, 0.0, 0.0, 0.0, -3.960953, 2.168738, 0.0, 0.0, -1.529958, 0.803428, 0.0, 0.0, 0.0, 0.0, -0.808594, 0.776213, 0.0, 0.0, 0.0, 0.0, -0.138352, 0.33483, 0.0, 0.0, 1.110438, 3.524827, 0.347086, 0.018378, -0.881543, 1.188864, -0.211677, -2.481224, 1.248327, 1.042438, 1.849445, 0.908162, 1.308238, -2.935799, 1.796303, 1.639907, -4.373506, 0.246256, -0.007244, -0.19028, 0.0, 0.0, 2.390617, -1.62318, 0.0, 0.0, 0.0, 0.0, -4.120689, 1.116338, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.899359, 1.300899, 0.0, 0.0, 0.0, 0.0, 2.163889, 1.150028, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 4, 5, 8, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 27 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 1064, "computed_crc12": 20, "message_preview_12chars": "GegIE0i4iGl0", "message_words_6bit": [ 16, 40, 42, 18, 14, 0, 44, 4, 44, 16, 47, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_16", "info87_bits": [ 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "001000100100001000001000010010000101000000101000000000000000010000100000100000001000000", "info87_llr": [ 3.498287, 0.0, -0.013832, 0.448101, 0.0, 0.0, -1.395544, 0.0, 1.758353, -4.373506, 0.0, -0.056936, 0.0, 2.735424, -0.652059, 0.0, 0.0, 0.152229, 0.0, 0.0, -1.030034, 0.0, 0.819224, 0.0, 0.145429, -4.733609, 0.0, 0.0, -1.047381, 0.0, 0.0, 2.146517, 0.0, -3.960953, 0.0, -0.458009, 1.059235, 0.0, 0.0, -0.045753, 0.0, 0.0, -4.120689, 0.0, -2.143226, 0.0, 0.390353, 2.616756, 0.0, 0.0, 2.945828, 0.0, 0.081616, 0.243127, 0.0, 2.647999, 0.0, 1.44351, 3.141261, 0.0, 0.0, 0.02114, 0.0, 0.0, 2.784941, 0.0, -0.561701, 0.0, 0.524636, 3.218019, 0.0, 0.0, -0.568851, 0.0, 0.0, 2.390617, 0.0, 2.043845, 0.0, 3.905997, -1.044299, 0.0, 1.157751, 0.0, 0.0, 1.091224, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 4, 5, 7, 10, 12, 15, 16, 18, 19, 21, 23, 26, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 64, "computed_crc12": 1052, "message_preview_12chars": "8a88I50e00GW", "message_words_6bit": [ 8, 36, 8, 8, 18, 5, 0, 40, 0, 0, 16, 32 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_17", "info87_bits": [ 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1 ], "info87_bitstring": "111101111101110101011111010101011111111101110111111111110111111101011111011111110111111", "info87_llr": [ -3.498287, -0.0, -1.021786, -0.0, 0.464018, -0.0, -0.390353, -0.0, -1.566944, -0.0, 1.259774, -0.0, -3.524827, -0.0, 0.023285, -0.0, 0.561701, -0.0, 0.002598, -0.0, -0.020354, -0.0, -2.735424, -0.0, 0.501516, -0.0, 1.073259, -0.0, 2.481224, -0.0, 0.683867, -0.0, -1.391345, -0.0, -1.220618, -0.0, -0.008072, -0.0, -1.300899, -0.0, 1.093835, -0.0, -2.669637, -0.0, 4.733609, -0.0, -1.741001, -0.0, -3.698812, -0.0, -1.82139, -0.0, -0.37353, -0.0, -1.150028, -0.0, 1.009348, -0.0, -0.044495, -0.0, -3.141261, -0.0, -0.0, -0.0, 2.127129, -0.0, 1.620345, -0.0, -0.152229, -0.0, -0.093507, -0.0, 2.016827, -0.0, -3.799079, -0.0, -0.14813, -0.0, -2.816924, -0.0, 0.006626, -0.0, -2.118541, -0.0, -1.157751, -0.0, -1.412677 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 4031, "computed_crc12": 1910, "message_preview_12chars": "zzrVLVzt+tzV", "message_words_6bit": [ 61, 61, 53, 31, 21, 31, 61, 55, 63, 55, 61, 31 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_10", "info87_bits": [ 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1 ], "info87_bitstring": "010111101111101010010010001110111111101011111011101111010111101000111111111010111101111", "info87_llr": [ 3.374406, -2.783982, 2.850545, -1.23885, -1.119645, -1.250491, -1.085254, -0.15512, 0.085653, -1.992279, -1.828022, -3.003463, -1.988467, 1.472327, -2.168738, 1.201558, -0.803428, 1.529958, 1.829154, -1.423568, 1.998801, 1.302908, -0.776213, 0.808594, 1.731499, 1.069467, -0.106356, -0.739719, -0.33483, 0.138352, -1.918928, -1.110438, -0.739533, -0.17585, -0.166239, -2.858267, -0.223255, 0.211677, -3.346733, 2.423703, -1.46508, -1.485755, -1.526605, -1.308238, -2.309424, 2.773032, -1.861241, -1.922243, -0.169182, 0.021206, -0.246256, -3.059876, -2.476891, -2.539972, 2.469197, -1.657798, 1.62318, -0.731184, -0.693121, -3.058484, -0.634639, 0.324225, -1.116338, 0.971153, 0.048769, 0.069403, -1.872055, -0.899359, -0.222525, -1.499435, -0.865074, -0.769926, -3.053047, -2.163889, -2.022576, 0.13445, -0.077644, 0.619122, -2.143171, -1.990849, -3.22599, -0.599103, 0.206968, -0.711812, -0.0, -0.0, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 84, 85, 86, 49, 64, 65, 76, 8, 26, 75, 29, 7, 34, 48, 33, 82, 37, 68 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 1519, "computed_crc12": 1952, "message_preview_12chars": "NlgIE+hxlNe+", "message_words_6bit": [ 23, 47, 42, 18, 14, 63, 43, 59, 47, 23, 40, 63 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver+inverted_bits", "variant": "mapped_raw_msb+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_12", "info87_bits": [ 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 ], "info87_bitstring": "111011011111111111110111111011111010111111111111101011111100111001110111011100111111110", "info87_llr": [ -2.392607, -0.0, -0.0, 0.947442, -0.981758, -0.0, 1.731499, -0.0, -0.570227, -0.0, -0.0, -0.83549, -0.0, -0.059436, -0.989774, -0.0, -3.066475, -0.0, -0.0, -0.79914, 0.892028, 0.0, -0.731184, -0.0, -0.505468, -0.0, -0.0, -0.104773, -0.0, -2.37551, -0.905535, -0.0, -0.0, 1.496118, -1.004262, 0.0, -0.0, -0.763633, -0.0, -0.190193, -0.0, -0.357632, -0.040023, -0.0, -1.499435, -0.0, -0.0, -0.465809, -0.0, 0.249701, -0.560106, -0.0, -0.0, 0.109656, -0.0, -1.393061, -0.0, -0.309529, 1.025822, -0.0, -0.223255, -0.0, -0.0, 1.021661, -0.0, -0.55266, -1.004262, 0.0, 1.145961, -0.0, -0.0, -0.150061, -0.0, -0.357632, -0.0, -3.059876, 0.771977, -0.0, -0.0, -0.465809, -0.0, -0.0, -0.560106, -0.0, -1.23885, -0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 2, 5, 7, 9, 10, 12, 15, 17, 18, 21, 23, 25, 26, 28, 31, 32, 35 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 2558, "computed_crc12": 3348, "message_preview_12chars": "xV+txw++hyvt", "message_words_6bit": [ 59, 31, 63, 55, 59, 58, 63, 63, 43, 60, 57, 55 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_13", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "001000000000110000000000111011001011001000000000000000111000000011111000001000000000000", "info87_llr": [ 2.392607, 0.0, 0.0, 0.0, 0.0, 0.0, 3.066475, 0.0, 0.0, 0.0, 0.0, 0.0, -0.965357, 0.0, 0.0, 0.0, 0.0, 0.0, 0.707306, 0.0, 0.0, 0.0, 0.0, 0.0, -1.145961, 0.0, 0.0, 0.0, 0.0, 0.0, 1.23885, 0.0, 0.0, 0.0, 0.0, 0.0, 1.499435, 0.0, 0.0, 0.0, 0.0, 0.0, 0.223255, 0.0, 0.0, 0.0, 0.0, 0.0, 2.564815, 0.0, 0.0, 0.0, 0.0, 0.0, -2.403098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.731499, 0.0, 0.0, 0.0, 0.0, 0.0, 0.731184, -0.0, -0.0, 0.0, 0.0, 0.0, 0.014992, 0.0, 0.0, 0.0, 0.0, 0.0, 2.046008, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 0, "computed_crc12": 1690, "message_preview_12chars": "80m0xB800u3u", "message_words_6bit": [ 8, 0, 48, 0, 59, 11, 8, 0, 0, 56, 3, 56 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver", "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_14", "info87_bits": [ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "110000000000001000000000111011110000110000000000000000111011000011001000110000000000000", "info87_llr": [ -3.374406, 0.0, 0.0, 0.0, 0.0, 0.0, 1.872055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.17585, 0.0, 0.0, 0.0, 0.0, 0.0, 0.246256, -0.0, -0.0, 0.0, 0.0, 0.0, -1.529958, 0.0, 0.0, 0.0, 0.0, 0.0, -0.206968, 0.0, 0.0, 0.0, 0.0, 0.0, -1.069467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.693121, 0.0, 0.0, 0.0, 0.0, 0.0, 1.992279, 0.0, 0.0, 0.0, 0.0, 0.0, -0.13445, 0.0, 0.0, 0.0, 0.0, 0.0, 1.526605, 0.0, 0.0, 0.0, 0.0, 0.0, 1.861241, -0.0, -0.0, 0.0, 0.0, 0.0, -1.472327, 0.0, 0.0, 0.0, 0.0, 0.0, 1.990849, 0.0, 0.0, 0.0, 0.0, 0.0, 1.918928, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 0, "computed_crc12": 574, "message_preview_12chars": "m080xmm00x38", "message_words_6bit": [ 48, 0, 8, 0, 59, 48, 48, 0, 0, 59, 3, 8 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_msb_input+no_interleaver", "variant": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_15", "info87_bits": [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ], "info87_bitstring": "100000000001000000000000101001000000110000000000000000000100000000000000000000000001000", "info87_llr": [ -0.069403, 0.33483, 3.058484, 0.0, 0.0, 3.698812, 0.0, 0.0, 0.0, 2.945828, 3.346733, -1.529958, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.077644, 0.0, 0.166239, -0.561701, 0.0, -1.62318, 2.022576, 0.0, -0.296855, 0.0, 0.711812, 0.0, 1.485755, 0.0, 0.0, -4.120689, -1.520616, 0.0, 1.423568, 0.0, 3.524827, 0.0, 0.0, 3.498287, 0.0, 0.769926, 0.0, 3.028813, 0.246256, 1.657798, 1.150028, 1.157751, 0.0, 0.0, 0.0, 3.17644, -0.808594, 2.783982, 0.0, 0.0, 0.899359, 0.0, 0.0, 3.141261, 2.168738, 1.990849, 0.0, 0.0, 1.308238, 3.22599, 0.106356, 1.250491, 0.0, 0.0, 0.0, 2.476891, 0.0, 1.828022, 1.922243, 0.390353, 0.0, 0.0, -2.481224, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 3, 4, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 28, 30 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 8, "computed_crc12": 1332, "message_preview_12chars": "W100f0m00400", "message_words_6bit": [ 32, 1, 0, 0, 41, 0, 48, 0, 0, 4, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_2", "info87_bits": [ 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1 ], "info87_bitstring": "110111011010111111111111101111111010111011011111111110111111101111011011011110111111101", "info87_llr": [ -3.498287, -0.0, 0.069403, -1.110438, -0.0, -0.0, 1.529958, -0.0, -1.990849, 4.373506, -0.0, -0.15512, -0.0, -2.735424, -1.485755, -0.0, -0.0, -0.152229, -0.0, -0.0, -1.657798, -0.0, -1.250491, -0.0, -0.899359, 4.733609, -0.0, -0.0, -1.423568, -0.0, -0.0, -2.539972, -0.0, 3.960953, -0.0, 0.619122, -1.308238, -0.0, -0.0, 0.138352, -0.0, -0.0, 4.120689, -0.0, -2.783982, -0.0, -0.390353, -2.858267, -0.0, -0.0, -2.945828, -0.0, -0.711812, 0.021206, -0.0, -3.003463, -0.0, -2.163889, -3.141261, -0.0, -0.0, 1.069467, -0.0, -0.0, -3.058484, -0.0, 0.561701, -0.0, -0.769926, 0.211677, -0.0, -0.0, 0.808594, -0.0, -0.0, -2.390617, -0.0, 1.472327, -0.0, -3.905997, -1.922243, -0.0, -1.157751, -0.0, -0.0, 0.324225, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 4, 5, 7, 10, 12, 15, 16, 18, 19, 21, 23, 26, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3581, "computed_crc12": 456, "message_preview_12chars": "tQ++lwxV-+lR", "message_words_6bit": [ 55, 26, 63, 63, 47, 58, 59, 31, 62, 63, 47, 27 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+no_interleaver+inverted_bits", "variant": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_3", "info87_bits": [ 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1 ], "info87_bitstring": "110111011010111111111111101111111010111011011111111110111111101111011011011110111111101", "info87_llr": [ -3.498287, -0.0, 0.069403, -1.110438, -0.0, -0.0, 1.529958, -0.0, -1.990849, 4.373506, -0.0, -0.15512, -0.0, -2.735424, -1.485755, -0.0, -0.0, -0.152229, -0.0, -0.0, -1.657798, -0.0, -1.250491, -0.0, -0.899359, 4.733609, -0.0, -0.0, -1.423568, -0.0, -0.0, -2.539972, -0.0, 3.960953, -0.0, 0.619122, -1.308238, -0.0, -0.0, 0.138352, -0.0, -0.0, 4.120689, -0.0, -2.783982, -0.0, -0.390353, -2.858267, -0.0, -0.0, -2.945828, -0.0, -0.711812, 0.021206, -0.0, -3.003463, -0.0, -2.163889, -3.141261, -0.0, -0.0, 1.069467, -0.0, -0.0, -3.058484, -0.0, 0.561701, -0.0, -0.769926, 0.211677, -0.0, -0.0, 0.808594, -0.0, -0.0, -2.390617, -0.0, 1.472327, -0.0, -3.905997, -1.922243, -0.0, -1.157751, -0.0, -0.0, 0.324225, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 4, 5, 7, 10, 12, 15, 16, 18, 19, 21, 23, 26, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3581, "computed_crc12": 456, "message_preview_12chars": "tQ++lwxV-+lR", "message_words_6bit": [ 55, 26, 63, 63, 47, 58, 59, 31, 62, 63, 47, 27 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_4", "info87_bits": [ 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1 ], "info87_bitstring": "110111011010111111111111101111111010111011011111111110111111101111011011011110111111101", "info87_llr": [ -3.498287, -0.0, 0.069403, -1.110438, -0.0, -0.0, 1.529958, -0.0, -1.990849, 4.373506, -0.0, -0.15512, -0.0, -2.735424, -1.485755, -0.0, -0.0, -0.152229, -0.0, -0.0, -1.657798, -0.0, -1.250491, -0.0, -0.899359, 4.733609, -0.0, -0.0, -1.423568, -0.0, -0.0, -2.539972, -0.0, 3.960953, -0.0, 0.619122, -1.308238, -0.0, -0.0, 0.138352, -0.0, -0.0, 4.120689, -0.0, -2.783982, -0.0, -0.390353, -2.858267, -0.0, -0.0, -2.945828, -0.0, -0.711812, 0.021206, -0.0, -3.003463, -0.0, -2.163889, -3.141261, -0.0, -0.0, 1.069467, -0.0, -0.0, -3.058484, -0.0, 0.561701, -0.0, -0.769926, 0.211677, -0.0, -0.0, 0.808594, -0.0, -0.0, -2.390617, -0.0, 1.472327, -0.0, -3.905997, -1.922243, -0.0, -1.157751, -0.0, -0.0, 0.324225, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 4, 5, 7, 10, 12, 15, 16, 18, 19, 21, 23, 26, 27, 29, 30, 32, 34 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3581, "computed_crc12": 456, "message_preview_12chars": "tQ++lwxV-+lR", "message_words_6bit": [ 55, 26, 63, 63, 47, 58, 59, 31, 62, 63, 47, 27 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "variant": "mapped_lsb_within_each_tone+no_interleaver" } ], "outputs": { "post_ldpc_info87_runtime_export_json": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window2/step61_post_ldpc_info87_runtime_export.json" }, "warnings": [ "This is still a diagnostic runtime export, not a final JS8 text decoder.", "Step61 patches the runtime LDPC probes to expose post-LDPC info87 rows and source-index context for the next reorder/whitening alignment step." ], "next_action": "If best_distance is 0, implement source-confirmed message174 text unpack. If best_distance remains >0, build Step62 to test source-derived deinterleaver/whitening index maps against these exact runtime rows." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "tool": "webftr-js8-source-exact-map-probe", "tool_version": "step64-source-confirmed-message174-decodes-output", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "source_checked": [ { "path": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "exists": true, "is_dir": true } ], "source": { "source_available": true, "source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "files_scanned": 16, "focused_files_present": [ "JS8_Mode/JS8.cpp", "JS8_Mode/JS8.h", "JS8_Mode/Decoder.cpp", "JS8_Mode/Decoder.h", "JS8_Mode/DecodedText.cpp", "JS8_Mode/DecodedText.h", "JS8_Mode/JS8Submode.cpp", "JS8_Mode/JS8Submode.h", "JS8_Mode/soft_combiner.h", "JS8_Mode/ldpc_feedback.h", "JS8_Mode/whitening_processor.h", "JS8_Include/commons.h", "JS8_Main/Varicode.cpp", "JS8_Main/Varicode.h", "JS8_JSC/JSC_map.cpp", "JS8_JSC/JSC_list.cpp" ], "focused_files_missing": [], "exact_maps": [], "source_evidence": [ { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 11, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 8, "end_line": 14, "lines": [ { "line": 8, "text": "#include \"JS8.h\"" }, { "line": 9, "text": "#include \"JS8_Include/commons.h\"" }, { "line": 10, "text": "#include \"JS8_Mode/FrequencyTracker.h\"" }, { "line": 11, "text": "#include \"JS8_Mode/whitening_processor.h\"" }, { "line": 12, "text": "#include \"ldpc_feedback.h\"" }, { "line": 13, "text": "#include \"soft_combiner.h\"" }, { "line": 14, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 12, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 9, "end_line": 15, "lines": [ { "line": 9, "text": "#include \"JS8_Include/commons.h\"" }, { "line": 10, "text": "#include \"JS8_Mode/FrequencyTracker.h\"" }, { "line": 11, "text": "#include \"JS8_Mode/whitening_processor.h\"" }, { "line": 12, "text": "#include \"ldpc_feedback.h\"" }, { "line": 13, "text": "#include \"soft_combiner.h\"" }, { "line": 14, "text": "" }, { "line": 15, "text": "#include " } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 729, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 726, "end_line": 732, "lines": [ { "line": 726, "text": "" }, { "line": 727, "text": "// Belief Propagation Decoder" }, { "line": 728, "text": "" }, { "line": 729, "text": "int bpdecode174(std::array const &llr, std::array &decoded," }, { "line": 730, "text": " std::array &cw) {" }, { "line": 731, "text": " // Initialize messages and variables" }, { "line": 732, "text": " std::array, N> tov =" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 748, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 745, "end_line": 751, "lines": [ { "line": 745, "text": " // Initialize toc (messages from bits to checks)" }, { "line": 746, "text": " for (int i = 0; i < M; ++i) {" }, { "line": 747, "text": " for (int j = 0; j < Nm[i].valid_neighbors; ++j) {" }, { "line": 748, "text": " toc[i][j] = llr[Nm[i].neighbors[j]];" }, { "line": 749, "text": " }" }, { "line": 750, "text": " }" }, { "line": 751, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 757, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 754, "end_line": 760, "lines": [ { "line": 754, "text": " // Update bit log likelihood ratios" }, { "line": 755, "text": " for (int i = 0; i < N; ++i) {" }, { "line": 756, "text": " zn[i] =" }, { "line": 757, "text": " llr[i] + std::accumulate(tov[i].begin()," }, { "line": 758, "text": " tov[i].begin() + BP_MAX_CHECKS, 0.0f);" }, { "line": 759, "text": " }" }, { "line": 760, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 782, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 779, "end_line": 785, "lines": [ { "line": 779, "text": " // Count errors" }, { "line": 780, "text": " int nerr = 0;" }, { "line": 781, "text": " for (int i = 0; i < N; ++i) {" }, { "line": 782, "text": " if ((2 * cw[i] - 1) * llr[i] < 0.0f) {" }, { "line": 783, "text": " ++nerr;" }, { "line": 784, "text": " }" }, { "line": 785, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 895, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "checkCRC12" ], "context": { "start_line": 892, "end_line": 898, "lines": [ { "line": 892, "text": " return boost::augmented_crc<12, 0xc06>(range.data(), range.size()) ^ 42;" }, { "line": 893, "text": "}" }, { "line": 894, "text": "" }, { "line": 895, "text": "bool checkCRC12(std::array const &decoded) {" }, { "line": 896, "text": " std::array bits = {};" }, { "line": 897, "text": "" }, { "line": 898, "text": " for (std::size_t i = 0; i < decoded.size(); ++i) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 918, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "message174", "extractmessage174" ], "context": { "start_line": 915, "end_line": 921, "lines": [ { "line": 915, "text": " return crc == CRC12(bits);" }, { "line": 916, "text": "}" }, { "line": 917, "text": "" }, { "line": 918, "text": "std::string extractmessage174(std::array const &decoded) {" }, { "line": 919, "text": " std::string message;" }, { "line": 920, "text": "" }, { "line": 921, "text": " // Ensure received CRC matches computed CRC." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 923, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "checkCRC12" ], "context": { "start_line": 920, "end_line": 926, "lines": [ { "line": 920, "text": "" }, { "line": 921, "text": " // Ensure received CRC matches computed CRC." }, { "line": 922, "text": "" }, { "line": 923, "text": " if (checkCRC12(decoded)) {" }, { "line": 924, "text": " message.reserve(12);" }, { "line": 925, "text": "" }, { "line": 926, "text": " // Decode the message from the 72 data bits" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 950, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 947, "end_line": 953, "lines": [ { "line": 947, "text": "// This should be 952 bytes in size; to store an 87x87 matrix of bits," }, { "line": 948, "text": "// you need 7569 bits, which requires 119 64-bit values, or 952 bytes." }, { "line": 949, "text": "//" }, { "line": 950, "text": "// Background here is that this is a low-density parity check code (LDPC)," }, { "line": 951, "text": "// generated using the PEG algorithm. In short, true values in a row i of" }, { "line": 952, "text": "// the matrix define which of the 87 message bits must be summed, modulo" }, { "line": 953, "text": "// 2, to produce the ith parity check bit. Decent references on this are:" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 959, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 956, "end_line": 962, "lines": [ { "line": 956, "text": "// 2. https://inference.org.uk/mackay/PEG_ECC.html" }, { "line": 957, "text": "// 3. https://github.com/Lcrypto/classic-PEG-" }, { "line": 958, "text": "//" }, { "line": 959, "text": "// The data used was harvested from the original 'ldpc_174_87_params.f90'," }, { "line": 960, "text": "// but you'll note that the rows have been reordered here, because this" }, { "line": 961, "text": "// isn't Fortran; C++ is row-major, not column-major." }, { "line": 962, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1084, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1081, "end_line": 1087, "lines": [ { "line": 1081, "text": " js8::SoftCombiner m_softCombiner;" }, { "line": 1082, "text": " bool m_enableFreqTracking = true;" }, { "line": 1083, "text": " bool m_enableTimingTracking = true;" }, { "line": 1084, "text": " float m_llrErasureThreshold = js8::llrErasureThreshold();" }, { "line": 1085, "text": " bool m_enableLdpcFeedback = js8::ldpcFeedbackEnabled();" }, { "line": 1086, "text": " int m_maxLdpcPasses = js8::ldpcFeedbackMaxPasses();" }, { "line": 1087, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1085, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1082, "end_line": 1088, "lines": [ { "line": 1082, "text": " bool m_enableFreqTracking = true;" }, { "line": 1083, "text": " bool m_enableTimingTracking = true;" }, { "line": 1084, "text": " float m_llrErasureThreshold = js8::llrErasureThreshold();" }, { "line": 1085, "text": " bool m_enableLdpcFeedback = js8::ldpcFeedbackEnabled();" }, { "line": 1086, "text": " int m_maxLdpcPasses = js8::ldpcFeedbackMaxPasses();" }, { "line": 1087, "text": "" }, { "line": 1088, "text": " using Plan = FFTWPlanManager::Type;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1086, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1083, "end_line": 1089, "lines": [ { "line": 1083, "text": " bool m_enableTimingTracking = true;" }, { "line": 1084, "text": " float m_llrErasureThreshold = js8::llrErasureThreshold();" }, { "line": 1085, "text": " bool m_enableLdpcFeedback = js8::ldpcFeedbackEnabled();" }, { "line": 1086, "text": " int m_maxLdpcPasses = js8::ldpcFeedbackMaxPasses();" }, { "line": 1087, "text": "" }, { "line": 1088, "text": " using Plan = FFTWPlanManager::Type;" }, { "line": 1089, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1473, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 1470, "end_line": 1476, "lines": [ { "line": 1470, "text": " symbolWinners[j] = winner;" }, { "line": 1471, "text": " }" }, { "line": 1472, "text": "" }, { "line": 1473, "text": " auto const whitening = js8::WhiteningProcessor::process(" }, { "line": 1474, "text": " s1, symbolWinners, m_llrErasureThreshold," }, { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1474, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1471, "end_line": 1477, "lines": [ { "line": 1471, "text": " }" }, { "line": 1472, "text": "" }, { "line": 1473, "text": " auto const whitening = js8::WhiteningProcessor::process(" }, { "line": 1474, "text": " s1, symbolWinners, m_llrErasureThreshold," }, { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" }, { "line": 1477, "text": " auto llr0 = whitening.llr0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1477, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten", "llr" ], "context": { "start_line": 1474, "end_line": 1480, "lines": [ { "line": 1474, "text": " s1, symbolWinners, m_llrErasureThreshold," }, { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" }, { "line": 1477, "text": " auto llr0 = whitening.llr0;" }, { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1478, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten", "llr" ], "context": { "start_line": 1475, "end_line": 1481, "lines": [ { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" }, { "line": 1477, "text": " auto llr0 = whitening.llr0;" }, { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1480, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 1477, "end_line": 1483, "lines": [ { "line": 1477, "text": " auto llr0 = whitening.llr0;" }, { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." }, { "line": 1482, "text": " if (!whitening.erasureApplied) {" }, { "line": 1483, "text": " std::size_t erasuresAfterThreshold = 0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1481, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1478, "end_line": 1484, "lines": [ { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." }, { "line": 1482, "text": " if (!whitening.erasureApplied) {" }, { "line": 1483, "text": " std::size_t erasuresAfterThreshold = 0;" }, { "line": 1484, "text": " double sumAbsPreErasure = 0.0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1482, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 1479, "end_line": 1485, "lines": [ { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." }, { "line": 1482, "text": " if (!whitening.erasureApplied) {" }, { "line": 1483, "text": " std::size_t erasuresAfterThreshold = 0;" }, { "line": 1484, "text": " double sumAbsPreErasure = 0.0;" }, { "line": 1485, "text": " double sumAbsPostErasure = 0.0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1487, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1484, "end_line": 1490, "lines": [ { "line": 1484, "text": " double sumAbsPreErasure = 0.0;" }, { "line": 1485, "text": " double sumAbsPostErasure = 0.0;" }, { "line": 1486, "text": "" }, { "line": 1487, "text": " auto const applyErasureThreshold = [&](auto &llr) {" }, { "line": 1488, "text": " for (auto const value : llr)" }, { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1488, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1485, "end_line": 1491, "lines": [ { "line": 1485, "text": " double sumAbsPostErasure = 0.0;" }, { "line": 1486, "text": "" }, { "line": 1487, "text": " auto const applyErasureThreshold = [&](auto &llr) {" }, { "line": 1488, "text": " for (auto const value : llr)" }, { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1491, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1488, "end_line": 1494, "lines": [ { "line": 1488, "text": " for (auto const value : llr)" }, { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" }, { "line": 1492, "text": " for (auto &value : llr) {" }, { "line": 1493, "text": " if (std::abs(value) < m_llrErasureThreshold) {" }, { "line": 1494, "text": " value = 0.0f;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1492, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1489, "end_line": 1495, "lines": [ { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" }, { "line": 1492, "text": " for (auto &value : llr) {" }, { "line": 1493, "text": " if (std::abs(value) < m_llrErasureThreshold) {" }, { "line": 1494, "text": " value = 0.0f;" }, { "line": 1495, "text": " ++erasuresAfterThreshold;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1493, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1490, "end_line": 1496, "lines": [ { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" }, { "line": 1492, "text": " for (auto &value : llr) {" }, { "line": 1493, "text": " if (std::abs(value) < m_llrErasureThreshold) {" }, { "line": 1494, "text": " value = 0.0f;" }, { "line": 1495, "text": " ++erasuresAfterThreshold;" }, { "line": 1496, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1501, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1498, "end_line": 1504, "lines": [ { "line": 1498, "text": " sumAbsPostErasure += std::abs(value);" }, { "line": 1499, "text": " }" }, { "line": 1500, "text": " } else {" }, { "line": 1501, "text": " for (auto const value : llr)" }, { "line": 1502, "text": " sumAbsPostErasure += std::abs(value);" }, { "line": 1503, "text": " }" }, { "line": 1504, "text": " };" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1506, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1503, "end_line": 1509, "lines": [ { "line": 1503, "text": " }" }, { "line": 1504, "text": " };" }, { "line": 1505, "text": "" }, { "line": 1506, "text": " applyErasureThreshold(llr0);" }, { "line": 1507, "text": " applyErasureThreshold(llr1);" }, { "line": 1508, "text": "" }, { "line": 1509, "text": " if (decoder_js8().isDebugEnabled()) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1507, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1504, "end_line": 1510, "lines": [ { "line": 1504, "text": " };" }, { "line": 1505, "text": "" }, { "line": 1506, "text": " applyErasureThreshold(llr0);" }, { "line": 1507, "text": " applyErasureThreshold(llr1);" }, { "line": 1508, "text": "" }, { "line": 1509, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1510, "text": " auto const total =" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1511, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1508, "end_line": 1514, "lines": [ { "line": 1508, "text": "" }, { "line": 1509, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1510, "text": " auto const total =" }, { "line": 1511, "text": " static_cast(llr0.size() + llr1.size());" }, { "line": 1512, "text": " double const avgPre =" }, { "line": 1513, "text": " total > 0.0 ? sumAbsPreErasure / total : 0.0;" }, { "line": 1514, "text": " double const avgPost =" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1518, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1515, "end_line": 1521, "lines": [ { "line": 1515, "text": " total > 0.0 ? sumAbsPostErasure / total : 0.0;" }, { "line": 1516, "text": "" }, { "line": 1517, "text": " qCDebug(decoder_js8)" }, { "line": 1518, "text": " << \"LLR erasure threshold\" << m_llrErasureThreshold" }, { "line": 1519, "text": " << \"erasures:\" << erasuresAfterThreshold" }, { "line": 1520, "text": " << \"avg|LLR| pre/post:\" << avgPre << avgPost;" }, { "line": 1521, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1520, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1517, "end_line": 1523, "lines": [ { "line": 1517, "text": " qCDebug(decoder_js8)" }, { "line": 1518, "text": " << \"LLR erasure threshold\" << m_llrErasureThreshold" }, { "line": 1519, "text": " << \"erasures:\" << erasuresAfterThreshold" }, { "line": 1520, "text": " << \"avg|LLR| pre/post:\" << avgPre << avgPost;" }, { "line": 1521, "text": " }" }, { "line": 1522, "text": " }" }, { "line": 1523, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1529, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1526, "end_line": 1532, "lines": [ { "line": 1526, "text": " m_softCombiner.flush(ttl);" }, { "line": 1527, "text": "" }, { "line": 1528, "text": " auto const key =" }, { "line": 1529, "text": " m_softCombiner.makeKey(Mode::NSUBMODE, f1, xdt, llr0, llr1);" }, { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1530, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1527, "end_line": 1533, "lines": [ { "line": 1527, "text": "" }, { "line": 1528, "text": " auto const key =" }, { "line": 1529, "text": " m_softCombiner.makeKey(Mode::NSUBMODE, f1, xdt, llr0, llr1);" }, { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" }, { "line": 1533, "text": " auto llr1Combined = combined.llr1;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1532, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1529, "end_line": 1535, "lines": [ { "line": 1529, "text": " m_softCombiner.makeKey(Mode::NSUBMODE, f1, xdt, llr0, llr1);" }, { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" }, { "line": 1533, "text": " auto llr1Combined = combined.llr1;" }, { "line": 1534, "text": "" }, { "line": 1535, "text": " std::array decoded;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1533, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1530, "end_line": 1536, "lines": [ { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" }, { "line": 1533, "text": " auto llr1Combined = combined.llr1;" }, { "line": 1534, "text": "" }, { "line": 1535, "text": " std::array decoded;" }, { "line": 1536, "text": " std::array cw;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1538, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1535, "end_line": 1541, "lines": [ { "line": 1535, "text": " std::array decoded;" }, { "line": 1536, "text": " std::array cw;" }, { "line": 1537, "text": "" }, { "line": 1538, "text": " int totalLdpcPasses = 0;" }, { "line": 1539, "text": " bool usedFeedbackPass = false;" }, { "line": 1540, "text": " bool feedbackTurnedSuccess = false;" }, { "line": 1541, "text": " int feedbackConfident = 0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1544, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1541, "end_line": 1547, "lines": [ { "line": 1541, "text": " int feedbackConfident = 0;" }, { "line": 1542, "text": " int feedbackUncertain = 0;" }, { "line": 1543, "text": "" }, { "line": 1544, "text": " auto const tryDecode = [&](std::array const &llrInput," }, { "line": 1545, "text": " int ipass) -> std::optional {" }, { "line": 1546, "text": " nharderrors = bpdecode174(llrInput, decoded, cw);" }, { "line": 1547, "text": " xsnr = -99.0f;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1546, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1543, "end_line": 1549, "lines": [ { "line": 1543, "text": "" }, { "line": 1544, "text": " auto const tryDecode = [&](std::array const &llrInput," }, { "line": 1545, "text": " int ipass) -> std::optional {" }, { "line": 1546, "text": " nharderrors = bpdecode174(llrInput, decoded, cw);" }, { "line": 1547, "text": " xsnr = -99.0f;" }, { "line": 1548, "text": "" }, { "line": 1549, "text": " if (std::all_of(cw.begin(), cw.end()," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1558, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "checkCRC12" ], "context": { "start_line": 1555, "end_line": 1561, "lines": [ { "line": 1555, "text": " !(sync < 2.0f && nharderrors > 35) &&" }, { "line": 1556, "text": " !(ipass > 2 && nharderrors > 39) &&" }, { "line": 1557, "text": " !(ipass == 4 && nharderrors > 30)) {" }, { "line": 1558, "text": " if (checkCRC12(decoded)) {" }, { "line": 1559, "text": " if (syncStats)" }, { "line": 1560, "text": " emitEvent(JS8::Event::SyncState{" }, { "line": 1561, "text": " JS8::Event::SyncState::Type::DECODED," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1567, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "message174", "extractmessage174" ], "context": { "start_line": 1564, "end_line": 1570, "lines": [ { "line": 1564, "text": " xdt2," }, { "line": 1565, "text": " {.decoded = sync}});" }, { "line": 1566, "text": "" }, { "line": 1567, "text": " auto message = extractmessage174(decoded);" }, { "line": 1568, "text": "" }, { "line": 1569, "text": " int const i3bit =" }, { "line": 1570, "text": " (decoded[72] << 2) | (decoded[73] << 1) | decoded[74];" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1604, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1601, "end_line": 1607, "lines": [ { "line": 1601, "text": " };" }, { "line": 1602, "text": "" }, { "line": 1603, "text": " // Loop over decoding passes" }, { "line": 1604, "text": " for (int ipass = 1; ipass <= 4 && totalLdpcPasses < m_maxLdpcPasses;" }, { "line": 1605, "text": " ++ipass) {" }, { "line": 1606, "text": " auto &llr = ipass == 2 ? llr1Combined : llr0Combined;" }, { "line": 1607, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1606, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1603, "end_line": 1609, "lines": [ { "line": 1603, "text": " // Loop over decoding passes" }, { "line": 1604, "text": " for (int ipass = 1; ipass <= 4 && totalLdpcPasses < m_maxLdpcPasses;" }, { "line": 1605, "text": " ++ipass) {" }, { "line": 1606, "text": " auto &llr = ipass == 2 ? llr1Combined : llr0Combined;" }, { "line": 1607, "text": "" }, { "line": 1608, "text": " // Zero ranges for certain passes to mirror legacy behavior." }, { "line": 1609, "text": " if (ipass == 3)" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1610, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1607, "end_line": 1613, "lines": [ { "line": 1607, "text": "" }, { "line": 1608, "text": " // Zero ranges for certain passes to mirror legacy behavior." }, { "line": 1609, "text": " if (ipass == 3)" }, { "line": 1610, "text": " std::fill(llr0Combined.begin(), llr0Combined.begin() + 24," }, { "line": 1611, "text": " 0.0f);" }, { "line": 1612, "text": " else if (ipass == 4)" }, { "line": 1613, "text": " std::fill(llr0Combined.begin() + 24, llr0Combined.begin() + 48," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1613, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1610, "end_line": 1616, "lines": [ { "line": 1610, "text": " std::fill(llr0Combined.begin(), llr0Combined.begin() + 24," }, { "line": 1611, "text": " 0.0f);" }, { "line": 1612, "text": " else if (ipass == 4)" }, { "line": 1613, "text": " std::fill(llr0Combined.begin() + 24, llr0Combined.begin() + 48," }, { "line": 1614, "text": " 0.0f);" }, { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1616, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1613, "end_line": 1619, "lines": [ { "line": 1613, "text": " std::fill(llr0Combined.begin() + 24, llr0Combined.begin() + 48," }, { "line": 1614, "text": " 0.0f);" }, { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" }, { "line": 1617, "text": " if (auto result = tryDecode(llrPrimary, ipass)) {" }, { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1617, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1614, "end_line": 1620, "lines": [ { "line": 1614, "text": " 0.0f);" }, { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" }, { "line": 1617, "text": " if (auto result = tryDecode(llrPrimary, ipass)) {" }, { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" }, { "line": 1620, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1618, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1615, "end_line": 1621, "lines": [ { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" }, { "line": 1617, "text": " if (auto result = tryDecode(llrPrimary, ipass)) {" }, { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" }, { "line": 1620, "text": " }" }, { "line": 1621, "text": " ++totalLdpcPasses;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1621, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1618, "end_line": 1624, "lines": [ { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" }, { "line": 1620, "text": " }" }, { "line": 1621, "text": " ++totalLdpcPasses;" }, { "line": 1622, "text": "" }, { "line": 1623, "text": " // Feedback refinement and second attempt, if enabled and budget" }, { "line": 1624, "text": " // allows." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1625, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1622, "end_line": 1628, "lines": [ { "line": 1622, "text": "" }, { "line": 1623, "text": " // Feedback refinement and second attempt, if enabled and budget" }, { "line": 1624, "text": " // allows." }, { "line": 1625, "text": " if (m_enableLdpcFeedback && totalLdpcPasses < m_maxLdpcPasses) {" }, { "line": 1626, "text": " std::array llrRefined;" }, { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1626, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1623, "end_line": 1629, "lines": [ { "line": 1623, "text": " // Feedback refinement and second attempt, if enabled and budget" }, { "line": 1624, "text": " // allows." }, { "line": 1625, "text": " if (m_enableLdpcFeedback && totalLdpcPasses < m_maxLdpcPasses) {" }, { "line": 1626, "text": " std::array llrRefined;" }, { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" }, { "line": 1629, "text": " js8::refineLlrsWithLdpcFeedback(" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1629, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr", "LDPC", "ldpc" ], "context": { "start_line": 1626, "end_line": 1632, "lines": [ { "line": 1626, "text": " std::array llrRefined;" }, { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" }, { "line": 1629, "text": " js8::refineLlrsWithLdpcFeedback(" }, { "line": 1630, "text": " llrPrimary, cw, m_llrErasureThreshold, llrRefined," }, { "line": 1631, "text": " confident, uncertain);" }, { "line": 1632, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1630, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1627, "end_line": 1633, "lines": [ { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" }, { "line": 1629, "text": " js8::refineLlrsWithLdpcFeedback(" }, { "line": 1630, "text": " llrPrimary, cw, m_llrErasureThreshold, llrRefined," }, { "line": 1631, "text": " confident, uncertain);" }, { "line": 1632, "text": "" }, { "line": 1633, "text": " if (decoder_js8().isDebugEnabled()) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1635, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1632, "end_line": 1638, "lines": [ { "line": 1632, "text": "" }, { "line": 1633, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1634, "text": " qCDebug(decoder_js8)" }, { "line": 1635, "text": " << \"LDPC feedback pass\"" }, { "line": 1636, "text": " << \"ipass\" << ipass << \"confident\" << confident" }, { "line": 1637, "text": " << \"uncertain\" << uncertain;" }, { "line": 1638, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1644, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1641, "end_line": 1647, "lines": [ { "line": 1641, "text": " feedbackConfident += confident;" }, { "line": 1642, "text": " feedbackUncertain += uncertain;" }, { "line": 1643, "text": "" }, { "line": 1644, "text": " if (auto result = tryDecode(llrRefined, ipass)) {" }, { "line": 1645, "text": " ++totalLdpcPasses;" }, { "line": 1646, "text": " feedbackTurnedSuccess = true;" }, { "line": 1647, "text": " if (decoder_js8().isDebugEnabled()) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1645, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1642, "end_line": 1648, "lines": [ { "line": 1642, "text": " feedbackUncertain += uncertain;" }, { "line": 1643, "text": "" }, { "line": 1644, "text": " if (auto result = tryDecode(llrRefined, ipass)) {" }, { "line": 1645, "text": " ++totalLdpcPasses;" }, { "line": 1646, "text": " feedbackTurnedSuccess = true;" }, { "line": 1647, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1648, "text": " qCDebug(decoder_js8)" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1649, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1646, "end_line": 1652, "lines": [ { "line": 1646, "text": " feedbackTurnedSuccess = true;" }, { "line": 1647, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1648, "text": " qCDebug(decoder_js8)" }, { "line": 1649, "text": " << \"LDPC feedback succeeded on second pass\"" }, { "line": 1650, "text": " << \"ipass\" << ipass << \"confident\"" }, { "line": 1651, "text": " << feedbackConfident << \"uncertain\"" }, { "line": 1652, "text": " << feedbackUncertain << \"passes\" << totalLdpcPasses;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1652, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1649, "end_line": 1655, "lines": [ { "line": 1649, "text": " << \"LDPC feedback succeeded on second pass\"" }, { "line": 1650, "text": " << \"ipass\" << ipass << \"confident\"" }, { "line": 1651, "text": " << feedbackConfident << \"uncertain\"" }, { "line": 1652, "text": " << feedbackUncertain << \"passes\" << totalLdpcPasses;" }, { "line": 1653, "text": " }" }, { "line": 1654, "text": " return result;" }, { "line": 1655, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1657, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1654, "end_line": 1660, "lines": [ { "line": 1654, "text": " return result;" }, { "line": 1655, "text": " }" }, { "line": 1656, "text": "" }, { "line": 1657, "text": " ++totalLdpcPasses;" }, { "line": 1658, "text": " }" }, { "line": 1659, "text": " }" }, { "line": 1660, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1663, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1660, "end_line": 1666, "lines": [ { "line": 1660, "text": "" }, { "line": 1661, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1662, "text": " qCDebug(decoder_js8)" }, { "line": 1663, "text": " << \"LDPC feedback summary\"" }, { "line": 1664, "text": " << \"used\" << usedFeedbackPass << \"success\"" }, { "line": 1665, "text": " << feedbackTurnedSuccess << \"confident\" << feedbackConfident" }, { "line": 1666, "text": " << \"uncertain\" << feedbackUncertain << \"passes\"" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1667, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1664, "end_line": 1670, "lines": [ { "line": 1664, "text": " << \"used\" << usedFeedbackPass << \"success\"" }, { "line": 1665, "text": " << feedbackTurnedSuccess << \"confident\" << feedbackConfident" }, { "line": 1666, "text": " << \"uncertain\" << feedbackUncertain << \"passes\"" }, { "line": 1667, "text": " << totalLdpcPasses;" }, { "line": 1668, "text": " }" }, { "line": 1669, "text": "" }, { "line": 1670, "text": " logTracker(\"fail\");" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 22, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 19, "end_line": 25, "lines": [ { "line": 19, "text": "" }, { "line": 20, "text": "namespace js8 {" }, { "line": 21, "text": "/**" }, { "line": 22, "text": " * @brief Cache and combine repeated LLR frames for the same decode candidate." }, { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 24, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 21, "end_line": 27, "lines": [ { "line": 21, "text": "/**" }, { "line": 22, "text": " * @brief Cache and combine repeated LLR frames for the same decode candidate." }, { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" }, { "line": 26, "text": " * over-the-air behavior. Templated on the LLR length so the caller binds it" }, { "line": 27, "text": " * to the decoder's bit count." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 25, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 22, "end_line": 28, "lines": [ { "line": 22, "text": " * @brief Cache and combine repeated LLR frames for the same decode candidate." }, { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" }, { "line": 26, "text": " * over-the-air behavior. Templated on the LLR length so the caller binds it" }, { "line": 27, "text": " * to the decoder's bit count." }, { "line": 28, "text": " */" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 26, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 23, "end_line": 29, "lines": [ { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" }, { "line": 26, "text": " * over-the-air behavior. Templated on the LLR length so the caller binds it" }, { "line": 27, "text": " * to the decoder's bit count." }, { "line": 28, "text": " */" }, { "line": 29, "text": "template class SoftCombiner {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 47, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 44, "end_line": 50, "lines": [ { "line": 44, "text": "" }, { "line": 45, "text": " struct Combined {" }, { "line": 46, "text": " Key key;" }, { "line": 47, "text": " std::array llr0;" }, { "line": 48, "text": " std::array llr1;" }, { "line": 49, "text": " int repeats;" }, { "line": 50, "text": " bool combined;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 48, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 45, "end_line": 51, "lines": [ { "line": 45, "text": " struct Combined {" }, { "line": 46, "text": " Key key;" }, { "line": 47, "text": " std::array llr0;" }, { "line": 48, "text": " std::array llr1;" }, { "line": 49, "text": " int repeats;" }, { "line": 50, "text": " bool combined;" }, { "line": 51, "text": " };" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 65, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 62, "end_line": 68, "lines": [ { "line": 62, "text": " maybeRunSelfTest();" }, { "line": 63, "text": " }" }, { "line": 64, "text": "" }, { "line": 65, "text": " Key makeKey(int mode, float f1, float dt, std::array const &llr0," }, { "line": 66, "text": " std::array const &llr1) const {" }, { "line": 67, "text": " return Key{mode, static_cast(std::lround(f1))," }, { "line": 68, "text": " static_cast(std::lround(dt * 10.0f)), // 100 ms bins" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 66, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 63, "end_line": 69, "lines": [ { "line": 63, "text": " }" }, { "line": 64, "text": "" }, { "line": 65, "text": " Key makeKey(int mode, float f1, float dt, std::array const &llr0," }, { "line": 66, "text": " std::array const &llr1) const {" }, { "line": 67, "text": " return Key{mode, static_cast(std::lround(f1))," }, { "line": 68, "text": " static_cast(std::lround(dt * 10.0f)), // 100 ms bins" }, { "line": 69, "text": " signature(llr0, llr1)};" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 69, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 66, "end_line": 72, "lines": [ { "line": 66, "text": " std::array const &llr1) const {" }, { "line": 67, "text": " return Key{mode, static_cast(std::lround(f1))," }, { "line": 68, "text": " static_cast(std::lround(dt * 10.0f)), // 100 ms bins" }, { "line": 69, "text": " signature(llr0, llr1)};" }, { "line": 70, "text": " }" }, { "line": 71, "text": "" }, { "line": 72, "text": " Combined combine(Key const &key, std::array const &llr0," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 72, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 69, "end_line": 75, "lines": [ { "line": 69, "text": " signature(llr0, llr1)};" }, { "line": 70, "text": " }" }, { "line": 71, "text": "" }, { "line": 72, "text": " Combined combine(Key const &key, std::array const &llr0," }, { "line": 73, "text": " std::array const &llr1," }, { "line": 74, "text": " std::chrono::seconds ttl) {" }, { "line": 75, "text": " flush(ttl);" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 73, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 70, "end_line": 76, "lines": [ { "line": 70, "text": " }" }, { "line": 71, "text": "" }, { "line": 72, "text": " Combined combine(Key const &key, std::array const &llr0," }, { "line": 73, "text": " std::array const &llr1," }, { "line": 74, "text": " std::chrono::seconds ttl) {" }, { "line": 75, "text": " flush(ttl);" }, { "line": 76, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 78, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 75, "end_line": 81, "lines": [ { "line": 75, "text": " flush(ttl);" }, { "line": 76, "text": "" }, { "line": 77, "text": " if (!m_enabled) {" }, { "line": 78, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 79, "text": " }" }, { "line": 80, "text": "" }, { "line": 81, "text": " auto &bucket = m_entries[keyForLookup(key)];" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 85, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 82, "end_line": 88, "lines": [ { "line": 82, "text": " auto it = findEntry(bucket, key.signature);" }, { "line": 83, "text": "" }, { "line": 84, "text": " if (it == bucket.end()) {" }, { "line": 85, "text": " bucket.push_back(makeEntry(key.signature, llr0, llr1));" }, { "line": 86, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 87, "text": " }" }, { "line": 88, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 86, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 83, "end_line": 89, "lines": [ { "line": 83, "text": "" }, { "line": 84, "text": " if (it == bucket.end()) {" }, { "line": 85, "text": " bucket.push_back(makeEntry(key.signature, llr0, llr1));" }, { "line": 86, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 87, "text": " }" }, { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 89, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 86, "end_line": 92, "lines": [ { "line": 86, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 87, "text": " }" }, { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" }, { "line": 90, "text": " it->llr0[i] += llr0[i];" }, { "line": 91, "text": " it->llr1[i] += llr1[i];" }, { "line": 92, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 90, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 87, "end_line": 93, "lines": [ { "line": 87, "text": " }" }, { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" }, { "line": 90, "text": " it->llr0[i] += llr0[i];" }, { "line": 91, "text": " it->llr1[i] += llr1[i];" }, { "line": 92, "text": " }" }, { "line": 93, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 91, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 88, "end_line": 94, "lines": [ { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" }, { "line": 90, "text": " it->llr0[i] += llr0[i];" }, { "line": 91, "text": " it->llr1[i] += llr1[i];" }, { "line": 92, "text": " }" }, { "line": 93, "text": "" }, { "line": 94, "text": " ++it->repeats;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 101, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 98, "end_line": 104, "lines": [ { "line": 98, "text": " << \"soft-combining repeats\" << it->repeats << \"mode\" << key.mode" }, { "line": 99, "text": " << \"freq\" << key.freqBin << \"dtbin\" << key.dtBin;" }, { "line": 100, "text": "" }, { "line": 101, "text": " return Combined{key, it->llr0, it->llr1, it->repeats, true};" }, { "line": 102, "text": " }" }, { "line": 103, "text": "" }, { "line": 104, "text": " void markDecoded(Key const &key) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 170, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 167, "end_line": 173, "lines": [ { "line": 167, "text": "" }, { "line": 168, "text": " struct Entry {" }, { "line": 169, "text": " uint32_t signature;" }, { "line": 170, "text": " std::array llr0;" }, { "line": 171, "text": " std::array llr1;" }, { "line": 172, "text": " int repeats;" }, { "line": 173, "text": " Clock::time_point lastSeen;" } ] } } ] }, "info87_rows_found": 808, "source_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T075340Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T075340Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T075340Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T071154Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T071154Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T071154Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070926Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070926Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070926Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/js8_step83_source_confirmed_message174_decode_latest.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/js8_step83_post_ldpc_info87_runtime_export_latest.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/js8_step83_candidate_export_latest.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/js8_real_wav_message174_regeneration_latest.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] } ], "source_exact_map_count": 0, "map_tests": 240, "zero_distance_candidate_count": 16, "best_distance": 0, "best_candidate": { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 214, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, "top_candidates": [ { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 214, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 215, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 187, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 188, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 160, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 161, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 133, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 134, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 106, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 107, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 79, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 80, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 52, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 53, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 25, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 26, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 216, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[0].info87_bits", "row_index": 217, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[1].info87_bits", "row_index": 218, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[2].info87_bits", "row_index": 219, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[3].info87_bits", "row_index": 220, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 108, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[0].info87_bits", "row_index": 109, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[1].info87_bits", "row_index": 110, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[2].info87_bits", "row_index": 111, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[3].info87_bits", "row_index": 112, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 0, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[0].info87_bits", "row_index": 1, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[1].info87_bits", "row_index": 2, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[2].info87_bits", "row_index": 3, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[3].info87_bits", "row_index": 4, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 162, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" } ], "decodes": [], "warnings": [ "Step63 is still a diagnostic/source-extraction step, not a final text decoder.", "It starts no JS8Call GUI/Qt process and performs no TX/PTT/Tune/Send actions." ], "next_action": "Zero-distance message174/CRC12 candidate found: build Step64 source-confirmed message174 text unpack and WebFTR-style decodes[] output." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_message174_decode_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-source-confirmed-message174-decode", "tool_version": "step64-source-confirmed-message174-decodes-output", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "log_dir": "/decoders/js8_decoder/logs", "source_contract": { "source": "JS8Call-Improved JS8_Mode/JS8.cpp extractmessage174/checkCRC12", "alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "crc_width": 12, "crc_poly_hex": "0xc06", "crc_xor_decimal": 42, "message_bits": "first 72 data bits as 12 x 6-bit words", "crc_gate": "Only zero-distance CRC12 candidates are emitted as decodes[]." }, "step63_source_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" } ], "runtime_fallback_reports": [], "candidate_source": "step63_source_exact_map_probe", "zero_distance_candidate_count": 2, "decode_count": 2, "top_candidates": [ { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "message_text_12chars": "001XqOA2iDZ0", "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "message_text_12chars": "Q0VsKWqfJ96x", "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" } ], "decodes": [ { "id": "js8-msg174-0cec49f1", "mode": "JS8", "decoder": "webftr-js8lab-step64-message174-source-confirmed", "text": "001XqOA2iDZ0", "raw": "001XqOA2iDZ0", "message_text_12chars": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "parsed": { "raw": "001XqOA2iDZ0", "normalized": "001XQOA2IDZ0", "message_type": "MESSAGE", "directed_to": null, "callsigns": [], "primary_callsign": null, "locators": [], "primary_locator": null, "body": "001XQOA2IDZ0" }, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "confidence": "crc12_zero_distance_source_extractmessage174", "rx_only": true, "sort_index": 0 }, { "id": "js8-msg174-9861f0b4", "mode": "JS8", "decoder": "webftr-js8lab-step64-message174-source-confirmed", "text": "Q0VsKWqfJ96x", "raw": "Q0VsKWqfJ96x", "message_text_12chars": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "parsed": { "raw": "Q0VsKWqfJ96x", "normalized": "Q0VSKWQFJ96X", "message_type": "MESSAGE", "directed_to": null, "callsigns": [], "primary_callsign": null, "locators": [], "primary_locator": null, "body": "Q0VSKWQFJ96X" }, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "confidence": "crc12_zero_distance_source_extractmessage174", "rx_only": true, "sort_index": 1 } ], "warnings": [ "Step64 emits source-confirmed message174 CRC12-zero-distance text candidates; it is not yet a full live JS8 decoder chain from audio to final chat UI.", "It starts no JS8Call GUI/Qt process and performs no TX/PTT/Tune/Send actions.", "Random-looking 12-character payloads can still be valid message174 candidates until higher JS8 text/Varicode framing is connected." ], "next_action": "Use Step64 decodes[] as the contract for the next step: connect source-confirmed message174 output into a richer JS8 text/Varicode/framing interpretation and then feed WebFTR RX display fields." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_varicode_frame_unpack_probe_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-source-varicode-frame-unpack-probe", "tool_version": "step66-source-varicode-frame-unpack-probe", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "input_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "selected_input": true } ], "source_resolution": { "selected_source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "checked": [ { "path": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "exists": true, "is_dir": true } ] }, "source_snippets": { "source_available": true, "source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "focused_files_present": [ "JS8_Main/Varicode.cpp", "JS8_Main/Varicode.h", "JS8_JSC/JSC.cpp", "JS8_JSC/JSC.h", "JS8_JSC/JSC_map.cpp", "JS8_JSC/JSC_list.cpp", "JS8_Mode/JS8.cpp" ], "focused_files_missing": [], "snippets": [ { "name": "unpack72bits", "path": "JS8_Main/Varicode.cpp", "line": 767, "context": { "start_line": 762, "end_line": 772, "lines": [ { "line": 762, "text": " quint32 b = packed & 0xFFFFFFFF;" }, { "line": 763, "text": " return pack32bits(a) + pack32bits(b);" }, { "line": 764, "text": "}" }, { "line": 765, "text": "" }, { "line": 766, "text": "// returns the first 64 bits and sets the last 8 bits in pRem" }, { "line": 767, "text": "quint64 Varicode::unpack72bits(QString const &text, quint8 *pRem) {" }, { "line": 768, "text": " quint64 value = 0;" }, { "line": 769, "text": " quint8 rem = 0;" }, { "line": 770, "text": " quint8 mask2 = ((1 << 2) - 1);" }, { "line": 771, "text": "" }, { "line": 772, "text": " for (int i = 0; i < 10; i++) {" } ] } }, { "name": "pack72bits", "path": "JS8_Main/Varicode.cpp", "line": 767, "context": { "start_line": 762, "end_line": 772, "lines": [ { "line": 762, "text": " quint32 b = packed & 0xFFFFFFFF;" }, { "line": 763, "text": " return pack32bits(a) + pack32bits(b);" }, { "line": 764, "text": "}" }, { "line": 765, "text": "" }, { "line": 766, "text": "// returns the first 64 bits and sets the last 8 bits in pRem" }, { "line": 767, "text": "quint64 Varicode::unpack72bits(QString const &text, quint8 *pRem) {" }, { "line": 768, "text": " quint64 value = 0;" }, { "line": 769, "text": " quint8 rem = 0;" }, { "line": 770, "text": " quint8 mask2 = ((1 << 2) - 1);" }, { "line": 771, "text": "" }, { "line": 772, "text": " for (int i = 0; i < 10; i++) {" } ] } }, { "name": "unpackDirectedMessage", "path": "JS8_Main/Varicode.cpp", "line": 1716, "context": { "start_line": 1711, "end_line": 1721, "lines": [ { "line": 1711, "text": " if (n)" }, { "line": 1712, "text": " *n = match.captured(0).length();" }, { "line": 1713, "text": " return Varicode::pack72bits(Varicode::bitsToInt(bits), packed_extra);" }, { "line": 1714, "text": "}" }, { "line": 1715, "text": "" }, { "line": 1716, "text": "QStringList Varicode::unpackDirectedMessage(const QString &text," }, { "line": 1717, "text": " quint8 *pType) {" }, { "line": 1718, "text": " QStringList unpacked;" }, { "line": 1719, "text": "" }, { "line": 1720, "text": " if (text.length() < 12 || text.contains(\" \")) {" }, { "line": 1721, "text": " return unpacked;" } ] } }, { "name": "packDirectedMessage", "path": "JS8_Main/Varicode.cpp", "line": 1605, "context": { "start_line": 1600, "end_line": 1610, "lines": [ { "line": 1600, "text": "" }, { "line": 1601, "text": "// J1Y ACK" }, { "line": 1602, "text": "// J1Y?" }, { "line": 1603, "text": "// KN4CRD: J1Y$" }, { "line": 1604, "text": "// KN4CRD: J1Y! HELLO WORLD" }, { "line": 1605, "text": "QString Varicode::packDirectedMessage(const QString &text," }, { "line": 1606, "text": " const QString &mycall, QString *pTo," }, { "line": 1607, "text": " bool *pToCompound, QString *pCmd," }, { "line": 1608, "text": " QString *pNum, int *n) {" }, { "line": 1609, "text": " QString frame;" }, { "line": 1610, "text": "" } ] } }, { "name": "unpackCompoundFrame", "path": "JS8_Main/Varicode.cpp", "line": 1420, "context": { "start_line": 1415, "end_line": 1425, "lines": [ { "line": 1415, "text": " bool *isAlt, quint8 *pBits3) {" }, { "line": 1416, "text": " quint8 type = Varicode::FrameHeartbeat;" }, { "line": 1417, "text": " quint16 num = nmaxgrid;" }, { "line": 1418, "text": " quint8 bits3 = 0;" }, { "line": 1419, "text": "" }, { "line": 1420, "text": " QStringList unpacked = unpackCompoundFrame(text, &type, &num, &bits3);" }, { "line": 1421, "text": " if (unpacked.isEmpty() || type != Varicode::FrameHeartbeat) {" }, { "line": 1422, "text": " return QStringList{};" }, { "line": 1423, "text": " }" }, { "line": 1424, "text": "" }, { "line": 1425, "text": " unpacked.append(Varicode::unpackGrid(num & ((1 << 15) - 1)));" } ] } }, { "name": "packCompoundFrame", "path": "JS8_Main/Varicode.cpp", "line": 1401, "context": { "start_line": 1396, "end_line": 1406, "lines": [ { "line": 1396, "text": " if (isAlt) {" }, { "line": 1397, "text": " packed_extra |= (1 << 15);" }, { "line": 1398, "text": " cqNumber = cqs.key(type, 0);" }, { "line": 1399, "text": " }" }, { "line": 1400, "text": "" }, { "line": 1401, "text": " frame = packCompoundFrame(callsign, Varicode::FrameHeartbeat, packed_extra," }, { "line": 1402, "text": " cqNumber);" }, { "line": 1403, "text": " if (frame.isEmpty()) {" }, { "line": 1404, "text": " if (n)" }, { "line": 1405, "text": " *n = 0;" }, { "line": 1406, "text": " return frame;" } ] } }, { "name": "unpackCompoundMessage", "path": "JS8_Main/Varicode.cpp", "line": 1491, "context": { "start_line": 1486, "end_line": 1496, "lines": [ { "line": 1486, "text": " if (n)" }, { "line": 1487, "text": " *n = parsedText.captured(0).length();" }, { "line": 1488, "text": " return frame;" }, { "line": 1489, "text": "}" }, { "line": 1490, "text": "" }, { "line": 1491, "text": "QStringList Varicode::unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 1492, "text": " quint8 *pBits3) {" }, { "line": 1493, "text": " quint8 type = Varicode::FrameCompound;" }, { "line": 1494, "text": " quint16 extra = nmaxgrid;" }, { "line": 1495, "text": " quint8 bits3 = 0;" }, { "line": 1496, "text": "" } ] } }, { "name": "unpackHeartbeatMessage", "path": "JS8_Main/Varicode.cpp", "line": 1414, "context": { "start_line": 1409, "end_line": 1419, "lines": [ { "line": 1409, "text": " if (n)" }, { "line": 1410, "text": " *n = parsedText.captured(0).length();" }, { "line": 1411, "text": " return frame;" }, { "line": 1412, "text": "}" }, { "line": 1413, "text": "" }, { "line": 1414, "text": "QStringList Varicode::unpackHeartbeatMessage(const QString &text, quint8 *pType," }, { "line": 1415, "text": " bool *isAlt, quint8 *pBits3) {" }, { "line": 1416, "text": " quint8 type = Varicode::FrameHeartbeat;" }, { "line": 1417, "text": " quint16 num = nmaxgrid;" }, { "line": 1418, "text": " quint8 bits3 = 0;" }, { "line": 1419, "text": "" } ] } }, { "name": "unpackDataMessage", "path": "JS8_Main/Varicode.cpp", "line": 1912, "context": { "start_line": 1907, "end_line": 1917, "lines": [ { "line": 1907, "text": "}" }, { "line": 1908, "text": "" }, { "line": 1909, "text": "// TODO: DEPRECATED in 2.2 (still available for decoding legacy frames, but will" }, { "line": 1910, "text": "// eventually no longer be decodable) unpack data message using 70 bits" }, { "line": 1911, "text": "// available flagged as data by the first 2 bits" }, { "line": 1912, "text": "QString Varicode::unpackDataMessage(const QString &text) {" }, { "line": 1913, "text": " QString unpacked;" }, { "line": 1914, "text": "" }, { "line": 1915, "text": " if (text.length() < 12 || text.contains(\" \")) {" }, { "line": 1916, "text": " return unpacked;" }, { "line": 1917, "text": " }" } ] } }, { "name": "unpackFastDataMessage", "path": "JS8_Main/Varicode.cpp", "line": 1983, "context": { "start_line": 1978, "end_line": 1988, "lines": [ { "line": 1978, "text": "#endif" }, { "line": 1979, "text": "}" }, { "line": 1980, "text": "" }, { "line": 1981, "text": "// unpack data message using the full 72 bits available (with the data flag in" }, { "line": 1982, "text": "// the i3bit header)" }, { "line": 1983, "text": "QString Varicode::unpackFastDataMessage(const QString &text) {" }, { "line": 1984, "text": " QString unpacked;" }, { "line": 1985, "text": "" }, { "line": 1986, "text": " if (text.length() < 12 || text.contains(\" \")) {" }, { "line": 1987, "text": " return unpacked;" }, { "line": 1988, "text": " }" } ] } }, { "name": "unpackCallsign", "path": "JS8_Main/Varicode.cpp", "line": 1037, "context": { "start_line": 1032, "end_line": 1042, "lines": [ { "line": 1032, "text": " packed = 27 * packed + alphanumeric.indexOf(matched.at(5)) - 10;" }, { "line": 1033, "text": "" }, { "line": 1034, "text": " return packed;" }, { "line": 1035, "text": "}" }, { "line": 1036, "text": "" }, { "line": 1037, "text": "QString Varicode::unpackCallsign(quint32 value, bool portable) {" }, { "line": 1038, "text": " foreach (auto key, basecalls.keys()) {" }, { "line": 1039, "text": " if (basecalls[key] == value) {" }, { "line": 1040, "text": " return key;" }, { "line": 1041, "text": " }" }, { "line": 1042, "text": " }" } ] } }, { "name": "unpackAlphaNumeric50", "path": "JS8_Main/Varicode.cpp", "line": 905, "context": { "start_line": 900, "end_line": 910, "lines": [ { "line": 900, "text": " quint64 packed = a + b + c + d + e + f + g + h + i + j + k;" }, { "line": 901, "text": "" }, { "line": 902, "text": " return packed;" }, { "line": 903, "text": "}" }, { "line": 904, "text": "" }, { "line": 905, "text": "QString Varicode::unpackAlphaNumeric50(quint64 packed) {" }, { "line": 906, "text": " QChar word[11];" }, { "line": 907, "text": "" }, { "line": 908, "text": " quint64 tmp = packed % 38;" }, { "line": 909, "text": " word[10] = alphanumeric.at(tmp);" }, { "line": 910, "text": " packed = packed / 38;" } ] } }, { "name": "unpackGrid", "path": "JS8_Main/Varicode.cpp", "line": 1157, "context": { "start_line": 1152, "end_line": 1162, "lines": [ { "line": 1152, "text": " int ilat = pair.second + 90;" }, { "line": 1153, "text": "" }, { "line": 1154, "text": " return ((ilong + 180) / 2) * 180 + ilat;" }, { "line": 1155, "text": "}" }, { "line": 1156, "text": "" }, { "line": 1157, "text": "QString Varicode::unpackGrid(quint16 value) {" }, { "line": 1158, "text": " if (value > nbasegrid) {" }, { "line": 1159, "text": " return \"\";" }, { "line": 1160, "text": " }" }, { "line": 1161, "text": "" }, { "line": 1162, "text": " float dlat = value % 180 - 90;" } ] } }, { "name": "unpackCmd", "path": "JS8_Main/Varicode.cpp", "line": 1207, "context": { "start_line": 1202, "end_line": 1212, "lines": [ { "line": 1202, "text": " }" }, { "line": 1203, "text": "" }, { "line": 1204, "text": " return value;" }, { "line": 1205, "text": "}" }, { "line": 1206, "text": "" }, { "line": 1207, "text": "quint8 Varicode::unpackCmd(quint8 value, quint8 *pNum) {" }, { "line": 1208, "text": " // if the first bit is 1, this is an SNR with a number encoded in the lower" }, { "line": 1209, "text": " // 6 bits" }, { "line": 1210, "text": " if (value & (1 << 7)) {" }, { "line": 1211, "text": " if (pNum)" }, { "line": 1212, "text": " *pNum = value & ((1 << 6) - 1);" } ] } }, { "name": "huffDecode", "path": "JS8_Main/Varicode.cpp", "line": 597, "context": { "start_line": 592, "end_line": 602, "lines": [ { "line": 592, "text": " }" }, { "line": 593, "text": "" }, { "line": 594, "text": " return out;" }, { "line": 595, "text": "}" }, { "line": 596, "text": "" }, { "line": 597, "text": "QString Varicode::huffDecode(QMap const &huff," }, { "line": 598, "text": " QVector const &bitvec) {" }, { "line": 599, "text": " QString text;" }, { "line": 600, "text": "" }, { "line": 601, "text": " QString bits = Varicode::bitsToStr(bitvec);" }, { "line": 602, "text": "" } ] } }, { "name": "JSC::decompress", "path": "JS8_Main/Varicode.cpp", "line": 1938, "context": { "start_line": 1933, "end_line": 1943, "lines": [ { "line": 1933, "text": " // trim off the pad bits" }, { "line": 1934, "text": " bits = bits.mid(1, n - 1);" }, { "line": 1935, "text": "" }, { "line": 1936, "text": " if (compressed) {" }, { "line": 1937, "text": " // partial word (s,c)-dense coding with code tables" }, { "line": 1938, "text": " unpacked = JSC::decompress(bits);" }, { "line": 1939, "text": " } else {" }, { "line": 1940, "text": " // huff decode the bits (without escapes)" }, { "line": 1941, "text": " unpacked = Varicode::huffDecode(Varicode::defaultHuffTable(), bits);" }, { "line": 1942, "text": " }" }, { "line": 1943, "text": "" } ] } }, { "name": "unpack72bits", "path": "JS8_Main/Varicode.h", "line": 135, "context": { "start_line": 130, "end_line": 140, "lines": [ { "line": 130, "text": " static QString pack32bits(quint32 packed);" }, { "line": 131, "text": "" }, { "line": 132, "text": " static quint64 unpack64bits(QString const &value);" }, { "line": 133, "text": " static QString pack64bits(quint64 packed);" }, { "line": 134, "text": "" }, { "line": 135, "text": " static quint64 unpack72bits(QString const &value, quint8 *pRem);" }, { "line": 136, "text": " static QString pack72bits(quint64 value, quint8 rem);" }, { "line": 137, "text": "" }, { "line": 138, "text": " static quint32 packAlphaNumeric22(QString const &value, bool isFlag);" }, { "line": 139, "text": " static QString unpackAlphaNumeric22(quint32 packed, bool *isFlag);" }, { "line": 140, "text": "" } ] } }, { "name": "pack72bits", "path": "JS8_Main/Varicode.h", "line": 135, "context": { "start_line": 130, "end_line": 140, "lines": [ { "line": 130, "text": " static QString pack32bits(quint32 packed);" }, { "line": 131, "text": "" }, { "line": 132, "text": " static quint64 unpack64bits(QString const &value);" }, { "line": 133, "text": " static QString pack64bits(quint64 packed);" }, { "line": 134, "text": "" }, { "line": 135, "text": " static quint64 unpack72bits(QString const &value, quint8 *pRem);" }, { "line": 136, "text": " static QString pack72bits(quint64 value, quint8 rem);" }, { "line": 137, "text": "" }, { "line": 138, "text": " static quint32 packAlphaNumeric22(QString const &value, bool isFlag);" }, { "line": 139, "text": " static QString unpackAlphaNumeric22(quint32 packed, bool *isFlag);" }, { "line": 140, "text": "" } ] } }, { "name": "unpackDirectedMessage", "path": "JS8_Main/Varicode.h", "line": 185, "context": { "start_line": 180, "end_line": 190, "lines": [ { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," }, { "line": 182, "text": " QString const &mycall, QString *pTo," }, { "line": 183, "text": " bool *pToCompound, QString *pCmd," }, { "line": 184, "text": " QString *pNum, int *n);" }, { "line": 185, "text": " static QStringList unpackDirectedMessage(QString const &text," }, { "line": 186, "text": " quint8 *pType);" }, { "line": 187, "text": "" }, { "line": 188, "text": " static QString packDataMessage(QString const &text, int *n);" }, { "line": 189, "text": " static QString unpackDataMessage(QString const &text);" }, { "line": 190, "text": "" } ] } }, { "name": "packDirectedMessage", "path": "JS8_Main/Varicode.h", "line": 181, "context": { "start_line": 176, "end_line": 186, "lines": [ { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," }, { "line": 179, "text": " quint16 *pNum, quint8 *pBits3);" }, { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," }, { "line": 182, "text": " QString const &mycall, QString *pTo," }, { "line": 183, "text": " bool *pToCompound, QString *pCmd," }, { "line": 184, "text": " QString *pNum, int *n);" }, { "line": 185, "text": " static QStringList unpackDirectedMessage(QString const &text," }, { "line": 186, "text": " quint8 *pType);" } ] } }, { "name": "unpackCompoundFrame", "path": "JS8_Main/Varicode.h", "line": 178, "context": { "start_line": 173, "end_line": 183, "lines": [ { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 174, "text": " quint8 *pBits3);" }, { "line": 175, "text": "" }, { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," }, { "line": 179, "text": " quint16 *pNum, quint8 *pBits3);" }, { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," }, { "line": 182, "text": " QString const &mycall, QString *pTo," }, { "line": 183, "text": " bool *pToCompound, QString *pCmd," } ] } }, { "name": "packCompoundFrame", "path": "JS8_Main/Varicode.h", "line": 176, "context": { "start_line": 171, "end_line": 181, "lines": [ { "line": 171, "text": "" }, { "line": 172, "text": " static QString packCompoundMessage(QString const &text, int *n);" }, { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 174, "text": " quint8 *pBits3);" }, { "line": 175, "text": "" }, { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," }, { "line": 179, "text": " quint16 *pNum, quint8 *pBits3);" }, { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," } ] } }, { "name": "unpackCompoundMessage", "path": "JS8_Main/Varicode.h", "line": 173, "context": { "start_line": 168, "end_line": 178, "lines": [ { "line": 168, "text": " static QStringList unpackHeartbeatMessage(const QString &text," }, { "line": 169, "text": " quint8 *pType, bool *isAlt," }, { "line": 170, "text": " quint8 *pBits3);" }, { "line": 171, "text": "" }, { "line": 172, "text": " static QString packCompoundMessage(QString const &text, int *n);" }, { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 174, "text": " quint8 *pBits3);" }, { "line": 175, "text": "" }, { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," } ] } }, { "name": "unpackHeartbeatMessage", "path": "JS8_Main/Varicode.h", "line": 168, "context": { "start_line": 163, "end_line": 173, "lines": [ { "line": 163, "text": " static bool isCompoundCallsign(const QString &callsign);" }, { "line": 164, "text": " static bool isGroupAllowed(const QString &group);" }, { "line": 165, "text": "" }, { "line": 166, "text": " static QString packHeartbeatMessage(QString const &text," }, { "line": 167, "text": " QString const &callsign, int *n);" }, { "line": 168, "text": " static QStringList unpackHeartbeatMessage(const QString &text," }, { "line": 169, "text": " quint8 *pType, bool *isAlt," }, { "line": 170, "text": " quint8 *pBits3);" }, { "line": 171, "text": "" }, { "line": 172, "text": " static QString packCompoundMessage(QString const &text, int *n);" }, { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," } ] } }, { "name": "unpackDataMessage", "path": "JS8_Main/Varicode.h", "line": 189, "context": { "start_line": 184, "end_line": 194, "lines": [ { "line": 184, "text": " QString *pNum, int *n);" }, { "line": 185, "text": " static QStringList unpackDirectedMessage(QString const &text," }, { "line": 186, "text": " quint8 *pType);" }, { "line": 187, "text": "" }, { "line": 188, "text": " static QString packDataMessage(QString const &text, int *n);" }, { "line": 189, "text": " static QString unpackDataMessage(QString const &text);" }, { "line": 190, "text": "" }, { "line": 191, "text": " static QString packFastDataMessage(QString const &text, int *n);" }, { "line": 192, "text": " static QString unpackFastDataMessage(QString const &text);" }, { "line": 193, "text": "" }, { "line": 194, "text": " static QList>" } ] } }, { "name": "unpackFastDataMessage", "path": "JS8_Main/Varicode.h", "line": 192, "context": { "start_line": 187, "end_line": 197, "lines": [ { "line": 187, "text": "" }, { "line": 188, "text": " static QString packDataMessage(QString const &text, int *n);" }, { "line": 189, "text": " static QString unpackDataMessage(QString const &text);" }, { "line": 190, "text": "" }, { "line": 191, "text": " static QString packFastDataMessage(QString const &text, int *n);" }, { "line": 192, "text": " static QString unpackFastDataMessage(QString const &text);" }, { "line": 193, "text": "" }, { "line": 194, "text": " static QList>" }, { "line": 195, "text": " buildMessageFrames(QString const &mycall, QString const &mygrid," }, { "line": 196, "text": " QString const &selectedCall, QString const &text," }, { "line": 197, "text": " bool forceIdentify, bool forceData, int submode," } ] } }, { "name": "unpackCallsign", "path": "JS8_Main/Varicode.h", "line": 145, "context": { "start_line": 140, "end_line": 150, "lines": [ { "line": 140, "text": "" }, { "line": 141, "text": " static quint64 packAlphaNumeric50(QString const &value);" }, { "line": 142, "text": " static QString unpackAlphaNumeric50(quint64 packed);" }, { "line": 143, "text": "" }, { "line": 144, "text": " static quint32 packCallsign(QString const &value, bool *pPortable);" }, { "line": 145, "text": " static QString unpackCallsign(quint32 value, bool portable);" }, { "line": 146, "text": "" }, { "line": 147, "text": " static QString deg2grid(float dlong, float dlat);" }, { "line": 148, "text": " static QPair grid2deg(QString const &grid);" }, { "line": 149, "text": " static quint16 packGrid(QString const &value);" }, { "line": 150, "text": " static QString unpackGrid(quint16 value);" } ] } }, { "name": "unpackAlphaNumeric50", "path": "JS8_Main/Varicode.h", "line": 142, "context": { "start_line": 137, "end_line": 147, "lines": [ { "line": 137, "text": "" }, { "line": 138, "text": " static quint32 packAlphaNumeric22(QString const &value, bool isFlag);" }, { "line": 139, "text": " static QString unpackAlphaNumeric22(quint32 packed, bool *isFlag);" }, { "line": 140, "text": "" }, { "line": 141, "text": " static quint64 packAlphaNumeric50(QString const &value);" }, { "line": 142, "text": " static QString unpackAlphaNumeric50(quint64 packed);" }, { "line": 143, "text": "" }, { "line": 144, "text": " static quint32 packCallsign(QString const &value, bool *pPortable);" }, { "line": 145, "text": " static QString unpackCallsign(quint32 value, bool portable);" }, { "line": 146, "text": "" }, { "line": 147, "text": " static QString deg2grid(float dlong, float dlat);" } ] } }, { "name": "unpackGrid", "path": "JS8_Main/Varicode.h", "line": 150, "context": { "start_line": 145, "end_line": 155, "lines": [ { "line": 145, "text": " static QString unpackCallsign(quint32 value, bool portable);" }, { "line": 146, "text": "" }, { "line": 147, "text": " static QString deg2grid(float dlong, float dlat);" }, { "line": 148, "text": " static QPair grid2deg(QString const &grid);" }, { "line": 149, "text": " static quint16 packGrid(QString const &value);" }, { "line": 150, "text": " static QString unpackGrid(quint16 value);" }, { "line": 151, "text": "" }, { "line": 152, "text": " static quint8 packNum(QString const &num, bool *ok);" }, { "line": 153, "text": " static quint8 packPwr(QString const &pwr, bool *ok);" }, { "line": 154, "text": " static quint8 packCmd(quint8 cmd, quint8 num, bool *pPackedNum);" }, { "line": 155, "text": " static quint8 unpackCmd(quint8 value, quint8 *pNum);" } ] } }, { "name": "unpackCmd", "path": "JS8_Main/Varicode.h", "line": 155, "context": { "start_line": 150, "end_line": 160, "lines": [ { "line": 150, "text": " static QString unpackGrid(quint16 value);" }, { "line": 151, "text": "" }, { "line": 152, "text": " static quint8 packNum(QString const &num, bool *ok);" }, { "line": 153, "text": " static quint8 packPwr(QString const &pwr, bool *ok);" }, { "line": 154, "text": " static quint8 packCmd(quint8 cmd, quint8 num, bool *pPackedNum);" }, { "line": 155, "text": " static quint8 unpackCmd(quint8 value, quint8 *pNum);" }, { "line": 156, "text": "" }, { "line": 157, "text": " static bool isSNRCommand(const QString &cmd);" }, { "line": 158, "text": " static bool isCommandAllowed(const QString &cmd);" }, { "line": 159, "text": " static bool isCommandBuffered(const QString &cmd);" }, { "line": 160, "text": " static int isCommandChecksumed(const QString &cmd);" } ] } }, { "name": "huffDecode", "path": "JS8_Main/Varicode.h", "line": 107, "context": { "start_line": 102, "end_line": 112, "lines": [ { "line": 102, "text": " static QStringList parseCallsigns(QString const &input);" }, { "line": 103, "text": " static QStringList parseGrids(QString const &input);" }, { "line": 104, "text": "" }, { "line": 105, "text": " static QList>>" }, { "line": 106, "text": " huffEncode(const QMap &huff, QString const &text);" }, { "line": 107, "text": " static QString huffDecode(const QMap &huff," }, { "line": 108, "text": " QVector const &bitvec);" }, { "line": 109, "text": " static QSet huffValidChars(const QMap &huff);" }, { "line": 110, "text": "" }, { "line": 111, "text": " static QVector bytesToBits(char *bitvec, int n);" }, { "line": 112, "text": " static QVector strToBits(QString const &bitvec);" } ] } }, { "name": "JSC::decompress", "path": "JS8_JSC/JSC.cpp", "line": 127, "context": { "start_line": 122, "end_line": 132, "lines": [ { "line": 122, "text": " * @brief Decompresses the given bit vector into a string." }, { "line": 123, "text": " *" }, { "line": 124, "text": " * @param bitvec" }, { "line": 125, "text": " * @return QString" }, { "line": 126, "text": " */" }, { "line": 127, "text": "QString JSC::decompress(Codeword const &bitvec) {" }, { "line": 128, "text": " const quint32 b = 4;" }, { "line": 129, "text": " const quint32 s = 7;" }, { "line": 130, "text": " const quint32 c = pow(2, b) - s;" }, { "line": 131, "text": "" }, { "line": 132, "text": " QStringList out;" } ] } } ] }, "source_contract": { "message174_alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "alphabet72": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+/?.", "frame_types": { "0": "FrameHeartbeat", "1": "FrameCompound", "2": "FrameCompoundDirected", "3": "FrameDirected", "4": "FrameData", "5": "FrameData", "6": "FrameDataCompressed", "7": "FrameDataCompressed" }, "implemented_rx_unpack": [ "unpack72bits", "frame_type", "directed", "heartbeat", "compound", "callsign", "grid", "legacy_huff_data_probe" ], "not_yet_ported": [ "JSC::decompress full compressed text", "multi-frame buffer assembly", "WebFTR live integration" ] }, "input_decode_count": 2, "frame_probe_count": 2, "webftr_display_count": 0, "hidden_candidate_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "webftr_rx_rows": [], "candidate_rows": [ { "id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-0cec49f1", "mode": "JS8", "text": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "001XqOA2iDZ0", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 107552465662168, "value_hex": "0x000061d18282b0d8", "rem": 192, "top3": 0, "top2": 0, "first_16_bits": "0000000000000000" }, "frame_type": "FrameHeartbeat", "frame_type_bits": 0, "displayable_after_frame_unpack": false, "frame_fields": { "packed_type": 0, "callsign": "004REY/0V4", "packed_callsign": 52515852374, "packed_num": 6936, "bits3": 0, "valid_callsign_hint": true, "kind": "heartbeat_or_cq", "is_cq_alt": false, "grid": "OJ16", "message_token": "HB", "valid_grid_hint": true }, "plausibility": { "score": 6, "reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "HB 004REY/0V4 OJ16" }, "show_in_rx_list": false, "display_text": "HB 004REY/0V4 OJ16", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 0 }, { "id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9861f0b4", "mode": "JS8", "text": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "Q0VsKWqfJ96x", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 7496230937050041489, "value_hex": "0x6807f6520d294c91", "rem": 187, "top3": 3, "top2": 1, "first_16_bits": "0110100000000111" }, "frame_type": "FrameDirected", "frame_type_bits": 3, "displayable_after_frame_unpack": false, "frame_fields": { "from": "9I2TZR/P", "to": "0Z0PMP", "cmd_id": 17, "cmd": " INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "portable_from": true, "portable_to": false, "valid_from_hint": true, "valid_to_hint": true }, "plausibility": { "score": 10, "reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "9I2TZR/P 0Z0PMP INFO 28" }, "show_in_rx_list": false, "display_text": "9I2TZR/P 0Z0PMP INFO 28", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 1 } ], "suppressed_candidates": [ { "id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-0cec49f1", "mode": "JS8", "text": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "001XqOA2iDZ0", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 107552465662168, "value_hex": "0x000061d18282b0d8", "rem": 192, "top3": 0, "top2": 0, "first_16_bits": "0000000000000000" }, "frame_type": "FrameHeartbeat", "frame_type_bits": 0, "displayable_after_frame_unpack": false, "frame_fields": { "packed_type": 0, "callsign": "004REY/0V4", "packed_callsign": 52515852374, "packed_num": 6936, "bits3": 0, "valid_callsign_hint": true, "kind": "heartbeat_or_cq", "is_cq_alt": false, "grid": "OJ16", "message_token": "HB", "valid_grid_hint": true }, "plausibility": { "score": 6, "reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "HB 004REY/0V4 OJ16" }, "show_in_rx_list": false, "display_text": "HB 004REY/0V4 OJ16", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 0 }, { "id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9861f0b4", "mode": "JS8", "text": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "Q0VsKWqfJ96x", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 7496230937050041489, "value_hex": "0x6807f6520d294c91", "rem": 187, "top3": 3, "top2": 1, "first_16_bits": "0110100000000111" }, "frame_type": "FrameDirected", "frame_type_bits": 3, "displayable_after_frame_unpack": false, "frame_fields": { "from": "9I2TZR/P", "to": "0Z0PMP", "cmd_id": 17, "cmd": " INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "portable_from": true, "portable_to": false, "valid_from_hint": true, "valid_to_hint": true }, "plausibility": { "score": 10, "reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "9I2TZR/P 0Z0PMP INFO 28" }, "show_in_rx_list": false, "display_text": "9I2TZR/P 0Z0PMP INFO 28", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 1 } ], "verdict": "source_varicode_frames_classified_but_not_displayable", "warnings": [ "Step66 is still RX-only diagnostics. It classifies message174 text as JS8 Varicode frame families but does not start JS8Call GUI/Qt.", "Rows remain hidden unless callsign/grid/command/text plausibility survives source-style frame unpacking.", "Compressed Data frames still require a later JSC::decompress port before real JS8 chat text can be displayed." ], "next_action": "If frame types look plausible but hidden, port JSC::decompress and multi-frame assembly next; if a display row appears, wire webftr_rx_rows into the JS8 RX UI contract." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_control_frame_rx_release_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-source-confirmed-control-frame-rx-release", "tool_version": "step67-source-confirmed-control-frame-rx-release", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "input_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_varicode_frame_unpack_probe_output.json", "exists": true, "selected_input": true, "input_kind": "step66_source_varicode_frame_unpack_probe" } ], "source_step66_version": "step66-source-varicode-frame-unpack-probe", "source_frame_probe_count": 2, "source_webftr_display_count_before_release": 0, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "release_contract": { "allowed_to_display": [ "FrameCompound", "FrameCompoundDirected", "FrameDirected", "FrameHeartbeat" ], "blocked_until_future_steps": [ "FrameData", "FrameDataCompressed" ], "minimum_conditions": [ "valid_message174_crc12 == true", "crc12_distance == 0", "source Varicode frame unpack produced a supported fixed control frame", "frame_display_candidate == true" ], "data_text_rule": "FrameData and FrameDataCompressed stay hidden until JSC::decompress/multi-frame assembly is ported and tested." }, "input_candidate_count": 2, "webftr_display_count": 2, "hidden_candidate_count": 0, "webftr_rx_rows": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-0cec49f1", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9861f0b4", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "candidate_rows": [ { "id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-0cec49f1", "mode": "JS8", "text": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "001XqOA2iDZ0", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 107552465662168, "value_hex": "0x000061d18282b0d8", "rem": 192, "top3": 0, "top2": 0, "first_16_bits": "0000000000000000" }, "frame_type": "FrameHeartbeat", "frame_type_bits": 0, "displayable_after_frame_unpack": false, "frame_fields": { "packed_type": 0, "callsign": "004REY/0V4", "packed_callsign": 52515852374, "packed_num": 6936, "bits3": 0, "valid_callsign_hint": true, "kind": "heartbeat_or_cq", "is_cq_alt": false, "grid": "OJ16", "message_token": "HB", "valid_grid_hint": true }, "plausibility": { "score": 6, "reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "HB 004REY/0V4 OJ16" }, "show_in_rx_list": false, "display_text": "HB 004REY/0V4 OJ16", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 0 }, { "id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9861f0b4", "mode": "JS8", "text": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "Q0VsKWqfJ96x", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 7496230937050041489, "value_hex": "0x6807f6520d294c91", "rem": 187, "top3": 3, "top2": 1, "first_16_bits": "0110100000000111" }, "frame_type": "FrameDirected", "frame_type_bits": 3, "displayable_after_frame_unpack": false, "frame_fields": { "from": "9I2TZR/P", "to": "0Z0PMP", "cmd_id": 17, "cmd": " INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "portable_from": true, "portable_to": false, "valid_from_hint": true, "valid_to_hint": true }, "plausibility": { "score": 10, "reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "9I2TZR/P 0Z0PMP INFO 28" }, "show_in_rx_list": false, "display_text": "9I2TZR/P 0Z0PMP INFO 28", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 1 } ], "suppressed_candidates": [], "release_decisions": [ { "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "raw_message174": "001XqOA2iDZ0", "frame_type": "FrameHeartbeat", "decision": "released_source_confirmed_control_frame", "sort_index": 0, "released_row_id": "js8-rx67-de15d3110b0d" }, { "source_candidate_id": "js8-frame66-66ab29ded46c", "raw_message174": "Q0VsKWqfJ96x", "frame_type": "FrameDirected", "decision": "released_source_confirmed_control_frame", "sort_index": 1, "released_row_id": "js8-rx67-bd37f68199eb" } ], "verdict": "source_confirmed_control_frames_ready_for_webftr_rx_rows", "warnings": [ "Step67 is still RX-only and does not start JS8Call GUI/Qt.", "Only source-confirmed fixed control frames such as Heartbeat/Directed/Compound are released to webftr_rx_rows.", "Free-text Data/Compressed frames remain blocked until JSC::decompress and multi-frame assembly are source-ported and tested." ], "next_action": "Wire these guarded webftr_rx_rows into the JS8 RX display contract, then continue with JSC::decompress/multi-frame assembly for real JS8 chat text." } ========== STEP85 3/4: WINDOW RESULT MANIFEST ========== { "ok": true, "input_wav": "/decoders/js8_test.wav", "plan_json": "/decoders/js8_decoder/logs/20260528T090400Z_real_wav_wide_window_plan_output.json", "windows": [ { "window_index": 0, "window_id": "step85-window-00", "start_seconds": 24.0, "end_seconds": 72.0, "selection_score": 7.8209, "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0024_0072.wav", "candidate_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_candidate_export_output.json", "post_ldpc_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "source_exact_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "message174_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "varicode_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_varicode_frame_unpack_probe_output.json", "rx_release_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_control_frame_rx_release_output.json", "exit_codes": { "candidate_export": 0, "post_ldpc_info87_runtime_export": 0, "source_exact_map_probe": 0, "source_confirmed_message174_decode": 0, "source_varicode_frame_unpack_probe": 0, "source_confirmed_control_frame_rx_release": 0 } }, { "window_index": 1, "window_id": "step85-window-01", "start_seconds": 84.0, "end_seconds": 132.0, "selection_score": 7.7608, "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_01_0084_0132.wav", "candidate_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_candidate_export_output.json", "post_ldpc_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "source_exact_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "message174_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json", "varicode_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_varicode_frame_unpack_probe_output.json", "rx_release_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_control_frame_rx_release_output.json", "exit_codes": { "candidate_export": 0, "post_ldpc_info87_runtime_export": 0, "source_exact_map_probe": 0, "source_confirmed_message174_decode": 0, "source_varicode_frame_unpack_probe": 0, "source_confirmed_control_frame_rx_release": 0 } }, { "window_index": 2, "window_id": "step85-window-02", "start_seconds": 120.0, "end_seconds": 168.0, "selection_score": 7.6539, "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_02_0120_0168.wav", "candidate_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_candidate_export_output.json", "post_ldpc_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "source_exact_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "message174_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_message174_decode_output.json", "varicode_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_varicode_frame_unpack_probe_output.json", "rx_release_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_control_frame_rx_release_output.json", "exit_codes": { "candidate_export": 0, "post_ldpc_info87_runtime_export": 0, "source_exact_map_probe": 0, "source_confirmed_message174_decode": 0, "source_varicode_frame_unpack_probe": 0, "source_confirmed_control_frame_rx_release": 0 } } ] } ========== STEP85 4/4: WIDE SEARCH SUMMARY ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_real_wav_wide_data_frame_search_output.json [webftr-js8-lab] JSON timeout guard: 180s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260528T090400Z_real_wav_wide_data_frame_search_output.stderr.log /decoders/js8_decoder/src/webftr_js8_lab/js8_real_wav_wide_data_frame_search.py:4: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13 import audioop { "ok": true, "tool": "webftr-js8-real-wav-wide-data-frame-search", "tool_version": "step85-real-wav-wide-data-frame-search", "schema": "webftr-js8-real-wav-wide-data-frame-search-v1", "created_utc": "2026-05-28T09:11:22Z", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "purpose": "Run a bounded multi-window real-WAV search for JS8 Data/FrameDataCompressed candidates while keeping chat/free-text release blocked.", "input_wav": "/decoders/js8_test.wav", "plan_json": "/decoders/js8_decoder/logs/20260528T090400Z_real_wav_wide_window_plan_output.json", "window_result_manifest_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window_results_manifest.json", "wav_was_read": true, "planned_window_count": 3, "tested_window_count": 3, "scan_params": { "window_seconds": 54.0, "hop_seconds": 12.0, "max_seconds": 240.0, "max_windows": 3, "min_gap_seconds": 30.0, "output_dir": "/decoders/js8_decoder/runtime/step85_wide_windows" }, "runtime_info87_rows_count": 144, "source_exact_zero_distance_candidate_count": 48, "message174_decode_count": 6, "frame_probe_count": 6, "control_frame_release_count": 6, "webftr_display_count": 6, "frame_type_counts": { "FrameHeartbeat": 3, "FrameDirected": 3 }, "data_frame_candidate_count": 0, "compressed_data_frame_candidate_count": 0, "webftr_rx_rows_preview": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3fa90037", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-2dbbec06", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true }, { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3655f200", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9af968ad", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true }, { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-0cec49f1", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9861f0b4", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "per_window_summaries": [ { "window_index": 0, "window_id": "step85-window-00", "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0024_0072.wav", "start_seconds": 24.0, "end_seconds": 72.0, "selection_score": 7.8209, "exit_codes": { "candidate_export": 0, "post_ldpc_info87_runtime_export": 0, "source_exact_map_probe": 0, "source_confirmed_message174_decode": 0, "source_varicode_frame_unpack_probe": 0, "source_confirmed_control_frame_rx_release": 0 }, "runtime_info87_rows_count": 48, "source_exact_zero_distance_candidate_count": 16, "message174_decode_count": 2, "frame_probe_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "control_frame_release_count": 2, "webftr_display_count": 2, "webftr_rx_rows_preview": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3fa90037", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-2dbbec06", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "outputs": { "candidate_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_candidate_export_output.json", "post_ldpc_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "source_exact_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "message174_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "varicode_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_varicode_frame_unpack_probe_output.json", "rx_release_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_control_frame_rx_release_output.json" } }, { "window_index": 1, "window_id": "step85-window-01", "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_01_0084_0132.wav", "start_seconds": 84.0, "end_seconds": 132.0, "selection_score": 7.7608, "exit_codes": { "candidate_export": 0, "post_ldpc_info87_runtime_export": 0, "source_exact_map_probe": 0, "source_confirmed_message174_decode": 0, "source_varicode_frame_unpack_probe": 0, "source_confirmed_control_frame_rx_release": 0 }, "runtime_info87_rows_count": 48, "source_exact_zero_distance_candidate_count": 16, "message174_decode_count": 2, "frame_probe_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "control_frame_release_count": 2, "webftr_display_count": 2, "webftr_rx_rows_preview": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3655f200", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9af968ad", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "outputs": { "candidate_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_candidate_export_output.json", "post_ldpc_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "source_exact_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "message174_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json", "varicode_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_varicode_frame_unpack_probe_output.json", "rx_release_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_control_frame_rx_release_output.json" } }, { "window_index": 2, "window_id": "step85-window-02", "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_02_0120_0168.wav", "start_seconds": 120.0, "end_seconds": 168.0, "selection_score": 7.6539, "exit_codes": { "candidate_export": 0, "post_ldpc_info87_runtime_export": 0, "source_exact_map_probe": 0, "source_confirmed_message174_decode": 0, "source_varicode_frame_unpack_probe": 0, "source_confirmed_control_frame_rx_release": 0 }, "runtime_info87_rows_count": 48, "source_exact_zero_distance_candidate_count": 16, "message174_decode_count": 2, "frame_probe_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "control_frame_release_count": 2, "webftr_display_count": 2, "webftr_rx_rows_preview": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-0cec49f1", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9861f0b4", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "outputs": { "candidate_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_candidate_export_output.json", "post_ldpc_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "source_exact_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "message174_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_message174_decode_output.json", "varicode_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_varicode_frame_unpack_probe_output.json", "rx_release_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_control_frame_rx_release_output.json" } } ], "output_stats_preview": [ { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_candidate_export_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_candidate_export_output.json", "exists": true, "is_file": true, "size": 99565, "mtime_utc": "2026-05-28T09:05:36Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "is_file": true, "size": 106217, "mtime_utc": "2026-05-28T09:06:45Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "is_file": true, "size": 157390, "mtime_utc": "2026-05-28T09:06:48Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "is_file": true, "size": 8022, "mtime_utc": "2026-05-28T09:06:48Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_varicode_frame_unpack_probe_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_varicode_frame_unpack_probe_output.json", "exists": true, "is_file": true, "size": 60579, "mtime_utc": "2026-05-28T09:06:49Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_control_frame_rx_release_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_control_frame_rx_release_output.json", "exists": true, "is_file": true, "size": 9856, "mtime_utc": "2026-05-28T09:06:49Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_candidate_export_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_candidate_export_output.json", "exists": true, "is_file": true, "size": 99711, "mtime_utc": "2026-05-28T09:07:50Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "is_file": true, "size": 106667, "mtime_utc": "2026-05-28T09:09:00Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "exists": true, "is_file": true, "size": 157977, "mtime_utc": "2026-05-28T09:09:03Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "is_file": true, "size": 8022, "mtime_utc": "2026-05-28T09:09:03Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_varicode_frame_unpack_probe_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_varicode_frame_unpack_probe_output.json", "exists": true, "is_file": true, "size": 60579, "mtime_utc": "2026-05-28T09:09:04Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_control_frame_rx_release_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_control_frame_rx_release_output.json", "exists": true, "is_file": true, "size": 9856, "mtime_utc": "2026-05-28T09:09:04Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_candidate_export_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_candidate_export_output.json", "exists": true, "is_file": true, "size": 82517, "mtime_utc": "2026-05-28T09:10:05Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "is_file": true, "size": 102055, "mtime_utc": "2026-05-28T09:11:18Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "exists": true, "is_file": true, "size": 158005, "mtime_utc": "2026-05-28T09:11:20Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_message174_decode_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "is_file": true, "size": 8022, "mtime_utc": "2026-05-28T09:11:20Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_varicode_frame_unpack_probe_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_varicode_frame_unpack_probe_output.json", "exists": true, "is_file": true, "size": 60579, "mtime_utc": "2026-05-28T09:11:21Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_control_frame_rx_release_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_control_frame_rx_release_output.json", "exists": true, "is_file": true, "size": 9856, "mtime_utc": "2026-05-28T09:11:21Z" } } ], "verdict": "step85_real_wav_wide_search_control_frames_only", "warnings": [ "Step85 searches multiple real-WAV windows for FrameData/FrameDataCompressed candidates; it still does not release free-text chat rows.", "Only source-confirmed fixed control frames remain eligible for WebFTR display unless a later external fixture/release gate validates compressed text." ], "notes": [ "This step follows the user's observation that fast JSON/source-only passes were no longer exercising the real JS8 WAV enough.", "A compressed_data_frame_candidate_count above zero is the desired trigger for the next guarded JSC/text validation step." ], "next_action": "If compressed_data_frame_candidate_count stays 0, capture or provide a real JS8Call/RF FrameDataCompressed fixture; if it becomes >0, feed those rows into the Step79 release gate without productive WebFTR chat release.", "latest_previous_contracts": { "step84_real_wav_message174_regeneration": "/decoders/js8_decoder/logs/js8_real_wav_message174_regeneration_latest.json", "step79_compressed_text_release_gate": "/decoders/js8_decoder/logs/js8_compressed_text_release_gate_latest.json" } } [webftr-js8-lab] step85 summary exit_code=0 [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260528T090400Z_real-wav-wide-data-frame-search.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260528T090400Z_real-wav-wide-data-frame-search_manifest.json [webftr-js8-lab] nested Step85 exit_code=0 ========== STEP86 2/2: UNIQUE FRAME CENSUS / DEDUP ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_real_wav_unique_frame_census_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-real-wav-unique-frame-census", "tool_version": "step86-real-wav-unique-frame-census", "schema": "webftr-js8-real-wav-unique-frame-census-v1", "created_utc": "2026-05-28T09:11:23Z", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "purpose": "Deduplicate Step85 real-WAV multi-window results and separate repeated control-frame evidence from true Data/FrameDataCompressed discoveries.", "input_wav": "/decoders/js8_test.wav", "source_step85_json": "/decoders/js8_decoder/logs/js8_real_wav_wide_data_frame_search_latest.json", "source_step85_stat": { "path": "/decoders/js8_decoder/logs/js8_real_wav_wide_data_frame_search_latest.json", "exists": true, "is_file": true, "size": 32464, "mtime_utc": "2026-05-28T09:11:22Z" }, "source_step85_verdict": "step85_real_wav_wide_search_control_frames_only", "wav_was_read": true, "planned_window_count": 3, "tested_window_count": 3, "runtime_info87_rows_count": 144, "source_exact_zero_distance_candidate_count": 48, "message174_decode_count": 6, "frame_probe_count": 6, "frame_type_counts": { "FrameHeartbeat": 3, "FrameDirected": 3 }, "data_frame_candidate_count": 0, "compressed_data_frame_candidate_count": 0, "webftr_display_count": 6, "unique_webftr_display_count": 2, "duplicate_control_frame_group_count": 2, "unique_frame_rows": [ { "key": "message174:001XqOA2iDZ0", "raw_message174": "001XqOA2iDZ0", "frame_type": "FrameHeartbeat", "status": "HB", "from": "004REY/0V4", "to": "@HB", "text": "HB 004REY/0V4 OJ16", "valid_message174_crc12": true, "crc12_distance": 0, "seen_count": 6, "windows_seen": [ 0, 1, 2 ], "example_row": { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3fa90037", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true } }, { "key": "message174:Q0VsKWqfJ96x", "raw_message174": "Q0VsKWqfJ96x", "frame_type": "FrameDirected", "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "text": "9I2TZR/P 0Z0PMP INFO 28", "valid_message174_crc12": true, "crc12_distance": 0, "seen_count": 6, "windows_seen": [ 0, 1, 2 ], "example_row": { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-2dbbec06", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } } ], "duplicate_frame_rows": [ { "key": "message174:001XqOA2iDZ0", "raw_message174": "001XqOA2iDZ0", "frame_type": "FrameHeartbeat", "status": "HB", "from": "004REY/0V4", "to": "@HB", "text": "HB 004REY/0V4 OJ16", "valid_message174_crc12": true, "crc12_distance": 0, "seen_count": 6, "windows_seen": [ 0, 1, 2 ], "example_row": { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3fa90037", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true } }, { "key": "message174:Q0VsKWqfJ96x", "raw_message174": "Q0VsKWqfJ96x", "frame_type": "FrameDirected", "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "text": "9I2TZR/P 0Z0PMP INFO 28", "valid_message174_crc12": true, "crc12_distance": 0, "seen_count": 6, "windows_seen": [ 0, 1, 2 ], "example_row": { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-2dbbec06", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } } ], "per_window_summaries_preview": [ { "window_index": 0, "window_id": "step85-window-00", "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0024_0072.wav", "start_seconds": 24.0, "end_seconds": 72.0, "selection_score": 7.8209, "exit_codes": { "candidate_export": 0, "post_ldpc_info87_runtime_export": 0, "source_exact_map_probe": 0, "source_confirmed_message174_decode": 0, "source_varicode_frame_unpack_probe": 0, "source_confirmed_control_frame_rx_release": 0 }, "runtime_info87_rows_count": 48, "source_exact_zero_distance_candidate_count": 16, "message174_decode_count": 2, "frame_probe_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "control_frame_release_count": 2, "webftr_display_count": 2, "webftr_rx_rows_preview": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3fa90037", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-2dbbec06", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "outputs": { "candidate_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_candidate_export_output.json", "post_ldpc_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "source_exact_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "message174_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "varicode_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_varicode_frame_unpack_probe_output.json", "rx_release_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_control_frame_rx_release_output.json" } }, { "window_index": 1, "window_id": "step85-window-01", "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_01_0084_0132.wav", "start_seconds": 84.0, "end_seconds": 132.0, "selection_score": 7.7608, "exit_codes": { "candidate_export": 0, "post_ldpc_info87_runtime_export": 0, "source_exact_map_probe": 0, "source_confirmed_message174_decode": 0, "source_varicode_frame_unpack_probe": 0, "source_confirmed_control_frame_rx_release": 0 }, "runtime_info87_rows_count": 48, "source_exact_zero_distance_candidate_count": 16, "message174_decode_count": 2, "frame_probe_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "control_frame_release_count": 2, "webftr_display_count": 2, "webftr_rx_rows_preview": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3655f200", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9af968ad", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "outputs": { "candidate_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_candidate_export_output.json", "post_ldpc_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "source_exact_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "message174_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json", "varicode_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_varicode_frame_unpack_probe_output.json", "rx_release_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_control_frame_rx_release_output.json" } }, { "window_index": 2, "window_id": "step85-window-02", "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_02_0120_0168.wav", "start_seconds": 120.0, "end_seconds": 168.0, "selection_score": 7.6539, "exit_codes": { "candidate_export": 0, "post_ldpc_info87_runtime_export": 0, "source_exact_map_probe": 0, "source_confirmed_message174_decode": 0, "source_varicode_frame_unpack_probe": 0, "source_confirmed_control_frame_rx_release": 0 }, "runtime_info87_rows_count": 48, "source_exact_zero_distance_candidate_count": 16, "message174_decode_count": 2, "frame_probe_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "control_frame_release_count": 2, "webftr_display_count": 2, "webftr_rx_rows_preview": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-0cec49f1", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9861f0b4", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "outputs": { "candidate_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_candidate_export_output.json", "post_ldpc_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "source_exact_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "message174_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_message174_decode_output.json", "varicode_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_varicode_frame_unpack_probe_output.json", "rx_release_json": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_control_frame_rx_release_output.json" } } ], "verdict": "step86_real_wav_unique_control_frames_only_no_data_frames", "warnings": [ "Step86 is a census/dedup gate; it does not release JS8 free text.", "Repeated Heartbeat/Directed rows across nearby windows are counted as duplicate evidence, not separate new messages.", "FrameData and FrameDataCompressed remain blocked until a real externally confirmed fixture or real-WAV data candidate exists." ], "notes": [ "This step was added after Step85 confirmed the real WAV path but repeated the same two control frames across multiple windows.", "If data_frame_candidate_count and compressed_data_frame_candidate_count remain 0, the current js8_test.wav appears to contain only the two confirmed control frames for this chain." ], "next_action": "Use a WAV containing a real JS8 free-text/Data/Compressed frame or import an externally confirmed fixture; otherwise continue decoder work with the two unique control frames as the confirmed audio-to-message174 regression baseline." } [webftr-js8-lab] step86 census exit_code=0 [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260528T090400Z_real-wav-unique-frame-census.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260528T090400Z_real-wav-unique-frame-census_manifest.json [webftr-js8-lab] nested Step86 for wav[0] exit_code=0 ---------- STEP87 WAV 1: /decoders/js8_decoder/runtime/input_wavs/A_1_4.wav ---------- [webftr-js8-lab] command=real-wav-unique-frame-census [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260528T091124Z_real-wav-unique-frame-census.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260528T091124Z_real-wav-unique-frame-census_manifest.json [webftr-js8-lab] utc=20260528T091124Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] Step86 real WAV unique frame census [webftr-js8-lab] requested path: /decoders/js8_decoder/runtime/input_wavs/A_1_4.wav [webftr-js8-lab] This default run first executes the Step85 real-WAV wide search, then deduplicates repeated control-frame evidence and surfaces true Data/Compressed counts. [webftr-js8-lab] RX-only guard: no TX / no PTT / no Tune / no Send / no JS8Call runtime control. [webftr-js8-lab] resolved WAV: /decoders/js8_decoder/runtime/input_wavs/A_1_4.wav ========== STEP86 1/2: RUN STEP85 REAL-WAV WIDE SEARCH ========== [webftr-js8-lab] command=real-wav-wide-data-frame-search [webftr-js8-lab] root=/decoders/js8_decoder [webftr-js8-lab] log=/decoders/js8_decoder/logs/20260528T091124Z_real-wav-wide-data-frame-search.log [webftr-js8-lab] manifest=/decoders/js8_decoder/logs/20260528T091124Z_real-wav-wide-data-frame-search_manifest.json [webftr-js8-lab] utc=20260528T091124Z [webftr-js8-lab] rx-only guard: no TX / no PTT / no Tune / no Send [webftr-js8-lab] Step85 real WAV wide Data/FrameDataCompressed search [webftr-js8-lab] requested path: /decoders/js8_decoder/runtime/input_wavs/A_1_4.wav [webftr-js8-lab] This default run reads the JS8 WAV, plans multiple non-overlapping windows, runs the message174/Varicode chain per window, and aggregates Data/Compressed-frame evidence. [webftr-js8-lab] RX-only guard: no TX / no PTT / no Tune / no Send / no JS8Call runtime control. [webftr-js8-lab] resolved WAV: /decoders/js8_decoder/runtime/input_wavs/A_1_4.wav ========== STEP85 1/4: REAL WAV WIDE WINDOW PLAN ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T091124Z_real_wav_wide_window_plan_output.json [webftr-js8-lab] JSON timeout guard: 90s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260528T091124Z_real_wav_wide_window_plan_output.stderr.log /decoders/js8_decoder/src/webftr_js8_lab/js8_real_wav_wide_data_frame_search.py:4: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13 import audioop { "ok": true, "tool": "webftr-js8-real-wav-wide-window-plan", "tool_version": "step85-real-wav-wide-data-frame-search", "schema": "webftr-js8-real-wav-wide-window-plan-v1", "created_utc": "2026-05-28T09:11:37Z", "input_wav": "/decoders/js8_decoder/runtime/input_wavs/A_1_4.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "wav": { "sample_rate": 12000, "duration_seconds": 15.0, "frames": 180000, "rms_dbfs": -41.61762061851039, "peak_dbfs": -26.302935039562662, "clipped": false }, "scan_params": { "window_seconds": 54.0, "hop_seconds": 12.0, "max_seconds": 240.0, "max_windows": 3, "min_gap_seconds": 30.0, "output_dir": "/decoders/js8_decoder/runtime/step85_wide_windows" }, "planned_window_count": 1, "windows": [ { "start_seconds": 0.0, "end_seconds": 15.0, "duration_seconds": 15.0, "avg_activity_score": -40.0763, "active_chunks": 2, "chunk_count": 2, "selection_score": -39.0763, "window_index": 0, "window_id": "step85-window-00", "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0000_0015.wav", "tone_candidates": [ { "freq_hz": 850.0, "relative_db": 0.0, "power": 0.00743142 }, { "freq_hz": 825.0, "relative_db": -0.32, "power": 0.00689592 }, { "freq_hz": 525.0, "relative_db": -9.85, "power": 0.00076968 }, { "freq_hz": 2000.0, "relative_db": -10.38, "power": 0.00068126 }, { "freq_hz": 550.0, "relative_db": -11.24, "power": 0.00055881 }, { "freq_hz": 1600.0, "relative_db": -13.02, "power": 0.00037112 }, { "freq_hz": 1025.0, "relative_db": -13.74, "power": 0.00031399 }, { "freq_hz": 975.0, "relative_db": -13.88, "power": 0.00030448 }, { "freq_hz": 875.0, "relative_db": -14.14, "power": 0.00028657 }, { "freq_hz": 725.0, "relative_db": -14.81, "power": 0.00024532 } ] } ], "top_window_candidates_preview": [ { "start_seconds": 0.0, "end_seconds": 15.0, "duration_seconds": 15.0, "avg_activity_score": -40.0763, "active_chunks": 2, "chunk_count": 2, "selection_score": -39.0763 } ], "chunk_preview": [ { "chunk_index": 0, "start_seconds": 0.0, "end_seconds": 12.0, "rms_dbfs": -41.59, "peak_dbfs": -26.3, "activity_score": -39.9009 }, { "chunk_index": 1, "start_seconds": 12.0, "end_seconds": 15.0, "rms_dbfs": -41.84, "peak_dbfs": -28.15, "activity_score": -40.2516 } ], "chunk_tail_preview": [ { "chunk_index": 0, "start_seconds": 0.0, "end_seconds": 12.0, "rms_dbfs": -41.59, "peak_dbfs": -26.3, "activity_score": -39.9009 }, { "chunk_index": 1, "start_seconds": 12.0, "end_seconds": 15.0, "rms_dbfs": -41.84, "peak_dbfs": -28.15, "activity_score": -40.2516 } ], "warnings": [ "Step85 window planning is a real-WAV search helper; JS8 text/free-text release remains guarded separately." ], "next_action": "Run candidate/message174/Varicode chain for each planned window and aggregate Data/Compressed frame candidates." } [webftr-js8-lab] step85 window-plan exit_code=0 ========== STEP85 2/4: PER-WINDOW MESSAGE174/VARICODE CHAIN ========== ---------- STEP85 WINDOW 0: 0.0s..15.0s score=-39.0763 ---------- [webftr-js8-lab] window WAV: /decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0000_0015.wav [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T091124Z_step85_window0_candidate_export_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "mode": "JS8", "tool": "webftr-js8-fec-candidate-export", "tool_version": "step63-source-exact-interleaver-whitening-index-extract", "input_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0000_0015.wav", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "implementation_stage": "step43_profile_anchor_candidate_export_no_message_unpack", "selected_profile": { "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": 6.0, "base_freq_hz": 845.0, "candidate_score": 31.71, "costas_hits": 2, "avg_margin_db": 4.11, "candidate_count": 12 }, "frame": { "symbols_available_after_start": 18, "data_symbol_count_estimate": 11, "expected_data_symbols_candidate": 58 }, "fec": { "soft_bit_count_estimate": 33, "missing_soft_bits_estimate": 141, "complete_ldpc_input_candidate_estimate": false }, "rank_score": 62.864121 }, "profile_selection_source": "profile_scan_prefer_js8", "profile_scan_json": null, "anchor_json": null, "anchor_selection": { "source": "candidate_export_local_profile_scan", "path": null, "selection": "local_profile_scan_selected_profile", "nsps": 6000, "start_seconds": 6.0, "base_freq_hz": 845.0, "tone_spacing_hz": 2.0 }, "anchor_attempts": [ { "source": "candidate_export_local_profile_scan", "path": null, "selection": "local_profile_scan_selected_profile", "nsps": 6000, "start_seconds": 6.0, "base_freq_hz": 845.0, "tone_spacing_hz": 2.0 } ], "anchor_expected_enabled": true, "prefer_js8_realistic_profile": true, "nsps_used": 6000, "nsps_is_js8_realistic": true, "wav": { "path": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0000_0015.wav", "channels": 1, "sample_rate": 12000, "sample_width_bytes": 2, "frames": 180000, "duration_seconds": 15.0, "rms_dbfs": -41.62, "peak_dbfs": -26.3, "clipped": false }, "sync_candidate": { "start_sample": 72000, "start_seconds": 6.0, "base_freq_hz": 845.0, "tone_spacing_hz": 2.0, "nsps": 6000, "candidate_score": null, "costas_hits": null, "avg_margin_db": null, "anchor_source": "candidate_export_local_profile_scan" }, "frame_candidate": { "input_symbol_count": 18, "excluded_costas_symbol_count": 0, "detected_costas_blocks": [], "data_symbol_count_available": 18, "data_symbol_count_used": 18, "expected_data_symbols_candidate": 58, "costas_policy": "js8_leading_only" }, "fec_input_summary": { "soft_bit_count": 54, "missing_soft_bits": 120, "complete_ldpc_input_candidate": false, "llr_convention": "positive=bit0_more_likely, negative=bit1_more_likely, MSB-first candidate" }, "anchor_context": { "enabled": true, "source": "candidate_export_local_profile_scan", "start_seconds": 6.0, "base_freq_hz": 845.0, "tone_spacing_hz": 2.0, "nsps": 6000, "symbol_count_extracted": 18 }, "variant_count": 23, "selected_variant": { "name": "mapped_raw_msb+no_interleaver", "rank_score": 102.956332, "complete_174bit_candidate": true, "hard_bits_sha256_16": "2aeb0423c58d8499", "hard_weight_174": 21, "llr_stats": { "count": 174, "avg_abs": 0.739083, "min_abs": 0.0, "max_abs": 4.61604, "positive": 31, "negative": 20, "zero": 123 } }, "variants": [ { "name": "mapped_raw_msb+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101000000000011011010010010000010101101011001101011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "hard_bits_sha256_16": "2aeb0423c58d8499", "hard_weight_174": 21, "llr_full_174": [ -3.903775, 4.070281, -3.84703, 0.736832, 3.1786, 0.544065, 3.304358, 3.522097, 0.072644, 4.198216, 4.040302, 2.144982, 2.16115, -1.917489, -1.217068, 2.103109, -1.113849, -2.072304, 4.397118, -1.016056, 1.032513, 3.475137, -3.550132, 3.481024, 3.055165, -3.492025, 3.314887, 4.024359, 3.370789, 1.735293, 4.116626, -2.747906, 2.805792, -3.683064, 3.081186, -0.866097, -3.728239, 2.896537, -2.179638, 2.049638, -2.039762, -2.005133, 4.61604, 0.971433, 0.371962, -1.641699, 4.067559, -1.650458, 1.520683, -1.244573, -0.223834, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.739083, "min_abs": 0.0, "max_abs": 4.61604, "positive": 31, "negative": 20, "zero": 123 }, "rank_score": 102.956332 }, { "name": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101010000000100000100000100000000010100010001000000010000000000010000000100010000000000010001000001000001000100000000000000000000010000000000000000000000000100000000000000000", "hard_bits_sha256_16": "381a21c249766a5e", "hard_weight_174": 21, "llr_full_174": [ -3.903775, 0.0, 0.371962, 0.0, -3.550132, 0.0, 0.0, 0.0, 2.144982, 0.0, 0.0, 0.0, -3.683064, 0.0, 0.0, 0.0, 3.304358, 0.0, -0.223834, 0.0, 3.370789, 0.0, 0.0, 0.0, -2.072304, 0.0, 0.0, 0.0, 2.049638, 0.0, 0.0, 0.0, 0.736832, 0.0, -1.650458, 0.0, -3.492025, 0.0, 0.0, 0.0, -1.217068, 0.0, 0.0, 0.0, -3.728239, 0.0, 0.0, 0.0, 4.198216, 0.0, 0.0, 0.0, -2.747906, 0.0, 0.0, 0.0, 1.032513, 0.0, 0.0, 0.0, 4.61604, 0.0, 0.0, 0.0, -3.84703, 0.0, 4.067559, 0.0, 3.055165, 0.0, 0.0, 0.0, -1.917489, 0.0, 0.0, 0.0, -0.866097, 0.0, 0.0, 0.0, 0.072644, 0.0, 0.0, 0.0, 4.116626, 0.0, 0.0, 0.0, -1.016056, 0.0, 0.0, 0.0, -2.005133, 0.0, 0.0, 0.0, 0.544065, 0.0, -1.244573, 0.0, 4.024359, 0.0, 0.0, 0.0, -1.113849, 0.0, 0.0, 0.0, -2.179638, 0.0, 0.0, 0.0, 4.040302, 0.0, 0.0, 0.0, 2.805792, 0.0, 0.0, 0.0, 3.475137, 0.0, 0.0, 0.0, 0.971433, 0.0, 0.0, 0.0, 4.070281, 0.0, -1.641699, 0.0, 3.481024, 0.0, 0.0, 0.0, 2.16115, 0.0, 0.0, 0.0, 3.081186, 0.0, 0.0, 0.0, 3.522097, 0.0, 0.0, 0.0, 1.735293, 0.0, 0.0, 0.0, 4.397118, 0.0, 0.0, 0.0, -2.039762, 0.0, 0.0, 0.0, 3.1786, 0.0, 1.520683, 0.0, 3.314887, 0.0, 0.0, 0.0, 2.103109, 0.0, 0.0, 0.0, 2.896537, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.739083, "min_abs": 0.0, "max_abs": 4.61604, "positive": 31, "negative": 20, "zero": 123 }, "rank_score": 102.956332 }, { "name": "mapped_raw_msb+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'raw_msb', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100000100000001000000000010000000000100000001000000001000000000000000100100001000000000000100100100001001000000000000000100100000000001001000000000000000000000000000001010000", "hard_bits_sha256_16": "fca44866905bd8fa", "hard_weight_174": 21, "llr_full_174": [ -3.903775, 0.0, 0.0, 2.805792, 0.0, 0.0, -1.113849, 0.0, 0.0, 1.520683, 0.0, 0.072644, 0.0, 0.0, -2.039762, 0.0, 0.0, 3.055165, 0.0, 0.0, 0.0, 0.0, 3.1786, 0.0, 0.0, -3.728239, 0.0, 0.0, 1.032513, 0.0, 0.0, 0.0, 0.0, 2.16115, 0.0, 0.0, 0.371962, 0.0, 0.0, 3.370789, 0.0, 0.0, 0.0, 0.0, -3.84703, 0.0, 0.0, 3.081186, 0.0, 0.0, 4.397118, 0.0, 0.0, -0.223834, 0.0, 4.040302, 0.0, 0.0, 4.61604, 0.0, 0.0, 3.314887, 0.0, 0.0, 0.0, 0.0, 3.304358, 0.0, 0.0, -2.179638, 0.0, 0.0, -3.550132, 0.0, 0.0, 0.0, 0.0, -1.217068, 0.0, 0.0, 4.067559, 0.0, 4.116626, 0.0, 0.0, 0.0, 0.0, 4.070281, 0.0, 0.0, -3.683064, 0.0, 0.0, -2.072304, 0.0, 0.0, -1.244573, 0.0, 4.198216, 0.0, 0.0, -2.005133, 0.0, 0.0, -3.492025, 0.0, 0.0, 0.0, 0.0, 0.544065, 0.0, 0.0, 2.896537, 0.0, 0.0, 3.475137, 0.0, 0.0, 0.0, 0.0, -1.917489, 0.0, 0.0, -1.641699, 0.0, 0.0, 1.735293, 0.0, 0.0, 0.0, 0.0, 0.736832, 0.0, 0.0, -0.866097, 0.0, 0.0, -1.016056, 0.0, 0.0, 0.0, 0.0, 2.144982, 0.0, 0.0, 0.971433, 0.0, 0.0, 4.024359, 0.0, 0.0, 0.0, 0.0, 3.522097, 0.0, 0.0, 2.049638, 0.0, 0.0, 3.481024, 0.0, 0.0, 0.0, 0.0, 2.103109, 0.0, 0.0, -1.650458, 0.0, -2.747906, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.739083, "min_abs": 0.0, "max_abs": 4.61604, "positive": 31, "negative": 20, "zero": 123 }, "rank_score": 102.956332 }, { "name": "mapped_lsb_within_each_tone+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101000000000110110010010010000010101101110100101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "hard_bits_sha256_16": "2faf6aeacf68a286", "hard_weight_174": 21, "llr_full_174": [ -3.84703, 4.070281, -3.903775, 0.544065, 3.1786, 0.736832, 0.072644, 3.522097, 3.304358, 2.144982, 4.040302, 4.198216, -1.217068, -1.917489, 2.16115, -2.072304, -1.113849, 2.103109, 1.032513, -1.016056, 4.397118, 3.481024, -3.550132, 3.475137, 3.314887, -3.492025, 3.055165, 1.735293, 3.370789, 4.024359, 2.805792, -2.747906, 4.116626, -0.866097, 3.081186, -3.683064, -2.179638, 2.896537, -3.728239, -2.005133, -2.039762, 2.049638, 0.371962, 0.971433, 4.61604, -1.650458, 4.067559, -1.641699, -0.223834, -1.244573, 1.520683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.739083, "min_abs": 0.0, "max_abs": 4.61604, "positive": 31, "negative": 20, "zero": 123 }, "rank_score": 102.956332 }, { "name": "mapped_lsb_within_each_tone+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100010000000100000000000000010000010100000001000000010000000100010000000100010000000000010000000001000001000100000000000000000000010000010000000000000000000100000100000100000", "hard_bits_sha256_16": "866d867978229ea0", "hard_weight_174": 21, "llr_full_174": [ -3.84703, 0.0, 4.61604, 0.0, -3.550132, 0.0, 0.0, 0.0, 4.198216, 0.0, 0.0, 0.0, -0.866097, 0.0, 0.0, 0.0, 0.072644, 0.0, 1.520683, 0.0, 3.370789, 0.0, 0.0, 0.0, 2.103109, 0.0, 0.0, 0.0, -2.005133, 0.0, 0.0, 0.0, 0.544065, 0.0, -1.641699, 0.0, -3.492025, 0.0, 0.0, 0.0, 2.16115, 0.0, 0.0, 0.0, -2.179638, 0.0, 0.0, 0.0, 2.144982, 0.0, 0.0, 0.0, -2.747906, 0.0, 0.0, 0.0, 4.397118, 0.0, 0.0, 0.0, 0.371962, 0.0, 0.0, 0.0, -3.903775, 0.0, 4.067559, 0.0, 3.314887, 0.0, 0.0, 0.0, -1.917489, 0.0, 0.0, 0.0, -3.683064, 0.0, 0.0, 0.0, 3.304358, 0.0, 0.0, 0.0, 2.805792, 0.0, 0.0, 0.0, -1.016056, 0.0, 0.0, 0.0, 2.049638, 0.0, 0.0, 0.0, 0.736832, 0.0, -1.244573, 0.0, 1.735293, 0.0, 0.0, 0.0, -1.113849, 0.0, 0.0, 0.0, -3.728239, 0.0, 0.0, 0.0, 4.040302, 0.0, 0.0, 0.0, 4.116626, 0.0, 0.0, 0.0, 3.481024, 0.0, 0.0, 0.0, 0.971433, 0.0, 0.0, 0.0, 4.070281, 0.0, -1.650458, 0.0, 3.475137, 0.0, 0.0, 0.0, -1.217068, 0.0, 0.0, 0.0, 3.081186, 0.0, 0.0, 0.0, 3.522097, 0.0, 0.0, 0.0, 4.024359, 0.0, 0.0, 0.0, 1.032513, 0.0, 0.0, 0.0, -2.039762, 0.0, 0.0, 0.0, 3.1786, 0.0, -0.223834, 0.0, 3.055165, 0.0, 0.0, 0.0, -2.072304, 0.0, 0.0, 0.0, 2.896537, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.739083, "min_abs": 0.0, "max_abs": 4.61604, "positive": 31, "negative": 20, "zero": 123 }, "rank_score": 102.956332 }, { "name": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'lsb_within_each_tone', 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100000100100001000000000010000000100000000001000000000000010000000000100100000000000000000100000100000001000000000000000100100000000001001000000000000000000100000001001010000", "hard_bits_sha256_16": "680530ddebd56ff7", "hard_weight_174": 21, "llr_full_174": [ -3.84703, 0.0, 0.0, 4.116626, 0.0, 0.0, -1.113849, 0.0, 0.0, -0.223834, 0.0, 3.304358, 0.0, 0.0, -2.039762, 0.0, 0.0, 3.314887, 0.0, 0.0, 0.0, 0.0, 3.1786, 0.0, 0.0, -2.179638, 0.0, 0.0, 4.397118, 0.0, 0.0, 0.0, 0.0, -1.217068, 0.0, 0.0, 4.61604, 0.0, 0.0, 3.370789, 0.0, 0.0, 0.0, 0.0, -3.903775, 0.0, 0.0, 3.081186, 0.0, 0.0, 1.032513, 0.0, 0.0, 1.520683, 0.0, 4.040302, 0.0, 0.0, 0.371962, 0.0, 0.0, 3.055165, 0.0, 0.0, 0.0, 0.0, 0.072644, 0.0, 0.0, -3.728239, 0.0, 0.0, -3.550132, 0.0, 0.0, 0.0, 0.0, 2.16115, 0.0, 0.0, 4.067559, 0.0, 2.805792, 0.0, 0.0, 0.0, 0.0, 4.070281, 0.0, 0.0, -0.866097, 0.0, 0.0, 2.103109, 0.0, 0.0, -1.244573, 0.0, 2.144982, 0.0, 0.0, 2.049638, 0.0, 0.0, -3.492025, 0.0, 0.0, 0.0, 0.0, 0.736832, 0.0, 0.0, 2.896537, 0.0, 0.0, 3.481024, 0.0, 0.0, 0.0, 0.0, -1.917489, 0.0, 0.0, -1.650458, 0.0, 0.0, 4.024359, 0.0, 0.0, 0.0, 0.0, 0.544065, 0.0, 0.0, -3.683064, 0.0, 0.0, -1.016056, 0.0, 0.0, 0.0, 0.0, 4.198216, 0.0, 0.0, 0.971433, 0.0, 0.0, 1.735293, 0.0, 0.0, 0.0, 0.0, 3.522097, 0.0, 0.0, -2.005133, 0.0, 0.0, 3.475137, 0.0, 0.0, 0.0, 0.0, -2.072304, 0.0, 0.0, -1.641699, 0.0, -2.747906, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.739083, "min_abs": 0.0, "max_abs": 4.61604, "positive": 31, "negative": 20, "zero": 123 }, "rank_score": 102.956332 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100000000000010010011011011000011100100010001100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "hard_bits_sha256_16": "c61cf3382094e589", "hard_weight_174": 17, "llr_full_174": [ -3.903775, 3.270923, 3.302363, 0.736832, 1.217233, 1.002312, 3.304358, 3.032231, 0.132996, 4.198216, 3.473391, 2.02146, 2.16115, -1.768798, 0.587027, 2.103109, -1.081058, 0.607786, 4.397118, -0.994635, -0.458664, 3.475137, -2.835727, -2.838815, 3.055165, -2.58068, -2.733105, 4.024359, 3.005957, 1.580571, 4.116626, -2.534017, -2.095367, -3.683064, 0.812568, 2.757916, -3.728239, 1.805753, 2.568328, 2.049638, -1.941228, 0.925458, 4.61604, 0.95835, 0.173418, -1.641699, 1.756661, 1.747553, 1.520683, -1.006402, -0.097243, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.646099, "min_abs": 0.0, "max_abs": 4.61604, "positive": 34, "negative": 17, "zero": 123 }, "rank_score": 102.584396 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101010000000100000000000000000000000100000001000000010001000000000000000100000000000000010000000001000001000000000001000000000000010100000000000000000000000100000001000000000", "hard_bits_sha256_16": "0b81699c96bbfef8", "hard_weight_174": 17, "llr_full_174": [ -3.903775, 0.0, 0.173418, 0.0, -2.835727, 0.0, 0.0, 0.0, 2.02146, 0.0, 0.0, 0.0, -3.683064, 0.0, 0.0, 0.0, 3.304358, 0.0, -0.097243, 0.0, 3.005957, 0.0, 0.0, 0.0, 0.607786, 0.0, 0.0, 0.0, 2.049638, 0.0, 0.0, 0.0, 0.736832, 0.0, 1.747553, 0.0, -2.58068, 0.0, 0.0, 0.0, 0.587027, 0.0, 0.0, 0.0, -3.728239, 0.0, 0.0, 0.0, 4.198216, 0.0, 0.0, 0.0, -2.534017, 0.0, 0.0, 0.0, -0.458664, 0.0, 0.0, 0.0, 4.61604, 0.0, 0.0, 0.0, 3.302363, 0.0, 1.756661, 0.0, 3.055165, 0.0, 0.0, 0.0, -1.768798, 0.0, 0.0, 0.0, 2.757916, 0.0, 0.0, 0.0, 0.132996, 0.0, 0.0, 0.0, 4.116626, 0.0, 0.0, 0.0, -0.994635, 0.0, 0.0, 0.0, 0.925458, 0.0, 0.0, 0.0, 1.002312, 0.0, -1.006402, 0.0, 4.024359, 0.0, 0.0, 0.0, -1.081058, 0.0, 0.0, 0.0, 2.568328, 0.0, 0.0, 0.0, 3.473391, 0.0, 0.0, 0.0, -2.095367, 0.0, 0.0, 0.0, 3.475137, 0.0, 0.0, 0.0, 0.95835, 0.0, 0.0, 0.0, 3.270923, 0.0, -1.641699, 0.0, -2.838815, 0.0, 0.0, 0.0, 2.16115, 0.0, 0.0, 0.0, 0.812568, 0.0, 0.0, 0.0, 3.032231, 0.0, 0.0, 0.0, 1.580571, 0.0, 0.0, 0.0, 4.397118, 0.0, 0.0, 0.0, -1.941228, 0.0, 0.0, 0.0, 1.217233, 0.0, 1.520683, 0.0, -2.733105, 0.0, 0.0, 0.0, 2.103109, 0.0, 0.0, 0.0, 1.805753, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.646099, "min_abs": 0.0, "max_abs": 4.61604, "positive": 34, "negative": 17, "zero": 123 }, "rank_score": 102.584396 }, { "name": "mapped_ft8_gray_primary_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100100100000001000000000010010000000100000000000000000000000010000000000100000000000000000100000100000001000000000000000100100000000000001000000000000000000000100000000010000", "hard_bits_sha256_16": "9c3c6afa38e8ba65", "hard_weight_174": 17, "llr_full_174": [ -3.903775, 0.0, 0.0, -2.095367, 0.0, 0.0, -1.081058, 0.0, 0.0, 1.520683, 0.0, 0.132996, 0.0, 0.0, -1.941228, 0.0, 0.0, 3.055165, 0.0, 0.0, 0.0, 0.0, 1.217233, 0.0, 0.0, -3.728239, 0.0, 0.0, -0.458664, 0.0, 0.0, 0.0, 0.0, 2.16115, 0.0, 0.0, 0.173418, 0.0, 0.0, 3.005957, 0.0, 0.0, 0.0, 0.0, 3.302363, 0.0, 0.0, 0.812568, 0.0, 0.0, 4.397118, 0.0, 0.0, -0.097243, 0.0, 3.473391, 0.0, 0.0, 4.61604, 0.0, 0.0, -2.733105, 0.0, 0.0, 0.0, 0.0, 3.304358, 0.0, 0.0, 2.568328, 0.0, 0.0, -2.835727, 0.0, 0.0, 0.0, 0.0, 0.587027, 0.0, 0.0, 1.756661, 0.0, 4.116626, 0.0, 0.0, 0.0, 0.0, 3.270923, 0.0, 0.0, -3.683064, 0.0, 0.0, 0.607786, 0.0, 0.0, -1.006402, 0.0, 4.198216, 0.0, 0.0, 0.925458, 0.0, 0.0, -2.58068, 0.0, 0.0, 0.0, 0.0, 1.002312, 0.0, 0.0, 1.805753, 0.0, 0.0, 3.475137, 0.0, 0.0, 0.0, 0.0, -1.768798, 0.0, 0.0, -1.641699, 0.0, 0.0, 1.580571, 0.0, 0.0, 0.0, 0.0, 0.736832, 0.0, 0.0, 2.757916, 0.0, 0.0, -0.994635, 0.0, 0.0, 0.0, 0.0, 2.02146, 0.0, 0.0, 0.95835, 0.0, 0.0, 4.024359, 0.0, 0.0, 0.0, 0.0, 3.032231, 0.0, 0.0, 2.049638, 0.0, 0.0, -2.838815, 0.0, 0.0, 0.0, 0.0, 2.103109, 0.0, 0.0, 1.747553, 0.0, -2.534017, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.646099, "min_abs": 0.0, "max_abs": 4.61604, "positive": 34, "negative": 17, "zero": 123 }, "rank_score": 102.584396 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "111000000000010010011011011000011111111010001111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "hard_bits_sha256_16": "4aee5bca20fc6b67", "hard_weight_174": 25, "llr_full_174": [ -3.903775, -3.290764, -3.259655, 0.736832, 0.67314, 0.498652, 3.304358, 2.71525, 0.068472, 4.198216, 3.423262, 2.007042, 2.16115, -1.355558, 0.85662, 2.103109, -0.836982, 0.829743, 4.397118, -0.987058, -0.452364, 3.475137, -2.819673, -2.822717, 3.055165, -2.558212, -2.707497, 4.024359, 2.952571, 1.563309, 4.116626, -2.522266, -2.087149, -3.683064, -2.645517, -0.781632, -3.728239, -2.536484, -1.788252, 2.049638, -1.368151, 1.34651, 4.61604, 0.949374, 0.166158, -1.641699, -1.560298, -1.568314, 1.520683, -0.741039, 0.123359, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.62976, "min_abs": 0.0, "max_abs": 4.61604, "positive": 27, "negative": 24, "zero": 123 }, "rank_score": 102.51904 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "101010000000100000000000000000000010100000001000000010001000000010100000100010000000000010000000001000001000100000001000000000001010100000001000000000000000100000001000000010", "hard_bits_sha256_16": "f22e4dcce81eec58", "hard_weight_174": 25, "llr_full_174": [ -3.903775, 0.0, 0.166158, 0.0, -2.819673, 0.0, 0.0, 0.0, 2.007042, 0.0, 0.0, 0.0, -3.683064, 0.0, 0.0, 0.0, 3.304358, 0.0, 0.123359, 0.0, 2.952571, 0.0, 0.0, 0.0, 0.829743, 0.0, 0.0, 0.0, 2.049638, 0.0, 0.0, 0.0, 0.736832, 0.0, -1.568314, 0.0, -2.558212, 0.0, 0.0, 0.0, 0.85662, 0.0, 0.0, 0.0, -3.728239, 0.0, 0.0, 0.0, 4.198216, 0.0, 0.0, 0.0, -2.522266, 0.0, 0.0, 0.0, -0.452364, 0.0, 0.0, 0.0, 4.61604, 0.0, 0.0, 0.0, -3.259655, 0.0, -1.560298, 0.0, 3.055165, 0.0, 0.0, 0.0, -1.355558, 0.0, 0.0, 0.0, -0.781632, 0.0, 0.0, 0.0, 0.068472, 0.0, 0.0, 0.0, 4.116626, 0.0, 0.0, 0.0, -0.987058, 0.0, 0.0, 0.0, 1.34651, 0.0, 0.0, 0.0, 0.498652, 0.0, -0.741039, 0.0, 4.024359, 0.0, 0.0, 0.0, -0.836982, 0.0, 0.0, 0.0, -1.788252, 0.0, 0.0, 0.0, 3.423262, 0.0, 0.0, 0.0, -2.087149, 0.0, 0.0, 0.0, 3.475137, 0.0, 0.0, 0.0, 0.949374, 0.0, 0.0, 0.0, -3.290764, 0.0, -1.641699, 0.0, -2.822717, 0.0, 0.0, 0.0, 2.16115, 0.0, 0.0, 0.0, -2.645517, 0.0, 0.0, 0.0, 2.71525, 0.0, 0.0, 0.0, 1.563309, 0.0, 0.0, 0.0, 4.397118, 0.0, 0.0, 0.0, -1.368151, 0.0, 0.0, 0.0, 0.67314, 0.0, 1.520683, 0.0, -2.707497, 0.0, 0.0, 0.0, 2.103109, 0.0, 0.0, 0.0, -2.536484, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.62976, "min_abs": 0.0, "max_abs": 4.61604, "positive": 27, "negative": 24, "zero": 123 }, "rank_score": 102.51904 }, { "name": "mapped_ft8_gray_alt_high_demap_msb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': False, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100100100000001000000000010010000000100000001001000000000000010000000100100000001000000100100000100000001000000010000000100100000000001001000000000000000000000100000001010000", "hard_bits_sha256_16": "b89f73cac087d787", "hard_weight_174": 25, "llr_full_174": [ -3.903775, 0.0, 0.0, -2.087149, 0.0, 0.0, -0.836982, 0.0, 0.0, 1.520683, 0.0, 0.068472, 0.0, 0.0, -1.368151, 0.0, 0.0, 3.055165, 0.0, 0.0, 0.0, 0.0, 0.67314, 0.0, 0.0, -3.728239, 0.0, 0.0, -0.452364, 0.0, 0.0, 0.0, 0.0, 2.16115, 0.0, 0.0, 0.166158, 0.0, 0.0, 2.952571, 0.0, 0.0, 0.0, 0.0, -3.259655, 0.0, 0.0, -2.645517, 0.0, 0.0, 4.397118, 0.0, 0.0, 0.123359, 0.0, 3.423262, 0.0, 0.0, 4.61604, 0.0, 0.0, -2.707497, 0.0, 0.0, 0.0, 0.0, 3.304358, 0.0, 0.0, -1.788252, 0.0, 0.0, -2.819673, 0.0, 0.0, 0.0, 0.0, 0.85662, 0.0, 0.0, -1.560298, 0.0, 4.116626, 0.0, 0.0, 0.0, 0.0, -3.290764, 0.0, 0.0, -3.683064, 0.0, 0.0, 0.829743, 0.0, 0.0, -0.741039, 0.0, 4.198216, 0.0, 0.0, 1.34651, 0.0, 0.0, -2.558212, 0.0, 0.0, 0.0, 0.0, 0.498652, 0.0, 0.0, -2.536484, 0.0, 0.0, 3.475137, 0.0, 0.0, 0.0, 0.0, -1.355558, 0.0, 0.0, -1.641699, 0.0, 0.0, 1.563309, 0.0, 0.0, 0.0, 0.0, 0.736832, 0.0, 0.0, -0.781632, 0.0, 0.0, -0.987058, 0.0, 0.0, 0.0, 0.0, 2.007042, 0.0, 0.0, 0.949374, 0.0, 0.0, 4.024359, 0.0, 0.0, 0.0, 0.0, 2.71525, 0.0, 0.0, 2.049638, 0.0, 0.0, -2.822717, 0.0, 0.0, 0.0, 0.0, 2.103109, 0.0, 0.0, -1.568314, 0.0, -2.522266, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.62976, "min_abs": 0.0, "max_abs": 4.61604, "positive": 27, "negative": 24, "zero": 123 }, "rank_score": 102.51904 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100000000000101101011011011000011100100101110100101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "hard_bits_sha256_16": "06806b0b89bc27b8", "hard_weight_174": 22, "llr_full_174": [ -3.84703, 3.302363, 3.270923, 0.544065, 1.002312, 1.217233, 0.072644, 0.132996, 3.032231, 2.144982, 2.02146, 3.473391, -1.217068, 0.587027, -1.768798, -2.072304, 0.607786, -1.081058, 1.032513, -0.458664, -0.994635, 3.481024, -2.838815, -2.835727, 3.314887, -2.733105, -2.58068, 1.735293, 1.580571, 3.005957, 2.805792, -2.095367, -2.534017, -0.866097, 2.757916, 0.812568, -2.179638, 2.568328, 1.805753, -2.005133, 0.925458, -1.941228, 0.371962, 0.173418, 0.95835, -1.650458, 1.747553, 1.756661, -0.223834, -0.097243, -1.006402, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.51305, "min_abs": 0.0, "max_abs": 3.84703, "positive": 30, "negative": 21, "zero": 123 }, "rank_score": 102.0522 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100010000000100000100000100010000000100010001000000010001000100000000000000000000000000010001000000000000000000000001000000010000010100010000000000000000000000000101000100000", "hard_bits_sha256_16": "b9fd564c5533951d", "hard_weight_174": 22, "llr_full_174": [ -3.84703, 0.0, 0.95835, 0.0, -2.838815, 0.0, 0.0, 0.0, 3.473391, 0.0, 0.0, 0.0, -0.866097, 0.0, 0.0, 0.0, 0.072644, 0.0, -1.006402, 0.0, 1.580571, 0.0, 0.0, 0.0, -1.081058, 0.0, 0.0, 0.0, -2.005133, 0.0, 0.0, 0.0, 0.544065, 0.0, 1.756661, 0.0, -2.733105, 0.0, 0.0, 0.0, -1.768798, 0.0, 0.0, 0.0, -2.179638, 0.0, 0.0, 0.0, 2.144982, 0.0, 0.0, 0.0, -2.095367, 0.0, 0.0, 0.0, -0.994635, 0.0, 0.0, 0.0, 0.371962, 0.0, 0.0, 0.0, 3.270923, 0.0, 1.747553, 0.0, 3.314887, 0.0, 0.0, 0.0, 0.587027, 0.0, 0.0, 0.0, 0.812568, 0.0, 0.0, 0.0, 3.032231, 0.0, 0.0, 0.0, 2.805792, 0.0, 0.0, 0.0, -0.458664, 0.0, 0.0, 0.0, -1.941228, 0.0, 0.0, 0.0, 1.217233, 0.0, -0.097243, 0.0, 1.735293, 0.0, 0.0, 0.0, 0.607786, 0.0, 0.0, 0.0, 1.805753, 0.0, 0.0, 0.0, 2.02146, 0.0, 0.0, 0.0, -2.534017, 0.0, 0.0, 0.0, 3.481024, 0.0, 0.0, 0.0, 0.173418, 0.0, 0.0, 0.0, 3.302363, 0.0, -1.650458, 0.0, -2.835727, 0.0, 0.0, 0.0, -1.217068, 0.0, 0.0, 0.0, 2.757916, 0.0, 0.0, 0.0, 0.132996, 0.0, 0.0, 0.0, 3.005957, 0.0, 0.0, 0.0, 1.032513, 0.0, 0.0, 0.0, 0.925458, 0.0, 0.0, 0.0, 1.002312, 0.0, -0.223834, 0.0, -2.58068, 0.0, 0.0, 0.0, -2.072304, 0.0, 0.0, 0.0, 2.568328, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.51305, "min_abs": 0.0, "max_abs": 3.84703, "positive": 30, "negative": 21, "zero": 123 }, "rank_score": 102.0522 }, { "name": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_primary', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100100000100000000000000010010000100000000000000000001000010010000000000100001000000000000100100000001001000000000000000000100000000000001000000010000000000100100001000010000", "hard_bits_sha256_16": "3f6c6dcbe50de48d", "hard_weight_174": 22, "llr_full_174": [ -3.84703, 0.0, 0.0, -2.534017, 0.0, 0.0, 0.607786, 0.0, 0.0, -0.223834, 0.0, 3.032231, 0.0, 0.0, 0.925458, 0.0, 0.0, 3.314887, 0.0, 0.0, 0.0, 0.0, 1.002312, 0.0, 0.0, -2.179638, 0.0, 0.0, -0.994635, 0.0, 0.0, 0.0, 0.0, -1.217068, 0.0, 0.0, 0.95835, 0.0, 0.0, 1.580571, 0.0, 0.0, 0.0, 0.0, 3.270923, 0.0, 0.0, 2.757916, 0.0, 0.0, 1.032513, 0.0, 0.0, -1.006402, 0.0, 2.02146, 0.0, 0.0, 0.371962, 0.0, 0.0, -2.58068, 0.0, 0.0, 0.0, 0.0, 0.072644, 0.0, 0.0, 1.805753, 0.0, 0.0, -2.838815, 0.0, 0.0, 0.0, 0.0, -1.768798, 0.0, 0.0, 1.747553, 0.0, 2.805792, 0.0, 0.0, 0.0, 0.0, 3.302363, 0.0, 0.0, -0.866097, 0.0, 0.0, -1.081058, 0.0, 0.0, -0.097243, 0.0, 2.144982, 0.0, 0.0, -1.941228, 0.0, 0.0, -2.733105, 0.0, 0.0, 0.0, 0.0, 1.217233, 0.0, 0.0, 2.568328, 0.0, 0.0, 3.481024, 0.0, 0.0, 0.0, 0.0, 0.587027, 0.0, 0.0, -1.650458, 0.0, 0.0, 3.005957, 0.0, 0.0, 0.0, 0.0, 0.544065, 0.0, 0.0, 0.812568, 0.0, 0.0, -0.458664, 0.0, 0.0, 0.0, 0.0, 3.473391, 0.0, 0.0, 0.173418, 0.0, 0.0, 1.735293, 0.0, 0.0, 0.0, 0.0, 0.132996, 0.0, 0.0, -2.005133, 0.0, 0.0, -2.835727, 0.0, 0.0, 0.0, 0.0, -2.072304, 0.0, 0.0, 1.756661, 0.0, -2.095367, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.51305, "min_abs": 0.0, "max_abs": 3.84703, "positive": 30, "negative": 21, "zero": 123 }, "rank_score": 102.0522 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+no_interleaver", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'none'}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "111000000000101101011011011000011111111101110111101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "hard_bits_sha256_16": "3032993a5c8723fe", "hard_weight_174": 30, "llr_full_174": [ -3.84703, -3.259655, -3.290764, 0.544065, 0.498652, 0.67314, 0.072644, 0.068472, 2.71525, 2.144982, 2.007042, 3.423262, -1.217068, 0.85662, -1.355558, -2.072304, 0.829743, -0.836982, 1.032513, -0.452364, -0.987058, 3.481024, -2.822717, -2.819673, 3.314887, -2.707497, -2.558212, 1.735293, 1.563309, 2.952571, 2.805792, -2.087149, -2.522266, -0.866097, -0.781632, -2.645517, -2.179638, -1.788252, -2.536484, -2.005133, 1.34651, -1.368151, 0.371962, 0.166158, 0.949374, -1.650458, -1.568314, -1.560298, -0.223834, 0.123359, -0.741039, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.496711, "min_abs": 0.0, "max_abs": 3.84703, "positive": 23, "negative": 28, "zero": 123 }, "rank_score": 101.986844 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'deinterleave_rx_to_codeword', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100010000000100000100000100010000010100010001000000010001000100010100000000010000000000010001000000000000000100000001000000010001010100010001000000000000000000000101000100010", "hard_bits_sha256_16": "490eb09e880ce3c5", "hard_weight_174": 30, "llr_full_174": [ -3.84703, 0.0, 0.949374, 0.0, -2.822717, 0.0, 0.0, 0.0, 3.423262, 0.0, 0.0, 0.0, -0.866097, 0.0, 0.0, 0.0, 0.072644, 0.0, -0.741039, 0.0, 1.563309, 0.0, 0.0, 0.0, -0.836982, 0.0, 0.0, 0.0, -2.005133, 0.0, 0.0, 0.0, 0.544065, 0.0, -1.560298, 0.0, -2.707497, 0.0, 0.0, 0.0, -1.355558, 0.0, 0.0, 0.0, -2.179638, 0.0, 0.0, 0.0, 2.144982, 0.0, 0.0, 0.0, -2.087149, 0.0, 0.0, 0.0, -0.987058, 0.0, 0.0, 0.0, 0.371962, 0.0, 0.0, 0.0, -3.290764, 0.0, -1.568314, 0.0, 3.314887, 0.0, 0.0, 0.0, 0.85662, 0.0, 0.0, 0.0, -2.645517, 0.0, 0.0, 0.0, 2.71525, 0.0, 0.0, 0.0, 2.805792, 0.0, 0.0, 0.0, -0.452364, 0.0, 0.0, 0.0, -1.368151, 0.0, 0.0, 0.0, 0.67314, 0.0, 0.123359, 0.0, 1.735293, 0.0, 0.0, 0.0, 0.829743, 0.0, 0.0, 0.0, -2.536484, 0.0, 0.0, 0.0, 2.007042, 0.0, 0.0, 0.0, -2.522266, 0.0, 0.0, 0.0, 3.481024, 0.0, 0.0, 0.0, 0.166158, 0.0, 0.0, 0.0, -3.259655, 0.0, -1.650458, 0.0, -2.819673, 0.0, 0.0, 0.0, -1.217068, 0.0, 0.0, 0.0, -0.781632, 0.0, 0.0, 0.0, 0.068472, 0.0, 0.0, 0.0, 2.952571, 0.0, 0.0, 0.0, 1.032513, 0.0, 0.0, 0.0, 1.34651, 0.0, 0.0, 0.0, 0.498652, 0.0, -0.223834, 0.0, -2.558212, 0.0, 0.0, 0.0, -2.072304, 0.0, 0.0, 0.0, -1.788252, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.496711, "min_abs": 0.0, "max_abs": 3.84703, "positive": 23, "negative": 28, "zero": 123 }, "rank_score": 101.986844 }, { "name": "mapped_ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse", "description": "Step 54 mapped LDPC candidate: {'tone_mapping': 'ft8_gray_alt_high', 'gray_direction': 'inverse_observed_to_plain', 'reverse_bits_within_tone_before_gray': True, 'interleaver': 'ft8_bitrev', 'direction': 'interleave_codeword_to_rx_inverse', 'order_len': 174}", "bit_count": 174, "llr_count": 174, "complete_174bit_candidate": true, "hard_bits_174": "100100000100000000000000010010000100000000001001000001000010010000000100100001001000000100100100000001001000000010000000000100000000001001000000010000000000100100001001010000", "hard_bits_sha256_16": "39071c522458775a", "hard_weight_174": 30, "llr_full_174": [ -3.84703, 0.0, 0.0, -2.522266, 0.0, 0.0, 0.829743, 0.0, 0.0, -0.223834, 0.0, 2.71525, 0.0, 0.0, 1.34651, 0.0, 0.0, 3.314887, 0.0, 0.0, 0.0, 0.0, 0.498652, 0.0, 0.0, -2.179638, 0.0, 0.0, -0.987058, 0.0, 0.0, 0.0, 0.0, -1.217068, 0.0, 0.0, 0.949374, 0.0, 0.0, 1.563309, 0.0, 0.0, 0.0, 0.0, -3.290764, 0.0, 0.0, -0.781632, 0.0, 0.0, 1.032513, 0.0, 0.0, -0.741039, 0.0, 2.007042, 0.0, 0.0, 0.371962, 0.0, 0.0, -2.558212, 0.0, 0.0, 0.0, 0.0, 0.072644, 0.0, 0.0, -2.536484, 0.0, 0.0, -2.822717, 0.0, 0.0, 0.0, 0.0, -1.355558, 0.0, 0.0, -1.568314, 0.0, 2.805792, 0.0, 0.0, 0.0, 0.0, -3.259655, 0.0, 0.0, -0.866097, 0.0, 0.0, -0.836982, 0.0, 0.0, 0.123359, 0.0, 2.144982, 0.0, 0.0, -1.368151, 0.0, 0.0, -2.707497, 0.0, 0.0, 0.0, 0.0, 0.67314, 0.0, 0.0, -1.788252, 0.0, 0.0, 3.481024, 0.0, 0.0, 0.0, 0.0, 0.85662, 0.0, 0.0, -1.650458, 0.0, 0.0, 2.952571, 0.0, 0.0, 0.0, 0.0, 0.544065, 0.0, 0.0, -2.645517, 0.0, 0.0, -0.452364, 0.0, 0.0, 0.0, 0.0, 3.423262, 0.0, 0.0, 0.166158, 0.0, 0.0, 1.735293, 0.0, 0.0, 0.0, 0.0, 0.068472, 0.0, 0.0, -2.005133, 0.0, 0.0, -2.819673, 0.0, 0.0, 0.0, 0.0, -2.072304, 0.0, 0.0, -1.560298, 0.0, -2.087149, 0.0, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 174, "avg_abs": 0.496711, "min_abs": 0.0, "max_abs": 3.84703, "positive": 23, "negative": 28, "zero": 123 }, "rank_score": 101.986844 }, { "name": "raw_msb_symbol_order", "description": "Current FEC bridge: Costas-stripped symbols, MSB-first tone bits.", "bit_count": 54, "llr_count": 54, "complete_174bit_candidate": false, "hard_bits_174": "101000000000011011010010010000010101101011001101011000", "hard_bits_sha256_16": "204f1e6796735fa8", "hard_weight_174": 21, "llr_full_174": [ -3.903775, 4.070281, -3.84703, 0.736832, 3.1786, 0.544065, 3.304358, 3.522097, 0.072644, 4.198216, 4.040302, 2.144982, 2.16115, -1.917489, -1.217068, 2.103109, -1.113849, -2.072304, 4.397118, -1.016056, 1.032513, 3.475137, -3.550132, 3.481024, 3.055165, -3.492025, 3.314887, 4.024359, 3.370789, 1.735293, 4.116626, -2.747906, 2.805792, -3.683064, 3.081186, -0.866097, -3.728239, 2.896537, -2.179638, 2.049638, -2.039762, -2.005133, 4.61604, 0.971433, 0.371962, -1.641699, 4.067559, -1.650458, 1.520683, -1.244573, -0.223834, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 54, "avg_abs": 2.381491, "min_abs": 0.0, "max_abs": 4.61604, "positive": 31, "negative": 20, "zero": 3 }, "rank_score": 58.560447 }, { "name": "lsb_within_each_tone", "description": "Same symbols, but each 3-bit tone value reversed for bit-order comparison.", "bit_count": 54, "llr_count": 54, "complete_174bit_candidate": false, "hard_bits_174": "101000000000110110010010010000010101101110100101110000", "hard_bits_sha256_16": "cc479d993115acf8", "hard_weight_174": 21, "llr_full_174": [ -3.903775, 4.070281, -3.84703, 0.736832, 3.1786, 0.544065, 3.304358, 3.522097, 0.072644, 4.198216, 4.040302, 2.144982, 2.16115, -1.917489, -1.217068, 2.103109, -1.113849, -2.072304, 4.397118, -1.016056, 1.032513, 3.475137, -3.550132, 3.481024, 3.055165, -3.492025, 3.314887, 4.024359, 3.370789, 1.735293, 4.116626, -2.747906, 2.805792, -3.683064, 3.081186, -0.866097, -3.728239, 2.896537, -2.179638, 2.049638, -2.039762, -2.005133, 4.61604, 0.971433, 0.371962, -1.641699, 4.067559, -1.650458, 1.520683, -1.244573, -0.223834, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 54, "avg_abs": 2.381491, "min_abs": 0.0, "max_abs": 4.61604, "positive": 31, "negative": 20, "zero": 3 }, "rank_score": 50.560447 }, { "name": "reverse_symbol_order", "description": "Same 3-bit symbols in reverse order; diagnostic only.", "bit_count": 54, "llr_count": 54, "complete_174bit_candidate": false, "hard_bits_174": "000011101001011101101010000010010010011011000000000101", "hard_bits_sha256_16": "d22fe029f4381664", "hard_weight_174": 21, "llr_full_174": [ 0.0, 0.0, 0.0, -0.223834, -1.244573, 1.520683, -1.650458, 4.067559, -1.641699, 0.371962, 0.971433, 4.61604, -2.005133, -2.039762, 2.049638, -2.179638, 2.896537, -3.728239, -0.866097, 3.081186, -3.683064, 2.805792, -2.747906, 4.116626, 1.735293, 3.370789, 4.024359, 3.314887, -3.492025, 3.055165, 3.481024, -3.550132, 3.475137, 1.032513, -1.016056, 4.397118, -2.072304, -1.113849, 2.103109, -1.217068, -1.917489, 2.16115, 2.144982, 4.040302, 4.198216, 0.072644, 3.522097, 3.304358, 0.544065, 3.1786, 0.736832, -3.84703, 4.070281, -3.903775 ], "llr_stats": { "count": 54, "avg_abs": 2.381491, "min_abs": 0.0, "max_abs": 4.61604, "positive": 31, "negative": 20, "zero": 3 }, "rank_score": 44.560447 }, { "name": "reverse_full_bitstream", "description": "Full hard-bit stream reversed; diagnostic only.", "bit_count": 54, "llr_count": 54, "complete_174bit_candidate": false, "hard_bits_174": "000110101100110101101010000010010010110110000000000101", "hard_bits_sha256_16": "173d93d602e1d69e", "hard_weight_174": 21, "llr_full_174": [ 0.0, 0.0, 0.0, -0.223834, -1.244573, 1.520683, -1.650458, 4.067559, -1.641699, 0.371962, 0.971433, 4.61604, -2.005133, -2.039762, 2.049638, -2.179638, 2.896537, -3.728239, -0.866097, 3.081186, -3.683064, 2.805792, -2.747906, 4.116626, 1.735293, 3.370789, 4.024359, 3.314887, -3.492025, 3.055165, 3.481024, -3.550132, 3.475137, 1.032513, -1.016056, 4.397118, -2.072304, -1.113849, 2.103109, -1.217068, -1.917489, 2.16115, 2.144982, 4.040302, 4.198216, 0.072644, 3.522097, 3.304358, 0.544065, 3.1786, 0.736832, -3.84703, 4.070281, -3.903775 ], "llr_stats": { "count": 54, "avg_abs": 2.381491, "min_abs": 0.0, "max_abs": 4.61604, "positive": 31, "negative": 20, "zero": 3 }, "rank_score": 43.560447 }, { "name": "lab_mask_xor_preview", "description": "Deterministic lab-only XOR mask preview; not the real JS8 whitening polynomial.", "bit_count": 54, "llr_count": 54, "complete_174bit_candidate": false, "hard_bits_174": "001000110011001111101011101011000101000001110011111101", "hard_bits_sha256_16": "3ecbea4aad63263f", "hard_weight_174": 29, "llr_full_174": [ -3.903775, 4.070281, -3.84703, 0.736832, 3.1786, 0.544065, 3.304358, 3.522097, 0.072644, 4.198216, 4.040302, 2.144982, 2.16115, -1.917489, -1.217068, 2.103109, -1.113849, -2.072304, 4.397118, -1.016056, 1.032513, 3.475137, -3.550132, 3.481024, 3.055165, -3.492025, 3.314887, 4.024359, 3.370789, 1.735293, 4.116626, -2.747906, 2.805792, -3.683064, 3.081186, -0.866097, -3.728239, 2.896537, -2.179638, 2.049638, -2.039762, -2.005133, 4.61604, 0.971433, 0.371962, -1.641699, 4.067559, -1.650458, 1.520683, -1.244573, -0.223834, 0.0, 0.0, 0.0 ], "llr_stats": { "count": 54, "avg_abs": 2.381491, "min_abs": 0.0, "max_abs": 4.61604, "positive": 31, "negative": 20, "zero": 3 }, "rank_score": 32.560447 } ], "outputs": { "candidate_json": "/decoders/js8_decoder/runtime/step85_fec_candidates_window0/js8_step85_window_00_0000_0015_fec_candidate_step17.json", "selected_bits_file": "/decoders/js8_decoder/runtime/step85_fec_candidates_window0/js8_step85_window_00_0000_0015_fec_candidate_step17.bits" }, "decodes": [], "warnings": [ "FEC candidate is incomplete: 54/174 soft bits available; missing 120. Use a longer/complete JS8 frame WAV for LDPC experiments.", "Step 54 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 54 profile-anchor guard: FEC symbols were extracted from the selected profile sync anchor instead of re-running an independent sync search.", "Step 54 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 54 does not decode JS8 text yet. It probes FT8-style Gray de-mapping, bit order and 174-bit interleaver candidates for real LDPC/FEC integration.", "lab_mask_xor_preview is only a repeatable diagnostic mask, not a confirmed JS8 whitening implementation.", "Step 54 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] JSON output: /decoders/js8_decoder/logs/20260528T091124Z_step85_window0_post_ldpc_info87_runtime_export_output.json [webftr-js8-lab] JSON timeout guard: 180s { "ok": true, "tool": "webftr-js8-post-ldpc-info87-runtime-export-probe", "tool_version": "step63-source-exact-interleaver-whitening-index-extract", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "input_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0000_0015.wav", "log_dir": "/decoders/js8_decoder/logs", "output_dir": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window0", "candidate_json": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window0/js8_step85_window_00_0000_0015_fec_candidate_step17.json", "matrix_error": null, "soft_error": null, "matrix_ok": true, "soft_ok": true, "runtime_info87_rows_count": 48, "zero_distance_candidate_count": 0, "best_distance": 4, "best_runtime_info87_row": { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_16", "info87_bits": [ 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1 ], "info87_bitstring": "010111111011111111111101101111111111111011110111111111111101111101110111111111111101111", "info87_llr": [ 3.903775, -0.0, 3.728239, -0.0, -0.0, -0.0, -4.067559, -0.0, -0.0, 1.244573, -0.0, -0.0, -0.0, -3.475137, -0.0, -3.314887, -0.0, -0.0, -0.0, -0.0, -2.049638, -0.0, 1.917489, -0.0, -0.0, 1.113849, -0.0, -1.735293, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -4.040302, -0.0, 2.039762, -0.0, -0.0, -0.0, -0.0, 3.492025, -0.0, -0.072644, -0.0, -0.0, -0.544065, -0.0, -3.081186, -0.0, -0.0, -0.0, -1.520683, -3.370789, -0.0, 3.84703, -0.0, -0.0, -0.0, -0.0, -2.896537, -0.371962, -0.0, -0.0, -0.0, 2.072304, -0.0, -3.055165, -0.0, -0.0, -4.024359, -0.0, -3.522097, -0.0, -0.0, -0.0, -0.0, -2.144982, -0.0, 2.747906, -0.0, -0.0, -0.0, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 16, 17, 18, 19, 21, 23, 24, 26 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 4079, "computed_crc12": 2766, "message_preview_12chars": "Nx+zl+xt+zzt", "message_words_6bit": [ 23, 59, 63, 61, 47, 63, 59, 55, 63, 61, 61, 55 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword" }, "runtime_info87_rows_preview": [ { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_16", "info87_bits": [ 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1 ], "info87_bitstring": "010111111011111111111101101111111111111011110111111111111101111101110111111111111101111", "info87_llr": [ 3.903775, -0.0, 3.728239, -0.0, -0.0, -0.0, -4.067559, -0.0, -0.0, 1.244573, -0.0, -0.0, -0.0, -3.475137, -0.0, -3.314887, -0.0, -0.0, -0.0, -0.0, -2.049638, -0.0, 1.917489, -0.0, -0.0, 1.113849, -0.0, -1.735293, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -4.040302, -0.0, 2.039762, -0.0, -0.0, -0.0, -0.0, 3.492025, -0.0, -0.072644, -0.0, -0.0, -0.544065, -0.0, -3.081186, -0.0, -0.0, -0.0, -1.520683, -3.370789, -0.0, 3.84703, -0.0, -0.0, -0.0, -0.0, -2.896537, -0.371962, -0.0, -0.0, -0.0, 2.072304, -0.0, -3.055165, -0.0, -0.0, -4.024359, -0.0, -3.522097, -0.0, -0.0, -0.0, -0.0, -2.144982, -0.0, 2.747906, -0.0, -0.0, -0.0, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 16, 17, 18, 19, 21, 23, 24, 26 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 4079, "computed_crc12": 2766, "message_preview_12chars": "Nx+zl+xt+zzt", "message_words_6bit": [ 23, 59, 63, 61, 47, 63, 59, 55, 63, 61, 61, 55 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "raw_msb+ft8_bitrev_deinterleave_rx_to_codeword+inverted_bits", "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_2", "info87_bits": [ 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "101000000000110110010010010000010101101110100101110000000000000000000000000000000000000", "info87_llr": [ -3.84703, 4.070281, 0.0, 0.0, 0.994676, 0.356328, 0.072644, 3.522097, 0.0, 0.0, 1.053028, 1.059526, -1.217068, -1.917489, 0.0, -0.0, -1.113849, 2.103109, 0.0, 0.0, 1.066436, 1.020508, -3.550132, 3.475137, 0.0, 0.0, 0.981988, 0.731089, 3.370789, 4.024359, 0.951884, -0.943953, 4.116626, -0.866097, 0.0, -0.0, -0.843506, 0.963577, -3.728239, -2.005133, 0.0, 0.0, 0.184387, 0.458686, 4.61604, -1.650458, 0.0, 0.0, -0.223834, -1.244573, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 8, 9, 14, 15, 18, 19, 24, 25, 34, 35, 40, 41, 46, 47, 50, 51 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 0, "computed_crc12": 2194, "message_preview_12chars": "e0sIGLkbm000", "message_words_6bit": [ 40, 0, 54, 18, 16, 21, 46, 37, 48, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_4", "info87_bits": [ 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "101000000000110110010010010000010101101110100101110000000000000000000000000000000000000", "info87_llr": [ -3.84703, 4.070281, 0.0, 0.0, 0.0, 0.0, 0.072644, 3.522097, 0.0, 0.0, 0.0, 0.0, -1.217068, -1.917489, 0.0, -0.0, -1.113849, 2.103109, 0.0, 0.0, 0.0, 0.0, -3.550132, 3.475137, 0.0, 0.0, 0.0, 0.0, 3.370789, 4.024359, 0.0, 0.0, 4.116626, -0.866097, 0.0, -0.0, 0.0, 0.0, -3.728239, -2.005133, 0.0, 0.0, 0.0, 0.0, 4.61604, -1.650458, 0.0, 0.0, -0.223834, -1.244573, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 4, 5, 8, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 27 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 0, "computed_crc12": 2194, "message_preview_12chars": "e0sIGLkbm000", "message_words_6bit": [ 40, 0, 54, 18, 16, 21, 46, 37, 48, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse" }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_16", "info87_bits": [ 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1 ], "info87_bitstring": "010111111011111111111101101111111111111011110111111111111101111101110111111111111101111", "info87_llr": [ 3.903775, -0.0, 3.728239, -0.0, -0.0, -0.0, -4.067559, -0.0, -0.0, 1.244573, -0.0, -0.0, -0.0, -3.475137, -0.0, -3.314887, -0.0, -0.0, -0.0, -0.0, -2.049638, -0.0, 1.917489, -0.0, -0.0, 1.113849, -0.0, -1.735293, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -4.040302, -0.0, 2.039762, -0.0, -0.0, -0.0, -0.0, 3.492025, -0.0, -0.072644, -0.0, -0.0, -0.544065, -0.0, -3.081186, -0.0, -0.0, -0.0, -1.520683, -3.370789, -0.0, 3.84703, -0.0, -0.0, -0.0, -0.0, -2.896537, -0.371962, -0.0, -0.0, -0.0, 2.072304, -0.0, -3.055165, -0.0, -0.0, -4.024359, -0.0, -3.522097, -0.0, -0.0, -0.0, -0.0, -2.144982, -0.0, 2.747906, -0.0, -0.0, -0.0, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 4, 5, 7, 8, 10, 11, 12, 14, 16, 17, 18, 19, 21, 23, 24, 26 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 4079, "computed_crc12": 2766, "message_preview_12chars": "Nx+zl+xt+zzt", "message_words_6bit": [ 23, 59, 63, 61, 47, 63, 59, 55, 63, 61, 61, 55 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_2", "info87_bits": [ 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "101000000000110110010010010000010101101110100101110000000000000000000000000000000000000", "info87_llr": [ -3.84703, 4.070281, 0.0, 0.0, 0.994676, 0.356328, 0.072644, 3.522097, 0.0, 0.0, 1.053028, 1.059526, -1.217068, -1.917489, 0.0, -0.0, -1.113849, 2.103109, 0.0, 0.0, 1.066436, 1.020508, -3.550132, 3.475137, 0.0, 0.0, 0.981988, 0.731089, 3.370789, 4.024359, 0.951884, -0.943953, 4.116626, -0.866097, 0.0, -0.0, -0.843506, 0.963577, -3.728239, -2.005133, 0.0, 0.0, 0.184387, 0.458686, 4.61604, -1.650458, 0.0, 0.0, -0.223834, -1.244573, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 8, 9, 14, 15, 18, 19, 24, 25, 34, 35, 40, 41, 46, 47, 50, 51 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 0, "computed_crc12": 2194, "message_preview_12chars": "e0sIGLkbm000", "message_words_6bit": [ 40, 0, 54, 18, 16, 21, 46, 37, 48, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_4", "info87_bits": [ 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "101000000000110110010010010000010101101110100101110000000000000000000000000000000000000", "info87_llr": [ -3.84703, 4.070281, 0.0, 0.0, 0.0, 0.0, 0.072644, 3.522097, 0.0, 0.0, 0.0, 0.0, -1.217068, -1.917489, 0.0, -0.0, -1.113849, 2.103109, 0.0, 0.0, 0.0, 0.0, -3.550132, 3.475137, 0.0, 0.0, 0.0, 0.0, 3.370789, 4.024359, 0.0, 0.0, 4.116626, -0.866097, 0.0, -0.0, 0.0, 0.0, -3.728239, -2.005133, 0.0, 0.0, 0.0, 0.0, 4.61604, -1.650458, 0.0, 0.0, -0.223834, -1.244573, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 4, 5, 8, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 27 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 0, "computed_crc12": 2194, "message_preview_12chars": "e0sIGLkbm000", "message_words_6bit": [ 40, 0, 54, 18, 16, 21, 46, 37, 48, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_0", "info87_bits": [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "100000000000110010000010000000000100001100000100110000000000000000000000000000000000000", "info87_llr": [ -3.84703, 4.070281, 0.0, 0.0, 0.0, 0.0, 0.072644, 3.522097, 0.0, 0.0, 0.0, 0.0, -1.217068, -1.917489, 0.0, -0.0, -1.113849, 2.103109, 0.0, 0.0, 0.0, 0.0, -3.550132, 3.475137, 0.0, 0.0, 0.0, 0.0, 3.370789, 4.024359, 0.0, 0.0, 4.116626, -0.866097, 0.0, -0.0, 0.0, 0.0, -3.728239, -2.005133, 0.0, 0.0, 0.0, 0.0, 4.61604, -1.650458, 0.0, 0.0, -0.223834, -1.244573, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 4, 5, 8, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 27 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 0, "computed_crc12": 2098, "message_preview_12chars": "W0o204C4m000", "message_words_6bit": [ 32, 0, 50, 2, 0, 4, 12, 4, 48, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.post_ldpc_info87_llr_rows", "row_name": "soft_export_1", "info87_bits": [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "100000000000110010000010000000000100001100000100110000000000000000000000000000000000000", "info87_llr": [ -3.84703, 4.070281, 0.0, 0.0, 0.0, 0.0, 0.072644, 3.522097, 0.0, 0.0, 0.0, 0.0, -1.217068, -1.917489, 0.0, -0.0, -1.113849, 2.103109, 0.0, 0.0, 0.0, 0.0, -3.550132, 3.475137, 0.0, 0.0, 0.0, 0.0, 3.370789, 4.024359, 0.0, 0.0, 4.116626, -0.866097, 0.0, -0.0, 0.0, 0.0, -3.728239, -2.005133, 0.0, 0.0, 0.0, 0.0, 4.61604, -1.650458, 0.0, 0.0, -0.223834, -1.244573, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 4, 5, 8, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 27 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 0, "computed_crc12": 2098, "message_preview_12chars": "W0o204C4m000", "message_words_6bit": [ 32, 0, 50, 2, 0, 4, 12, 4, 48, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "soft_meta": {} }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_0", "info87_bits": [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "100000000000110010000010000000000100001100000100110000000000000000000000000000000000000", "info87_llr": [ -3.84703, 4.070281, 0.0, 0.0, 0.0, 0.0, 0.072644, 3.522097, 0.0, 0.0, 0.0, 0.0, -1.217068, -1.917489, 0.0, -0.0, -1.113849, 2.103109, 0.0, 0.0, 0.0, 0.0, -3.550132, 3.475137, 0.0, 0.0, 0.0, 0.0, 3.370789, 4.024359, 0.0, 0.0, 4.116626, -0.866097, 0.0, -0.0, 0.0, 0.0, -3.728239, -2.005133, 0.0, 0.0, 0.0, 0.0, 4.61604, -1.650458, 0.0, 0.0, -0.223834, -1.244573, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 4, 5, 8, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 27 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 0, "computed_crc12": 2098, "message_preview_12chars": "W0o204C4m000", "message_words_6bit": [ 32, 0, 50, 2, 0, 4, 12, 4, 48, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse" }, { "source": "soft_decode.soft_decode_results", "row_name": "soft_result_1", "info87_bits": [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "100000000000110010000010000000000100001100000100110000000000000000000000000000000000000", "info87_llr": [ -3.84703, 4.070281, 0.0, 0.0, 0.0, 0.0, 0.072644, 3.522097, 0.0, 0.0, 0.0, 0.0, -1.217068, -1.917489, 0.0, -0.0, -1.113849, 2.103109, 0.0, 0.0, 0.0, 0.0, -3.550132, 3.475137, 0.0, 0.0, 0.0, 0.0, 3.370789, 4.024359, 0.0, 0.0, 4.116626, -0.866097, 0.0, -0.0, 0.0, 0.0, -3.728239, -2.005133, 0.0, 0.0, 0.0, 0.0, 4.61604, -1.650458, 0.0, 0.0, -0.223834, -1.244573, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 4, 5, 8, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 27 ], "message174_crc12": { "ok": true, "distance": 4, "crc_match": false, "received_crc12": 0, "computed_crc12": 2098, "message_preview_12chars": "W0o204C4m000", "message_words_6bit": [ 32, 0, 50, 2, 0, 4, 12, 4, 48, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_13", "info87_bits": [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "100000000000101101011011011000011100100101110100101000000000000000000000000000000000000", "info87_llr": [ -3.84703, 3.302363, 0.0, 0.0, 0.471575, 0.55713, 0.072644, 0.132996, 0.0, 0.0, 0.807216, 1.019938, -1.217068, 0.587027, 0.0, -0.0, 0.607786, -1.081058, 0.0, 0.0, -0.468384, 1.020508, -2.838815, -2.835727, 0.0, 0.0, -0.918831, 0.731089, 1.580571, 3.005957, 0.951884, -0.824667, -2.534017, -0.866097, 0.0, 0.0, -0.843506, 0.916839, 1.805753, -2.005133, 0.0, -0.0, 0.184387, 0.086546, 0.95835, -1.650458, 0.0, 0.0, -0.223834, -0.097243, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 8, 9, 14, 15, 18, 19, 24, 25, 34, 35, 40, 41, 46, 47, 50, 51 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 0, "computed_crc12": 3334, "message_preview_12chars": "W0jROSbqe000", "message_words_6bit": [ 32, 0, 45, 27, 24, 28, 37, 52, 40, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_14", "info87_bits": [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "100000000000101101011011011000011100100101110100101000000000000000000000000000000000000", "info87_llr": [ -3.84703, 3.302363, 0.0, 0.0, 0.0, 0.0, 0.072644, 0.132996, 0.0, 0.0, 0.0, 0.0, -1.217068, 0.587027, 0.0, -0.0, 0.607786, -1.081058, 0.0, 0.0, 0.0, 0.0, -2.838815, -2.835727, 0.0, 0.0, 0.0, 0.0, 1.580571, 3.005957, 0.0, 0.0, -2.534017, -0.866097, 0.0, 0.0, 0.0, 0.0, 1.805753, -2.005133, 0.0, -0.0, 0.0, 0.0, 0.95835, -1.650458, 0.0, 0.0, -0.223834, -0.097243, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 4, 5, 8, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 27 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 0, "computed_crc12": 3334, "message_preview_12chars": "W0jROSbqe000", "message_words_6bit": [ 32, 0, 45, 27, 24, 28, 37, 52, 40, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_msb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_interleave_codeword_to_rx_inverse" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_3", "info87_bits": [ 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], "info87_bitstring": "001100111111001111001111001100111111001100110111111100110111001111111111111111111111111", "info87_llr": [ 3.84703, -0.0, -0.0, -0.0, 0.956242, 0.956242, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 0.866097, -0.0, -0.0, -0.0, -0.03631, -0.03631, 1.006402, -0.0, -0.0, -0.0, -0.0, -0.0, 1.081058, -0.0, -0.0, -0.0, 0.803242, 0.803242, -0.0, -0.0, -0.0, -0.0, -0.737256, -0.737256, 2.733105, -0.0, -0.0, -0.0, 0.740724, 0.740724, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -2.144982, -0.0, -0.0, -0.0, 0.824667, 0.824667, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.371962, -0.0, -0.0, -0.0, -1.00331, -1.00331, -1.747553, -0.0, -0.0, -0.0, -0.0, -0.0, -0.587027, -0.0, -0.0, -0.0, -0.390189, -0.390189, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -2.805792, -0.0, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 2, 3, 6, 7, 8, 9, 10, 11, 13, 14, 15, 19, 20, 21, 22, 23, 25 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 4095, "computed_crc12": 988, "message_preview_12chars": "C+FFC+CtytF+", "message_words_6bit": [ 12, 63, 15, 15, 12, 63, 12, 55, 60, 55, 15, 63 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_msb_input+no_interleaver+inverted_bits", "variant": "mapped_ft8_gray_primary_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword" }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_13", "info87_bits": [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "100000000000101101011011011000011100100101110100101000000000000000000000000000000000000", "info87_llr": [ -3.84703, 3.302363, 0.0, 0.0, 0.471575, 0.55713, 0.072644, 0.132996, 0.0, 0.0, 0.807216, 1.019938, -1.217068, 0.587027, 0.0, -0.0, 0.607786, -1.081058, 0.0, 0.0, -0.468384, 1.020508, -2.838815, -2.835727, 0.0, 0.0, -0.918831, 0.731089, 1.580571, 3.005957, 0.951884, -0.824667, -2.534017, -0.866097, 0.0, 0.0, -0.843506, 0.916839, 1.805753, -2.005133, 0.0, -0.0, 0.184387, 0.086546, 0.95835, -1.650458, 0.0, 0.0, -0.223834, -0.097243, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 8, 9, 14, 15, 18, 19, 24, 25, 34, 35, 40, 41, 46, 47, 50, 51 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 0, "computed_crc12": 3334, "message_preview_12chars": "W0jROSbqe000", "message_words_6bit": [ 32, 0, 45, 27, 24, 28, 37, 52, 40, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_14", "info87_bits": [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "100000000000101101011011011000011100100101110100101000000000000000000000000000000000000", "info87_llr": [ -3.84703, 3.302363, 0.0, 0.0, 0.0, 0.0, 0.072644, 0.132996, 0.0, 0.0, 0.0, 0.0, -1.217068, 0.587027, 0.0, -0.0, 0.607786, -1.081058, 0.0, 0.0, 0.0, 0.0, -2.838815, -2.835727, 0.0, 0.0, 0.0, 0.0, 1.580571, 3.005957, 0.0, 0.0, -2.534017, -0.866097, 0.0, 0.0, 0.0, 0.0, 1.805753, -2.005133, 0.0, -0.0, 0.0, 0.0, 0.95835, -1.650458, 0.0, 0.0, -0.223834, -0.097243, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 2, 3, 4, 5, 8, 9, 10, 11, 14, 15, 18, 19, 20, 21, 24, 25, 26, 27 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 0, "computed_crc12": 3334, "message_preview_12chars": "W0jROSbqe000", "message_words_6bit": [ 32, 0, 45, 27, 24, 28, 37, 52, 40, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_3", "info87_bits": [ 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], "info87_bitstring": "001100111111001111001111001100111111001100110111111100110111001111111111111111111111111", "info87_llr": [ 3.84703, -0.0, -0.0, -0.0, 0.956242, 0.956242, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, 0.866097, -0.0, -0.0, -0.0, -0.03631, -0.03631, 1.006402, -0.0, -0.0, -0.0, -0.0, -0.0, 1.081058, -0.0, -0.0, -0.0, 0.803242, 0.803242, -0.0, -0.0, -0.0, -0.0, -0.737256, -0.737256, 2.733105, -0.0, -0.0, -0.0, 0.740724, 0.740724, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -2.144982, -0.0, -0.0, -0.0, 0.824667, 0.824667, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.371962, -0.0, -0.0, -0.0, -1.00331, -1.00331, -1.747553, -0.0, -0.0, -0.0, -0.0, -0.0, -0.587027, -0.0, -0.0, -0.0, -0.390189, -0.390189, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -2.805792, -0.0, -0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 2, 3, 6, 7, 8, 9, 10, 11, 13, 14, 15, 19, 20, 21, 22, 23, 25 ], "message174_crc12": { "ok": true, "distance": 5, "crc_match": false, "received_crc12": 4095, "computed_crc12": 988, "message_preview_12chars": "C+FFC+CtytF+", "message_words_6bit": [ 12, 63, 15, 15, 12, 63, 12, 55, 60, 55, 15, 63 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_10", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "001000000000011011101101101000101001001011110001011000000000000000000000000000000000000", "info87_llr": [ 3.302363, 2.594768, -2.845718, 1.002312, 0.514013, 0.387826, 0.132996, 0.120732, 2.467688, 2.02146, 1.815203, 3.07884, 0.587027, -0.410081, -1.272161, 0.607786, -0.293051, -0.814257, -0.458664, 0.208113, -0.96643, -2.838815, 2.147549, -2.413842, -2.733105, 1.965755, -2.100455, 1.580571, 1.375261, 2.698495, -2.095367, 1.607397, -2.348466, 2.757916, 0.70672, -0.768541, 2.568328, 1.43542, -1.673206, 0.925458, -0.671741, -1.319132, 0.173418, 0.077117, 0.936672, 1.747553, 1.088577, -1.037263, -0.097243, 0.045154, -0.614553, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 0, "computed_crc12": 1148, "message_preview_12chars": "80RjefBnO000", "message_words_6bit": [ 8, 0, 27, 45, 40, 41, 11, 49, 24, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_lsb_input+no_interleaver", "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_12", "info87_bits": [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ], "info87_bitstring": "100000000000100000100000100000000000000010001000000000001000100000001000100000000000100", "info87_llr": [ -3.259655, 0.0, 0.927954, 0.0, 2.131585, 0.0, 0.0, 0.0, 3.044819, 0.0, 0.0, 0.0, -0.781632, 0.0, 0.0, 0.0, 0.068472, 0.0, -0.462678, 0.0, 1.351633, 0.0, 0.0, 0.0, -0.640133, 0.0, 0.0, 0.0, 1.34651, 0.0, 0.0, 0.0, 0.498652, 0.0, 0.946898, 0.0, 1.942077, 0.0, 0.0, 0.0, -1.015452, 0.0, 0.0, 0.0, -1.788252, 0.0, 0.0, 0.0, 2.007042, 0.0, 0.0, 0.0, 1.597987, 0.0, 0.0, 0.0, -0.959131, 0.0, 0.0, 0.0, 0.166158, 0.0, 0.0, 0.0, 2.858617, 0.0, 0.913998, 0.0, -2.707497, 0.0, 0.0, 0.0, -0.486017, 0.0, 0.0, 0.0, 2.343998, 0.0, 0.0, 0.0, 2.276317, 0.0, 0.0, 0.0, -2.087149, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 5, 6, 7, 9, 10, 11, 13, 14, 15, 17, 19, 21, 22, 23, 25, 26 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 4, "computed_crc12": 3720, "message_preview_12chars": "W0WWW02808W8", "message_words_6bit": [ 32, 0, 32, 32, 32, 0, 2, 8, 0, 8, 32, 8 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_alt_high_demap_lsb_input+ft8_bitrev_deinterleave_rx_to_codeword", "variant": "mapped_ft8_gray_alt_high_demap_msb_input+no_interleaver" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_15", "info87_bits": [ 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1 ], "info87_bitstring": "010110111111110111101101111101101110111111110010111111111001101011111010111110111010111", "info87_llr": [ -0.371962, -0.0, 3.84703, -0.0, -3.1786, 1.244573, -3.304358, -0.0, -0.0, -0.0, -4.040302, -0.0, -2.16115, -0.0, 1.217068, -0.0, -0.0, -0.0, -0.0, 1.016056, -0.0, -0.0, 3.550132, -0.0, -4.067559, -0.0, -1.520683, -4.024359, 0.223834, -1.735293, -0.0, 2.747906, -0.0, -0.0, -0.0, 0.866097, -0.0, -2.896537, -0.0, -2.049638, -0.0, -0.0, -0.0, -0.971433, 3.903775, 1.641699, -3.055165, 1.650458, -3.314887, -0.544065, -3.370789, -3.522097, -0.0, -4.198216, -2.805792, -0.0, -3.081186, 1.917489, 3.728239, -2.103109, -0.0, 2.072304, -0.0, 2.005133, -0.0, -3.475137, -2.144982, -3.481024, -0.0, 3.492025, -0.0, 1.113849, -0.0, -4.397118, -4.116626, -1.032513, -0.0, 3.683064, -0.0, -0.072644, -0.0, 2.179638, -0.736832, 2.039762, -0.0, -4.61604, -4.070281 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 7, 8, 9, 11, 13, 15, 16, 17, 18, 20, 21, 23, 25, 30, 32, 33 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3543, "computed_crc12": 3890, "message_preview_12chars": "M+tjzk+o+vhw", "message_words_6bit": [ 22, 63, 55, 45, 61, 46, 63, 50, 63, 57, 43, 58 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "lsb_within_each_tone+ft8_bitrev_interleave_codeword_to_rx_inverse+inverted_bits", "variant": "mapped_raw_msb+ft8_bitrev_deinterleave_rx_to_codeword" }, { "source": "matrix_probe.all_matrix_probes", "row_name": "matrix_probe_9", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "001000000000011011101101101000101001001011110001011000000000000000000000000000000000000", "info87_llr": [ 3.302363, 3.25263, -2.348985, 1.002312, 0.721564, 0.588251, 0.132996, 0.181135, 2.697169, 2.02146, 1.828782, 3.118228, 0.587027, -0.520486, -1.432345, 0.607786, -0.370865, -0.90483, -0.458664, 0.194261, -0.983668, -2.838815, 1.902866, -2.80789, -2.733105, 1.664597, -2.545159, 1.580571, 1.392205, 2.745399, -2.095367, 1.52224, -2.512216, 2.757916, 0.809921, -0.666809, 2.568328, 1.795894, -1.337623, 0.925458, -0.78217, -1.471544, 0.173418, 0.085104, 0.946548, 1.747553, 1.627368, -0.621794, -0.097243, -0.129806, -0.812639, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 0, "computed_crc12": 1148, "message_preview_12chars": "80RjefBnO000", "message_words_6bit": [ 8, 0, 27, 45, 40, 41, 11, 49, 24, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "transform": "ft8_gray_primary_demap_lsb_input+no_interleaver", "variant": "mapped_ft8_gray_primary_demap_msb_input+no_interleaver" }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_10", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "001000000000011011101101101000101001001011110001011000000000000000000000000000000000000", "info87_llr": [ 3.302363, 2.594768, -2.845718, 1.002312, 0.514013, 0.387826, 0.132996, 0.120732, 2.467688, 2.02146, 1.815203, 3.07884, 0.587027, -0.410081, -1.272161, 0.607786, -0.293051, -0.814257, -0.458664, 0.208113, -0.96643, -2.838815, 2.147549, -2.413842, -2.733105, 1.965755, -2.100455, 1.580571, 1.375261, 2.698495, -2.095367, 1.607397, -2.348466, 2.757916, 0.70672, -0.768541, 2.568328, 1.43542, -1.673206, 0.925458, -0.671741, -1.319132, 0.173418, 0.077117, 0.936672, 1.747553, 1.088577, -1.037263, -0.097243, 0.045154, -0.614553, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 0, "computed_crc12": 1148, "message_preview_12chars": "80RjefBnO000", "message_words_6bit": [ 8, 0, 27, 45, 40, 41, 11, 49, 24, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_12", "info87_bits": [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ], "info87_bitstring": "100000000000100000100000100000000000000010001000000000001000100000001000100000000000100", "info87_llr": [ -3.259655, 0.0, 0.927954, 0.0, 2.131585, 0.0, 0.0, 0.0, 3.044819, 0.0, 0.0, 0.0, -0.781632, 0.0, 0.0, 0.0, 0.068472, 0.0, -0.462678, 0.0, 1.351633, 0.0, 0.0, 0.0, -0.640133, 0.0, 0.0, 0.0, 1.34651, 0.0, 0.0, 0.0, 0.498652, 0.0, 0.946898, 0.0, 1.942077, 0.0, 0.0, 0.0, -1.015452, 0.0, 0.0, 0.0, -1.788252, 0.0, 0.0, 0.0, 2.007042, 0.0, 0.0, 0.0, 1.597987, 0.0, 0.0, 0.0, -0.959131, 0.0, 0.0, 0.0, 0.166158, 0.0, 0.0, 0.0, 2.858617, 0.0, 0.913998, 0.0, -2.707497, 0.0, 0.0, 0.0, -0.486017, 0.0, 0.0, 0.0, 2.343998, 0.0, 0.0, 0.0, 2.276317, 0.0, 0.0, 0.0, -2.087149, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 5, 6, 7, 9, 10, 11, 13, 14, 15, 17, 19, 21, 22, 23, 25, 26 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 4, "computed_crc12": 3720, "message_preview_12chars": "W0WWW02808W8", "message_words_6bit": [ 32, 0, 32, 32, 32, 0, 2, 8, 0, 8, 32, 8 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_15", "info87_bits": [ 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1 ], "info87_bitstring": "010110111111110111101101111101101110111111110010111111111001101011111010111110111010111", "info87_llr": [ -0.371962, -0.0, 3.84703, -0.0, -3.1786, 1.244573, -3.304358, -0.0, -0.0, -0.0, -4.040302, -0.0, -2.16115, -0.0, 1.217068, -0.0, -0.0, -0.0, -0.0, 1.016056, -0.0, -0.0, 3.550132, -0.0, -4.067559, -0.0, -1.520683, -4.024359, 0.223834, -1.735293, -0.0, 2.747906, -0.0, -0.0, -0.0, 0.866097, -0.0, -2.896537, -0.0, -2.049638, -0.0, -0.0, -0.0, -0.971433, 3.903775, 1.641699, -3.055165, 1.650458, -3.314887, -0.544065, -3.370789, -3.522097, -0.0, -4.198216, -2.805792, -0.0, -3.081186, 1.917489, 3.728239, -2.103109, -0.0, 2.072304, -0.0, 2.005133, -0.0, -3.475137, -2.144982, -3.481024, -0.0, 3.492025, -0.0, 1.113849, -0.0, -4.397118, -4.116626, -1.032513, -0.0, 3.683064, -0.0, -0.072644, -0.0, 2.179638, -0.736832, 2.039762, -0.0, -4.61604, -4.070281 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 1, 3, 7, 8, 9, 11, 13, 15, 16, 17, 18, 20, 21, 23, 25, 30, 32, 33 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 3543, "computed_crc12": 3890, "message_preview_12chars": "M+tjzk+o+vhw", "message_words_6bit": [ 22, 63, 55, 45, 61, 46, 63, 50, 63, 57, 43, 58 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} }, { "source": "matrix_probe.post_ldpc_info87_llr_rows", "row_name": "matrix_export_9", "info87_bits": [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "info87_bitstring": "001000000000011011101101101000101001001011110001011000000000000000000000000000000000000", "info87_llr": [ 3.302363, 3.25263, -2.348985, 1.002312, 0.721564, 0.588251, 0.132996, 0.181135, 2.697169, 2.02146, 1.828782, 3.118228, 0.587027, -0.520486, -1.432345, 0.607786, -0.370865, -0.90483, -0.458664, 0.194261, -0.983668, -2.838815, 1.902866, -2.80789, -2.733105, 1.664597, -2.545159, 1.580571, 1.392205, 2.745399, -2.095367, 1.52224, -2.512216, 2.757916, 0.809921, -0.666809, 2.568328, 1.795894, -1.337623, 0.925458, -0.78217, -1.471544, 0.173418, 0.085104, 0.946548, 1.747553, 1.627368, -0.621794, -0.097243, -0.129806, -0.812639, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "info87_llr_count": 87, "least_reliable_info87_indices": [ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68 ], "message174_crc12": { "ok": true, "distance": 6, "crc_match": false, "received_crc12": 0, "computed_crc12": 1148, "message_preview_12chars": "80RjefBnO000", "message_words_6bit": [ 8, 0, 27, 45, 40, 41, 11, 49, 24, 0, 0, 0 ] }, "source_index_context": { "info87_scope": "post-LDPC information bits 0..86 from source-aligned message174/CRC12 contract", "message_words": "bits 0..71 form 12 x 6-bit words in extractmessage174()", "crc12_contract": "CRC12 poly 0xc06, xor 42; checkCRC12() extracts received CRC from packed bytes bits[9]/bits[10] after MSB-first packing", "deinterleaver_whitening_status": "not asserted as final; this probe exports runtime rows so the next step can align source-derived reorder/whitening indices against real LDPC rows" }, "matrix_meta": {} } ], "outputs": { "post_ldpc_info87_runtime_export_json": "/decoders/js8_decoder/runtime/step85_post_ldpc_info87_window0/step61_post_ldpc_info87_runtime_export.json" }, "warnings": [ "This is still a diagnostic runtime export, not a final JS8 text decoder.", "Step61 patches the runtime LDPC probes to expose post-LDPC info87 rows and source-index context for the next reorder/whitening alignment step." ], "next_action": "If best_distance is 0, implement source-confirmed message174 text unpack. If best_distance remains >0, build Step62 to test source-derived deinterleaver/whitening index maps against these exact runtime rows." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json [webftr-js8-lab] JSON timeout guard: 120s { "ok": true, "tool": "webftr-js8-source-exact-map-probe", "tool_version": "step64-source-confirmed-message174-decodes-output", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "source_checked": [ { "path": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "exists": true, "is_dir": true } ], "source": { "source_available": true, "source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "files_scanned": 16, "focused_files_present": [ "JS8_Mode/JS8.cpp", "JS8_Mode/JS8.h", "JS8_Mode/Decoder.cpp", "JS8_Mode/Decoder.h", "JS8_Mode/DecodedText.cpp", "JS8_Mode/DecodedText.h", "JS8_Mode/JS8Submode.cpp", "JS8_Mode/JS8Submode.h", "JS8_Mode/soft_combiner.h", "JS8_Mode/ldpc_feedback.h", "JS8_Mode/whitening_processor.h", "JS8_Include/commons.h", "JS8_Main/Varicode.cpp", "JS8_Main/Varicode.h", "JS8_JSC/JSC_map.cpp", "JS8_JSC/JSC_list.cpp" ], "focused_files_missing": [], "exact_maps": [], "source_evidence": [ { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 11, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 8, "end_line": 14, "lines": [ { "line": 8, "text": "#include \"JS8.h\"" }, { "line": 9, "text": "#include \"JS8_Include/commons.h\"" }, { "line": 10, "text": "#include \"JS8_Mode/FrequencyTracker.h\"" }, { "line": 11, "text": "#include \"JS8_Mode/whitening_processor.h\"" }, { "line": 12, "text": "#include \"ldpc_feedback.h\"" }, { "line": 13, "text": "#include \"soft_combiner.h\"" }, { "line": 14, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 12, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 9, "end_line": 15, "lines": [ { "line": 9, "text": "#include \"JS8_Include/commons.h\"" }, { "line": 10, "text": "#include \"JS8_Mode/FrequencyTracker.h\"" }, { "line": 11, "text": "#include \"JS8_Mode/whitening_processor.h\"" }, { "line": 12, "text": "#include \"ldpc_feedback.h\"" }, { "line": 13, "text": "#include \"soft_combiner.h\"" }, { "line": 14, "text": "" }, { "line": 15, "text": "#include " } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 729, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 726, "end_line": 732, "lines": [ { "line": 726, "text": "" }, { "line": 727, "text": "// Belief Propagation Decoder" }, { "line": 728, "text": "" }, { "line": 729, "text": "int bpdecode174(std::array const &llr, std::array &decoded," }, { "line": 730, "text": " std::array &cw) {" }, { "line": 731, "text": " // Initialize messages and variables" }, { "line": 732, "text": " std::array, N> tov =" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 748, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 745, "end_line": 751, "lines": [ { "line": 745, "text": " // Initialize toc (messages from bits to checks)" }, { "line": 746, "text": " for (int i = 0; i < M; ++i) {" }, { "line": 747, "text": " for (int j = 0; j < Nm[i].valid_neighbors; ++j) {" }, { "line": 748, "text": " toc[i][j] = llr[Nm[i].neighbors[j]];" }, { "line": 749, "text": " }" }, { "line": 750, "text": " }" }, { "line": 751, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 757, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 754, "end_line": 760, "lines": [ { "line": 754, "text": " // Update bit log likelihood ratios" }, { "line": 755, "text": " for (int i = 0; i < N; ++i) {" }, { "line": 756, "text": " zn[i] =" }, { "line": 757, "text": " llr[i] + std::accumulate(tov[i].begin()," }, { "line": 758, "text": " tov[i].begin() + BP_MAX_CHECKS, 0.0f);" }, { "line": 759, "text": " }" }, { "line": 760, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 782, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 779, "end_line": 785, "lines": [ { "line": 779, "text": " // Count errors" }, { "line": 780, "text": " int nerr = 0;" }, { "line": 781, "text": " for (int i = 0; i < N; ++i) {" }, { "line": 782, "text": " if ((2 * cw[i] - 1) * llr[i] < 0.0f) {" }, { "line": 783, "text": " ++nerr;" }, { "line": 784, "text": " }" }, { "line": 785, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 895, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "checkCRC12" ], "context": { "start_line": 892, "end_line": 898, "lines": [ { "line": 892, "text": " return boost::augmented_crc<12, 0xc06>(range.data(), range.size()) ^ 42;" }, { "line": 893, "text": "}" }, { "line": 894, "text": "" }, { "line": 895, "text": "bool checkCRC12(std::array const &decoded) {" }, { "line": 896, "text": " std::array bits = {};" }, { "line": 897, "text": "" }, { "line": 898, "text": " for (std::size_t i = 0; i < decoded.size(); ++i) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 918, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "message174", "extractmessage174" ], "context": { "start_line": 915, "end_line": 921, "lines": [ { "line": 915, "text": " return crc == CRC12(bits);" }, { "line": 916, "text": "}" }, { "line": 917, "text": "" }, { "line": 918, "text": "std::string extractmessage174(std::array const &decoded) {" }, { "line": 919, "text": " std::string message;" }, { "line": 920, "text": "" }, { "line": 921, "text": " // Ensure received CRC matches computed CRC." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 923, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "checkCRC12" ], "context": { "start_line": 920, "end_line": 926, "lines": [ { "line": 920, "text": "" }, { "line": 921, "text": " // Ensure received CRC matches computed CRC." }, { "line": 922, "text": "" }, { "line": 923, "text": " if (checkCRC12(decoded)) {" }, { "line": 924, "text": " message.reserve(12);" }, { "line": 925, "text": "" }, { "line": 926, "text": " // Decode the message from the 72 data bits" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 950, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 947, "end_line": 953, "lines": [ { "line": 947, "text": "// This should be 952 bytes in size; to store an 87x87 matrix of bits," }, { "line": 948, "text": "// you need 7569 bits, which requires 119 64-bit values, or 952 bytes." }, { "line": 949, "text": "//" }, { "line": 950, "text": "// Background here is that this is a low-density parity check code (LDPC)," }, { "line": 951, "text": "// generated using the PEG algorithm. In short, true values in a row i of" }, { "line": 952, "text": "// the matrix define which of the 87 message bits must be summed, modulo" }, { "line": 953, "text": "// 2, to produce the ith parity check bit. Decent references on this are:" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 959, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 956, "end_line": 962, "lines": [ { "line": 956, "text": "// 2. https://inference.org.uk/mackay/PEG_ECC.html" }, { "line": 957, "text": "// 3. https://github.com/Lcrypto/classic-PEG-" }, { "line": 958, "text": "//" }, { "line": 959, "text": "// The data used was harvested from the original 'ldpc_174_87_params.f90'," }, { "line": 960, "text": "// but you'll note that the rows have been reordered here, because this" }, { "line": 961, "text": "// isn't Fortran; C++ is row-major, not column-major." }, { "line": 962, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1084, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1081, "end_line": 1087, "lines": [ { "line": 1081, "text": " js8::SoftCombiner m_softCombiner;" }, { "line": 1082, "text": " bool m_enableFreqTracking = true;" }, { "line": 1083, "text": " bool m_enableTimingTracking = true;" }, { "line": 1084, "text": " float m_llrErasureThreshold = js8::llrErasureThreshold();" }, { "line": 1085, "text": " bool m_enableLdpcFeedback = js8::ldpcFeedbackEnabled();" }, { "line": 1086, "text": " int m_maxLdpcPasses = js8::ldpcFeedbackMaxPasses();" }, { "line": 1087, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1085, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1082, "end_line": 1088, "lines": [ { "line": 1082, "text": " bool m_enableFreqTracking = true;" }, { "line": 1083, "text": " bool m_enableTimingTracking = true;" }, { "line": 1084, "text": " float m_llrErasureThreshold = js8::llrErasureThreshold();" }, { "line": 1085, "text": " bool m_enableLdpcFeedback = js8::ldpcFeedbackEnabled();" }, { "line": 1086, "text": " int m_maxLdpcPasses = js8::ldpcFeedbackMaxPasses();" }, { "line": 1087, "text": "" }, { "line": 1088, "text": " using Plan = FFTWPlanManager::Type;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1086, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1083, "end_line": 1089, "lines": [ { "line": 1083, "text": " bool m_enableTimingTracking = true;" }, { "line": 1084, "text": " float m_llrErasureThreshold = js8::llrErasureThreshold();" }, { "line": 1085, "text": " bool m_enableLdpcFeedback = js8::ldpcFeedbackEnabled();" }, { "line": 1086, "text": " int m_maxLdpcPasses = js8::ldpcFeedbackMaxPasses();" }, { "line": 1087, "text": "" }, { "line": 1088, "text": " using Plan = FFTWPlanManager::Type;" }, { "line": 1089, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1473, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 1470, "end_line": 1476, "lines": [ { "line": 1470, "text": " symbolWinners[j] = winner;" }, { "line": 1471, "text": " }" }, { "line": 1472, "text": "" }, { "line": 1473, "text": " auto const whitening = js8::WhiteningProcessor::process(" }, { "line": 1474, "text": " s1, symbolWinners, m_llrErasureThreshold," }, { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1474, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1471, "end_line": 1477, "lines": [ { "line": 1471, "text": " }" }, { "line": 1472, "text": "" }, { "line": 1473, "text": " auto const whitening = js8::WhiteningProcessor::process(" }, { "line": 1474, "text": " s1, symbolWinners, m_llrErasureThreshold," }, { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" }, { "line": 1477, "text": " auto llr0 = whitening.llr0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1477, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten", "llr" ], "context": { "start_line": 1474, "end_line": 1480, "lines": [ { "line": 1474, "text": " s1, symbolWinners, m_llrErasureThreshold," }, { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" }, { "line": 1477, "text": " auto llr0 = whitening.llr0;" }, { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1478, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten", "llr" ], "context": { "start_line": 1475, "end_line": 1481, "lines": [ { "line": 1475, "text": " decoder_js8().isDebugEnabled());" }, { "line": 1476, "text": "" }, { "line": 1477, "text": " auto llr0 = whitening.llr0;" }, { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1480, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 1477, "end_line": 1483, "lines": [ { "line": 1477, "text": " auto llr0 = whitening.llr0;" }, { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." }, { "line": 1482, "text": " if (!whitening.erasureApplied) {" }, { "line": 1483, "text": " std::size_t erasuresAfterThreshold = 0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1481, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1478, "end_line": 1484, "lines": [ { "line": 1478, "text": " auto llr1 = whitening.llr1;" }, { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." }, { "line": 1482, "text": " if (!whitening.erasureApplied) {" }, { "line": 1483, "text": " std::size_t erasuresAfterThreshold = 0;" }, { "line": 1484, "text": " double sumAbsPreErasure = 0.0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1482, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "whiten" ], "context": { "start_line": 1479, "end_line": 1485, "lines": [ { "line": 1479, "text": "" }, { "line": 1480, "text": " // Only apply a second erasure threshold pass if whitening didn't" }, { "line": 1481, "text": " // already zero low-magnitude LLRs using the configured threshold." }, { "line": 1482, "text": " if (!whitening.erasureApplied) {" }, { "line": 1483, "text": " std::size_t erasuresAfterThreshold = 0;" }, { "line": 1484, "text": " double sumAbsPreErasure = 0.0;" }, { "line": 1485, "text": " double sumAbsPostErasure = 0.0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1487, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1484, "end_line": 1490, "lines": [ { "line": 1484, "text": " double sumAbsPreErasure = 0.0;" }, { "line": 1485, "text": " double sumAbsPostErasure = 0.0;" }, { "line": 1486, "text": "" }, { "line": 1487, "text": " auto const applyErasureThreshold = [&](auto &llr) {" }, { "line": 1488, "text": " for (auto const value : llr)" }, { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1488, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1485, "end_line": 1491, "lines": [ { "line": 1485, "text": " double sumAbsPostErasure = 0.0;" }, { "line": 1486, "text": "" }, { "line": 1487, "text": " auto const applyErasureThreshold = [&](auto &llr) {" }, { "line": 1488, "text": " for (auto const value : llr)" }, { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1491, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1488, "end_line": 1494, "lines": [ { "line": 1488, "text": " for (auto const value : llr)" }, { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" }, { "line": 1492, "text": " for (auto &value : llr) {" }, { "line": 1493, "text": " if (std::abs(value) < m_llrErasureThreshold) {" }, { "line": 1494, "text": " value = 0.0f;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1492, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1489, "end_line": 1495, "lines": [ { "line": 1489, "text": " sumAbsPreErasure += std::abs(value);" }, { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" }, { "line": 1492, "text": " for (auto &value : llr) {" }, { "line": 1493, "text": " if (std::abs(value) < m_llrErasureThreshold) {" }, { "line": 1494, "text": " value = 0.0f;" }, { "line": 1495, "text": " ++erasuresAfterThreshold;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1493, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1490, "end_line": 1496, "lines": [ { "line": 1490, "text": "" }, { "line": 1491, "text": " if (m_llrErasureThreshold > 0.0f) {" }, { "line": 1492, "text": " for (auto &value : llr) {" }, { "line": 1493, "text": " if (std::abs(value) < m_llrErasureThreshold) {" }, { "line": 1494, "text": " value = 0.0f;" }, { "line": 1495, "text": " ++erasuresAfterThreshold;" }, { "line": 1496, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1501, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1498, "end_line": 1504, "lines": [ { "line": 1498, "text": " sumAbsPostErasure += std::abs(value);" }, { "line": 1499, "text": " }" }, { "line": 1500, "text": " } else {" }, { "line": 1501, "text": " for (auto const value : llr)" }, { "line": 1502, "text": " sumAbsPostErasure += std::abs(value);" }, { "line": 1503, "text": " }" }, { "line": 1504, "text": " };" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1506, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1503, "end_line": 1509, "lines": [ { "line": 1503, "text": " }" }, { "line": 1504, "text": " };" }, { "line": 1505, "text": "" }, { "line": 1506, "text": " applyErasureThreshold(llr0);" }, { "line": 1507, "text": " applyErasureThreshold(llr1);" }, { "line": 1508, "text": "" }, { "line": 1509, "text": " if (decoder_js8().isDebugEnabled()) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1507, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1504, "end_line": 1510, "lines": [ { "line": 1504, "text": " };" }, { "line": 1505, "text": "" }, { "line": 1506, "text": " applyErasureThreshold(llr0);" }, { "line": 1507, "text": " applyErasureThreshold(llr1);" }, { "line": 1508, "text": "" }, { "line": 1509, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1510, "text": " auto const total =" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1511, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1508, "end_line": 1514, "lines": [ { "line": 1508, "text": "" }, { "line": 1509, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1510, "text": " auto const total =" }, { "line": 1511, "text": " static_cast(llr0.size() + llr1.size());" }, { "line": 1512, "text": " double const avgPre =" }, { "line": 1513, "text": " total > 0.0 ? sumAbsPreErasure / total : 0.0;" }, { "line": 1514, "text": " double const avgPost =" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1518, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1515, "end_line": 1521, "lines": [ { "line": 1515, "text": " total > 0.0 ? sumAbsPostErasure / total : 0.0;" }, { "line": 1516, "text": "" }, { "line": 1517, "text": " qCDebug(decoder_js8)" }, { "line": 1518, "text": " << \"LLR erasure threshold\" << m_llrErasureThreshold" }, { "line": 1519, "text": " << \"erasures:\" << erasuresAfterThreshold" }, { "line": 1520, "text": " << \"avg|LLR| pre/post:\" << avgPre << avgPost;" }, { "line": 1521, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1520, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1517, "end_line": 1523, "lines": [ { "line": 1517, "text": " qCDebug(decoder_js8)" }, { "line": 1518, "text": " << \"LLR erasure threshold\" << m_llrErasureThreshold" }, { "line": 1519, "text": " << \"erasures:\" << erasuresAfterThreshold" }, { "line": 1520, "text": " << \"avg|LLR| pre/post:\" << avgPre << avgPost;" }, { "line": 1521, "text": " }" }, { "line": 1522, "text": " }" }, { "line": 1523, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1529, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1526, "end_line": 1532, "lines": [ { "line": 1526, "text": " m_softCombiner.flush(ttl);" }, { "line": 1527, "text": "" }, { "line": 1528, "text": " auto const key =" }, { "line": 1529, "text": " m_softCombiner.makeKey(Mode::NSUBMODE, f1, xdt, llr0, llr1);" }, { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1530, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1527, "end_line": 1533, "lines": [ { "line": 1527, "text": "" }, { "line": 1528, "text": " auto const key =" }, { "line": 1529, "text": " m_softCombiner.makeKey(Mode::NSUBMODE, f1, xdt, llr0, llr1);" }, { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" }, { "line": 1533, "text": " auto llr1Combined = combined.llr1;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1532, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1529, "end_line": 1535, "lines": [ { "line": 1529, "text": " m_softCombiner.makeKey(Mode::NSUBMODE, f1, xdt, llr0, llr1);" }, { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" }, { "line": 1533, "text": " auto llr1Combined = combined.llr1;" }, { "line": 1534, "text": "" }, { "line": 1535, "text": " std::array decoded;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1533, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1530, "end_line": 1536, "lines": [ { "line": 1530, "text": " auto combined = m_softCombiner.combine(key, llr0, llr1, ttl);" }, { "line": 1531, "text": "" }, { "line": 1532, "text": " auto llr0Combined = combined.llr0;" }, { "line": 1533, "text": " auto llr1Combined = combined.llr1;" }, { "line": 1534, "text": "" }, { "line": 1535, "text": " std::array decoded;" }, { "line": 1536, "text": " std::array cw;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1538, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1535, "end_line": 1541, "lines": [ { "line": 1535, "text": " std::array decoded;" }, { "line": 1536, "text": " std::array cw;" }, { "line": 1537, "text": "" }, { "line": 1538, "text": " int totalLdpcPasses = 0;" }, { "line": 1539, "text": " bool usedFeedbackPass = false;" }, { "line": 1540, "text": " bool feedbackTurnedSuccess = false;" }, { "line": 1541, "text": " int feedbackConfident = 0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1544, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1541, "end_line": 1547, "lines": [ { "line": 1541, "text": " int feedbackConfident = 0;" }, { "line": 1542, "text": " int feedbackUncertain = 0;" }, { "line": 1543, "text": "" }, { "line": 1544, "text": " auto const tryDecode = [&](std::array const &llrInput," }, { "line": 1545, "text": " int ipass) -> std::optional {" }, { "line": 1546, "text": " nharderrors = bpdecode174(llrInput, decoded, cw);" }, { "line": 1547, "text": " xsnr = -99.0f;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1546, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1543, "end_line": 1549, "lines": [ { "line": 1543, "text": "" }, { "line": 1544, "text": " auto const tryDecode = [&](std::array const &llrInput," }, { "line": 1545, "text": " int ipass) -> std::optional {" }, { "line": 1546, "text": " nharderrors = bpdecode174(llrInput, decoded, cw);" }, { "line": 1547, "text": " xsnr = -99.0f;" }, { "line": 1548, "text": "" }, { "line": 1549, "text": " if (std::all_of(cw.begin(), cw.end()," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1558, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "checkCRC12" ], "context": { "start_line": 1555, "end_line": 1561, "lines": [ { "line": 1555, "text": " !(sync < 2.0f && nharderrors > 35) &&" }, { "line": 1556, "text": " !(ipass > 2 && nharderrors > 39) &&" }, { "line": 1557, "text": " !(ipass == 4 && nharderrors > 30)) {" }, { "line": 1558, "text": " if (checkCRC12(decoded)) {" }, { "line": 1559, "text": " if (syncStats)" }, { "line": 1560, "text": " emitEvent(JS8::Event::SyncState{" }, { "line": 1561, "text": " JS8::Event::SyncState::Type::DECODED," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1567, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "message174", "extractmessage174" ], "context": { "start_line": 1564, "end_line": 1570, "lines": [ { "line": 1564, "text": " xdt2," }, { "line": 1565, "text": " {.decoded = sync}});" }, { "line": 1566, "text": "" }, { "line": 1567, "text": " auto message = extractmessage174(decoded);" }, { "line": 1568, "text": "" }, { "line": 1569, "text": " int const i3bit =" }, { "line": 1570, "text": " (decoded[72] << 2) | (decoded[73] << 1) | decoded[74];" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1604, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1601, "end_line": 1607, "lines": [ { "line": 1601, "text": " };" }, { "line": 1602, "text": "" }, { "line": 1603, "text": " // Loop over decoding passes" }, { "line": 1604, "text": " for (int ipass = 1; ipass <= 4 && totalLdpcPasses < m_maxLdpcPasses;" }, { "line": 1605, "text": " ++ipass) {" }, { "line": 1606, "text": " auto &llr = ipass == 2 ? llr1Combined : llr0Combined;" }, { "line": 1607, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1606, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1603, "end_line": 1609, "lines": [ { "line": 1603, "text": " // Loop over decoding passes" }, { "line": 1604, "text": " for (int ipass = 1; ipass <= 4 && totalLdpcPasses < m_maxLdpcPasses;" }, { "line": 1605, "text": " ++ipass) {" }, { "line": 1606, "text": " auto &llr = ipass == 2 ? llr1Combined : llr0Combined;" }, { "line": 1607, "text": "" }, { "line": 1608, "text": " // Zero ranges for certain passes to mirror legacy behavior." }, { "line": 1609, "text": " if (ipass == 3)" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1610, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1607, "end_line": 1613, "lines": [ { "line": 1607, "text": "" }, { "line": 1608, "text": " // Zero ranges for certain passes to mirror legacy behavior." }, { "line": 1609, "text": " if (ipass == 3)" }, { "line": 1610, "text": " std::fill(llr0Combined.begin(), llr0Combined.begin() + 24," }, { "line": 1611, "text": " 0.0f);" }, { "line": 1612, "text": " else if (ipass == 4)" }, { "line": 1613, "text": " std::fill(llr0Combined.begin() + 24, llr0Combined.begin() + 48," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1613, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1610, "end_line": 1616, "lines": [ { "line": 1610, "text": " std::fill(llr0Combined.begin(), llr0Combined.begin() + 24," }, { "line": 1611, "text": " 0.0f);" }, { "line": 1612, "text": " else if (ipass == 4)" }, { "line": 1613, "text": " std::fill(llr0Combined.begin() + 24, llr0Combined.begin() + 48," }, { "line": 1614, "text": " 0.0f);" }, { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1616, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1613, "end_line": 1619, "lines": [ { "line": 1613, "text": " std::fill(llr0Combined.begin() + 24, llr0Combined.begin() + 48," }, { "line": 1614, "text": " 0.0f);" }, { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" }, { "line": 1617, "text": " if (auto result = tryDecode(llrPrimary, ipass)) {" }, { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1617, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1614, "end_line": 1620, "lines": [ { "line": 1614, "text": " 0.0f);" }, { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" }, { "line": 1617, "text": " if (auto result = tryDecode(llrPrimary, ipass)) {" }, { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" }, { "line": 1620, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1618, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1615, "end_line": 1621, "lines": [ { "line": 1615, "text": "" }, { "line": 1616, "text": " std::array llrPrimary = llr;" }, { "line": 1617, "text": " if (auto result = tryDecode(llrPrimary, ipass)) {" }, { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" }, { "line": 1620, "text": " }" }, { "line": 1621, "text": " ++totalLdpcPasses;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1621, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1618, "end_line": 1624, "lines": [ { "line": 1618, "text": " ++totalLdpcPasses;" }, { "line": 1619, "text": " return result;" }, { "line": 1620, "text": " }" }, { "line": 1621, "text": " ++totalLdpcPasses;" }, { "line": 1622, "text": "" }, { "line": 1623, "text": " // Feedback refinement and second attempt, if enabled and budget" }, { "line": 1624, "text": " // allows." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1625, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1622, "end_line": 1628, "lines": [ { "line": 1622, "text": "" }, { "line": 1623, "text": " // Feedback refinement and second attempt, if enabled and budget" }, { "line": 1624, "text": " // allows." }, { "line": 1625, "text": " if (m_enableLdpcFeedback && totalLdpcPasses < m_maxLdpcPasses) {" }, { "line": 1626, "text": " std::array llrRefined;" }, { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1626, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1623, "end_line": 1629, "lines": [ { "line": 1623, "text": " // Feedback refinement and second attempt, if enabled and budget" }, { "line": 1624, "text": " // allows." }, { "line": 1625, "text": " if (m_enableLdpcFeedback && totalLdpcPasses < m_maxLdpcPasses) {" }, { "line": 1626, "text": " std::array llrRefined;" }, { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" }, { "line": 1629, "text": " js8::refineLlrsWithLdpcFeedback(" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1629, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr", "LDPC", "ldpc" ], "context": { "start_line": 1626, "end_line": 1632, "lines": [ { "line": 1626, "text": " std::array llrRefined;" }, { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" }, { "line": 1629, "text": " js8::refineLlrsWithLdpcFeedback(" }, { "line": 1630, "text": " llrPrimary, cw, m_llrErasureThreshold, llrRefined," }, { "line": 1631, "text": " confident, uncertain);" }, { "line": 1632, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1630, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1627, "end_line": 1633, "lines": [ { "line": 1627, "text": " int confident = 0;" }, { "line": 1628, "text": " int uncertain = 0;" }, { "line": 1629, "text": " js8::refineLlrsWithLdpcFeedback(" }, { "line": 1630, "text": " llrPrimary, cw, m_llrErasureThreshold, llrRefined," }, { "line": 1631, "text": " confident, uncertain);" }, { "line": 1632, "text": "" }, { "line": 1633, "text": " if (decoder_js8().isDebugEnabled()) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1635, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1632, "end_line": 1638, "lines": [ { "line": 1632, "text": "" }, { "line": 1633, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1634, "text": " qCDebug(decoder_js8)" }, { "line": 1635, "text": " << \"LDPC feedback pass\"" }, { "line": 1636, "text": " << \"ipass\" << ipass << \"confident\" << confident" }, { "line": 1637, "text": " << \"uncertain\" << uncertain;" }, { "line": 1638, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1644, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 1641, "end_line": 1647, "lines": [ { "line": 1641, "text": " feedbackConfident += confident;" }, { "line": 1642, "text": " feedbackUncertain += uncertain;" }, { "line": 1643, "text": "" }, { "line": 1644, "text": " if (auto result = tryDecode(llrRefined, ipass)) {" }, { "line": 1645, "text": " ++totalLdpcPasses;" }, { "line": 1646, "text": " feedbackTurnedSuccess = true;" }, { "line": 1647, "text": " if (decoder_js8().isDebugEnabled()) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1645, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1642, "end_line": 1648, "lines": [ { "line": 1642, "text": " feedbackUncertain += uncertain;" }, { "line": 1643, "text": "" }, { "line": 1644, "text": " if (auto result = tryDecode(llrRefined, ipass)) {" }, { "line": 1645, "text": " ++totalLdpcPasses;" }, { "line": 1646, "text": " feedbackTurnedSuccess = true;" }, { "line": 1647, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1648, "text": " qCDebug(decoder_js8)" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1649, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1646, "end_line": 1652, "lines": [ { "line": 1646, "text": " feedbackTurnedSuccess = true;" }, { "line": 1647, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1648, "text": " qCDebug(decoder_js8)" }, { "line": 1649, "text": " << \"LDPC feedback succeeded on second pass\"" }, { "line": 1650, "text": " << \"ipass\" << ipass << \"confident\"" }, { "line": 1651, "text": " << feedbackConfident << \"uncertain\"" }, { "line": 1652, "text": " << feedbackUncertain << \"passes\" << totalLdpcPasses;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1652, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1649, "end_line": 1655, "lines": [ { "line": 1649, "text": " << \"LDPC feedback succeeded on second pass\"" }, { "line": 1650, "text": " << \"ipass\" << ipass << \"confident\"" }, { "line": 1651, "text": " << feedbackConfident << \"uncertain\"" }, { "line": 1652, "text": " << feedbackUncertain << \"passes\" << totalLdpcPasses;" }, { "line": 1653, "text": " }" }, { "line": 1654, "text": " return result;" }, { "line": 1655, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1657, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1654, "end_line": 1660, "lines": [ { "line": 1654, "text": " return result;" }, { "line": 1655, "text": " }" }, { "line": 1656, "text": "" }, { "line": 1657, "text": " ++totalLdpcPasses;" }, { "line": 1658, "text": " }" }, { "line": 1659, "text": " }" }, { "line": 1660, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1663, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1660, "end_line": 1666, "lines": [ { "line": 1660, "text": "" }, { "line": 1661, "text": " if (decoder_js8().isDebugEnabled()) {" }, { "line": 1662, "text": " qCDebug(decoder_js8)" }, { "line": 1663, "text": " << \"LDPC feedback summary\"" }, { "line": 1664, "text": " << \"used\" << usedFeedbackPass << \"success\"" }, { "line": 1665, "text": " << feedbackTurnedSuccess << \"confident\" << feedbackConfident" }, { "line": 1666, "text": " << \"uncertain\" << feedbackUncertain << \"passes\"" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/JS8.cpp", "line": 1667, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "LDPC", "ldpc" ], "context": { "start_line": 1664, "end_line": 1670, "lines": [ { "line": 1664, "text": " << \"used\" << usedFeedbackPass << \"success\"" }, { "line": 1665, "text": " << feedbackTurnedSuccess << \"confident\" << feedbackConfident" }, { "line": 1666, "text": " << \"uncertain\" << feedbackUncertain << \"passes\"" }, { "line": 1667, "text": " << totalLdpcPasses;" }, { "line": 1668, "text": " }" }, { "line": 1669, "text": "" }, { "line": 1670, "text": " logTracker(\"fail\");" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 22, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 19, "end_line": 25, "lines": [ { "line": 19, "text": "" }, { "line": 20, "text": "namespace js8 {" }, { "line": 21, "text": "/**" }, { "line": 22, "text": " * @brief Cache and combine repeated LLR frames for the same decode candidate." }, { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 24, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 21, "end_line": 27, "lines": [ { "line": 21, "text": "/**" }, { "line": 22, "text": " * @brief Cache and combine repeated LLR frames for the same decode candidate." }, { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" }, { "line": 26, "text": " * over-the-air behavior. Templated on the LLR length so the caller binds it" }, { "line": 27, "text": " * to the decoder's bit count." } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 25, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 22, "end_line": 28, "lines": [ { "line": 22, "text": " * @brief Cache and combine repeated LLR frames for the same decode candidate." }, { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" }, { "line": 26, "text": " * over-the-air behavior. Templated on the LLR length so the caller binds it" }, { "line": 27, "text": " * to the decoder's bit count." }, { "line": 28, "text": " */" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 26, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 23, "end_line": 29, "lines": [ { "line": 23, "text": " *" }, { "line": 24, "text": " * Uses a coarse freq/dt bin and a small LLR signature as the key; repeated" }, { "line": 25, "text": " * receptions accumulate LLRs to improve decode probability without changing" }, { "line": 26, "text": " * over-the-air behavior. Templated on the LLR length so the caller binds it" }, { "line": 27, "text": " * to the decoder's bit count." }, { "line": 28, "text": " */" }, { "line": 29, "text": "template class SoftCombiner {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 47, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 44, "end_line": 50, "lines": [ { "line": 44, "text": "" }, { "line": 45, "text": " struct Combined {" }, { "line": 46, "text": " Key key;" }, { "line": 47, "text": " std::array llr0;" }, { "line": 48, "text": " std::array llr1;" }, { "line": 49, "text": " int repeats;" }, { "line": 50, "text": " bool combined;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 48, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 45, "end_line": 51, "lines": [ { "line": 45, "text": " struct Combined {" }, { "line": 46, "text": " Key key;" }, { "line": 47, "text": " std::array llr0;" }, { "line": 48, "text": " std::array llr1;" }, { "line": 49, "text": " int repeats;" }, { "line": 50, "text": " bool combined;" }, { "line": 51, "text": " };" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 65, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 62, "end_line": 68, "lines": [ { "line": 62, "text": " maybeRunSelfTest();" }, { "line": 63, "text": " }" }, { "line": 64, "text": "" }, { "line": 65, "text": " Key makeKey(int mode, float f1, float dt, std::array const &llr0," }, { "line": 66, "text": " std::array const &llr1) const {" }, { "line": 67, "text": " return Key{mode, static_cast(std::lround(f1))," }, { "line": 68, "text": " static_cast(std::lround(dt * 10.0f)), // 100 ms bins" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 66, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 63, "end_line": 69, "lines": [ { "line": 63, "text": " }" }, { "line": 64, "text": "" }, { "line": 65, "text": " Key makeKey(int mode, float f1, float dt, std::array const &llr0," }, { "line": 66, "text": " std::array const &llr1) const {" }, { "line": 67, "text": " return Key{mode, static_cast(std::lround(f1))," }, { "line": 68, "text": " static_cast(std::lround(dt * 10.0f)), // 100 ms bins" }, { "line": 69, "text": " signature(llr0, llr1)};" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 69, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 66, "end_line": 72, "lines": [ { "line": 66, "text": " std::array const &llr1) const {" }, { "line": 67, "text": " return Key{mode, static_cast(std::lround(f1))," }, { "line": 68, "text": " static_cast(std::lround(dt * 10.0f)), // 100 ms bins" }, { "line": 69, "text": " signature(llr0, llr1)};" }, { "line": 70, "text": " }" }, { "line": 71, "text": "" }, { "line": 72, "text": " Combined combine(Key const &key, std::array const &llr0," } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 72, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 69, "end_line": 75, "lines": [ { "line": 69, "text": " signature(llr0, llr1)};" }, { "line": 70, "text": " }" }, { "line": 71, "text": "" }, { "line": 72, "text": " Combined combine(Key const &key, std::array const &llr0," }, { "line": 73, "text": " std::array const &llr1," }, { "line": 74, "text": " std::chrono::seconds ttl) {" }, { "line": 75, "text": " flush(ttl);" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 73, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 70, "end_line": 76, "lines": [ { "line": 70, "text": " }" }, { "line": 71, "text": "" }, { "line": 72, "text": " Combined combine(Key const &key, std::array const &llr0," }, { "line": 73, "text": " std::array const &llr1," }, { "line": 74, "text": " std::chrono::seconds ttl) {" }, { "line": 75, "text": " flush(ttl);" }, { "line": 76, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 78, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 75, "end_line": 81, "lines": [ { "line": 75, "text": " flush(ttl);" }, { "line": 76, "text": "" }, { "line": 77, "text": " if (!m_enabled) {" }, { "line": 78, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 79, "text": " }" }, { "line": 80, "text": "" }, { "line": 81, "text": " auto &bucket = m_entries[keyForLookup(key)];" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 85, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 82, "end_line": 88, "lines": [ { "line": 82, "text": " auto it = findEntry(bucket, key.signature);" }, { "line": 83, "text": "" }, { "line": 84, "text": " if (it == bucket.end()) {" }, { "line": 85, "text": " bucket.push_back(makeEntry(key.signature, llr0, llr1));" }, { "line": 86, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 87, "text": " }" }, { "line": 88, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 86, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 83, "end_line": 89, "lines": [ { "line": 83, "text": "" }, { "line": 84, "text": " if (it == bucket.end()) {" }, { "line": 85, "text": " bucket.push_back(makeEntry(key.signature, llr0, llr1));" }, { "line": 86, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 87, "text": " }" }, { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 89, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 86, "end_line": 92, "lines": [ { "line": 86, "text": " return Combined{key, llr0, llr1, 1, false};" }, { "line": 87, "text": " }" }, { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" }, { "line": 90, "text": " it->llr0[i] += llr0[i];" }, { "line": 91, "text": " it->llr1[i] += llr1[i];" }, { "line": 92, "text": " }" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 90, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 87, "end_line": 93, "lines": [ { "line": 87, "text": " }" }, { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" }, { "line": 90, "text": " it->llr0[i] += llr0[i];" }, { "line": 91, "text": " it->llr1[i] += llr1[i];" }, { "line": 92, "text": " }" }, { "line": 93, "text": "" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 91, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 88, "end_line": 94, "lines": [ { "line": 88, "text": "" }, { "line": 89, "text": " for (std::size_t i = 0; i < llr0.size(); ++i) {" }, { "line": 90, "text": " it->llr0[i] += llr0[i];" }, { "line": 91, "text": " it->llr1[i] += llr1[i];" }, { "line": 92, "text": " }" }, { "line": 93, "text": "" }, { "line": 94, "text": " ++it->repeats;" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 101, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 98, "end_line": 104, "lines": [ { "line": 98, "text": " << \"soft-combining repeats\" << it->repeats << \"mode\" << key.mode" }, { "line": 99, "text": " << \"freq\" << key.freqBin << \"dtbin\" << key.dtBin;" }, { "line": 100, "text": "" }, { "line": 101, "text": " return Combined{key, it->llr0, it->llr1, it->repeats, true};" }, { "line": 102, "text": " }" }, { "line": 103, "text": "" }, { "line": 104, "text": " void markDecoded(Key const &key) {" } ] } }, { "name": "keyword_context", "path": "JS8_Mode/soft_combiner.h", "line": 170, "kind": "source_snippet", "confidence": "source_evidence", "matched_keywords": [ "llr" ], "context": { "start_line": 167, "end_line": 173, "lines": [ { "line": 167, "text": "" }, { "line": 168, "text": " struct Entry {" }, { "line": 169, "text": " uint32_t signature;" }, { "line": 170, "text": " std::array llr0;" }, { "line": 171, "text": " std::array llr1;" }, { "line": 172, "text": " int repeats;" }, { "line": 173, "text": " Clock::time_point lastSeen;" } ] } } ] }, "info87_rows_found": 810, "source_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T081844Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T075340Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T075340Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T075340Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T074622Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T071154Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T071154Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T071154Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070926Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070926Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070926Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T070154Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T051150Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T043640Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window2_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window2_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window1_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window1_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window1_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "info87_row_count": 25, "row_paths_preview": [ "$.best_runtime_info87_row.info87_bits", "$.runtime_info87_rows_preview[0].info87_bits", "$.runtime_info87_rows_preview[1].info87_bits", "$.runtime_info87_rows_preview[2].info87_bits", "$.runtime_info87_rows_preview[3].info87_bits", "$.runtime_info87_rows_preview[4].info87_bits", "$.runtime_info87_rows_preview[5].info87_bits", "$.runtime_info87_rows_preview[6].info87_bits" ] }, { "path": "/decoders/js8_decoder/logs/20260528T041054Z_step85_window0_candidate_export_output.json", "exists": true, "info87_row_count": 0, "row_paths_preview": [] }, { "path": "/decoders/js8_decoder/logs/js8_step83_source_confirmed_message174_decode_latest.json", "exists": true, "info87_row_count": 2, "row_paths_preview": [ "$.top_candidates[0].info87_bitstring", "$.top_candidates[1].info87_bitstring" ] } ], "source_exact_map_count": 0, "map_tests": 240, "zero_distance_candidate_count": 16, "best_distance": 0, "best_candidate": { "source_file": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 214, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, "top_candidates": [ { "source_file": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 214, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T082602Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 215, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 187, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 188, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 160, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 161, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 133, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 134, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 106, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 107, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 79, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 80, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 52, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 53, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "row_index": 25, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "001XqOA2iDZ0", "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_confirmed_message174_decode_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "row_index": 26, "source_kind": "info87_bitstring", "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "message_preview_12chars": "Q0VsKWqfJ96x", "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 135, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[0].info87_bits", "row_index": 136, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[1].info87_bits", "row_index": 137, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[2].info87_bits", "row_index": 138, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[3].info87_bits", "row_index": 139, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 27, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[0].info87_bits", "row_index": 28, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[1].info87_bits", "row_index": 29, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[2].info87_bits", "row_index": 30, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[3].info87_bits", "row_index": 31, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 2, "crc_match": false, "message_preview_12chars": "XXGYQH9k0JIe", "received_crc12": 144, "computed_crc12": 432, "message_words_6bit": [ 33, 33, 16, 34, 26, 17, 9, 46, 0, 19, 18, 40 ], "info87_bitstring": "100001100001010000100010011010010001001001101110000000010011010010101000000000010010000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.best_runtime_info87_row.info87_bits", "row_index": 189, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[0].info87_bits", "row_index": 190, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[1].info87_bits", "row_index": 191, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[2].info87_bits", "row_index": 192, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[3].info87_bits", "row_index": 193, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "json_path": "$.runtime_info87_rows_preview[4].info87_bits", "row_index": 194, "source_kind": "info87_bits", "map_name": "raw", "map_source": null, "distance": 3, "crc_match": false, "message_preview_12chars": "8708y0po872W", "received_crc12": 624, "computed_crc12": 2288, "message_words_6bit": [ 8, 7, 0, 8, 60, 0, 51, 50, 8, 7, 2, 32 ], "info87_bitstring": "001000000111000000001000111100000000110011110010001000000111000010100000000001001110000" } ], "decodes": [], "warnings": [ "Step63 is still a diagnostic/source-extraction step, not a final text decoder.", "It starts no JS8Call GUI/Qt process and performs no TX/PTT/Tune/Send actions." ], "next_action": "Zero-distance message174/CRC12 candidate found: build Step64 source-confirmed message174 text unpack and WebFTR-style decodes[] output." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_message174_decode_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-source-confirmed-message174-decode", "tool_version": "step64-source-confirmed-message174-decodes-output", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "log_dir": "/decoders/js8_decoder/logs", "source_contract": { "source": "JS8Call-Improved JS8_Mode/JS8.cpp extractmessage174/checkCRC12", "alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "crc_width": 12, "crc_poly_hex": "0xc06", "crc_xor_decimal": 42, "message_bits": "first 72 data bits as 12 x 6-bit words", "crc_gate": "Only zero-distance CRC12 candidates are emitted as decodes[]." }, "step63_source_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window2_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window1_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084822Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window2_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window1_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" }, { "path": "/decoders/js8_decoder/logs/20260528T084104Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "zero_distance_candidates_extracted": 17, "tool_version": "step64-source-confirmed-message174-decodes-output" } ], "runtime_fallback_reports": [], "candidate_source": "step63_source_exact_map_probe", "zero_distance_candidate_count": 2, "decode_count": 2, "top_candidates": [ { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "message_text_12chars": "001XqOA2iDZ0", "info87_bitstring": "000000000000000001100001110100011000001010000010101100001101100011000000000101101101000" }, { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null, "distance": 0, "crc_match": true, "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "message_text_12chars": "Q0VsKWqfJ96x", "info87_bitstring": "011010000000011111110110010100100000110100101001010011001001000110111011101001111010100" } ], "decodes": [ { "id": "js8-msg174-fb81ef2f", "mode": "JS8", "decoder": "webftr-js8lab-step64-message174-source-confirmed", "text": "001XqOA2iDZ0", "raw": "001XqOA2iDZ0", "message_text_12chars": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "message_words_6bit": [ 0, 0, 1, 33, 52, 24, 10, 2, 44, 13, 35, 0 ], "alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "parsed": { "raw": "001XqOA2iDZ0", "normalized": "001XQOA2IDZ0", "message_type": "MESSAGE", "directed_to": null, "callsigns": [], "primary_callsign": null, "locators": [], "primary_locator": null, "body": "001XQOA2IDZ0" }, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "confidence": "crc12_zero_distance_source_extractmessage174", "rx_only": true, "sort_index": 0 }, { "id": "js8-msg174-9546833a", "mode": "JS8", "decoder": "webftr-js8lab-step64-message174-source-confirmed", "text": "Q0VsKWqfJ96x", "raw": "Q0VsKWqfJ96x", "message_text_12chars": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "message_words_6bit": [ 26, 0, 31, 54, 20, 32, 52, 41, 19, 9, 6, 59 ], "alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "parsed": { "raw": "Q0VsKWqfJ96x", "normalized": "Q0VSKWQFJ96X", "message_type": "MESSAGE", "directed_to": null, "callsigns": [], "primary_callsign": null, "locators": [], "primary_locator": null, "body": "Q0VSKWQFJ96X" }, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "confidence": "crc12_zero_distance_source_extractmessage174", "rx_only": true, "sort_index": 1 } ], "warnings": [ "Step64 emits source-confirmed message174 CRC12-zero-distance text candidates; it is not yet a full live JS8 decoder chain from audio to final chat UI.", "It starts no JS8Call GUI/Qt process and performs no TX/PTT/Tune/Send actions.", "Random-looking 12-character payloads can still be valid message174 candidates until higher JS8 text/Varicode framing is connected." ], "next_action": "Use Step64 decodes[] as the contract for the next step: connect source-confirmed message174 output into a richer JS8 text/Varicode/framing interpretation and then feed WebFTR RX display fields." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_varicode_frame_unpack_probe_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-source-varicode-frame-unpack-probe", "tool_version": "step66-source-varicode-frame-unpack-probe", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "input_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "selected_input": true } ], "source_resolution": { "selected_source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "checked": [ { "path": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "exists": true, "is_dir": true } ] }, "source_snippets": { "source_available": true, "source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved", "focused_files_present": [ "JS8_Main/Varicode.cpp", "JS8_Main/Varicode.h", "JS8_JSC/JSC.cpp", "JS8_JSC/JSC.h", "JS8_JSC/JSC_map.cpp", "JS8_JSC/JSC_list.cpp", "JS8_Mode/JS8.cpp" ], "focused_files_missing": [], "snippets": [ { "name": "unpack72bits", "path": "JS8_Main/Varicode.cpp", "line": 767, "context": { "start_line": 762, "end_line": 772, "lines": [ { "line": 762, "text": " quint32 b = packed & 0xFFFFFFFF;" }, { "line": 763, "text": " return pack32bits(a) + pack32bits(b);" }, { "line": 764, "text": "}" }, { "line": 765, "text": "" }, { "line": 766, "text": "// returns the first 64 bits and sets the last 8 bits in pRem" }, { "line": 767, "text": "quint64 Varicode::unpack72bits(QString const &text, quint8 *pRem) {" }, { "line": 768, "text": " quint64 value = 0;" }, { "line": 769, "text": " quint8 rem = 0;" }, { "line": 770, "text": " quint8 mask2 = ((1 << 2) - 1);" }, { "line": 771, "text": "" }, { "line": 772, "text": " for (int i = 0; i < 10; i++) {" } ] } }, { "name": "pack72bits", "path": "JS8_Main/Varicode.cpp", "line": 767, "context": { "start_line": 762, "end_line": 772, "lines": [ { "line": 762, "text": " quint32 b = packed & 0xFFFFFFFF;" }, { "line": 763, "text": " return pack32bits(a) + pack32bits(b);" }, { "line": 764, "text": "}" }, { "line": 765, "text": "" }, { "line": 766, "text": "// returns the first 64 bits and sets the last 8 bits in pRem" }, { "line": 767, "text": "quint64 Varicode::unpack72bits(QString const &text, quint8 *pRem) {" }, { "line": 768, "text": " quint64 value = 0;" }, { "line": 769, "text": " quint8 rem = 0;" }, { "line": 770, "text": " quint8 mask2 = ((1 << 2) - 1);" }, { "line": 771, "text": "" }, { "line": 772, "text": " for (int i = 0; i < 10; i++) {" } ] } }, { "name": "unpackDirectedMessage", "path": "JS8_Main/Varicode.cpp", "line": 1716, "context": { "start_line": 1711, "end_line": 1721, "lines": [ { "line": 1711, "text": " if (n)" }, { "line": 1712, "text": " *n = match.captured(0).length();" }, { "line": 1713, "text": " return Varicode::pack72bits(Varicode::bitsToInt(bits), packed_extra);" }, { "line": 1714, "text": "}" }, { "line": 1715, "text": "" }, { "line": 1716, "text": "QStringList Varicode::unpackDirectedMessage(const QString &text," }, { "line": 1717, "text": " quint8 *pType) {" }, { "line": 1718, "text": " QStringList unpacked;" }, { "line": 1719, "text": "" }, { "line": 1720, "text": " if (text.length() < 12 || text.contains(\" \")) {" }, { "line": 1721, "text": " return unpacked;" } ] } }, { "name": "packDirectedMessage", "path": "JS8_Main/Varicode.cpp", "line": 1605, "context": { "start_line": 1600, "end_line": 1610, "lines": [ { "line": 1600, "text": "" }, { "line": 1601, "text": "// J1Y ACK" }, { "line": 1602, "text": "// J1Y?" }, { "line": 1603, "text": "// KN4CRD: J1Y$" }, { "line": 1604, "text": "// KN4CRD: J1Y! HELLO WORLD" }, { "line": 1605, "text": "QString Varicode::packDirectedMessage(const QString &text," }, { "line": 1606, "text": " const QString &mycall, QString *pTo," }, { "line": 1607, "text": " bool *pToCompound, QString *pCmd," }, { "line": 1608, "text": " QString *pNum, int *n) {" }, { "line": 1609, "text": " QString frame;" }, { "line": 1610, "text": "" } ] } }, { "name": "unpackCompoundFrame", "path": "JS8_Main/Varicode.cpp", "line": 1420, "context": { "start_line": 1415, "end_line": 1425, "lines": [ { "line": 1415, "text": " bool *isAlt, quint8 *pBits3) {" }, { "line": 1416, "text": " quint8 type = Varicode::FrameHeartbeat;" }, { "line": 1417, "text": " quint16 num = nmaxgrid;" }, { "line": 1418, "text": " quint8 bits3 = 0;" }, { "line": 1419, "text": "" }, { "line": 1420, "text": " QStringList unpacked = unpackCompoundFrame(text, &type, &num, &bits3);" }, { "line": 1421, "text": " if (unpacked.isEmpty() || type != Varicode::FrameHeartbeat) {" }, { "line": 1422, "text": " return QStringList{};" }, { "line": 1423, "text": " }" }, { "line": 1424, "text": "" }, { "line": 1425, "text": " unpacked.append(Varicode::unpackGrid(num & ((1 << 15) - 1)));" } ] } }, { "name": "packCompoundFrame", "path": "JS8_Main/Varicode.cpp", "line": 1401, "context": { "start_line": 1396, "end_line": 1406, "lines": [ { "line": 1396, "text": " if (isAlt) {" }, { "line": 1397, "text": " packed_extra |= (1 << 15);" }, { "line": 1398, "text": " cqNumber = cqs.key(type, 0);" }, { "line": 1399, "text": " }" }, { "line": 1400, "text": "" }, { "line": 1401, "text": " frame = packCompoundFrame(callsign, Varicode::FrameHeartbeat, packed_extra," }, { "line": 1402, "text": " cqNumber);" }, { "line": 1403, "text": " if (frame.isEmpty()) {" }, { "line": 1404, "text": " if (n)" }, { "line": 1405, "text": " *n = 0;" }, { "line": 1406, "text": " return frame;" } ] } }, { "name": "unpackCompoundMessage", "path": "JS8_Main/Varicode.cpp", "line": 1491, "context": { "start_line": 1486, "end_line": 1496, "lines": [ { "line": 1486, "text": " if (n)" }, { "line": 1487, "text": " *n = parsedText.captured(0).length();" }, { "line": 1488, "text": " return frame;" }, { "line": 1489, "text": "}" }, { "line": 1490, "text": "" }, { "line": 1491, "text": "QStringList Varicode::unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 1492, "text": " quint8 *pBits3) {" }, { "line": 1493, "text": " quint8 type = Varicode::FrameCompound;" }, { "line": 1494, "text": " quint16 extra = nmaxgrid;" }, { "line": 1495, "text": " quint8 bits3 = 0;" }, { "line": 1496, "text": "" } ] } }, { "name": "unpackHeartbeatMessage", "path": "JS8_Main/Varicode.cpp", "line": 1414, "context": { "start_line": 1409, "end_line": 1419, "lines": [ { "line": 1409, "text": " if (n)" }, { "line": 1410, "text": " *n = parsedText.captured(0).length();" }, { "line": 1411, "text": " return frame;" }, { "line": 1412, "text": "}" }, { "line": 1413, "text": "" }, { "line": 1414, "text": "QStringList Varicode::unpackHeartbeatMessage(const QString &text, quint8 *pType," }, { "line": 1415, "text": " bool *isAlt, quint8 *pBits3) {" }, { "line": 1416, "text": " quint8 type = Varicode::FrameHeartbeat;" }, { "line": 1417, "text": " quint16 num = nmaxgrid;" }, { "line": 1418, "text": " quint8 bits3 = 0;" }, { "line": 1419, "text": "" } ] } }, { "name": "unpackDataMessage", "path": "JS8_Main/Varicode.cpp", "line": 1912, "context": { "start_line": 1907, "end_line": 1917, "lines": [ { "line": 1907, "text": "}" }, { "line": 1908, "text": "" }, { "line": 1909, "text": "// TODO: DEPRECATED in 2.2 (still available for decoding legacy frames, but will" }, { "line": 1910, "text": "// eventually no longer be decodable) unpack data message using 70 bits" }, { "line": 1911, "text": "// available flagged as data by the first 2 bits" }, { "line": 1912, "text": "QString Varicode::unpackDataMessage(const QString &text) {" }, { "line": 1913, "text": " QString unpacked;" }, { "line": 1914, "text": "" }, { "line": 1915, "text": " if (text.length() < 12 || text.contains(\" \")) {" }, { "line": 1916, "text": " return unpacked;" }, { "line": 1917, "text": " }" } ] } }, { "name": "unpackFastDataMessage", "path": "JS8_Main/Varicode.cpp", "line": 1983, "context": { "start_line": 1978, "end_line": 1988, "lines": [ { "line": 1978, "text": "#endif" }, { "line": 1979, "text": "}" }, { "line": 1980, "text": "" }, { "line": 1981, "text": "// unpack data message using the full 72 bits available (with the data flag in" }, { "line": 1982, "text": "// the i3bit header)" }, { "line": 1983, "text": "QString Varicode::unpackFastDataMessage(const QString &text) {" }, { "line": 1984, "text": " QString unpacked;" }, { "line": 1985, "text": "" }, { "line": 1986, "text": " if (text.length() < 12 || text.contains(\" \")) {" }, { "line": 1987, "text": " return unpacked;" }, { "line": 1988, "text": " }" } ] } }, { "name": "unpackCallsign", "path": "JS8_Main/Varicode.cpp", "line": 1037, "context": { "start_line": 1032, "end_line": 1042, "lines": [ { "line": 1032, "text": " packed = 27 * packed + alphanumeric.indexOf(matched.at(5)) - 10;" }, { "line": 1033, "text": "" }, { "line": 1034, "text": " return packed;" }, { "line": 1035, "text": "}" }, { "line": 1036, "text": "" }, { "line": 1037, "text": "QString Varicode::unpackCallsign(quint32 value, bool portable) {" }, { "line": 1038, "text": " foreach (auto key, basecalls.keys()) {" }, { "line": 1039, "text": " if (basecalls[key] == value) {" }, { "line": 1040, "text": " return key;" }, { "line": 1041, "text": " }" }, { "line": 1042, "text": " }" } ] } }, { "name": "unpackAlphaNumeric50", "path": "JS8_Main/Varicode.cpp", "line": 905, "context": { "start_line": 900, "end_line": 910, "lines": [ { "line": 900, "text": " quint64 packed = a + b + c + d + e + f + g + h + i + j + k;" }, { "line": 901, "text": "" }, { "line": 902, "text": " return packed;" }, { "line": 903, "text": "}" }, { "line": 904, "text": "" }, { "line": 905, "text": "QString Varicode::unpackAlphaNumeric50(quint64 packed) {" }, { "line": 906, "text": " QChar word[11];" }, { "line": 907, "text": "" }, { "line": 908, "text": " quint64 tmp = packed % 38;" }, { "line": 909, "text": " word[10] = alphanumeric.at(tmp);" }, { "line": 910, "text": " packed = packed / 38;" } ] } }, { "name": "unpackGrid", "path": "JS8_Main/Varicode.cpp", "line": 1157, "context": { "start_line": 1152, "end_line": 1162, "lines": [ { "line": 1152, "text": " int ilat = pair.second + 90;" }, { "line": 1153, "text": "" }, { "line": 1154, "text": " return ((ilong + 180) / 2) * 180 + ilat;" }, { "line": 1155, "text": "}" }, { "line": 1156, "text": "" }, { "line": 1157, "text": "QString Varicode::unpackGrid(quint16 value) {" }, { "line": 1158, "text": " if (value > nbasegrid) {" }, { "line": 1159, "text": " return \"\";" }, { "line": 1160, "text": " }" }, { "line": 1161, "text": "" }, { "line": 1162, "text": " float dlat = value % 180 - 90;" } ] } }, { "name": "unpackCmd", "path": "JS8_Main/Varicode.cpp", "line": 1207, "context": { "start_line": 1202, "end_line": 1212, "lines": [ { "line": 1202, "text": " }" }, { "line": 1203, "text": "" }, { "line": 1204, "text": " return value;" }, { "line": 1205, "text": "}" }, { "line": 1206, "text": "" }, { "line": 1207, "text": "quint8 Varicode::unpackCmd(quint8 value, quint8 *pNum) {" }, { "line": 1208, "text": " // if the first bit is 1, this is an SNR with a number encoded in the lower" }, { "line": 1209, "text": " // 6 bits" }, { "line": 1210, "text": " if (value & (1 << 7)) {" }, { "line": 1211, "text": " if (pNum)" }, { "line": 1212, "text": " *pNum = value & ((1 << 6) - 1);" } ] } }, { "name": "huffDecode", "path": "JS8_Main/Varicode.cpp", "line": 597, "context": { "start_line": 592, "end_line": 602, "lines": [ { "line": 592, "text": " }" }, { "line": 593, "text": "" }, { "line": 594, "text": " return out;" }, { "line": 595, "text": "}" }, { "line": 596, "text": "" }, { "line": 597, "text": "QString Varicode::huffDecode(QMap const &huff," }, { "line": 598, "text": " QVector const &bitvec) {" }, { "line": 599, "text": " QString text;" }, { "line": 600, "text": "" }, { "line": 601, "text": " QString bits = Varicode::bitsToStr(bitvec);" }, { "line": 602, "text": "" } ] } }, { "name": "JSC::decompress", "path": "JS8_Main/Varicode.cpp", "line": 1938, "context": { "start_line": 1933, "end_line": 1943, "lines": [ { "line": 1933, "text": " // trim off the pad bits" }, { "line": 1934, "text": " bits = bits.mid(1, n - 1);" }, { "line": 1935, "text": "" }, { "line": 1936, "text": " if (compressed) {" }, { "line": 1937, "text": " // partial word (s,c)-dense coding with code tables" }, { "line": 1938, "text": " unpacked = JSC::decompress(bits);" }, { "line": 1939, "text": " } else {" }, { "line": 1940, "text": " // huff decode the bits (without escapes)" }, { "line": 1941, "text": " unpacked = Varicode::huffDecode(Varicode::defaultHuffTable(), bits);" }, { "line": 1942, "text": " }" }, { "line": 1943, "text": "" } ] } }, { "name": "unpack72bits", "path": "JS8_Main/Varicode.h", "line": 135, "context": { "start_line": 130, "end_line": 140, "lines": [ { "line": 130, "text": " static QString pack32bits(quint32 packed);" }, { "line": 131, "text": "" }, { "line": 132, "text": " static quint64 unpack64bits(QString const &value);" }, { "line": 133, "text": " static QString pack64bits(quint64 packed);" }, { "line": 134, "text": "" }, { "line": 135, "text": " static quint64 unpack72bits(QString const &value, quint8 *pRem);" }, { "line": 136, "text": " static QString pack72bits(quint64 value, quint8 rem);" }, { "line": 137, "text": "" }, { "line": 138, "text": " static quint32 packAlphaNumeric22(QString const &value, bool isFlag);" }, { "line": 139, "text": " static QString unpackAlphaNumeric22(quint32 packed, bool *isFlag);" }, { "line": 140, "text": "" } ] } }, { "name": "pack72bits", "path": "JS8_Main/Varicode.h", "line": 135, "context": { "start_line": 130, "end_line": 140, "lines": [ { "line": 130, "text": " static QString pack32bits(quint32 packed);" }, { "line": 131, "text": "" }, { "line": 132, "text": " static quint64 unpack64bits(QString const &value);" }, { "line": 133, "text": " static QString pack64bits(quint64 packed);" }, { "line": 134, "text": "" }, { "line": 135, "text": " static quint64 unpack72bits(QString const &value, quint8 *pRem);" }, { "line": 136, "text": " static QString pack72bits(quint64 value, quint8 rem);" }, { "line": 137, "text": "" }, { "line": 138, "text": " static quint32 packAlphaNumeric22(QString const &value, bool isFlag);" }, { "line": 139, "text": " static QString unpackAlphaNumeric22(quint32 packed, bool *isFlag);" }, { "line": 140, "text": "" } ] } }, { "name": "unpackDirectedMessage", "path": "JS8_Main/Varicode.h", "line": 185, "context": { "start_line": 180, "end_line": 190, "lines": [ { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," }, { "line": 182, "text": " QString const &mycall, QString *pTo," }, { "line": 183, "text": " bool *pToCompound, QString *pCmd," }, { "line": 184, "text": " QString *pNum, int *n);" }, { "line": 185, "text": " static QStringList unpackDirectedMessage(QString const &text," }, { "line": 186, "text": " quint8 *pType);" }, { "line": 187, "text": "" }, { "line": 188, "text": " static QString packDataMessage(QString const &text, int *n);" }, { "line": 189, "text": " static QString unpackDataMessage(QString const &text);" }, { "line": 190, "text": "" } ] } }, { "name": "packDirectedMessage", "path": "JS8_Main/Varicode.h", "line": 181, "context": { "start_line": 176, "end_line": 186, "lines": [ { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," }, { "line": 179, "text": " quint16 *pNum, quint8 *pBits3);" }, { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," }, { "line": 182, "text": " QString const &mycall, QString *pTo," }, { "line": 183, "text": " bool *pToCompound, QString *pCmd," }, { "line": 184, "text": " QString *pNum, int *n);" }, { "line": 185, "text": " static QStringList unpackDirectedMessage(QString const &text," }, { "line": 186, "text": " quint8 *pType);" } ] } }, { "name": "unpackCompoundFrame", "path": "JS8_Main/Varicode.h", "line": 178, "context": { "start_line": 173, "end_line": 183, "lines": [ { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 174, "text": " quint8 *pBits3);" }, { "line": 175, "text": "" }, { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," }, { "line": 179, "text": " quint16 *pNum, quint8 *pBits3);" }, { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," }, { "line": 182, "text": " QString const &mycall, QString *pTo," }, { "line": 183, "text": " bool *pToCompound, QString *pCmd," } ] } }, { "name": "packCompoundFrame", "path": "JS8_Main/Varicode.h", "line": 176, "context": { "start_line": 171, "end_line": 181, "lines": [ { "line": 171, "text": "" }, { "line": 172, "text": " static QString packCompoundMessage(QString const &text, int *n);" }, { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 174, "text": " quint8 *pBits3);" }, { "line": 175, "text": "" }, { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," }, { "line": 179, "text": " quint16 *pNum, quint8 *pBits3);" }, { "line": 180, "text": "" }, { "line": 181, "text": " static QString packDirectedMessage(QString const &text," } ] } }, { "name": "unpackCompoundMessage", "path": "JS8_Main/Varicode.h", "line": 173, "context": { "start_line": 168, "end_line": 178, "lines": [ { "line": 168, "text": " static QStringList unpackHeartbeatMessage(const QString &text," }, { "line": 169, "text": " quint8 *pType, bool *isAlt," }, { "line": 170, "text": " quint8 *pBits3);" }, { "line": 171, "text": "" }, { "line": 172, "text": " static QString packCompoundMessage(QString const &text, int *n);" }, { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," }, { "line": 174, "text": " quint8 *pBits3);" }, { "line": 175, "text": "" }, { "line": 176, "text": " static QString packCompoundFrame(const QString &callsign, quint8 type," }, { "line": 177, "text": " quint16 num, quint8 bits3);" }, { "line": 178, "text": " static QStringList unpackCompoundFrame(const QString &text, quint8 *pType," } ] } }, { "name": "unpackHeartbeatMessage", "path": "JS8_Main/Varicode.h", "line": 168, "context": { "start_line": 163, "end_line": 173, "lines": [ { "line": 163, "text": " static bool isCompoundCallsign(const QString &callsign);" }, { "line": 164, "text": " static bool isGroupAllowed(const QString &group);" }, { "line": 165, "text": "" }, { "line": 166, "text": " static QString packHeartbeatMessage(QString const &text," }, { "line": 167, "text": " QString const &callsign, int *n);" }, { "line": 168, "text": " static QStringList unpackHeartbeatMessage(const QString &text," }, { "line": 169, "text": " quint8 *pType, bool *isAlt," }, { "line": 170, "text": " quint8 *pBits3);" }, { "line": 171, "text": "" }, { "line": 172, "text": " static QString packCompoundMessage(QString const &text, int *n);" }, { "line": 173, "text": " static QStringList unpackCompoundMessage(const QString &text, quint8 *pType," } ] } }, { "name": "unpackDataMessage", "path": "JS8_Main/Varicode.h", "line": 189, "context": { "start_line": 184, "end_line": 194, "lines": [ { "line": 184, "text": " QString *pNum, int *n);" }, { "line": 185, "text": " static QStringList unpackDirectedMessage(QString const &text," }, { "line": 186, "text": " quint8 *pType);" }, { "line": 187, "text": "" }, { "line": 188, "text": " static QString packDataMessage(QString const &text, int *n);" }, { "line": 189, "text": " static QString unpackDataMessage(QString const &text);" }, { "line": 190, "text": "" }, { "line": 191, "text": " static QString packFastDataMessage(QString const &text, int *n);" }, { "line": 192, "text": " static QString unpackFastDataMessage(QString const &text);" }, { "line": 193, "text": "" }, { "line": 194, "text": " static QList>" } ] } }, { "name": "unpackFastDataMessage", "path": "JS8_Main/Varicode.h", "line": 192, "context": { "start_line": 187, "end_line": 197, "lines": [ { "line": 187, "text": "" }, { "line": 188, "text": " static QString packDataMessage(QString const &text, int *n);" }, { "line": 189, "text": " static QString unpackDataMessage(QString const &text);" }, { "line": 190, "text": "" }, { "line": 191, "text": " static QString packFastDataMessage(QString const &text, int *n);" }, { "line": 192, "text": " static QString unpackFastDataMessage(QString const &text);" }, { "line": 193, "text": "" }, { "line": 194, "text": " static QList>" }, { "line": 195, "text": " buildMessageFrames(QString const &mycall, QString const &mygrid," }, { "line": 196, "text": " QString const &selectedCall, QString const &text," }, { "line": 197, "text": " bool forceIdentify, bool forceData, int submode," } ] } }, { "name": "unpackCallsign", "path": "JS8_Main/Varicode.h", "line": 145, "context": { "start_line": 140, "end_line": 150, "lines": [ { "line": 140, "text": "" }, { "line": 141, "text": " static quint64 packAlphaNumeric50(QString const &value);" }, { "line": 142, "text": " static QString unpackAlphaNumeric50(quint64 packed);" }, { "line": 143, "text": "" }, { "line": 144, "text": " static quint32 packCallsign(QString const &value, bool *pPortable);" }, { "line": 145, "text": " static QString unpackCallsign(quint32 value, bool portable);" }, { "line": 146, "text": "" }, { "line": 147, "text": " static QString deg2grid(float dlong, float dlat);" }, { "line": 148, "text": " static QPair grid2deg(QString const &grid);" }, { "line": 149, "text": " static quint16 packGrid(QString const &value);" }, { "line": 150, "text": " static QString unpackGrid(quint16 value);" } ] } }, { "name": "unpackAlphaNumeric50", "path": "JS8_Main/Varicode.h", "line": 142, "context": { "start_line": 137, "end_line": 147, "lines": [ { "line": 137, "text": "" }, { "line": 138, "text": " static quint32 packAlphaNumeric22(QString const &value, bool isFlag);" }, { "line": 139, "text": " static QString unpackAlphaNumeric22(quint32 packed, bool *isFlag);" }, { "line": 140, "text": "" }, { "line": 141, "text": " static quint64 packAlphaNumeric50(QString const &value);" }, { "line": 142, "text": " static QString unpackAlphaNumeric50(quint64 packed);" }, { "line": 143, "text": "" }, { "line": 144, "text": " static quint32 packCallsign(QString const &value, bool *pPortable);" }, { "line": 145, "text": " static QString unpackCallsign(quint32 value, bool portable);" }, { "line": 146, "text": "" }, { "line": 147, "text": " static QString deg2grid(float dlong, float dlat);" } ] } }, { "name": "unpackGrid", "path": "JS8_Main/Varicode.h", "line": 150, "context": { "start_line": 145, "end_line": 155, "lines": [ { "line": 145, "text": " static QString unpackCallsign(quint32 value, bool portable);" }, { "line": 146, "text": "" }, { "line": 147, "text": " static QString deg2grid(float dlong, float dlat);" }, { "line": 148, "text": " static QPair grid2deg(QString const &grid);" }, { "line": 149, "text": " static quint16 packGrid(QString const &value);" }, { "line": 150, "text": " static QString unpackGrid(quint16 value);" }, { "line": 151, "text": "" }, { "line": 152, "text": " static quint8 packNum(QString const &num, bool *ok);" }, { "line": 153, "text": " static quint8 packPwr(QString const &pwr, bool *ok);" }, { "line": 154, "text": " static quint8 packCmd(quint8 cmd, quint8 num, bool *pPackedNum);" }, { "line": 155, "text": " static quint8 unpackCmd(quint8 value, quint8 *pNum);" } ] } }, { "name": "unpackCmd", "path": "JS8_Main/Varicode.h", "line": 155, "context": { "start_line": 150, "end_line": 160, "lines": [ { "line": 150, "text": " static QString unpackGrid(quint16 value);" }, { "line": 151, "text": "" }, { "line": 152, "text": " static quint8 packNum(QString const &num, bool *ok);" }, { "line": 153, "text": " static quint8 packPwr(QString const &pwr, bool *ok);" }, { "line": 154, "text": " static quint8 packCmd(quint8 cmd, quint8 num, bool *pPackedNum);" }, { "line": 155, "text": " static quint8 unpackCmd(quint8 value, quint8 *pNum);" }, { "line": 156, "text": "" }, { "line": 157, "text": " static bool isSNRCommand(const QString &cmd);" }, { "line": 158, "text": " static bool isCommandAllowed(const QString &cmd);" }, { "line": 159, "text": " static bool isCommandBuffered(const QString &cmd);" }, { "line": 160, "text": " static int isCommandChecksumed(const QString &cmd);" } ] } }, { "name": "huffDecode", "path": "JS8_Main/Varicode.h", "line": 107, "context": { "start_line": 102, "end_line": 112, "lines": [ { "line": 102, "text": " static QStringList parseCallsigns(QString const &input);" }, { "line": 103, "text": " static QStringList parseGrids(QString const &input);" }, { "line": 104, "text": "" }, { "line": 105, "text": " static QList>>" }, { "line": 106, "text": " huffEncode(const QMap &huff, QString const &text);" }, { "line": 107, "text": " static QString huffDecode(const QMap &huff," }, { "line": 108, "text": " QVector const &bitvec);" }, { "line": 109, "text": " static QSet huffValidChars(const QMap &huff);" }, { "line": 110, "text": "" }, { "line": 111, "text": " static QVector bytesToBits(char *bitvec, int n);" }, { "line": 112, "text": " static QVector strToBits(QString const &bitvec);" } ] } }, { "name": "JSC::decompress", "path": "JS8_JSC/JSC.cpp", "line": 127, "context": { "start_line": 122, "end_line": 132, "lines": [ { "line": 122, "text": " * @brief Decompresses the given bit vector into a string." }, { "line": 123, "text": " *" }, { "line": 124, "text": " * @param bitvec" }, { "line": 125, "text": " * @return QString" }, { "line": 126, "text": " */" }, { "line": 127, "text": "QString JSC::decompress(Codeword const &bitvec) {" }, { "line": 128, "text": " const quint32 b = 4;" }, { "line": 129, "text": " const quint32 s = 7;" }, { "line": 130, "text": " const quint32 c = pow(2, b) - s;" }, { "line": 131, "text": "" }, { "line": 132, "text": " QStringList out;" } ] } } ] }, "source_contract": { "message174_alphabet": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+", "alphabet72": "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+/?.", "frame_types": { "0": "FrameHeartbeat", "1": "FrameCompound", "2": "FrameCompoundDirected", "3": "FrameDirected", "4": "FrameData", "5": "FrameData", "6": "FrameDataCompressed", "7": "FrameDataCompressed" }, "implemented_rx_unpack": [ "unpack72bits", "frame_type", "directed", "heartbeat", "compound", "callsign", "grid", "legacy_huff_data_probe" ], "not_yet_ported": [ "JSC::decompress full compressed text", "multi-frame buffer assembly", "WebFTR live integration" ] }, "input_decode_count": 2, "frame_probe_count": 2, "webftr_display_count": 0, "hidden_candidate_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "webftr_rx_rows": [], "candidate_rows": [ { "id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-fb81ef2f", "mode": "JS8", "text": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "001XqOA2iDZ0", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 107552465662168, "value_hex": "0x000061d18282b0d8", "rem": 192, "top3": 0, "top2": 0, "first_16_bits": "0000000000000000" }, "frame_type": "FrameHeartbeat", "frame_type_bits": 0, "displayable_after_frame_unpack": false, "frame_fields": { "packed_type": 0, "callsign": "004REY/0V4", "packed_callsign": 52515852374, "packed_num": 6936, "bits3": 0, "valid_callsign_hint": true, "kind": "heartbeat_or_cq", "is_cq_alt": false, "grid": "OJ16", "message_token": "HB", "valid_grid_hint": true }, "plausibility": { "score": 6, "reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "HB 004REY/0V4 OJ16" }, "show_in_rx_list": false, "display_text": "HB 004REY/0V4 OJ16", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 0 }, { "id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9546833a", "mode": "JS8", "text": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "Q0VsKWqfJ96x", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 7496230937050041489, "value_hex": "0x6807f6520d294c91", "rem": 187, "top3": 3, "top2": 1, "first_16_bits": "0110100000000111" }, "frame_type": "FrameDirected", "frame_type_bits": 3, "displayable_after_frame_unpack": false, "frame_fields": { "from": "9I2TZR/P", "to": "0Z0PMP", "cmd_id": 17, "cmd": " INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "portable_from": true, "portable_to": false, "valid_from_hint": true, "valid_to_hint": true }, "plausibility": { "score": 10, "reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "9I2TZR/P 0Z0PMP INFO 28" }, "show_in_rx_list": false, "display_text": "9I2TZR/P 0Z0PMP INFO 28", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 1 } ], "suppressed_candidates": [ { "id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-fb81ef2f", "mode": "JS8", "text": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "001XqOA2iDZ0", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 107552465662168, "value_hex": "0x000061d18282b0d8", "rem": 192, "top3": 0, "top2": 0, "first_16_bits": "0000000000000000" }, "frame_type": "FrameHeartbeat", "frame_type_bits": 0, "displayable_after_frame_unpack": false, "frame_fields": { "packed_type": 0, "callsign": "004REY/0V4", "packed_callsign": 52515852374, "packed_num": 6936, "bits3": 0, "valid_callsign_hint": true, "kind": "heartbeat_or_cq", "is_cq_alt": false, "grid": "OJ16", "message_token": "HB", "valid_grid_hint": true }, "plausibility": { "score": 6, "reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "HB 004REY/0V4 OJ16" }, "show_in_rx_list": false, "display_text": "HB 004REY/0V4 OJ16", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 0 }, { "id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9546833a", "mode": "JS8", "text": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "Q0VsKWqfJ96x", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 7496230937050041489, "value_hex": "0x6807f6520d294c91", "rem": 187, "top3": 3, "top2": 1, "first_16_bits": "0110100000000111" }, "frame_type": "FrameDirected", "frame_type_bits": 3, "displayable_after_frame_unpack": false, "frame_fields": { "from": "9I2TZR/P", "to": "0Z0PMP", "cmd_id": 17, "cmd": " INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "portable_from": true, "portable_to": false, "valid_from_hint": true, "valid_to_hint": true }, "plausibility": { "score": 10, "reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "9I2TZR/P 0Z0PMP INFO 28" }, "show_in_rx_list": false, "display_text": "9I2TZR/P 0Z0PMP INFO 28", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 1 } ], "verdict": "source_varicode_frames_classified_but_not_displayable", "warnings": [ "Step66 is still RX-only diagnostics. It classifies message174 text as JS8 Varicode frame families but does not start JS8Call GUI/Qt.", "Rows remain hidden unless callsign/grid/command/text plausibility survives source-style frame unpacking.", "Compressed Data frames still require a later JSC::decompress port before real JS8 chat text can be displayed." ], "next_action": "If frame types look plausible but hidden, port JSC::decompress and multi-frame assembly next; if a display row appears, wire webftr_rx_rows into the JS8 RX UI contract." } [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_control_frame_rx_release_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-source-confirmed-control-frame-rx-release", "tool_version": "step67-source-confirmed-control-frame-rx-release", "rx_only_guard": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "no_gui_runtime_started": true, "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "input_reports": [ { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_varicode_frame_unpack_probe_output.json", "exists": true, "selected_input": true, "input_kind": "step66_source_varicode_frame_unpack_probe" } ], "source_step66_version": "step66-source-varicode-frame-unpack-probe", "source_frame_probe_count": 2, "source_webftr_display_count_before_release": 0, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "release_contract": { "allowed_to_display": [ "FrameCompound", "FrameCompoundDirected", "FrameDirected", "FrameHeartbeat" ], "blocked_until_future_steps": [ "FrameData", "FrameDataCompressed" ], "minimum_conditions": [ "valid_message174_crc12 == true", "crc12_distance == 0", "source Varicode frame unpack produced a supported fixed control frame", "frame_display_candidate == true" ], "data_text_rule": "FrameData and FrameDataCompressed stay hidden until JSC::decompress/multi-frame assembly is ported and tested." }, "input_candidate_count": 2, "webftr_display_count": 2, "hidden_candidate_count": 0, "webftr_rx_rows": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-fb81ef2f", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9546833a", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "candidate_rows": [ { "id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-fb81ef2f", "mode": "JS8", "text": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "001XqOA2iDZ0", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 107552465662168, "value_hex": "0x000061d18282b0d8", "rem": 192, "top3": 0, "top2": 0, "first_16_bits": "0000000000000000" }, "frame_type": "FrameHeartbeat", "frame_type_bits": 0, "displayable_after_frame_unpack": false, "frame_fields": { "packed_type": 0, "callsign": "004REY/0V4", "packed_callsign": 52515852374, "packed_num": 6936, "bits3": 0, "valid_callsign_hint": true, "kind": "heartbeat_or_cq", "is_cq_alt": false, "grid": "OJ16", "message_token": "HB", "valid_grid_hint": true }, "plausibility": { "score": 6, "reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "HB 004REY/0V4 OJ16" }, "show_in_rx_list": false, "display_text": "HB 004REY/0V4 OJ16", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 0 }, { "id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9546833a", "mode": "JS8", "text": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "frame_probe": { "message_text_12chars": "Q0VsKWqfJ96x", "length": 12, "source_alphabet72_compatible": true, "ok": true, "unpack72": { "value": 7496230937050041489, "value_hex": "0x6807f6520d294c91", "rem": 187, "top3": 3, "top2": 1, "first_16_bits": "0110100000000111" }, "frame_type": "FrameDirected", "frame_type_bits": 3, "displayable_after_frame_unpack": false, "frame_fields": { "from": "9I2TZR/P", "to": "0Z0PMP", "cmd_id": 17, "cmd": " INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "portable_from": true, "portable_to": false, "valid_from_hint": true, "valid_to_hint": true }, "plausibility": { "score": 10, "reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ] }, "frame_display_candidate": true, "display_guard_reason": "step66_annotation_only_pending_jsc_or_multiframe_text_confirmation", "candidate_class": "source_varicode_frame_candidate_guarded", "display_text_hint": "9I2TZR/P 0Z0PMP INFO 28" }, "show_in_rx_list": false, "display_text": "9I2TZR/P 0Z0PMP INFO 28", "candidate_class": "source_varicode_frame_candidate_guarded", "sort_index": 1 } ], "suppressed_candidates": [], "release_decisions": [ { "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "raw_message174": "001XqOA2iDZ0", "frame_type": "FrameHeartbeat", "decision": "released_source_confirmed_control_frame", "sort_index": 0, "released_row_id": "js8-rx67-de15d3110b0d" }, { "source_candidate_id": "js8-frame66-66ab29ded46c", "raw_message174": "Q0VsKWqfJ96x", "frame_type": "FrameDirected", "decision": "released_source_confirmed_control_frame", "sort_index": 1, "released_row_id": "js8-rx67-bd37f68199eb" } ], "verdict": "source_confirmed_control_frames_ready_for_webftr_rx_rows", "warnings": [ "Step67 is still RX-only and does not start JS8Call GUI/Qt.", "Only source-confirmed fixed control frames such as Heartbeat/Directed/Compound are released to webftr_rx_rows.", "Free-text Data/Compressed frames remain blocked until JSC::decompress and multi-frame assembly are source-ported and tested." ], "next_action": "Wire these guarded webftr_rx_rows into the JS8 RX display contract, then continue with JSC::decompress/multi-frame assembly for real JS8 chat text." } ========== STEP85 3/4: WINDOW RESULT MANIFEST ========== { "ok": true, "input_wav": "/decoders/js8_decoder/runtime/input_wavs/A_1_4.wav", "plan_json": "/decoders/js8_decoder/logs/20260528T091124Z_real_wav_wide_window_plan_output.json", "windows": [ { "window_index": 0, "window_id": "step85-window-00", "start_seconds": 0.0, "end_seconds": 15.0, "selection_score": -39.0763, "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0000_0015.wav", "candidate_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_candidate_export_output.json", "post_ldpc_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "source_exact_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "message174_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_message174_decode_output.json", "varicode_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_varicode_frame_unpack_probe_output.json", "rx_release_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_control_frame_rx_release_output.json", "exit_codes": { "candidate_export": 0, "post_ldpc_info87_runtime_export": 0, "source_exact_map_probe": 0, "source_confirmed_message174_decode": 0, "source_varicode_frame_unpack_probe": 0, "source_confirmed_control_frame_rx_release": 0 } } ] } ========== STEP85 4/4: WIDE SEARCH SUMMARY ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T091124Z_real_wav_wide_data_frame_search_output.json [webftr-js8-lab] JSON timeout guard: 180s [webftr-js8-lab] stderr log: /decoders/js8_decoder/logs/20260528T091124Z_real_wav_wide_data_frame_search_output.stderr.log /decoders/js8_decoder/src/webftr_js8_lab/js8_real_wav_wide_data_frame_search.py:4: DeprecationWarning: 'audioop' is deprecated and slated for removal in Python 3.13 import audioop { "ok": true, "tool": "webftr-js8-real-wav-wide-data-frame-search", "tool_version": "step85-real-wav-wide-data-frame-search", "schema": "webftr-js8-real-wav-wide-data-frame-search-v1", "created_utc": "2026-05-28T09:13:45Z", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "purpose": "Run a bounded multi-window real-WAV search for JS8 Data/FrameDataCompressed candidates while keeping chat/free-text release blocked.", "input_wav": "/decoders/js8_decoder/runtime/input_wavs/A_1_4.wav", "plan_json": "/decoders/js8_decoder/logs/20260528T091124Z_real_wav_wide_window_plan_output.json", "window_result_manifest_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window_results_manifest.json", "wav_was_read": true, "planned_window_count": 1, "tested_window_count": 1, "scan_params": { "window_seconds": 54.0, "hop_seconds": 12.0, "max_seconds": 240.0, "max_windows": 3, "min_gap_seconds": 30.0, "output_dir": "/decoders/js8_decoder/runtime/step85_wide_windows" }, "runtime_info87_rows_count": 48, "source_exact_zero_distance_candidate_count": 16, "message174_decode_count": 2, "frame_probe_count": 2, "control_frame_release_count": 2, "webftr_display_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "data_frame_candidate_count": 0, "compressed_data_frame_candidate_count": 0, "webftr_rx_rows_preview": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-fb81ef2f", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9546833a", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "per_window_summaries": [ { "window_index": 0, "window_id": "step85-window-00", "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0000_0015.wav", "start_seconds": 0.0, "end_seconds": 15.0, "selection_score": -39.0763, "exit_codes": { "candidate_export": 0, "post_ldpc_info87_runtime_export": 0, "source_exact_map_probe": 0, "source_confirmed_message174_decode": 0, "source_varicode_frame_unpack_probe": 0, "source_confirmed_control_frame_rx_release": 0 }, "runtime_info87_rows_count": 48, "source_exact_zero_distance_candidate_count": 16, "message174_decode_count": 2, "frame_probe_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "control_frame_release_count": 2, "webftr_display_count": 2, "webftr_rx_rows_preview": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-fb81ef2f", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9546833a", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "outputs": { "candidate_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_candidate_export_output.json", "post_ldpc_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "source_exact_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "message174_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_message174_decode_output.json", "varicode_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_varicode_frame_unpack_probe_output.json", "rx_release_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_control_frame_rx_release_output.json" } } ], "output_stats_preview": [ { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_candidate_export_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_candidate_export_output.json", "exists": true, "is_file": true, "size": 76395, "mtime_utc": "2026-05-28T09:12:36Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "exists": true, "is_file": true, "size": 99742, "mtime_utc": "2026-05-28T09:13:41Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "exists": true, "is_file": true, "size": 158166, "mtime_utc": "2026-05-28T09:13:44Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_message174_decode_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_message174_decode_output.json", "exists": true, "is_file": true, "size": 8022, "mtime_utc": "2026-05-28T09:13:44Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_varicode_frame_unpack_probe_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_varicode_frame_unpack_probe_output.json", "exists": true, "is_file": true, "size": 60579, "mtime_utc": "2026-05-28T09:13:45Z" } }, { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_control_frame_rx_release_output.json", "stat": { "path": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_control_frame_rx_release_output.json", "exists": true, "is_file": true, "size": 9856, "mtime_utc": "2026-05-28T09:13:45Z" } } ], "verdict": "step85_real_wav_wide_search_control_frames_only", "warnings": [ "Step85 searches multiple real-WAV windows for FrameData/FrameDataCompressed candidates; it still does not release free-text chat rows.", "Only source-confirmed fixed control frames remain eligible for WebFTR display unless a later external fixture/release gate validates compressed text." ], "notes": [ "This step follows the user's observation that fast JSON/source-only passes were no longer exercising the real JS8 WAV enough.", "A compressed_data_frame_candidate_count above zero is the desired trigger for the next guarded JSC/text validation step." ], "next_action": "If compressed_data_frame_candidate_count stays 0, capture or provide a real JS8Call/RF FrameDataCompressed fixture; if it becomes >0, feed those rows into the Step79 release gate without productive WebFTR chat release.", "latest_previous_contracts": { "step84_real_wav_message174_regeneration": "/decoders/js8_decoder/logs/js8_real_wav_message174_regeneration_latest.json", "step79_compressed_text_release_gate": "/decoders/js8_decoder/logs/js8_compressed_text_release_gate_latest.json" } } [webftr-js8-lab] step85 summary exit_code=0 [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260528T091124Z_real-wav-wide-data-frame-search.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260528T091124Z_real-wav-wide-data-frame-search_manifest.json [webftr-js8-lab] nested Step85 exit_code=0 ========== STEP86 2/2: UNIQUE FRAME CENSUS / DEDUP ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T091124Z_real_wav_unique_frame_census_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-real-wav-unique-frame-census", "tool_version": "step86-real-wav-unique-frame-census", "schema": "webftr-js8-real-wav-unique-frame-census-v1", "created_utc": "2026-05-28T09:13:47Z", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "purpose": "Deduplicate Step85 real-WAV multi-window results and separate repeated control-frame evidence from true Data/FrameDataCompressed discoveries.", "input_wav": "/decoders/js8_decoder/runtime/input_wavs/A_1_4.wav", "source_step85_json": "/decoders/js8_decoder/logs/js8_real_wav_wide_data_frame_search_latest.json", "source_step85_stat": { "path": "/decoders/js8_decoder/logs/js8_real_wav_wide_data_frame_search_latest.json", "exists": true, "is_file": true, "size": 12676, "mtime_utc": "2026-05-28T09:13:46Z" }, "source_step85_verdict": "step85_real_wav_wide_search_control_frames_only", "wav_was_read": true, "planned_window_count": 1, "tested_window_count": 1, "runtime_info87_rows_count": 48, "source_exact_zero_distance_candidate_count": 16, "message174_decode_count": 2, "frame_probe_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "data_frame_candidate_count": 0, "compressed_data_frame_candidate_count": 0, "webftr_display_count": 2, "unique_webftr_display_count": 2, "duplicate_control_frame_group_count": 2, "unique_frame_rows": [ { "key": "message174:001XqOA2iDZ0", "raw_message174": "001XqOA2iDZ0", "frame_type": "FrameHeartbeat", "status": "HB", "from": "004REY/0V4", "to": "@HB", "text": "HB 004REY/0V4 OJ16", "valid_message174_crc12": true, "crc12_distance": 0, "seen_count": 2, "windows_seen": [ 0 ], "example_row": { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-fb81ef2f", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true } }, { "key": "message174:Q0VsKWqfJ96x", "raw_message174": "Q0VsKWqfJ96x", "frame_type": "FrameDirected", "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "text": "9I2TZR/P 0Z0PMP INFO 28", "valid_message174_crc12": true, "crc12_distance": 0, "seen_count": 2, "windows_seen": [ 0 ], "example_row": { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9546833a", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } } ], "duplicate_frame_rows": [ { "key": "message174:001XqOA2iDZ0", "raw_message174": "001XqOA2iDZ0", "frame_type": "FrameHeartbeat", "status": "HB", "from": "004REY/0V4", "to": "@HB", "text": "HB 004REY/0V4 OJ16", "valid_message174_crc12": true, "crc12_distance": 0, "seen_count": 2, "windows_seen": [ 0 ], "example_row": { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-fb81ef2f", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true } }, { "key": "message174:Q0VsKWqfJ96x", "raw_message174": "Q0VsKWqfJ96x", "frame_type": "FrameDirected", "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "text": "9I2TZR/P 0Z0PMP INFO 28", "valid_message174_crc12": true, "crc12_distance": 0, "seen_count": 2, "windows_seen": [ 0 ], "example_row": { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9546833a", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } } ], "per_window_summaries_preview": [ { "window_index": 0, "window_id": "step85-window-00", "window_wav": "/decoders/js8_decoder/runtime/step85_wide_windows/js8_step85_window_00_0000_0015.wav", "start_seconds": 0.0, "end_seconds": 15.0, "selection_score": -39.0763, "exit_codes": { "candidate_export": 0, "post_ldpc_info87_runtime_export": 0, "source_exact_map_probe": 0, "source_confirmed_message174_decode": 0, "source_varicode_frame_unpack_probe": 0, "source_confirmed_control_frame_rx_release": 0 }, "runtime_info87_rows_count": 48, "source_exact_zero_distance_candidate_count": 16, "message174_decode_count": 2, "frame_probe_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "control_frame_release_count": 2, "webftr_display_count": 2, "webftr_rx_rows_preview": [ { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-fb81ef2f", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true }, { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9546833a", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } ], "outputs": { "candidate_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_candidate_export_output.json", "post_ldpc_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_post_ldpc_info87_runtime_export_output.json", "source_exact_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "message174_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_message174_decode_output.json", "varicode_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_varicode_frame_unpack_probe_output.json", "rx_release_json": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_confirmed_control_frame_rx_release_output.json" } } ], "verdict": "step86_real_wav_unique_control_frames_only_no_data_frames", "warnings": [ "Step86 is a census/dedup gate; it does not release JS8 free text.", "Repeated Heartbeat/Directed rows across nearby windows are counted as duplicate evidence, not separate new messages.", "FrameData and FrameDataCompressed remain blocked until a real externally confirmed fixture or real-WAV data candidate exists." ], "notes": [ "This step was added after Step85 confirmed the real WAV path but repeated the same two control frames across multiple windows.", "If data_frame_candidate_count and compressed_data_frame_candidate_count remain 0, the current js8_test.wav appears to contain only the two confirmed control frames for this chain." ], "next_action": "Use a WAV containing a real JS8 free-text/Data/Compressed frame or import an externally confirmed fixture; otherwise continue decoder work with the two unique control frames as the confirmed audio-to-message174 regression baseline." } [webftr-js8-lab] step86 census exit_code=0 [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260528T091124Z_real-wav-unique-frame-census.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260528T091124Z_real-wav-unique-frame-census_manifest.json [webftr-js8-lab] nested Step86 for wav[1] exit_code=0 ========== STEP87 3/3: CORPUS SUMMARY ========== [webftr-js8-lab] JSON output: /decoders/js8_decoder/logs/20260528T090400Z_real_wav_corpus_data_frame_hunt_output.json [webftr-js8-lab] JSON timeout guard: 60s { "ok": true, "tool": "webftr-js8-real-wav-corpus-data-frame-hunt", "tool_version": "step95-evidence-surface-live-source-fix", "schema": "webftr-js8-real-wav-corpus-data-frame-hunt-v1", "created_utc": "2026-05-28T09:13:48Z", "rx_only": true, "safety": { "tx": false, "ptt": false, "tune": false, "send": false, "js8call_runtime_control": false }, "purpose": "Run the real-WAV Step86 chain over a bounded WAV corpus to find true FrameData/FrameDataCompressed evidence, not duplicate control frames.", "root": "/decoders/js8_decoder", "log_dir": "/decoders/js8_decoder/logs", "plan_json": "/decoders/js8_decoder/logs/20260528T090400Z_real_wav_corpus_plan_output.json", "plan_stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_real_wav_corpus_plan_output.json", "exists": true, "is_file": true, "size": 4156, "mtime_utc": "2026-05-28T09:04:00Z" }, "planned_wav_count": 2, "unique_discovered_wav_count": 2, "duplicate_wav_count": 1, "duplicate_wavs": [ { "path": "/decoders/js8_wavs/A_1_4.wav", "source": "dir:/decoders/js8_wavs", "stat": { "path": "/decoders/js8_wavs/A_1_4.wav", "exists": true, "is_file": true, "size": 360208, "mtime_utc": "2026-05-28T06:39:47Z" }, "fingerprint": { "ok": true, "size": 360208, "sha256_first_2m": "60b650c2090dff5e2144f164ebe692cde5f048c769518e1b1b9e67223f3da138", "key": "size:360208:sha256_first_2m:60b650c2090dff5e2144f164ebe692cde5f048c769518e1b1b9e67223f3da138" }, "duplicate_of": { "path": "/decoders/js8_decoder/runtime/input_wavs/A_1_4.wav", "source": "dir:/decoders/js8_decoder/runtime/input_wavs" }, "dedup_reason": "same_size_and_sha256_first_2m" } ], "tested_wav_count": 2, "wav_was_read": true, "result_json_count": 2, "data_frame_candidate_count": 0, "compressed_data_frame_candidate_count": 0, "wavs_with_data_frame_candidate_count": 0, "wavs_with_compressed_data_frame_candidate_count": 0, "unique_control_frame_total_across_wavs": 4, "per_wav_results": [ { "result_json": "/decoders/js8_decoder/logs/20260528T090400Z_step87_wav0_unique_frame_census_output.json", "result_stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step87_wav0_unique_frame_census_output.json", "exists": true, "is_file": true, "size": 24463, "mtime_utc": "2026-05-28T09:11:24Z" }, "ok": true, "tool_version": "step86-real-wav-unique-frame-census", "verdict": "step86_real_wav_unique_control_frames_only_no_data_frames", "input_wav": "/decoders/js8_test.wav", "wav_was_read": true, "planned_window_count": 3, "tested_window_count": 3, "runtime_info87_rows_count": 144, "source_exact_zero_distance_candidate_count": 48, "message174_decode_count": 6, "frame_type_counts": { "FrameHeartbeat": 3, "FrameDirected": 3 }, "webftr_display_count": 6, "unique_webftr_display_count": 2, "duplicate_control_frame_group_count": 2, "data_frame_candidate_count": 0, "compressed_data_frame_candidate_count": 0, "unique_frame_rows_preview": [ { "key": "message174:001XqOA2iDZ0", "raw_message174": "001XqOA2iDZ0", "frame_type": "FrameHeartbeat", "status": "HB", "from": "004REY/0V4", "to": "@HB", "text": "HB 004REY/0V4 OJ16", "valid_message174_crc12": true, "crc12_distance": 0, "seen_count": 6, "windows_seen": [ 0, 1, 2 ], "example_row": { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-3fa90037", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true } }, { "key": "message174:Q0VsKWqfJ96x", "raw_message174": "Q0VsKWqfJ96x", "frame_type": "FrameDirected", "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "text": "9I2TZR/P 0Z0PMP INFO 28", "valid_message174_crc12": true, "crc12_distance": 0, "seen_count": 6, "windows_seen": [ 0, 1, 2 ], "example_row": { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-2dbbec06", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T090400Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } } ] }, { "result_json": "/decoders/js8_decoder/logs/20260528T090400Z_step87_wav1_unique_frame_census_output.json", "result_stat": { "path": "/decoders/js8_decoder/logs/20260528T090400Z_step87_wav1_unique_frame_census_output.json", "exists": true, "is_file": true, "size": 14764, "mtime_utc": "2026-05-28T09:13:48Z" }, "ok": true, "tool_version": "step86-real-wav-unique-frame-census", "verdict": "step86_real_wav_unique_control_frames_only_no_data_frames", "input_wav": "/decoders/js8_decoder/runtime/input_wavs/A_1_4.wav", "wav_was_read": true, "planned_window_count": 1, "tested_window_count": 1, "runtime_info87_rows_count": 48, "source_exact_zero_distance_candidate_count": 16, "message174_decode_count": 2, "frame_type_counts": { "FrameHeartbeat": 1, "FrameDirected": 1 }, "webftr_display_count": 2, "unique_webftr_display_count": 2, "duplicate_control_frame_group_count": 2, "data_frame_candidate_count": 0, "compressed_data_frame_candidate_count": 0, "unique_frame_rows_preview": [ { "key": "message174:001XqOA2iDZ0", "raw_message174": "001XqOA2iDZ0", "frame_type": "FrameHeartbeat", "status": "HB", "from": "004REY/0V4", "to": "@HB", "text": "HB 004REY/0V4 OJ16", "valid_message174_crc12": true, "crc12_distance": 0, "seen_count": 2, "windows_seen": [ 0 ], "example_row": { "id": "js8-rx67-de15d3110b0d", "source_candidate_id": "js8-frame66-bf1ce62fdb4a", "source_decode_id": "js8-msg174-fb81ef2f", "mode": "JS8", "raw_message174": "001XqOA2iDZ0", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 2920, "computed_crc12": 2920, "frame_type": "FrameHeartbeat", "confidence": "high", "confidence_score": 6, "confidence_reasons": [ "valid_heartbeat_callsign", "valid_heartbeat_grid" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 0, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[0].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 214, "map_name": "raw", "map_source": null }, "status": "HB", "from": "004REY/0V4", "to": "@HB", "grid": "OJ16", "message": "HB 004REY/0V4 OJ16", "text": "HB 004REY/0V4 OJ16", "display_text": "HB 004REY/0V4 OJ16", "is_control_frame": true } }, { "key": "message174:Q0VsKWqfJ96x", "raw_message174": "Q0VsKWqfJ96x", "frame_type": "FrameDirected", "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "text": "9I2TZR/P 0Z0PMP INFO 28", "valid_message174_crc12": true, "crc12_distance": 0, "seen_count": 2, "windows_seen": [ 0 ], "example_row": { "id": "js8-rx67-bd37f68199eb", "source_candidate_id": "js8-frame66-66ab29ded46c", "source_decode_id": "js8-msg174-9546833a", "mode": "JS8", "raw_message174": "Q0VsKWqfJ96x", "valid_message174_crc12": true, "crc12_distance": 0, "received_crc12": 980, "computed_crc12": 980, "frame_type": "FrameDirected", "confidence": "high", "confidence_score": 10, "confidence_reasons": [ "valid_directed_from", "valid_directed_to", "directed_command" ], "show_in_rx_list": true, "candidate_class": "webftr_control_frame_display_ready", "release_guard": "step67_source_confirmed_fixed_control_frame_only", "sort_index": 1, "source": { "source_file": "/decoders/js8_decoder/logs/20260528T091124Z_step85_window0_source_exact_map_probe_output.json", "json_path": "$.top_candidates[1].info87_bitstring", "source_kind": "info87_bitstring", "row_index": 215, "map_name": "raw", "map_source": null }, "status": "INFO", "from": "9I2TZR/P", "to": "0Z0PMP", "command": "INFO", "extra": 59, "extra_value": { "kind": "number", "value": 28 }, "message": "INFO 28", "text": "9I2TZR/P 0Z0PMP INFO 28", "display_text": "9I2TZR/P 0Z0PMP INFO 28", "is_control_frame": true } } ] } ], "wavs_with_data_frame_candidates": [], "wavs_with_compressed_data_frame_candidates": [], "verdict": "step87_corpus_control_frames_only_no_data_frames", "warnings": [ "Step93 keeps Step87 RX-only behavior, keeps Step92 byte-identical WAV de-duplication, and adds per-WAV evidence surfacing in the higher-level handoff summary.", "If only /decoders/js8_test.wav plus the bundled A_1_4.wav are present, the expected result can still be control frames only and zero Data/Compressed frames." ], "next_action": "Add or record a WAV containing a real JS8 free-text/Data/Compressed transmission under runtime/input_wavs or set JS8LAB_WAV_CORPUS_DIRS; rerun Step87. If Data/Compressed candidates appear, feed them into the guarded release/text probe path." } [webftr-js8-lab] OK [webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260528T090400Z_real-wav-corpus-data-frame-hunt.log [webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260528T090400Z_real-wav-corpus-data-frame-hunt_manifest.json