{
  "ok": true,
  "tool": "webftr-js8-real-compressed-fixture-intake-helper",
  "tool_version": "step76-real-compressed-fixture-intake-helper",
  "schema": "webftr-js8-real-compressed-fixture-intake-helper-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",
  "state": "fixture_intake_ready_waiting_for_real_values",
  "intake_errors": [],
  "operator_input_seen": false,
  "normalized_message174": null,
  "target_fixture_file": "/decoders/js8_decoder/runtime/fixtures/js8_compressed_frame_fixtures.json",
  "fixture_write_result": null,
  "helper_files": {
    "readme": "/decoders/js8_decoder/runtime/fixtures/README_STEP76_REAL_FIXTURE_INTAKE.md",
    "shell_helper": "/decoders/js8_decoder/runtime/fixtures/add_real_js8_fixture_step76.sh"
  },
  "step75_summary": {
    "tool_version": "step75-real-compressed-fixture-capture-request",
    "state": "waiting_for_real_compressed_framedata_fixture",
    "next_action": "Fill runtime/fixtures/js8_compressed_frame_fixtures.json from the generated template, then rerun Step75.",
    "step74_gate_summary": {
      "tool_version": "step75-real-compressed-fixture-capture-request",
      "verdict": "fixture_gate_selftest_ready_waiting_for_real_compressed_frame_fixture",
      "next_action": "Add a real fixture JSON under runtime/fixtures/js8_compressed_frame_fixtures.json or pass it as argument to Step74.",
      "source_found": true,
      "jsc_entry_count": 200000,
      "external_fixture_count": 0,
      "external_fixture_pass_count": 0,
      "external_source_comparison_pass_count": 0,
      "synthetic_selftest_fixture_count": 8,
      "synthetic_selftest_pass_count": 8,
      "synthetic_selftest_all_passed": true,
      "webftr_display_count": 0
    },
    "target_fixture_file": "/decoders/js8_decoder/runtime/fixtures/js8_compressed_frame_fixtures.json",
    "written_template": "/decoders/js8_decoder/runtime/fixtures/js8_compressed_frame_fixtures.template.json"
  },
  "webftr_rx_rows": [],
  "webftr_display_count": 0,
  "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,
    "step76_intake_latest": "/logs/js8_real_fixture_intake_helper_latest.json",
    "step75_request_latest": "/logs/js8_real_compressed_fixture_request_latest.json",
    "step74_gate_latest": "/logs/js8_compressed_frame_fixture_gate_latest.json"
  },
  "one_command_examples": [
    "JS8LAB_FIXTURE_MESSAGE174='12CHARSxxxxx' JS8LAB_FIXTURE_EXPECTED_TEXT='HELLO' JS8LAB_FIXTURE_REFERENCE='JS8Call reference log line' JS8LAB_FIXTURE_CONFIRM_EXTERNAL=1 ./RUN_JS8_STEP76_REAL_FIXTURE_INTAKE_HELPER.sh",
    "runtime/fixtures/add_real_js8_fixture_step76.sh 12CHARSxxxxx 'HELLO' 'JS8Call reference log line' /decoders/js8_test.wav"
  ],
  "warnings": [
    "Step76 only imports and validates a real/reference compressed fixture; it does not release WebFTR chat text.",
    "A fixture must be externally confirmed against JS8Call/JS8Call-Improved or a trusted RF comparison before it can be used for a release gate.",
    "The package remains RX-only and never starts JS8Call GUI/runtime control or TX/PTT/Tune/Send actions."
  ],
  "next_action": "Use runtime/fixtures/add_real_js8_fixture_step76.sh or JS8LAB_FIXTURE_* environment variables to import one real JS8Call/RF comparison frame.",
  "stable_latest_written": "/decoders/js8_decoder/logs/js8_real_fixture_intake_helper_latest.json"
}
