{
  "run_id": "DevMortimer--pi-warden-claude-haiku-5-5-1792790022051680158",
  "checker": {
    "claims": [
      {
        "claim": "Each # heading in pi-warden.md is one rule that the rules guard judges",
        "command": "pi --no-extensions -e <guest-path> --mode rpc --no-session --offline",
        "evidence": "Rules in force: pi-warden.md (12 rules, 0 dropped)\\n1. no-console-output-in-library-code paths: src/**\\n2. todo-comments-need-a-reference paths: (all)\\n3. no-explicit-any paths: **/*.ts, **/*.tsx\\n4. exported-functions-declare-their-return-type paths: src/**/*.ts\\n5. errors-are-not-swallowed paths: (all)\\n6. switch-statements-have-a-default-case paths: (all)\\n7. no-hardcoded-secrets paths: (all)\\n8. boolean-names-read-as-a-question paths: (all)\\n9. new-exported-functions-get-a-test paths: src/**\\n10. comments-explain-why-not-what paths: (all)\\n11. no-commented-out-code paths: (all)\\n12. migrat",
        "expected": "the rules listing reports 12 rules",
        "input": "demo project with examples/pi-warden.md copied to pi-warden.md (12 headings)",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Rules in force: pi-warden.md (12 rules, 0 dropped)",
        "returncode": 0,
        "source": "Each `#` heading is one rule.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Destructive patterns are held with no key and no request",
        "command": "pi --no-extensions -e <guest-path> --mode rpc --no-session --offline",
        "evidence": "patterns: rm-recursive-dangerous-target \u00b7 confirm \u2014 destructive: recursive rm on an absolute, home, variable, or parent path (pattern checks only: TypeSafe judgments are not enabled or no key is configured)\",\"notifyType\":\"info\"}\n{\"type\":\"extension_ui_request\",\"id\":\"ad09dd56-ebd9-4d52-8d13-51b511d4eb09\",\"method\":\"notify\",\"message\":\"In steer mode a real call would be held and the agent would read: \\\"pi-warden held this bash call before it ran: destructive: recursive rm on an absolute, home, variable, or parent path. Do not retry it unchanged. Either (1) reach the goal with a recoverable alternat",
        "expected": "the offline pattern check flags rm-recursive-dangerous-target",
        "input": "/warden test with no TypeSafe key (synthetic rm -rf demo)",
        "kind": "claim",
        "outcome": "Real input produced the expected result: patterns: rm-recursive-dangerous-target",
        "returncode": 0,
        "source": "Holds destructive patterns (force push, `reset --hard`, `rm -rf` on a path outside scratch, `DROP`) with no key and no request",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected: extensions/index.js, src/extension.ts and the README/docs. pi-warden runs per Pi event (tool calls, prompts, turn ends) and has no cron, scheduler, --once/--now, loop or webhook trigger. The only setTimeout/setInterval uses are per-call timeouts and throttles, so there is no product cycle to trigger by hand.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected: extensions/index.js, src/extension.ts and the README/docs. pi-warden runs per Pi event (tool calls, prompts, turn ends) and has no cron, scheduler, --once/--now, loop or webhook trigger. The only setTimeout/setInterval uses are per-call timeouts and throttles, so there is no product cycle to trigger by hand.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "pi",
        "--no-extensions",
        "-e",
        "<guest-path>",
        "--mode",
        "rpc",
        "--no-session",
        "--offline"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "{\"type\":\"extension_ui_request\",\"id\":\"0fcee715-9473-407c-bc7d-9e2850954b13\",\"method\":\"setWidget\",\"widgetKey\":\"pi-warden\"}\n{\"type\":\"extension_ui_request\",\"id\":\"f63524b9-46e8-4ae5-92b7-254d8718f152\",\"method\":\"notify\",\"message\":\"Rules in force: pi-warden.md (12 rules, 0 dropped)\\n1. no-console-output-in-library-code paths: src/**\\n2. todo-comments-need-a-reference paths: (all)\\n3. no-explicit-any paths: **/*.ts, **/*.tsx\\n4. exported-functions-declare-their-return-type paths: src/**/*.ts\\n5. errors-are-not-swallowed paths: (all)\\n6. switch-statements-have-a-default-case paths: (all)\\n7. no-hardcoded-secrets paths: (all)\\n8. boolean-names-read-as-a-question paths: (all)\\n9. new-exported-functions-get-a-test paths: src/**\\n10. comments-explain-why-not-what paths: (all)\\n11. no-commented-out-code paths: (all)\\n12. migrations-are-reversible paths: **/migrations/**\",\"notifyType\":\"info\"}\n{\"id\":\"1\",\"type\":\"response\",\"command\":\"prompt\",\"success\":true}",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Copy pi-warden.md to the project root and /warden rules lists its rules",
        "command": "pi --no-extensions -e <guest-path> --mode rpc --no-session --offline",
        "deferred": false,
        "evidence": "reference paths: (all)\\n3. no-explicit-any paths: **/*.ts, **/*.tsx\\n4. exported-functions-declare-their-return-type paths: src/**/*.ts\\n5. errors-are-not-swallowed paths: (all)\\n6. switch-statements-have-a-default-case paths: (all)\\n7. no-hardcoded-secrets paths: (all)\\n8. boolean-names-read-as-a-question paths: (all)\\n9. new-exported-functions-get-a-test paths: src/**\\n10. comments-explain-why-not-what paths: (all)\\n11. no-commented-out-code paths: (all)\\n12. migrations-are-reversible paths: **/migrations/**\",\"notifyType\":\"info\"}\n{\"id\":\"1\",\"type\":\"response\",\"command\":\"prompt\",\"success\":true}",
        "expected": "12 rules listed from pi-warden.md",
        "input": "examples/pi-warden.md copied to <guest-path>, then /warden rules over RPC",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "examples/README.md",
        "verdict": "yes"
      },
      {
        "claim": "Type-check the TypeScript sources",
        "command": "npm run typecheck",
        "deferred": false,
        "evidence": "> pi-warden@2.0.0 typecheck\n> tsc --noEmit",
        "expected": "tsc exits 0",
        "input": "npm run typecheck (Development section)",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Run the offline test suite",
        "command": "",
        "deferred": true,
        "evidence": "Deferred from the replay on purpose: full run is about 13 minutes and has timing-dependent tests that fail intermittently (1 to 24 failures across runs, each passing alone). Full result recorded in the report: 1735 of 1736 on the last run with HOME=<host-path> and make installed.",
        "expected": "offline tests pass",
        "input": "npm test (Development section)",
        "kind": "example",
        "outcome": "Deferred from the replay on purpose: full run is about 13 minutes and has timing-dependent tests that fail intermittently (1 to 24 failures across runs, each passing alone). Full result recorded in the report: 1735 of 1736 on the last run with HOME=<host-path> and make installed.",
        "source": "README.md",
        "verdict": "deferred"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
