{
  "checker": {
    "claims": [
      {
        "claim": "Everyday actions work without the interface: list projects",
        "command": "./tdash projects",
        "evidence": "Demo Project  [2/11] (here)\n",
        "expected": "Lists the Demo Project",
        "input": "projects",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Demo Project",
        "returncode": 0,
        "source": "Everyday actions work without the interface:",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Add a machine from the command line",
        "command": "./tdash machine add 'Claim Box' --notes 'found the way in'",
        "evidence": "Added Claim Box\n",
        "expected": "Added Claim Box",
        "input": "machine add Claim Box",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Added Claim Box",
        "returncode": 0,
        "source": "tdash machine add \"Box 1\" --notes \"found the way in\"",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README and entry points (tdash, tdash.py, dashboard.py, tui.py, install.py). tdash runs as an interactive terminal UI or one-shot commands; no cron, scheduler, webhook, --once or --now loop exists. tui.py only has a short redraw sleep inside the UI event loop.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README and entry points (tdash, tdash.py, dashboard.py, tui.py, install.py). tdash runs as an interactive terminal UI or one-shot commands; no cron, scheduler, webhook, --once or --now loop exists. tui.py only has a short redraw sleep inside the UI event loop.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "./tdash",
        "machine",
        "add",
        "Probe Box",
        "--notes",
        "found the way in"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "Added Probe Box",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Test suite runs against a temporary data directory",
        "command": "<guest-path> test_app.py",
        "deferred": false,
        "evidence": " ... ok\ntest_nothing_waiting_returns_none (__main__.TestWindowsKeyboard.test_nothing_waiting_returns_none) ... ok\ntest_plain_keys_come_out_as_bytes (__main__.TestWindowsKeyboard.test_plain_keys_come_out_as_bytes) ... ok\ntest_read_seq_byte_dispatches_to_the_console_on_windows (__main__.TestWindowsKeyboard.test_read_seq_byte_dispatches_to_the_console_on_windows) ... ok\ntest_surrogate_halves_join_into_one_character (__main__.TestWindowsKeyboard.test_surrogate_halves_join_into_one_character) ... ok\n\n----------------------------------------------------------------------\nRan 492 tests in 29.931s\n\nOK",
        "expected": "all 492 tests pass",
        "input": "test_app.py run with the setup.py venv interpreter",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md ## Tests",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "README says 'python'; guest has only python3, so python3 was used as the README allows.",
    "Default guest TERM=dumb made 2 menu/theme tests fail (test_the_box_sits_on_the_parent_not_on_project, test_themes_reach_the_rendering); re-ran with TERM=xterm-256color, which passes.",
    "test_app.py clipboard tests needed xclip and wl-paste; installed via sudo apt-get -o DPkg::Lock::Timeout=300 install xclip (first failed with 'Unable to locate package xclip' until apt-get update) and wl-clipboard. Both installed; full suite passes.",
    "tdash machine add does not reject duplicate names, so repeated replays add more 'Probe Box'/'Claim Box' entries in the TDASH_DATA store; this is product behaviour, not a failure.",
    "No browser was needed; the shared CDP endpoint was not used.",
    "No server processes were started, so none needed stopping."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Install tdash with the README installer and run its command-line operations (projects, machine add) plus the documented test suite",
  "operation_scope": "Linux guest, Python 3.12.3, rich installed in the setup.py .venv; data isolated with TDASH_DATA; terminal UI not exercised (no browser/CDP needed)",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "python3 setup.py",
    "python3 install.py",
    "./tdash help",
    "./tdash dashboard",
    "./tdash projects",
    "./tdash use \"Demo Project\"",
    "./tdash machine add \"Box 1\" --notes \"found the way in\"",
    "./tdash machine mark \"Box 1\"",
    "python3 test_app.py (fails under TERM=dumb)",
    "TERM=xterm-256color .venv/bin/python test_app.py (492 tests OK after xclip and wl-clipboard installed)"
  ],
  "stuck_step": null,
  "suggested_fix": "None required for the product. Optional: the test suite should document TERM and clipboard tool requirements, and add a duplicate-name check for machine add."
}
