{
  "ok": true,
  "tool": "webftr-js8-jsc-table-extract-probe",
  "tool_version": "step71-jsc-table-extract-probe",
  "schema": "webftr-js8-jsc-table-extract-probe-v1",
  "rx_only_guard": {
    "tx": false,
    "ptt": false,
    "tune": false,
    "send": false,
    "js8call_runtime_control": false,
    "webftr_productive_integration": false
  },
  "no_gui_runtime_started": true,
  "root": "/decoders/js8_decoder",
  "log_dir": "/decoders/js8_decoder/logs",
  "source_resolution": {
    "source_dir": "/decoders/js8_decoder/runtime/src/JS8Call-improved",
    "source_found": true,
    "checked": [
      {
        "path": "/decoders/js8_decoder/runtime/src/JS8Call-improved",
        "exists": true,
        "is_dir": true
      }
    ]
  },
  "step69_audit_summary": {
    "verdict": "jsc_source_ready_no_data_frames_in_current_fixture",
    "has_jsc_decompress_reference": true,
    "has_unpack_fast_data_message": true,
    "has_unpack_legacy_data_message": true,
    "has_huff_fallback_evidence": true
  },
  "jsc_table_source_bundle": {
    "focused_files_present": [
      "JS8_JSC/JSC.cpp",
      "JS8_JSC/JSC.h",
      "JS8_JSC/JSC_map.cpp",
      "JS8_JSC/JSC_list.cpp",
      "JS8_Main/Varicode.cpp",
      "JS8_Main/Varicode.h"
    ],
    "focused_files_missing": [
      "JS8_JSC/jsc.cpp",
      "JS8_JSC/jsc.h"
    ],
    "focused_file_stats": [
      {
        "path": "JS8_JSC/JSC.cpp",
        "exists": true,
        "bytes": 7392,
        "line_count": 299,
        "sha256": "0f1c974a96fd65e043b1a4dbdb69a9ae43e42dafe81f5f22f196b09596dbcdeb"
      },
      {
        "path": "JS8_JSC/JSC.h",
        "exists": true,
        "bytes": 1232,
        "line_count": 48,
        "sha256": "3edfda65865dc4ede66730113c1c7250861253d78ed83f17626ce55c79b0f1d8"
      },
      {
        "path": "JS8_JSC/JSC_map.cpp",
        "exists": true,
        "bytes": 7082880,
        "line_count": 262172,
        "sha256": "ab2bd62ef594f4629a2c93b6de43f5469b1fd6fe67ebf4d24f915bd11ccef813"
      },
      {
        "path": "JS8_JSC/JSC_list.cpp",
        "exists": true,
        "bytes": 7085560,
        "line_count": 262278,
        "sha256": "993811813f1cd6e00e399f25352a34ae477b7e1b50745204c32d3df0058a0491"
      },
      {
        "path": "JS8_Main/Varicode.cpp",
        "exists": true,
        "bytes": 72661,
        "line_count": 2371,
        "sha256": "2b4a877e7dae1a3fdd9141f4dd8af422185977d2e9363ad23ef6bc1918eaf53a"
      },
      {
        "path": "JS8_Main/Varicode.h",
        "exists": true,
        "bytes": 8286,
        "line_count": 222,
        "sha256": "dd7b8bf50466d0d2dc42b8c9ec05a72126363b3cd02c7492c5e2dcc9c9abb99d"
      },
      {
        "path": "JS8_JSC/JSC_checker.h",
        "exists": true,
        "bytes": 477,
        "line_count": 27,
        "sha256": "7bcf0d7af4fcab0274dd8163e3c8273118dea3796dc1993c0eab1e88217156f4"
      },
      {
        "path": "JS8_JSC/JSC_checker.cpp",
        "exists": true,
        "bytes": 8715,
        "line_count": 310,
        "sha256": "274ff9504345d11c9dfdeccd8f8731f5207943a6ca29111f3af7ae922e70852b"
      }
    ],
    "file_payload_summaries": [
      {
        "path": "JS8_JSC/JSC.cpp",
        "token_hits": {
          "JSC::decompress": 1,
          "JSC::compress": 1,
          "QMap": 1,
          "QStringList": 2,
          "decompress": 2,
          "compress": 8
        },
        "quoted_payloads": {
          "count": 5,
          "sha1": "86f5f3914035b44a10590f65931e95744bc1fbe4",
          "preview": [
            "JSC.h",
            "JS8_Main/Varicode.h",
            " ",
            " ",
            " "
          ],
          "longest_length": 19
        },
        "numeric_payloads": {
          "count": 54,
          "sha1": "fb4c05cb8238ab66e1bfa80b17bcec09deadefac",
          "preview": [
            3,
            2018,
            1,
            1,
            0,
            1,
            4,
            7,
            2,
            4,
            0,
            1,
            1,
            0,
            4,
            7,
            2,
            8,
            0,
            0,
            1,
            2,
            1,
            3,
            2,
            4,
            3,
            5,
            4,
            6,
            5,
            7,
            6,
            0,
            4,
            4,
            4,
            0,
            1,
            1
          ],
          "min": 0,
          "max": 2018
        },
        "table_block_candidate_count": 0
      },
      {
        "path": "JS8_JSC/JSC.h",
        "token_hits": {
          "QMap": 1,
          "QVector": 3,
          "QStringList": 1,
          "decompress": 1,
          "compress": 2
        },
        "quoted_payloads": {
          "count": 0,
          "sha1": null,
          "preview": [],
          "longest_length": 0
        },
        "numeric_payloads": {
          "count": 7,
          "sha1": "ea8c788ef4b3aaf44d94bb8032429b9d04c26370",
          "preview": [
            2018,
            0,
            262144,
            262144,
            262144,
            103,
            103
          ],
          "min": 0,
          "max": 262144
        },
        "table_block_candidate_count": 0
      },
      {
        "path": "JS8_JSC/JSC_map.cpp",
        "token_hits": {
          "JSC_map": 1
        },
        "quoted_payloads": {
          "count": 10000,
          "sha1": "526769a40ad90e2d2c34287e98b746084c09f2f2",
          "preview": [
            "JSC.h",
            "E",
            "T",
            "A",
            "O",
            "I",
            "N",
            "S",
            "H",
            "R",
            "D",
            "L",
            "C",
            "U",
            "M",
            "W",
            "F",
            "G",
            "Y",
            "P",
            "B",
            ",",
            ".",
            "V",
            "K",
            "-",
            "+",
            "\"",
            "?",
            "!"
          ],
          "longest_length": 90
        },
        "numeric_payloads": {
          "count": 20000,
          "sha1": "0999e8706f8310753ed73308c79924be7059bcae",
          "preview": [
            3,
            2018,
            262144,
            1,
            0,
            1,
            1,
            1,
            2,
            1,
            3,
            1,
            4,
            1,
            5,
            1,
            6,
            1,
            7,
            1,
            8,
            1,
            9,
            1,
            10,
            1,
            11,
            1,
            12,
            1,
            13,
            1,
            14,
            1,
            15,
            1,
            16,
            1,
            17,
            1
          ],
          "min": 0,
          "max": 262144
        },
        "table_block_candidate_count": 0
      },
      {
        "path": "JS8_JSC/JSC_list.cpp",
        "token_hits": {
          "JSC_list": 1
        },
        "quoted_payloads": {
          "count": 10000,
          "sha1": "f0431a6771d806630866a7b704ee1c5504554fcd",
          "preview": [
            "JSC.h",
            "~",
            "}",
            "|",
            "{",
            "`",
            "_",
            "^",
            "]",
            " ",
            "[",
            "ZZZZ",
            "ZZZ",
            "ZZYY",
            "ZZYW",
            "ZZYT",
            "ZZYS",
            "ZZYP",
            "ZZYO",
            "ZZYL",
            "ZZYI",
            "ZZYH",
            "ZZYG",
            "ZZYF",
            "ZZYD",
            "ZZYC",
            "ZZYB",
            "ZZYA",
            "ZZY",
            "ZZWO"
          ],
          "longest_length": 22
        },
        "numeric_payloads": {
          "count": 20000,
          "sha1": "ce4b3ea12826f80b3a2dfe6628a53db1902c8d0c",
          "preview": [
            3,
            2018,
            262144,
            1,
            66,
            1,
            61,
            1,
            62,
            1,
            60,
            1,
            65,
            1,
            48,
            1,
            64,
            1,
            59,
            1,
            67,
            1,
            58,
            4,
            91474,
            3,
            70901,
            4,
            171515,
            4,
            183602,
            4,
            195566,
            4,
            133423,
            4,
            253527,
            4,
            172771,
            4
          ],
          "min": 1,
          "max": 262144
        },
        "table_block_candidate_count": 2
      },
      {
        "path": "JS8_Main/Varicode.cpp",
        "token_hits": {
          "JSC::decompress": 3,
          "JSC::compress": 1,
          "QMap": 12,
          "QVector": 19,
          "QStringList": 17,
          "decompress": 3,
          "compress": 30
        },
        "quoted_payloads": {
          "count": 335,
          "sha1": "5b618b61efcffa1dfb4a996a41c3763b30b3ebaf",
          "preview": [
            "Varicode.h",
            "JS8_JSC/JSC.h",
            "JS8_Mode/DecodedText.h",
            "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ+-./?",
            "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+/?.",
            "((?<grid>[A-X]{2}[0-9]{2}(?:[A-X]{2}(?:[0-9]{2})?)*)+)",
            "((?<callsign>(\\d|[A-Z])+\\/?((\\d|[A-Z]){2,})(\\/(\\d|[A-Z])+)?(\\/(\\d|[A-Z])+)?))",
            "((?<callsign>\\b(?<base>([0-9A-Z])?([0-9A-Z])([0-9])([A-Z])?([A-Z])?([A-Z])?)(?<portable>[/][P])?\\b))",
            "((?<callsign>\\b(?<prefix>[A-Z0-9]{1,4}\\/)?(?<base>([0-9A-Z])?([0-9A-Z])([0-9])([A-Z])?([A-Z])?([A-Z])?)(?<suffix>\\/[A-Z0",
            "((?<callsign>(?:[@]?|\\b)(?<extended>[A-Z0-9\\/@][A-Z0-9\\/]{0,2}[\\/]?[A-Z0-9\\/]{0,3}[\\/]?[A-Z0-9\\/]{0,3})\\b))",
            "(([0-9A-Z ])([0-9A-Z])([0-9])([A-Z ])([A-Z ])([A-Z ]))",
            "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ /@",
            " HEARTBEAT",
            " HB",
            " CQ",
            " SNR?",
            "?",
            " DIT DIT",
            " HEARING?",
            " GRID?",
            ">",
            " STATUS?",
            " STATUS",
            " HEARING",
            " MSG",
            " MSG TO:",
            " QUERY",
            " QUERY MSGS",
            " QUERY MSGS?",
            " QUERY CALL"
          ],
          "longest_length": 162
        },
        "numeric_payloads": {
          "count": 1192,
          "sha1": "ff0cbffa918ab131a36a79d6d1d25e6c88f86caa",
          "preview": [
            2018,
            41,
            2,
            0,
            9,
            2,
            2,
            0,
            9,
            2,
            2,
            0,
            0,
            0,
            9,
            9,
            1,
            4,
            0,
            0,
            0,
            9,
            9,
            1,
            4,
            9,
            9,
            0,
            2,
            9,
            0,
            3,
            9,
            0,
            3,
            0,
            0,
            0,
            9,
            1
          ],
          "min": 0,
          "max": 18446744069414584320
        },
        "table_block_candidate_count": 8
      },
      {
        "path": "JS8_Main/Varicode.h",
        "token_hits": {
          "QMap": 4,
          "QVector": 11,
          "QStringList": 6
        },
        "quoted_payloads": {
          "count": 8,
          "sha1": "7367de55acb564de81eebdd9813c1eaff7b97838",
          "preview": [
            "FrameHeartbeat",
            "FrameCompound",
            "FrameCompoundDirected",
            "FrameDirected",
            "FrameData",
            "FrameUnknown",
            "FrameDataCompressed",
            "FrameUnknown"
          ],
          "longest_length": 21
        },
        "numeric_payloads": {
          "count": 35,
          "sha1": "d738220eafa90f4a5dc6077ab67377f9a0bd532f",
          "preview": [
            2018,
            0,
            1,
            2,
            4,
            8,
            0,
            0,
            1,
            1,
            2,
            10,
            4,
            100,
            0,
            1,
            10,
            11,
            255,
            11111111,
            0,
            0,
            1,
            1,
            2,
            10,
            3,
            11,
            4,
            2,
            6,
            2,
            6,
            5,
            0
          ],
          "min": 0,
          "max": 11111111
        },
        "table_block_candidate_count": 1
      },
      {
        "path": "JS8_JSC/JSC_checker.h",
        "token_hits": {
          "QStringList": 1
        },
        "quoted_payloads": {
          "count": 0,
          "sha1": null,
          "preview": [],
          "longest_length": 0
        },
        "numeric_payloads": {
          "count": 1,
          "sha1": "66efd9eefecf45dd64eff8e5cb2d13e005041925",
          "preview": [
            2018
          ],
          "min": 2018,
          "max": 2018
        },
        "table_block_candidate_count": 0
      },
      {
        "path": "JS8_JSC/JSC_checker.cpp",
        "token_hits": {
          "QStringList": 3
        },
        "quoted_payloads": {
          "count": 15,
          "sha1": "9b2bf80a6353b9cb8b09e773feb295953e998aa4",
          "preview": [
            "JSC_checker.h",
            "JS8_Main/Varicode.h",
            "JSC.h",
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
            "^\\\\d+$",
            "^\\\\w$",
            "checking range ",
            " - ",
            "@",
            "correct",
            "word",
            "correct",
            "computing suggestions for word",
            "suggest",
            "jsc_checker.js8"
          ],
          "longest_length": 30
        },
        "numeric_payloads": {
          "count": 23,
          "sha1": "f0250c33ef66d223306f5b7bc0bf91b99a8c8389",
          "preview": [
            3,
            2018,
            10,
            1,
            1,
            0,
            1,
            4,
            1,
            0,
            26,
            1,
            1,
            0,
            0,
            1,
            1,
            1,
            0,
            0,
            1,
            1,
            0
          ],
          "min": 0,
          "max": 2018
        },
        "table_block_candidate_count": 1
      }
    ],
    "table_block_candidates": [
      {
        "path": "JS8_JSC/JSC_list.cpp",
        "line": 25,
        "header_preview": "const Tuple JSC::list[262144]",
        "chars": 59,
        "sha256": "3eec4a2bc6458577c879e78f7207111bdc6a7ab330046e8ffd166fa6bfb2a944",
        "quoted_count": 2,
        "numeric_count": 4,
        "quoted_preview": [
          "~",
          "}"
        ],
        "numeric_preview": [
          1,
          66,
          1,
          61
        ]
      },
      {
        "path": "JS8_JSC/JSC_list.cpp",
        "line": 262173,
        "header_preview": "const Tuple JSC::prefix[103]",
        "chars": 2653,
        "sha256": "1569ed8197a2f077de22bffd3dc786f991984e2a5cff24a3ff4bb3647d29de57",
        "quoted_count": 103,
        "numeric_count": 216,
        "quoted_preview": [
          "!",
          "\"",
          "#",
          "$",
          "%",
          "&",
          "'",
          "(",
          ")",
          "*",
          "+",
          ","
        ],
        "numeric_preview": [
          1,
          262143,
          1,
          262142,
          1,
          262141,
          1,
          262140,
          1,
          262139,
          1,
          262138,
          8,
          262130,
          1,
          262129,
          1,
          262128,
          1,
          262127
        ]
      },
      {
        "path": "JS8_Main/Varicode.cpp",
        "line": 48,
        "header_preview": "QMap<QString, int> directed_cmds",
        "chars": 2098,
        "sha256": "54c2ee30ebb5f60ef3cf547c16b803a935cf607e5f7a630e48701207d5f14cd7",
        "quoted_count": 39,
        "numeric_count": 44,
        "quoted_preview": [
          " HEARTBEAT",
          " HB",
          " CQ",
          " SNR?",
          "?",
          " DIT DIT",
          " HEARING?",
          " GRID?",
          ">",
          " STATUS?",
          " STATUS",
          " HEARING"
        ],
        "numeric_preview": [
          1,
          1,
          1,
          0,
          0,
          1,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          12,
          13,
          14,
          15
        ]
      },
      {
        "path": "JS8_Main/Varicode.cpp",
        "line": 120,
        "header_preview": "int> allowed_cmds",
        "chars": 183,
        "sha256": "921b9fb284ec74ed27550d958b8232fc4562cfc26374671be18dc79b7cd44fe5",
        "quoted_count": 0,
        "numeric_count": 33,
        "quoted_preview": [],
        "numeric_preview": [
          1,
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18
        ]
      },
      {
        "path": "JS8_Main/Varicode.cpp",
        "line": 125,
        "header_preview": "int> autoreply_cmds",
        "chars": 46,
        "sha256": "a0eceffe1f310810db3a69968d808b0bc08a9617311c71ccbfb89e1268159e90",
        "quoted_count": 0,
        "numeric_count": 13,
        "quoted_preview": [],
        "numeric_preview": [
          0,
          2,
          3,
          4,
          6,
          9,
          10,
          11,
          12,
          13,
          14,
          16,
          30
        ]
      },
      {
        "path": "JS8_Main/Varicode.cpp",
        "line": 128,
        "header_preview": "int> buffered_cmds",
        "chars": 30,
        "sha256": "17ce3f628d245621b9a126abcf924416add4bfb37925df2ae73036935fe3d460",
        "quoted_count": 0,
        "numeric_count": 8,
        "quoted_preview": [],
        "numeric_preview": [
          5,
          9,
          10,
          11,
          12,
          13,
          15,
          24
        ]
      },
      {
        "path": "JS8_Main/Varicode.cpp",
        "line": 134,
        "header_preview": "QMap<int, int> checksum_cmds",
        "chars": 112,
        "sha256": "8f554b3c0fbb86b5baac4fc4e75814fb8f0c166e200e1655300329e1e0420d6b",
        "quoted_count": 0,
        "numeric_count": 16,
        "quoted_preview": [],
        "numeric_preview": [
          5,
          16,
          9,
          16,
          10,
          16,
          11,
          16,
          12,
          16,
          13,
          16,
          15,
          0,
          24,
          16
        ]
      },
      {
        "path": "JS8_Main/Varicode.cpp",
        "line": 162,
        "header_preview": "QMap<QString, QString> hufftable",
        "chars": 1766,
        "sha256": "0801e3084efe5d61bc4bc84d40cd23260d543c79cced73cdf3cd16e50508a196",
        "quoted_count": 88,
        "numeric_count": 142,
        "quoted_preview": [
          " ",
          "01",
          "E",
          "100",
          "T",
          "1101",
          "A",
          "0011",
          "O",
          "11111",
          "I",
          "11100"
        ],
        "numeric_preview": [
          1,
          1,
          0,
          100,
          0,
          5,
          1101,
          0,
          333333333333,
          11,
          0,
          25,
          11111,
          0,
          2,
          11100,
          0,
          166666666667,
          10111,
          0
        ]
      },
      {
        "path": "JS8_Main/Varicode.cpp",
        "line": 218,
        "header_preview": "QMap<QString, quint32> basecalls",
        "chars": 2846,
        "sha256": "ecf17790db5faadd7958a64dcb9e8aeac79427ac61b390ae07e791615489eee4",
        "quoted_count": 54,
        "numeric_count": 75,
        "quoted_preview": [
          "<....>",
          "@ALLCALL",
          "@JS8NET",
          "@DX/NA",
          "@DX/SA",
          "@DX/EU",
          "@DX/AS",
          "@DX/AF",
          "@DX/OC",
          "@DX/AN",
          "@REGION/1",
          "@REGION/2"
        ],
        "numeric_preview": [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          1,
          11,
          1,
          2,
          12,
          2,
          3,
          13,
          3,
          0
        ]
      },
      {
        "path": "JS8_Main/Varicode.cpp",
        "line": 287,
        "header_preview": "QMap<quint32, QString> cqs",
        "chars": 133,
        "sha256": "faa00ed894e44ef5d1125aaf6e47012146124ac4376d3aad68619f80327b6a5e",
        "quoted_count": 8,
        "numeric_count": 8,
        "quoted_preview": [
          "CQ CQ CQ",
          "CQ DX",
          "CQ QRP",
          "CQ CONTEST",
          "CQ FIELD",
          "CQ FD",
          "CQ CQ",
          "CQ"
        ],
        "numeric_preview": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7
        ]
      },
      {
        "path": "JS8_Main/Varicode.h",
        "line": 63,
        "header_preview": "const char *FrameTypeStrings[]",
        "chars": 204,
        "sha256": "3441dcd80fd6f257f494645a7f0678cc0dc1b4fd4d570d067ae2fcf8534210c3",
        "quoted_count": 7,
        "numeric_count": 1,
        "quoted_preview": [
          "FrameHeartbeat",
          "FrameCompound",
          "FrameCompoundDirected",
          "FrameDirected",
          "FrameData",
          "FrameUnknown",
          "FrameDataCompressed"
        ],
        "numeric_preview": [
          5
        ]
      },
      {
        "path": "JS8_JSC/JSC_checker.cpp",
        "line": 37,
        "header_preview": "const QString ALPHABET",
        "chars": 30,
        "sha256": "a6aa5a9ec226235c107a7514939a75632d8f3ca405f0875660d8377ae7de8c32",
        "quoted_count": 1,
        "numeric_count": 0,
        "quoted_preview": [
          "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        ],
        "numeric_preview": []
      }
    ],
    "payload_totals": {
      "quoted_payload_count": 20363,
      "numeric_literal_count": 41312,
      "table_block_candidate_count": 12
    },
    "bundle_fingerprint_sha256": "46ff5c2aab7d37a5c20755654d61598e07ed137a6a9bdf07a2425bcf343d95e0"
  },
  "port_readiness": {
    "has_jsc_cpp": true,
    "has_jsc_h": true,
    "has_jsc_map_cpp": true,
    "has_jsc_list_cpp": true,
    "has_payload_tables_or_literals": true,
    "has_decompress_path_evidence": true,
    "table_extract_ready": true,
    "compressed_frame_display_release_allowed": false
  },
  "webftr_adapter_hint": {
    "safe_to_poll_read_only": true,
    "productive_integration": false,
    "do_not_merge_as_chat_text_yet": true,
    "step68_contract_remains_current_ui_source": true
  },
  "warnings": [
    "Step71 is a source-table extraction/readiness probe only.",
    "It does not execute JSC::decompress and does not release compressed FrameData as chat text.",
    "Fingerprints/previews are meant to anchor the next guarded source-faithful port step."
  ],
  "verdict": "jsc_table_payload_extracted_port_ready",
  "next_action": "Implement the guarded JSC bitstream/table decoder against this extracted fingerprint bundle, then validate only with compressed FrameData fixtures.",
  "stable_latest_written": "/decoders/js8_decoder/logs/js8_jsc_table_extract_probe_latest.json"
}
