{
  "checker": {
    "claims": [
      {
        "claim": "Fill reports that no captures exist yet and stops",
        "command": "<guest-path> --repo <guest-path> fill",
        "evidence": "run collect first; no accepted captures to fill.\n- `hosts/example-storage/README.md`\n  - No captures yet: run collect first; no accepted captures to fill.\nNo captures yet: run collect first. Stop here; do not infer facts.\n",
        "expected": "prints a message telling the user to run collect first",
        "input": "demo-lab with no captures",
        "kind": "claim",
        "outcome": "Real input produced the expected result: run collect first",
        "returncode": 0,
        "source": "when none exist it says \"no captures yet: run collect first\" and stops.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Collection dry-run makes no connections and writes nothing",
        "command": "<guest-path> --repo <guest-path> collect --dry-run",
        "evidence": "No connections or writes; add --verbose for every planned command and file\nHost example-storage (docs)\n  Docs-only: nothing auto-collected\n",
        "expected": "reports no connections or writes",
        "input": "demo-lab collect --dry-run",
        "kind": "claim",
        "outcome": "Real input produced the expected result: No connections or writes",
        "returncode": 0,
        "source": "`--dry-run` prints a compact host summary, makes no connections and writes nothing;",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "The kit leaves unknown facts as TODOs and counts them with check",
        "command": "<guest-path> --repo <guest-path> check",
        "evidence": "items to fill in (run fill)\nKeep this repository private; use check --privacy for an explicit gh lookup\n",
        "expected": "reports items to fill in",
        "input": "my-lab check",
        "kind": "claim",
        "outcome": "Real input produced the expected result: items to fill in",
        "returncode": 0,
        "source": "The kit generates a REBUILD.md host index and leaves unknown facts as TODOs.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected (homelab_kit/cli.py, README.md, docs/updating.md). The README states the kit 'never runs on its own' and 'installs no background services, schedules or auto-update tasks. Run it manually.' No cron, loop, webhook or --once/--now trigger exists; the only cron reference is reading a user crontab as data during collection.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected (homelab_kit/cli.py, README.md, docs/updating.md). The README states the kit 'never runs on its own' and 'installs no background services, schedules or auto-update tasks. Run it manually.' No cron, loop, webhook or --once/--now trigger exists; the only cron reference is reading a user crontab as data during collection.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "--repo",
        "<guest-path>",
        "collect",
        "--host",
        "example-control"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "example-control: partial (see warnings)\nWARNING: commands/containers.txt: docker not installed locally; skip this optional fact or make it available locally and collect again",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Development unit tests on Python 3.11",
        "command": "<guest-path> run --no-project --python 3.11 -- python -m unittest discover -s tests -q",
        "deferred": false,
        "evidence": "e-archive-service-with-long-name/settings.conf does not exist; host added, check the path before collect\nWARNING: local file /etc/sample.conf does not exist; host added, check the path before collect\nWARNING: local file /etc/missing.conf does not exist; host added, check the path before collect\nWARNING: local file /etc/sample.conf does not exist; host added, check the path before collect\nWARNING: local file C:/example/app.conf does not exist; host added, check the path before collect\n----------------------------------------------------------------------\nRan 168 tests in 32.351s\n\nOK (skipped=1)",
        "expected": "all tests pass, one skipped for missing HOMELAB_KIT_DENYLIST",
        "input": "unittest discover on tests/",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Development",
        "verdict": "yes"
      },
      {
        "claim": "Ruff lint check",
        "command": "<guest-path> run --no-project --python 3.12 --with ruff -- ruff check .",
        "deferred": false,
        "evidence": "All checks passed!",
        "expected": "all checks pass",
        "input": "ruff check .",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Development",
        "verdict": "yes"
      },
      {
        "claim": "Mypy type check of the package",
        "command": "<guest-path> run --no-project --python 3.12 --with mypy -- mypy homelab_kit",
        "deferred": false,
        "evidence": "Success: no issues found in 16 source files",
        "expected": "no issues found",
        "input": "mypy homelab_kit",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Development",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "README quickstart uses uv with --python 3.12 prefix; used the README's Linux alternative python3 -m venv + pip install . and the homelab-kit entry point instead. uv was installed via the README's curl installer and used only for the Development test/lint commands.",
    "ensurepip was missing on the Ubuntu guest; installed python3.12-venv via sudo apt-get as the README's Debian/Ubuntu note suggests.",
    "The task's preflight path /inputs/coldpass-preflight.py does not exist in this guest; ran the supplied <guest-path> with the same flags instead.",
    "The 3.14 unit test run was executed but its output tail did not show the summary line; exit code was 0.",
    "The local collect probe overwrites captures under <guest-path> on each replay (intended, read-only to the product source)."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Install homelab-kit from the pinned commit and generate a private homelab documentation repo: demo, local collect, fill and check.",
  "operation_scope": "Linux Ubuntu 24.04 guest, Python 3.12.3 with python3-venv installed via sudo apt-get. Local collection of the control machine only; no SSH targets, no remote hosts, no credentials, no browser, no servers.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "git init; git remote add origin https://github.com/TayHCode/homelab-kit; git fetch --depth 1 origin 9bf395d7cb0279a666e03b634bfc1f864dbba32e; git reset --mixed FETCH_HEAD",
    "sudo apt-get install python3.12-venv (ensurepip was missing)",
    "python3 -m venv <guest-path> && <guest-path> -m pip install .",
    "homelab-kit demo demo-lab; homelab-kit --repo demo-lab check; collect --dry-run; fill",
    "homelab-kit init my-lab; add-host example-control --local; collect --dry-run; collect; fill; check",
    "curl -LsSf https://astral.sh/uv/install.sh | sh (README installer, no telemetry option offered)",
    "uv run --no-project --python 3.11 -- python -m unittest discover -s tests -q (168 tests, 1 skipped)",
    "uv run --python 3.14 unittest; python3 -m tests.break_it; python3 -m compileall -q homelab_kit; uv run --with ruff ruff check .; uv run --with mypy mypy homelab_kit; uv run --with build python -m build"
  ],
  "stuck_step": null,
  "suggested_fix": null
}
