{
  "ok": false,
  "error": "json_command_timeout_guard",
  "timeout_seconds": 75,
  "exit_code": 143,
  "command": [
    "python3",
    "-m",
    "webftr_js8_lab.js8_ldpc_soft_decode",
    "--candidate-json",
    "/decoders/js8_decoder/runtime/timing_boundary_sweep/step41_best_timing_fec_candidate.json",
    "--pretty",
    "--output-dir",
    "/decoders/js8_decoder/runtime/ldpc_soft_decode",
    "--max-iterations",
    "64",
    "--alpha",
    "0.80",
    "--max-decode-rows",
    "16",
    "--repair-rows",
    "8",
    "--repair-pool-size",
    "22",
    "--repair-max-depth",
    "3"
  ],
  "stderr_log": "/decoders/js8_decoder/logs/20260527T053939Z_ldpc_soft_decode_output.stderr.log",
  "stderr_tail": "",
  "rx_only": true,
  "safety": {
    "tx": false,
    "ptt": false,
    "tune": false,
    "send": false,
    "js8call_runtime_control": false
  },
  "next_action": "Step 41 timeout guard stopped this expensive probe; preserved partial timing JSON when available. The real-run now continues with quick-window fallback when available; otherwise inspect stderr/log bundle."
}