diagnostics_ok/decoders/js8_decoder/decoders/js8_test.wav?t=1779937968524000101",
"python_text": "CQ ",
"cpp_text": "CQ ",
"expected_text": "CQ ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 240,
"word": "TEST",
"separate": false,
"bits": "1001110100100",
"python_text": "TEST",
"cpp_text": "TEST",
"expected_text": "TEST",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 240,
"word": "TEST",
"separate": true,
"bits": "1001110100101",
"python_text": "TEST ",
"cpp_text": "TEST ",
"expected_text": "TEST ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 6571,
"word": "HELLO",
"separate": false,
"bits": "011110001011100001010",
"python_text": "HELLO",
"cpp_text": "HELLO",
"expected_text": "HELLO",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 6571,
"word": "HELLO",
"separate": true,
"bits": "011110001011100001011",
"python_text": "HELLO ",
"cpp_text": "HELLO ",
"expected_text": "HELLO ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 125,
"word": "DE",
"separate": false,
"bits": "0111111001100",
"python_text": "DE",
"cpp_text": "DE",
"expected_text": "DE",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 125,
"word": "DE",
"separate": true,
"bits": "0111111001101",
"python_text": "DE ",
"cpp_text": "DE ",
"expected_text": "DE ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 0,
"word": "E",
"separate": false,
"bits": "00000",
"python_text": "E",
"cpp_text": "E",
"expected_text": "E",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 0,
"word": "E",
"separate": true,
"bits": "00001",
"python_text": "E ",
"cpp_text": "E ",
"expected_text": "E ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 1,
"word": "T",
"separate": false,
"bits": "00010",
"python_text": "T",
"cpp_text": "T",
"expected_text": "T",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 1,
"word": "T",
"separate": true,
"bits": "00011",
"python_text": "T ",
"cpp_text": "T ",
"expected_text": "T ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 2,
"word": "A",
"separate": false,
"bits": "00100",
"python_text": "A",
"cpp_text": "A",
"expected_text": "A",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 2,
"word": "A",
"separate": true,
"bits": "00101",
"python_text": "A ",
"cpp_text": "A ",
"expected_text": "A ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 67,
"word": " ",
"separate": false,
"bits": "111101000",
"python_text": " ",
"cpp_text": " ",
"expected_text": " ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 67,
"word": " ",
"separate": true,
"bits": "111101001",
"python_text": " ",
"cpp_text": " ",
"expected_text": " ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 3,
"word": "O",
"separate": false,
"bits": "00110",
"python_text": "O",
"cpp_text": "O",
"expected_text": "O",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 3,
"word": "O",
"separate": true,
"bits": "00111",
"python_text": "O ",
"cpp_text": "O ",
"expected_text": "O ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 6,
"word": "S",
"separate": false,
"bits": "01100",
"python_text": "S",
"cpp_text": "S",
"expected_text": "S",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 6,
"word": "S",
"separate": true,
"bits": "01101",
"python_text": "S ",
"cpp_text": "S ",
"expected_text": "S ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 7,
"word": "H",
"separate": false,
"bits": "011100000",
"python_text": "H",
"cpp_text": "H",
"expected_text": "H",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 7,
"word": "H",
"separate": true,
"bits": "011100001",
"python_text": "H ",
"cpp_text": "H ",
"expected_text": "H ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 8,
"word": "R",
"separate": false,
"bits": "011100010",
"python_text": "R",
"cpp_text": "R",
"expected_text": "R",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 8,
"word": "R",
"separate": true,
"bits": "011100011",
"python_text": "R ",
"cpp_text": "R ",
"expected_text": "R ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 15,
"word": "F",
"separate": false,
"bits": "100000010",
"python_text": "F",
"cpp_text": "F",
"expected_text": "F",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 15,
"word": "F",
"separate": true,
"bits": "100000011",
"python_text": "F ",
"cpp_text": "F ",
"expected_text": "F ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 31,
"word": ")",
"separate": false,
"bits": "101000110",
"python_text": ")",
"cpp_text": ")",
"expected_text": ")",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 31,
"word": ")",
"separate": true,
"bits": "101000111",
"python_text": ") ",
"cpp_text": ") ",
"expected_text": ") ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 100,
"word": "BD",
"separate": false,
"bits": "0111101100100",
"python_text": "BD",
"cpp_text": "BD",
"expected_text": "BD",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 100,
"word": "BD",
"separate": true,
"bits": "0111101100101",
"python_text": "BD ",
"cpp_text": "BD ",
"expected_text": "BD ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 1000,
"word": "TNU",
"separate": false,
"bits": "01111100110101100",
"python_text": "TNU",
"cpp_text": "TNU",
"expected_text": "TNU",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 1000,
"word": "TNU",
"separate": true,
"bits": "01111100110101101",
"python_text": "TNU ",
"cpp_text": "TNU ",
"expected_text": "TNU ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 12345,
"word": "EB33",
"separate": false,
"bits": "100010011100111001000",
"python_text": "EB33",
"cpp_text": "EB33",
"expected_text": "EB33",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 12345,
"word": "EB33",
"separate": true,
"bits": "100010011100111001001",
"python_text": "EB33 ",
"cpp_text": "EB33 ",
"expected_text": "EB33 ",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 199999,
"word": "LSYR",
"separate": false,
"bits": "1010100101111100101100100",
"python_text": "LSYR",
"cpp_text": "LSYR",
"expected_text": "LSYR",
"python_complete": true,
"cpp_complete": true,
"passes": true
},
{
"index": 199999,
"word": "LSYR",
"separate": true,
"bits": "1010100101111100101100101",
"python_text": "LSYR ",
"cpp_text": "LSYR ",
"expected_text": "LSYR ",
"python_complete": true,
"cpp_complete": true,
"passes": true
}
]
},
"release_gate_status": {
"compressed_text_release_allowed": false,
"productive_webftr_integration_allowed": false,
"step79_release_gate_still_required": true,
"external_fixture_still_required": true,
"multi_frame_assembly_validated": false
},
"webftr_adapter_hint": {
"safe_to_poll_read_only": true,
"productive_integration": false,
"step68_contract_remains_current_stable_ui_source": true,
"cpp_reference_latest": "/logs/js8_jsc_cpp_reference_compare_latest.json",
"do_not_merge_as_productive_chat_text_yet": true
},
"warnings": [
"Step81 compares the Python JSC decompressor against an independent C++ harness using the source-extracted JSC map with a hex length-safe map transport.",
"It still does not prove a real RF/JS8Call FrameDataCompressed text fixture.",
"Compressed JS8 free-text release remains blocked until Step79 sees an externally confirmed fixture.",
"RX-only safety remains enforced: no JS8Call runtime control and no TX/PTT/Tune/Send."
],
"map_transport_fix": {
"previous_step80_issue": "line-delimited-map-transport-corrupted-words-with-embedded-newlines-or-control-bytes",
"current_transport": "hex-lines-utf8-v1",
"purpose": "keep Python and C++ harness map indices byte-identical"
},
"verdict": "step81_cpp_reference_compare_passed_waiting_for_real_external_fixture",
"next_action": "Import one externally confirmed compressed FrameDataCompressed fixture, then rerun Step79/Step81 before any lab text release.",
"stable_latest_written": "/decoders/js8_decoder/logs/js8_jsc_cpp_reference_compare_latest.json"
}
[webftr-js8-lab] OK
[webftr-js8-lab] log file: /decoders/js8_decoder/logs/20260528T030727Z_jsc-cpp-reference-map-transport-fix.log
[webftr-js8-lab] manifest: /decoders/js8_decoder/logs/20260528T030727Z_jsc-cpp-reference-map-transport-fix_manifest.json
Auto-Refresh alle 5 Sekunden mit frischem ?t=.... RX-only: kein TX, kein PTT, kein Tune, kein Send.