{
  "run_id": "TayHCode--t3-done-notify-claude-haiku-5-5-1792725136010566123",
  "checker": {
    "claims": [
      {
        "claim": "A Claude Code session whose last message asks for approval or says 'could you' is queued for a webhook",
        "command": "<guest-path> <guest-path> --once --dry-run",
        "evidence": "dry-run: pending notification for sess-attn-0002 (stalled)\npoll complete\n",
        "expected": "a pending notification for sess-attn-0002 is queued",
        "input": "Claude transcript sess-attn-0002 with an open turn older than the stall window and last message 'Could you confirm the approval before I touch the lexer?'",
        "kind": "claim",
        "outcome": "Real input produced the expected result: dry-run: pending notification for sess-attn-0002 (stalled)",
        "returncode": 0,
        "source": "as \"blocked\", \"approval\", or \"could you\", also queues a webhook.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "The watcher polls in a loop every poll_seconds; one poll cycle was triggered by hand with --once",
        "command": "<guest-path> <guest-path> --once --dry-run",
        "evidence": "dry-run: pending notification for sess-attn-0002 (stalled)\npoll complete",
        "expected": "one poll completes and reports the pending stalled notification",
        "input": "Claude transcript fixture sess-attn-0002 in <guest-path> with an open turn older than the stall window",
        "kind": "cycle",
        "method": "run-once: --once runs one poll of the loop and exits; no sleep, no source edits",
        "outcome": "Triggered one cycle by hand (run-once: --once runs one poll of the loop and exits; no sleep, no source edits; normal trigger: loop sleeps T3_DONE_POLL_SECONDS (default 60) between polls): dry-run: pending notification for sess-attn-0002 (stalled)\npoll complete",
        "returncode": 0,
        "schedule": "loop sleeps T3_DONE_POLL_SECONDS (default 60) between polls",
        "source": "t3_done_notify.py",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "<guest-path>",
        "--once",
        "--dry-run"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "dry-run: pending notification for sess-attn-0002 (stalled)\npoll complete",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "The offline test suite passes",
        "command": "<guest-path> -m unittest discover -s tests -q",
        "deferred": false,
        "evidence": "webhook attempt 1/5 failed (TimeoutError)\nwebhook attempt 1/5 failed (TimeoutError)\nwebhook attempt 1/5 failed (TimeoutError)\nwebhook attempt 1/1 failed (HTTP 302)\n----------------------------------------------------------------------\nRan 83 tests in 48.171s\n\nOK",
        "expected": "all tests pass with exit 0",
        "input": "python3 -m unittest discover -s tests -q (run with the installer's venv python)",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "CONTRIBUTING.md",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
