{
  "run_id": "realgarit--fable-baton-claude-haiku-5-5-1792785875882196993",
  "checker": {
    "claims": [
      {
        "claim": "Installing the plugin with the README command registers fable-baton as installed",
        "command": "claude plugin list",
        "evidence": "fable-baton@fable-baton\n    Version: 1.5.3\n    Scope: user\n    Status: \u2714 enabled\n\n",
        "expected": "claude plugin list shows fable-baton@fable-baton",
        "input": "none (the marketplace was added from realgarit/fable-baton and the plugin installed)",
        "kind": "claim",
        "outcome": "Real input produced the expected result: fable-baton@fable-baton",
        "returncode": 0,
        "source": "/plugin install fable-baton@fable-baton",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "The SessionStart hook injects the orchestration policy into a new session",
        "command": "env CLAUDE_PLUGIN_ROOT=. bash hooks/session-start.sh",
        "evidence": "# Orchestration policy (fable-baton)\n\nYou are the senior decision-maker in this session. Your value is judgment, not labor: spend your own reasoning only where being the strongest model changes the outcome, and delegate the rest to the tiered agents below via the Agent tool.\n\n## You keep\n\nIntent, scope, architecture and approach, decomposition and ordering, tradeoffs (speed/quality/risk/scope), hidden-risk identification, resolving disagreement between agents, reviewing important outputs, deciding when work is good enough, and the final answer to the user.\n\n## You delegate\n\nWork whose result i",
        "expected": "hook prints the orchestration policy header",
        "input": "{} on stdin with CLAUDE_PLUGIN_ROOT=.",
        "kind": "claim",
        "outcome": "Real input produced the expected result: # Orchestration policy (fable-baton)",
        "returncode": 0,
        "source": "A SessionStart hook injects the orchestration policy into every new session.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "The per-prompt reminder prints a delegation check on each prompt",
        "command": "bash hooks/prompt-nudge.sh",
        "evidence": "[fable-baton] Delegation check for this turn: searching, reading files, editing, testing, and verifying go to agents (scout, executor, architect, verifier via the Agent tool); you keep judgment, decisions, and the final answer. Tripwire: reaching for a 3rd consecutive inline Bash/Read/Grep/Edit call means that block belongs to an agent. Skills define what to do, not who does it: delegate their mechanical steps too. Exempt: conversational turns, one quick lookup, a one-line edit. No exemptions in security-context sessions.\n",
        "expected": "hook prints the [fable-baton] delegation check",
        "input": "UserPromptSubmit payload with session_id baton-cycle-check and a prompt",
        "kind": "claim",
        "outcome": "Real input produced the expected result: [fable-baton] Delegation check for this turn",
        "returncode": 0,
        "source": "Every prompt gets a short delegation reminder, and when the model does too much inline work in a row, the counter steps in:",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Whether the plugin fires inside a logged-in session cannot be tested in this guest",
        "command": "",
        "evidence": "Requires a logged-in Claude Code session with a Fable 5 or Opus subscription or API key; the guest reports 'Not logged in' and no credentials were obtained.",
        "expected": "",
        "input": "",
        "kind": "claim",
        "outcome": "Requires a logged-in Claude Code session with a Fable 5 or Opus subscription or API key; the guest reports 'Not logged in' and no credentials were obtained.",
        "source": "Install once and every new session in every repo starts this way.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "blocked"
      }
    ],
    "cycle_checks": [
      {
        "claim": "The per-prompt reminder runs on every user prompt",
        "command": "bash hooks/prompt-nudge.sh",
        "evidence": "[fable-baton] Delegation check for this turn: searching, reading files, editing, testing, and verifying go to agents (scout, executor, architect, verifier via the Agent tool); you keep judgment, decisions, and the final answer. Tripwire: reaching for a 3rd consecutive inline Bash/Read/Grep/Edit call means that block belongs to an agent. Skills define what to do, not who does it: delegate their mechanical steps too. Exempt: conversational turns, one quick lookup, a one-line edit. No exemptions in security-context sessions.",
        "expected": "reminder printed once for the prompt",
        "input": "{\"session_id\":\"baton-cycle-check\",\"prompt\":\"hello\"}",
        "kind": "cycle",
        "method": "run-once: the UserPromptSubmit hook command fired by hand with a prompt payload on stdin; no real Claude Code session",
        "outcome": "Triggered one cycle by hand (run-once: the UserPromptSubmit hook command fired by hand with a prompt payload on stdin; no real Claude Code session; normal trigger: UserPromptSubmit event, once per user prompt): [fable-baton] Delegation check for this turn: searching, reading files, editing, testing, and verifying go to agents (scout, executor, architect, verifier via the Agent tool); you keep judgment, decisions, and the final answer. Tripwire: reaching for a 3rd consecutive inline Bash/Read/Grep/Edit call means that block belongs to an agent. Skills define what to do, not who does it: delegate their mechanical steps too. Exempt: conversational turns, one quick lookup, a one-line edit. No exemptions in security-context sessions.",
        "returncode": 0,
        "schedule": "UserPromptSubmit event, once per user prompt",
        "source": "hooks/hooks.json",
        "verdict": "yes"
      }
    ],
    "details": {
      "checks": [
        {
          "check": "install",
          "details": {
            "argv": [
              "claude",
              "plugin",
              "list"
            ],
            "kind": "cli",
            "needs_browser": false,
            "needs_credentials": false,
            "returncode": 0,
            "scope": "partial: install",
            "stderr": "",
            "stdout": "Installed plugins:\n\n  \u276f fable-baton@fable-baton\n    Version: 1.5.3\n    Scope: user\n    Status: \u2714 enabled\n",
            "working": false
          },
          "optional": false,
          "status": "PASS"
        },
        {
          "check": "credentials_error",
          "details": {
            "argv": [
              "claude",
              "-p",
              "Reply with the word ok"
            ],
            "kind": "cli",
            "needs_browser": false,
            "needs_credentials": true,
            "returncode": 1,
            "scope": "partial: missing credentials",
            "stderr": "",
            "stdout": "Not logged in \u00b7 Please run /login",
            "working": false
          },
          "optional": false,
          "status": "PASS"
        }
      ],
      "scope": "partial checks",
      "working": false
    },
    "evidence_strength": "partly_checked",
    "example_checks": [
      {
        "claim": "Repository's own offline hook test (run by CI) passes",
        "command": "python3 tests/packaged-hooks.py",
        "deferred": false,
        "evidence": "PASS: all registered hooks work with mode 644 and spaces in the installed path",
        "expected": "PASS line for installed hooks with stripped modes",
        "input": "tests/packaged-hooks.py",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "AGENTS.md",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
