{
  "checker": {
    "details": {
      "checks": [
        {
          "check": "install",
          "details": {
            "argv": [
              "/usr/local/bin/sashiko",
              "--help"
            ],
            "kind": "cli",
            "needs_browser": false,
            "needs_credentials": false,
            "returncode": 0,
            "scope": "partial: install",
            "stderr": "",
            "stdout": "Agentic code review system for Linux kernel\n\nUsage: sashiko [OPTIONS] [COMMAND]\n\nCommands:\n  init    Create a user settings file\n  review  Review a local commit or commit range without starting the daemon\n  help    Print this message or the help of the given subcommand(s)\n\nOptions:\n      --download <DOWNLOAD>\n          Number of last messages to ingest\n[excerpt truncated]",
            "working": false
          },
          "optional": false,
          "status": "PASS"
        },
        {
          "check": "credentials_error",
          "details": {
            "argv": [
              "/usr/local/bin/sashiko",
              "review"
            ],
            "blocker": "product did not produce a clear credential error: {\"returncode\": 3, \"stdout\": \"\\nError: patch 1: Permission denied (reason: Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 403,\\n    \\\"message\\\": \\\"Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.\\\",\\n    \\\"status\\\": \\\"PERMISSION_DENIED\\\"\\n  }\\n}\\n\\n\\nCaused by:\\n    0: Permission denied (reason: Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.): {\\n         \\\"error\\\": {\\n           \\\"code\\\": 403,\\n           \\\"message\\\": \\\"Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.\\\",\\n           \\\"status\\\": \\\"PERMISSION_DENIED\\\"\\n         }\\n       }\\n       \\n    1: Permission denied (reason: Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.): {\\n         \\\"error\\\": {\\n           \\\"code\\\": 403,\\n           \\\"message\\\": \\\"Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.\\\",\\n           \\\"status\\\": \\\"PERMISSION_DENIED\\\"\\n         }\\n       }\\n       \\n\", \"stderr\": \"Reviewing: HEAD\\nUsing prompts: /tmp/kscratch<host-path>\\nRunning review for 1 patch\\n      [Patch 1] change a | Queued\\n      [Patch 1] change a | Pre-screening guides...\\n2026-10-18T06:39:20.066796Z ERROR sashiko::ai::gemini: Gemini Permission Denied (403) (reason: Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 403,\\n    \\\"message\\\": \\\"Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.\\\",\\n    \\\"status\\\": \\\"PERMISSION_DENIED\\\"\\n  }\\n}\\n\\n2026-10-18T06:39:20.066854Z ERROR sashiko::local_review: AI review for patch 1 failed with exception: Permission denied (reason: Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 403,\\n    \\\"message\\\": \\\"Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.\\\",\\n    \\\"status\\\": \\\"PERMISSION_DENIED\\\"\\n  }\\n}\\n\\n2026-10-18T06:39:20.143315Z ERROR sashiko::ai::gemini: Gemini Permission Denied (403) (reason: Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 403,\\n    \\\"message\\\": \\\"Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.\\\",\\n    \\\"status\\\": \\\"PERMISSION_DENIED\\\"\\n  }\\n}\\n\\n2026-10-18T06:39:20.143377Z ERROR sashiko::local_review: AI review for patch 1 failed with exception: Permission denied (reason: Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 403,\\n    \\\"message\\\": \\\"Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.\\\",\\n    \\\"status\\\": \\\"PERMISSION_DENIED\\\"\\n  }\\n}\\n\\n2026-10-18T06:39:20.220597Z ERROR sashiko::ai::gemini: Gemini Permission Denied (403) (reason: Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 403,\\n    \\\"message\\\": \\\"Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.\\\",\\n    \\\"status\\\": \\\"PERMISSION_DENIED\\\"\\n  }\\n}\\n\\n2026-10-18T06:39:20.220653Z ERROR sashiko::local_review: AI review for patch 1 failed with exception: Permission denied (reason: Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.): {\\n  \\\"error\\\": {\\n    \\\"code\\\": 403,\\n    \\\"message\\\": \\\"Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.\\\",\\n    \\\"status\\\": \\\"PERMISSION_DENIED\\\"\\n  }\\n}\\n\\n      [Patch 1] change a | Incomplete\\nReview incomplete\\n\", \"needs_credentials\": false, \"needs_browser\": false}",
            "kind": "cli",
            "needs_browser": false,
            "needs_credentials": false,
            "returncode": 3,
            "stderr": "Reviewing: HEAD\nUsing prompts: /tmp/kscratch<host-path>\nRunning review for 1 patch\n      [Patch 1] change a | Queued\n      [Patch 1] change a | Pre-screening guides...\n2026-10-18T06:39:20.066796Z ERROR sashiko::ai::gemini: Gemini Permission Denied (403) (reason: Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.): {\n  \"error\": {\n    \"code\": 403,\n    \"message\": \"Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.\",\n    \"status\": \"PERMISSION_DENIED\"\n  }\n}\n[excerpt truncated]",
            "stdout": "\nError: patch 1: Permission denied (reason: Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.): {\n  \"error\": {\n    \"code\": 403,\n    \"message\": \"Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.\",\n    \"status\": \"PERMISSION_DENIED\"\n  }\n}\n\n\nCaused by:\n    0: Permission denied (reason: Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.): {\n[excerpt truncated]",
            "working": false
          },
          "optional": false,
          "status": "FAIL"
        }
      ],
      "scope": "partial checks",
      "working": false
    },
    "status": "FAIL"
  },
  "deviations": [
    "README Quick Start 1 `cargo install sashiko` replaced by building the pinned source with `cargo build --release` and copying target/release/sashiko to /usr/local/bin/sashiko, so the tested binary is the pinned commit rather than the crates.io release.",
    "Installed git/build prerequisites via apt because the guest had no git or cargo.",
    "`export LLM_API_KEY` (README Quick Start 2) not performed: no credential is available in the VM; no key was sought."
  ],
  "fault_owner": "prerequisite",
  "main_blocker": "No LLM API key in the VM. Gemini (default provider) returned 403 PERMISSION_DENIED for unauthenticated calls.",
  "operation": "Local patch review: `sashiko review` on a 2-commit scratch git repo (README Quick Start 3). Reached the LLM provider call and was rejected with 403 PERMISSION_DENIED; no review produced.",
  "operation_scope": "Build, init and CLI start verified. Full review requires an LLM provider credential (LLM_API_KEY / provider config per docs/llm-providers.md), which is not present in the VM and was not obtained.",
  "outcome": "blocked",
  "steps": [
    "Installed prerequisites via apt: git, build-essential, pkg-config, libssl-dev, curl, ca-certificates",
    "Installed Rust 1.90.0 via rustup (minimal profile, stable default toolchain resolved to 1.90.0 for README 'Rust 1.90+')",
    "cargo build --all-features --release (Makefile build target) in /workspace; built target/release/sashiko (v0.6.1) from pinned commit 27815bff",
    "HOME=/tmp/kscratch/home sashiko init -> Wrote /tmp/kscratch<host-path> (README Quick Start 2)",
    "sashiko review (README Quick Start 3) in scratch git repo -> review incomplete, PERMISSION_DENIED from Gemini default provider; exit code 3"
  ],
  "stuck_step": "README Quick Start 3: `sashiko review` (AI review) needs an LLM provider credential.",
  "suggested_fix": "Provide an LLM provider credential (export LLM_API_KEY=... or configure the provider in ~/.config/sashiko.toml per docs/llm-providers.md) and rerun `sashiko review` in a git checkout. Alternatively use a non-LLM documented path such as --no-ai ingestion, which was not part of the README quickstart."
}
