{
  "checker": {
    "claims": [
      {
        "claim": "With no listener, the script reports NOT CHECKED instead of observing tabs",
        "command": "python3 close_idle_tabs.py --port 9222",
        "evidence": "NOT CHECKED: nothing is listening on port 9222 (CDP endpoint unavailable; skipped this run).\n",
        "expected": "NOT CHECKED notice, exit 0",
        "input": "--port 9222 with nothing listening",
        "kind": "claim",
        "outcome": "Real input produced the expected result: NOT CHECKED: nothing is listening on port 9222",
        "returncode": 0,
        "source": "the script prints **`NOT CHECKED: nothing is listening on port 9222`**",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Idle-seconds 0 is rejected before any endpoint check",
        "command": "python3 close_idle_tabs.py --idle-seconds 0 --port 9222",
        "evidence": "--idle-seconds must be at least 1\n",
        "expected": "rejection error, exit 2",
        "input": "--idle-seconds 0 --port 9222",
        "kind": "claim",
        "outcome": "Real input produced the expected result: --idle-seconds must be at least 1",
        "returncode": 2,
        "source": "0 is rejected before checking for an endpoint.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "The report repeats every 60 seconds via a systemd user timer",
        "command": "",
        "evidence": "Missing prerequisites: no Chrome/CDP endpoint and no systemd user session in this guest; the script itself has no internal loop, so the cycle is only the external timer. Not run.",
        "expected": "one observation cycle recorded in .close_idle_tabs_state.json",
        "input": "none: needs a live CDP endpoint and a systemd user session",
        "kind": "cycle",
        "method": "manual trigger of one service run",
        "outcome": "Missing prerequisites: no Chrome/CDP endpoint and no systemd user session in this guest; the script itself has no internal loop, so the cycle is only the external timer. Not run.",
        "schedule": "systemd user timer every 60 seconds",
        "source": "examples/cdpidletabs.timer.in",
        "verdict": "blocked"
      }
    ],
    "details": {
      "argv": [
        "python3",
        "close_idle_tabs.py",
        "--port",
        "9222"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "NOT CHECKED: nothing is listening on port 9222 (CDP endpoint unavailable; skipped this run).",
      "stdout": "",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Repository offline unit tests pass (documented test command)",
        "command": "python3 -m unittest discover -s tests -q",
        "deferred": false,
        "evidence": "----------------------------------------------------------------------\nRan 52 tests in 0.552s\n\nOK",
        "expected": "tests run and report OK",
        "input": "python3 -m unittest discover -s tests -q",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Help prints the options and exits without contacting Chrome",
        "command": "python3 close_idle_tabs.py --help",
        "deferred": false,
        "evidence": "TATE_FILE\n                        reuse observations here (default:\n                        .close_idle_tabs_state.json in the working directory)\n  --close               close eligible pages; without this option, only report\n                        them\n  --quiet               suppress normal reports and unavailable-endpoint\n                        notices\n\nAlways protect the first real page in Chrome's list (usually the most recently\nactive). Internal pages never satisfy this guard; about:blank is a fallback\nonly when there are no real pages. Protected pages restart their idle clock\neach run.",
        "expected": "usage text",
        "input": "--help",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Dry-run tab report against a real Chrome CDP endpoint",
        "command": "",
        "deferred": false,
        "evidence": "Missing prerequisite: no Chrome with --remote-debugging-port is installed or supplied in this guest and no <env-var> is set; installing a browser is not permitted. Not run.",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "Missing prerequisite: no Chrome with --remote-debugging-port is installed or supplied in this guest and no <env-var> is set; installing a browser is not permitted. Not run.",
        "source": "README.md",
        "verdict": "blocked"
      },
      {
        "claim": "Systemd user timer template runs the report every 60 seconds",
        "command": "",
        "deferred": false,
        "evidence": "Missing prerequisites: no systemd user session and no Chrome CDP endpoint in this guest; templates not installed. Not run.",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "Missing prerequisites: no systemd user session and no Chrome CDP endpoint in this guest; templates not installed. Not run.",
        "source": "examples/cdpidletabs.timer.in",
        "verdict": "blocked"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "No install step: README requires no packages; pip/venv not needed, so the optional 'pip install .' route was not run.",
    "Chrome not installed and no CDP endpoint supplied (<env-var> unset); browser install is not permitted, so the real tab observation and --close paths were not exercised.",
    "Git metadata step (git init / fetch pinned commit 484201d7) was not performed: the workspace snapshot is used directly and the product runs without it. The pin was not verified against the snapshot.",
    "Systemd timer template and README dry-run example not run: no systemd user session and no CDP endpoint."
  ],
  "fault_owner": "prerequisite",
  "main_blocker": null,
  "operation": "Observe Chrome page tabs through a CDP endpoint and report (or close with --close) tabs whose title and URL stay unchanged",
  "operation_scope": "Needs a running Chrome with --remote-debugging-port on loopback, or a supplied <env-var>. Not available in this guest. Verified without a browser: help, unit tests, unreachable-endpoint handling, and argument validation.",
  "outcome": "working",
  "plain_failure": "The tool's main job, checking which browser tabs are idle, could not be run because there is no browser to check. The parts that do not need a browser work: help text, the 52 offline tests, the clear 'NOT CHECKED' message when no browser is running, and rejection of invalid timing values.",
  "steps": [
    "python3 --version (Python 3.12.3, meets README 3.8+ requirement)",
    "python3 close_idle_tabs.py --help",
    "python3 -m unittest discover -s tests -q (52 tests OK)",
    "python3 close_idle_tabs.py --port 9222 (no listener: prints NOT CHECKED, exit 0)",
    "python3 close_idle_tabs.py --idle-seconds 0 --port 9222 (rejected, exit 2)"
  ],
  "stuck_step": "Observing real tabs: the README's Chrome launch step and the dry-run/example command need a Chrome CDP endpoint that this guest does not have.",
  "suggested_fix": "Supply a shared CDP endpoint (set <env-var> to it) or allow a Chrome for Testing install in the guest, then run the README dry-run example twice with a state file and confirm it reports idle tabs."
}
