{
  "checker": {
    "details": {
      "argv": [
        "<host-path>"
      ],
      "blocker": "product invocation failed: {\"returncode\": 1, \"stdout\": \"\\u001b[H\\u001b[2J\\u001b[3J\\u001b[0;38;5;72;49m\\n _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\\n |  __  __   ___   _   _   ___   ____   __   __  |\\n|  |  \\\\/  | |_ _| | \\\\ | | |_ _| |  _ \\\\  \\\\ \\\\ / /   |\\n|  | |\\\\/| |/ | | \\\\|  \\\\| |/ | | \\\\| |_) | /\\\\ V /    |\\n|  |_|  |_| |___| |_| \\\\_| |___| | .__/    | |     |\\n |                              |_|       |_|    |\\n _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \\n\\n\\u001b[0m\\n\\r\\n[?] \\u001b[1;38;5;180;49mChoose a category\\u001b[0m: \\n -> games\\n    tools\\n    \\u001b[1;31mStop\\u001b[0m\\n\\n\", \"stderr\": \"Traceback (most recent call last):\\n  File \\\"<host-path>\\\", line 8, in <module>\\n    sys.exit(main())\\n             ^^^^^^\\n  File \\\"<host-path>\\\", line 39, in main\\n    category = ask(\\\"\\\\033[1;38;5;180;49mChoose a category\\\\033[0m\\\", \\n               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 72, in ask\\n    answer = inquirer.prompt([\\n             ^^^^^^^^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 11, in prompt\\n    answers[question.name] = render.render(question, answers)\\n                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 38, in render\\n    return self._event_loop(render)\\n           ^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 52, in _event_loop\\n    self._process_input(render)\\n  File \\\"<host-path>\\\", line 107, in _process_input\\n    ev = self._event_gen.next()\\n         ^^^^^^^^^^^^^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 22, in next\\n    return KeyPressed(self._key_gen())\\n                      ^^^^^^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 34, in readkey\\n    c1 = readchar()\\n         ^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 18, in readchar\\n    old_settings = termios.tcgetattr(fd)\\n                   ^^^^^^^^^^^^^^^^^^^^^\\ntermios.error: (25, 'Inappropriate ioctl for device')\\n\", \"needs_credentials\": false, \"needs_browser\": false}",
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 1,
      "stderr": "Traceback (most recent call last):\n  File \"<host-path>\", line 8, in <module>\n    sys.exit(main())\n             ^^^^^^\n  File \"<host-path>\", line 39, in main\n    category = ask(\"\\033[1;38;5;180;49mChoose a category\\033[0m\", \n               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"<host-path>\", line 72, in ask\n    answer = inquirer.prompt([\n             ^^^^^^^^^^^^^^^^^\n  File \"<host-path>\", line 11, in prompt\n    answers[question.name] = render.render(question, answers)\n[excerpt truncated]",
      "stdout": "[H[2J[3J[0;38;5;72;49m\n _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n |  __  __   ___   _   _   ___   ____   __   __  |\n|  |  \\/  | |_ _| | \\ | | |_ _| |  _ \\  \\ \\ / /   |\n|  | |\\/| |/ | | \\|  \\| |/ | | \\| |_) | /\\ V /    |\n|  |_|  |_| |___| |_| \\_| |___| | .__/    | |     |\n |                              |_|       |_|    |\n _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\n[0m\n\n[?] [1;38;5;180;49mChoose a category[0m: \n[excerpt truncated]",
      "working": false
    },
    "status": "FAIL"
  },
  "deviations": [
    "README does not specify a venv; created <host-path> because the guest pip is externally managed and the probe needs an absolute tool path.",
    "Probe sets TERM=xterm; without it blessed prints 'TERM environment variable not set.'",
    "Skipped optional audio (pyaudio/portaudio19-dev) and FFmpeg: not needed for the menu.",
    "Did not run the repository's unit or lint suites (none documented in README)."
  ],
  "main_blocker": "product invocation failed: {\"returncode\": 1, \"stdout\": \"\\u001b[H\\u001b[2J\\u001b[3J\\u001b[0;38;5;72;49m\\n _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\\n |  __  __   ___   _   _   ___   ____   __   __  |\\n|  |  \\\\/  | |_ _| | \\\\ | | |_ _| |  _ \\\\  \\\\ \\\\ / /   |\\n|  | |\\\\/| |/ | | \\\\|  \\\\| |/ | | \\\\| |_) | /\\\\ V /    |\\n|  |_|  |_| |___| |_| \\\\_| |___| | .__/    | |     |\\n |                              |_|       |_|    |\\n _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \\n\\n\\u001b[0m\\n\\r\\n[?] \\u001b[1;38;5;180;49mChoose a category\\u001b[0m: \\n -> games\\n    tools\\n    \\u001b[1;31mStop\\u001b[0m\\n\\n\", \"stderr\": \"Traceback (most recent call last):\\n  File \\\"<host-path>\\\", line 8, in <module>\\n    sys.exit(main())\\n             ^^^^^^\\n  File \\\"<host-path>\\\", line 39, in main\\n    category = ask(\\\"\\\\033[1;38;5;180;49mChoose a category\\\\033[0m\\\", \\n               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 72, in ask\\n    answer = inquirer.prompt([\\n             ^^^^^^^^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 11, in prompt\\n    answers[question.name] = render.render(question, answers)\\n                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 38, in render\\n    return self._event_loop(render)\\n           ^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 52, in _event_loop\\n    self._process_input(render)\\n  File \\\"<host-path>\\\", line 107, in _process_input\\n    ev = self._event_gen.next()\\n         ^^^^^^^^^^^^^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 22, in next\\n    return KeyPressed(self._key_gen())\\n                      ^^^^^^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 34, in readkey\\n    c1 = readchar()\\n         ^^^^^^^^^^\\n  File \\\"<host-path>\\\", line 18, in readchar\\n    old_settings = termios.tcgetattr(fd)\\n                   ^^^^^^^^^^^^^^^^^^^^^\\ntermios.error: (25, 'Inappropriate ioctl for device')\\n\", \"needs_credentials\": false, \"needs_browser\": false}",
  "operation": "Launch the installed minipy CLI (README Usage: `minipy`) and confirm its main category menu renders (\"Choose a category\"); checker stops it after it prints.",
  "operation_scope": "Interactive menu only. Tools needing API keys (link shortener, weather, ip locator, send email) and optional audio/FFmpeg are not exercised. Menu was observed without a real TTY (stdin from /dev/null);",
  "outcome": "blocked",
  "steps": [
    "sudo apt-get install -y python3-tk python3-venv python3-pip (README Installation: Tkinter for Linux)",
    "python3 -m venv <host-path> && <host-path> install minipy-tools (README Installation: pip install minipy-tools) -> version 0.1.5",
    "<host-path> -c 'import tkinter' succeeded",
    "<host-path> launched; menu output contains 'Choose a category' (README Usage: minipy)"
  ],
  "stuck_step": "<host-path>",
  "suggested_fix": null
}
