{
  "checker": {
    "claims": [
      {
        "claim": "pack builds a plugin zip for installing through the panel",
        "command": "<guest-path> -m potehinsonnet.pack <guest-path> --no-data --out <guest-path>",
        "evidence": "beer_plugin-1.0.0.zip: 3 \u0444\u0430\u0439\u043b\u043e\u0432, 1 \u041a\u0411, \u0431\u0435\u0437 data/\n",
        "expected": "zip file beer_plugin-1.0.0.zip is written to the output folder",
        "input": "beer_plugin folder with --no-data and --out",
        "kind": "claim",
        "outcome": "Real input produced the expected result: beer_plugin-1.0.0.zip",
        "returncode": 0,
        "source": "\u0441\u043e\u0431\u0440\u0430\u0442\u044c zip \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u043d\u0435\u043b\u044c",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected: potehinsonnet/run.py (one-shot start: loads plugin.toml, builds the plugin, calls plugin.serve()) and potehinsonnet/pack.py (one-shot zip build). The plugin reacts to NATS commands, panel requests and button events; no cron, schedule, --once/--now or polling loop was found in the product code (grep for sleep/while/every/schedule/cron only hit testing.py helpers). No product cycle to trigger.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected: potehinsonnet/run.py (one-shot start: loads plugin.toml, builds the plugin, calls plugin.serve()) and potehinsonnet/pack.py (one-shot zip build). The plugin reacts to NATS commands, panel requests and button events; no cron, schedule, --once/--now or polling loop was found in the product code (grep for sleep/while/every/schedule/cron only hit testing.py helpers). No product cycle to trigger.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "-m",
        "potehinsonnet.run",
        "<guest-path>"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "2026-10-28 00:43:25,629 INFO potehinsonnet.run: \u0417\u0430\u043f\u0443\u0441\u043a beer_plugin 1.0.0, \u0434\u0430\u043d\u043d\u044b\u0435: <guest-path>",
      "stdout": "",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Repository test suite passes (CI command python -m pytest -q)",
        "command": "<guest-path> -m pytest -q",
        "deferred": false,
        "evidence": "te-packages/pytest_asyncio/plugin.py:300: PytestDeprecationWarning: The configuration option \"asyncio_default_fixture_loop_scope\" is unset.\nThe event loop scope for asynchronous fixtures will default to the \"fixture\" caching scope. Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to \"function\" scope. Set the default fixture loop scope explicitly in order to avoid unexpected behavior in the future. Valid fixture loop scopes are: \"function\", \"class\", \"module\", \"package\", \"session\"\n\n  warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET))",
        "expected": "all tests pass",
        "input": "python -m pytest -q",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": ".github/workflows/tests.yml",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "README requires Python 3.14+; guest default was 3.12.3, so installed CPython 3.14.9 with uv (uv python install 3.14) - setup, not a product failure.",
    "NATS is not installed in the guest; downloaded nats-server v2.10.24 linux-amd64 release tarball from GitHub (curl) and ran it on port 4222. apt has no nats-server package.",
    "The repository root has no plugin.toml, so 'python -m potehinsonnet.run .' from the repo root is not applicable; the run was done on the README beer_plugin example written outside the repo (<guest-path>), which is the README's documented usage.",
    "Editable install of the workspace (pip install -e .) was used for the CI-style test run, as in .github/workflows/tests.yml.",
    "The run probe uses stays_running, which the checker only supports for probes; the claim path has no stays_running support and timed out, so the run was recorded as the probe and not as a claim."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Run the potehinsonnet plugin host (python -m potehinsonnet.run <plugin folder>) against NATS, and build a plugin zip (python -m potehinsonnet.pack); repository test suite (python -m pytest -q)",
  "operation_scope": "Linux guest, Python 3.14 venv, NATS server on localhost:4222, sample beer plugin from the README outside the repo. Does not include a live Discord connection or the web panel.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "uv python install 3.14 (guest had Python 3.12.3; README requires Python 3.14+)",
    "python3.14 -m venv <guest-path> && <guest-path> -m pip install potehinsonnet (README: pip install potehinsonnet)",
    "Started nats-server v2.10.24 on localhost:4222 (backend needed by the plugin host, README: \u043d\u0443\u0436\u0435\u043d NATS \u043d\u0430 localhost:4222)",
    "Wrote the README beer_plugin example into <guest-path> (plugin.toml + beer_plugin/main.py)",
    "<guest-path> -m potehinsonnet.run <guest-path> plugin started, logged '\u0417\u0430\u043f\u0443\u0441\u043a beer_plugin 1.0.0'",
    "<guest-path> -m potehinsonnet.pack --no-data --out <fresh dir>: wrote beer_plugin-1.0.0.zip (3 files)",
    "<guest-path> -m pip install -e . pytest pytest-asyncio pytest-cov, then python -m pytest -q: 104 passed"
  ],
  "stuck_step": null,
  "suggested_fix": "None required for this run. Optional: the README does not say NATS must be installed in a particular way; the README's pytest CI path depends on Python 3.14 being available."
}
