{
  "checker": {
    "claims": [
      {
        "claim": "demo runs offline on synthetic sessions",
        "command": "<guest-path> demo",
        "evidence": "DEMO complete: temporary sessions removed; nothing sent.\n",
        "expected": "synthetic demo completes with nothing sent",
        "input": "sidecarwatch demo",
        "kind": "claim",
        "outcome": "Real input produced the expected result: DEMO complete: temporary sessions removed; nothing sent.",
        "returncode": 0,
        "source": "`demo` uses temporary synthetic sessions, calls no agent CLI or model, and removes its data.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "status shows cross-vendor review state",
        "command": "<guest-path> status",
        "evidence": "Cross-vendor review: OFF\nConfig: <guest-path>\nKill switch: off\nNeeds you: 0 open; run open to inspect.\n",
        "expected": "reports cross-vendor review OFF by default",
        "input": "sidecarwatch status",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Cross-vendor review: OFF",
        "returncode": 0,
        "source": "- `status` shows whether cross-vendor review is ON or OFF.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "watch without interval makes one pass",
        "command": "<guest-path> watch --only <guest-path> --dry-run",
        "evidence": "0 in scope \u00b7 0 reviewed \u00b7 0 sent \u00b7 0 would send \u00b7 0 need you\n",
        "expected": "single pass summary printed, then exit",
        "input": "watch --only <guest-path> --dry-run",
        "kind": "claim",
        "outcome": "Real input produced the expected result: 0 in scope",
        "returncode": 0,
        "source": "Without `--interval`, a run makes one pass.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "watch runs one pass and stops when no interval is set",
        "command": "<guest-path> watch --only <guest-path> --dry-run",
        "evidence": "03:46  0 in scope \u00b7 0 reviewed \u00b7 0 sent \u00b7 0 would send \u00b7 0 need you",
        "expected": "one pass summary line, then process exits 0",
        "input": "watch --only <guest-path> --dry-run (no --interval)",
        "kind": "cycle",
        "method": "run-once: invoke the watch command by hand once, no interval, dry-run, no source edits",
        "outcome": "Triggered one cycle by hand (run-once: invoke the watch command by hand once, no interval, dry-run, no source edits; normal trigger: README: Without --interval, a run makes one pass. Interval loops are not used here (no timer installed).): 03:46  0 in scope \u00b7 0 reviewed \u00b7 0 sent \u00b7 0 would send \u00b7 0 need you",
        "returncode": 0,
        "schedule": "README: Without --interval, a run makes one pass. Interval loops are not used here (no timer installed).",
        "source": "sidecarwatch/watch.py",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "demo"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "DEMO: synthetic sessions; no CLI calls.\ncodex session aaaaaaaa (idle)\nWhat it is doing\nAdding CSV export to the reading list and checking a small export test.\n\nOn task: ok\nIn scope: ok\nSimple: ok\nReuse: ok\nRoot cause: ok\nHonest: ok\n\n[excerpt truncated]",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "synthetic demo quickstart with system Python 3.14",
        "command": "/opt/homebrew/bin/python3 -B -m sidecarwatch demo",
        "deferred": false,
        "evidence": "DEMO: synthetic sessions; no CLI calls.\ncodex session aaaaaaaa (idle)\nWhat it is doing\nAdding CSV export to the reading list and checking a small export test.\n\nOn task: ok\nIn scope: ok\nSimple: ok\nReuse: ok\nRoot cause: ok\nHonest: ok\n\nShould you correct it? no\n\nLabel: WORKING\nSuggested message (not sent)\nReport the export test results when they are available.\nDEMO complete: temporary sessions removed; nothing sent.",
        "expected": "offline demo output",
        "input": "python3 -B -m sidecarwatch demo",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Quickstart: Linux",
        "verdict": "yes"
      },
      {
        "claim": "doctor reports local setup and review OFF",
        "command": "<guest-path> doctor --shapes",
        "deferred": false,
        "evidence": "y\n  Scanned: ~/.claude/projects/*/*.jsonl\n  Login: unverified; CLI executable unavailable or --help failed; check the configured command (or use --reviewer with the same CLI)\n  Reviewer flags: \n  Shapes: (none)\n  Unknown lines: 0; mostly unknown sessions: 0\ncodex: review unavailable \n  Home: ~/.codex; sessions: 0; delivery: print only\n  Scanned: ~/.codex/sessions/**/rollout-*.jsonl\n  Login: unverified; CLI executable unavailable or --help failed; check the configured command (or use --reviewer with the same CLI)\n  Reviewer flags: \n  Shapes: (none)\n  Unknown lines: 0; mostly unknown sessions: 0",
        "expected": "local setup report",
        "input": "doctor --shapes",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Check your own setup",
        "verdict": "yes"
      },
      {
        "claim": "documented unit test suite passes",
        "command": "<guest-path> -B -m unittest discover -s tests -t . -q",
        "deferred": false,
        "evidence": "----------------------------------------------------------------------\nRan 215 tests in 83.246s\n\nOK (skipped=1)",
        "expected": "all tests pass",
        "input": "python3 -B -m unittest discover -s tests -t . -q",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Check your own setup (To run the test suite from source)",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "Guest is macOS, not Linux; used the README's macOS guidance where it applies.",
    "uv is not installed in the guest. Used the README's documented `python3 -m venv .venv` route with Homebrew Python 3.14 (>=3.11) instead of `uv venv --python 3.12`. The README's macOS table lists uv 3.12 as the tested route; 3.14 was not the tested interpreter.",
    "`timeout` is not available on macOS, so the first git fetch command failed with `timeout: command not found`; re-ran the same fetch without it and it succeeded.",
    "`sidecarwatch init` was not run, so no config or profile was created and review stays OFF.",
    "No real Claude Code or Codex sessions exist in this VM, so `sessions` is empty and `doctor` reports both CLIs unavailable; this is expected and not a product fault.",
    "Unit test suite ran with `.venv/bin/python3` (absolute venv path) rather than an activated `python3`. Same command otherwise."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Run the sidecarwatch offline synthetic demo (`sidecarwatch demo`), plus status, one-pass watch, doctor, and the unit test suite",
  "operation_scope": "macOS arm64 guest (Darwin 24.6), Python 3.14.8 from Homebrew (README requires 3.11+), venv at .venv, no agent CLIs, no login, cross-vendor review OFF, no network calls to reviewers. Pinned commit 8ddf4cf.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "git init; git remote add origin https://github.com/TayHCode/sidecarwatch; git fetch --depth 1 origin 8ddf4cfed6d91ad621ad9b0fcc7bf4c4c39901fe; git reset --mixed FETCH_HEAD",
    "python3 -B -m sidecarwatch demo (from source folder; README Quickstart)",
    "/opt/homebrew/bin/python3 -m venv .venv (README alternative to uv)",
    "source .venv/bin/activate && python3 -m pip install .",
    "sidecarwatch --version",
    "python3 -B -m unittest discover -s tests -t . -q (README: Check your own setup)",
    "sidecarwatch doctor --shapes; sidecarwatch sessions; sidecarwatch status",
    "sidecarwatch watch --only <guest-path> --dry-run"
  ],
  "stuck_step": null,
  "suggested_fix": null
}
