{
  "checker": {
    "claims": [
      {
        "claim": "The installer sets up the Atlas/AI_Memory folder structure inside an Obsidian vault",
        "command": "bash setup.sh /tmp/vault-claim-1",
        "evidence": "Installation Complete! Use '/save-memory' to retain session state.\n==========================================================\n",
        "expected": "Installer reports completion",
        "input": "/tmp/vault-claim-1",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Installation Complete!",
        "returncode": 0,
        "source": "Vault/Atlas/AI_Memory/",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README.md, setup.sh, setup.ps1, plugin.json, rules/GEMINI.md and .agents/skills/save-memory/SKILL.md. There is no cron, scheduler, loop, webhook, --once or --now entry point. The only trigger is the agent-run /save-memory skill, which is a prompt-driven procedure and not a product cycle that can be triggered from the shell.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README.md, setup.sh, setup.ps1, plugin.json, rules/GEMINI.md and .agents/skills/save-memory/SKILL.md. There is no cron, scheduler, loop, webhook, --once or --now entry point. The only trigger is the agent-run /save-memory skill, which is a prompt-driven procedure and not a product cycle that can be triggered from the shell.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "bash",
        "setup.sh",
        "/tmp/vault-probe"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "==========================================================\n  \ud83e\udde0 Antigravity Obsidian Memory: Quick Installer\n==========================================================\n\ud83d\udcc1 Target Vault: /tmp/vault-probe\n\u2139\ufe0f Folder Atlas/AI_Memory already exists. Skipping starter copy.\n\u2705 Global Skill '/save-memory' installed.\n\u2705 Global Rule ~/.gemini/GEMINI.md updated.\n==========================================================\n\ud83c\udf89 Installation Complete! Use '/save-memory' to retain session state.\n==========================================================",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Run the documented one-click installer against a vault path",
        "command": "bash setup.sh /tmp/vault-example-1",
        "deferred": false,
        "evidence": "==========================================================\n  \ud83e\udde0 Antigravity Obsidian Memory: Quick Installer\n==========================================================\n\ud83d\udcc1 Target Vault: /tmp/vault-example-1\n\u2139\ufe0f Folder Atlas/AI_Memory already exists. Skipping starter copy.\n\u2705 Global Skill '/save-memory' installed.\n\u2705 Global Rule ~/.gemini/GEMINI.md updated.\n==========================================================\n\ud83c\udf89 Installation Complete! Use '/save-memory' to retain session state.\n==========================================================",
        "expected": "Installer reports completion",
        "input": "/tmp/vault-example-1",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "setup.sh usage line / README.md Option 2",
        "verdict": "yes"
      },
      {
        "claim": "Project test suite",
        "command": "",
        "deferred": false,
        "evidence": "Inspected README.md, setup.sh, setup.ps1, plugin.json, templates/, rules/, .agents/skills/. No test suite, test command, or example tests exist. The /save-memory skill is an agent procedure run by an AI agent, not a runnable CLI, so it was not executed.",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "Inspected README.md, setup.sh, setup.ps1, plugin.json, templates/, rules/, .agents/skills/. No test suite, test command, or example tests exist. The /save-memory skill is an agent procedure run by an AI agent, not a runnable CLI, so it was not executed.",
        "source": "README.md",
        "verdict": "blocked"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "README one-liner 'curl -fsSL .../setup.sh | bash' fails: when setup.sh is read from stdin, SCRIPT_DIR resolves to the current directory, so it reports 'Error: Template directory not found at /tmp/vault-test/templates/Atlas/AI_Memory' and exits 1. Substituted: ran the same setup.sh from the source checkout with the vault path as argument, which the script's own usage line documents.",
    "./setup.sh failed with 'Permission denied' because the checkout file is not executable; substituted 'bash ./setup.sh <vault>'. No file modes were changed in the source.",
    "git init / remote / fetch pin not performed: no documented command needed Git metadata (setup.sh does not use git).",
    " README claims the starter router is 'Token-Efficient Router (< 40 lines)'. The installed 00_MEMORY_ROUTER.md is 50 lines, so this promise is not met by the shipped template.",
    "agy plugin install (README Option 1) not run: the agy CLI is not available in this guest."
  ],
  "fault_owner": "repo",
  "main_blocker": null,
  "operation": "Install the Antigravity Obsidian Memory starter structure into an Obsidian vault with setup.sh, which copies the Atlas/AI_Memory templates, GEMINI.md rule, and /save-memory skill",
  "operation_scope": "Linux Ubuntu 24.04 guest, bash, Python 3.12.3 for the checker. The product is a shell installer and Markdown templates; no server, MCP, CLI runtime, or browser is involved. The /save-memory skill is an agent-run procedure and was not executed. Installs wrote to the guest HOME (<guest-path>) and to throwaway vault folders under /tmp.",
  "outcome": "working",
  "plain_failure": "The one-line install command in the README does not work when piped from curl: it stops with 'Template directory not found'. Running the same installer from a downloaded copy of the repository works and sets up the memory folders, the global rule and the save-memory skill.",
  "steps": [
    "curl -fsSL https://raw.githubusercontent.com/nailulgh/antigravity-obsidian-memory/main/setup.sh | bash (run from /tmp/vault-test, README Option 2 macOS/Linux)",
    "bash ./setup.sh /tmp/vault-test (run from the checkout, using the usage line in setup.sh: ./setup.sh [/path/to/obsidian/vault])",
    "bash setup.sh /tmp/vault-probe (probe, replayed by checker: PASS)",
    "<env-var>=<guest-path> python3 -I <guest-path> --validate --replay"
  ],
  "stuck_step": null,
  "suggested_fix": "Make setup.sh locate its templates when run from stdin, for example by downloading the repository or the templates first, or by having the README direct users to clone the repo and run ./setup.sh <vault>. Also make the router template fit the documented under-40-line limit, or update the README's limit to match the 50-line template. Add the executable bit to setup.sh in the repository."
}
