{
  "run_id": "leepokai--jev-guard-claude-haiku-5-5-1792801374704956307",
  "checker": {
    "claims": [
      {
        "claim": "install writes the guard hooks into the agent's user config",
        "command": "jev-guard install claude",
        "evidence": "jev-guard: written to <guest-path>\nNo API key found yet: run `jev-guard key <key>` (or export JEV_API_KEY / AI_GATEWAY_API_KEY). Until then the guard fails open.\n",
        "expected": "settings.json written under the scratch HOME",
        "input": "jev-guard install claude with HOME set to a scratch directory",
        "kind": "claim",
        "outcome": "Real input produced the expected result: jev-guard: written to",
        "returncode": 0,
        "source": "`install` is idempotent and writes the absolute path of the current `node`",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "check exits with a verdict code",
        "command": "",
        "evidence": "needs a Jev API key (TypeSafe, Vercel AI Gateway or OpenRouter); none is available in this guest, so the CLI exits 3 with 'no credentials'",
        "expected": "",
        "input": "",
        "kind": "claim",
        "outcome": "needs a Jev API key (TypeSafe, Vercel AI Gateway or OpenRouter); none is available in this guest, so the CLI exits 3 with 'no credentials'",
        "source": "Assess one tool call; exit 0 allow, 1 ask, 2 deny",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "blocked"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected: src/cli.js commands (hook, acp, check, scan, scan-skills, install, key), README CLI section, hooks/*.json. jev-guard runs as a per-tool-call hook invoked by the host agent, with no cron, scheduler, loop, --once/--now or webhook; src/session.js notes 'no scheduler'. No product cycle to trigger.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected: src/cli.js commands (hook, acp, check, scan, scan-skills, install, key), README CLI section, hooks/*.json. jev-guard runs as a per-tool-call hook invoked by the host agent, with no cron, scheduler, loop, --once/--now or webhook; src/session.js notes 'no scheduler'. No product cycle to trigger.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "checks": [
        {
          "check": "install",
          "details": {
            "argv": [
              "jev-guard",
              "install",
              "claude"
            ],
            "kind": "cli",
            "needs_browser": false,
            "needs_credentials": true,
            "returncode": 0,
            "scope": "partial: install",
            "stderr": "",
            "stdout": "jev-guard: written to <guest-path>\nNo API key found yet: run `jev-guard key <key>` (or export JEV_API_KEY / AI_GATEWAY_API_KEY). Until then the guard fails open.",
            "working": false
          },
          "optional": false,
          "status": "PASS"
        },
        {
          "check": "credentials_error",
          "details": {
            "argv": [
              "jev-guard",
              "check",
              "Bash",
              "{\"command\":\"rm -rf ~/\"}"
            ],
            "kind": "cli",
            "needs_browser": false,
            "needs_credentials": true,
            "returncode": 3,
            "scope": "partial: missing credentials",
            "stderr": "jev-guard: no credentials: run `jev-guard key <key>` or set JEV_API_KEY / AI_GATEWAY_API_KEY (exit 3)",
            "stdout": "",
            "working": false
          },
          "optional": false,
          "status": "PASS"
        }
      ],
      "scope": "partial checks",
      "working": false
    },
    "evidence_strength": "partly_checked",
    "example_checks": [
      {
        "claim": "offline test suite (README Development section)",
        "command": "npm test",
        "deferred": false,
        "evidence": " duration_ms: 3666.697281\n  type: 'test'\n  ...\n# Subtest: issues \\#1\u2013\\#3: .claude/docs routing, sub-agent results scanned, thresholds range-checked\nok 17 - issues \\#1\u2013\\#3: .claude/docs routing, sub-agent results scanned, thresholds range-checked\n  ---\n  duration_ms: 0.423151\n  type: 'test'\n  ...\n# Subtest: opencode: skill results are checked as instruction files (\\#2)\nok 18 - opencode: skill results are checked as instruction files (\\#2)\n  ---\n  duration_ms: 5.454866\n  type: 'test'\n  ...\n1..18\n# tests 18\n# suites 0\n# pass 18\n# fail 0\n# cancelled 0\n# skipped 0\n# todo 0\n# duration_ms 8028.744001",
        "expected": "18 of 18 tests pass",
        "input": "npm test in a copy of the checkout named jev-guard (the snapshot path 'workspace' makes one install-path test fail)",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Development: npm test",
        "verdict": "yes"
      },
      {
        "claim": "classify a tool call (README Install quickstart)",
        "command": "",
        "deferred": false,
        "evidence": "needs a Jev API key; none provided. The documented call was run and exits 3 with 'no credentials' (see probe.json credentials_error)",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "needs a Jev API key; none provided. The documented call was run and exits 3 with 'no credentials' (see probe.json credentials_error)",
        "source": "README.md Install: jev-guard check Bash '{\"command\":\"rm -rf ~/\"}'",
        "verdict": "blocked"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
