{
  "checker": {
    "claims": [
      {
        "claim": "agrep -E runs a regular expression search",
        "command": "python3 cli.py -E 'copper (lantern|bucket)'",
        "evidence": "\u2026copper lantern upgrade beacon beside the deployment map.\n",
        "expected": "fixture hit matched by the regex",
        "input": "copper (lantern|bucket)",
        "kind": "claim",
        "outcome": "Real input produced the expected result: copper lantern upgrade beacon beside the deployment map",
        "returncode": 0,
        "source": "# regular expression search",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "agrep -l lists matching chats, not every line",
        "command": "python3 cli.py -l lantern",
        "evidence": "\u2026upgrade-fixture  [@11111111:0.c04e \u00b7 2 hits \u00b7 87d]\n",
        "expected": "one chat line for the fixture session",
        "input": "lantern",
        "kind": "claim",
        "outcome": "Real input produced the expected result: upgrade-fixture",
        "returncode": 0,
        "source": "# matching chats, not every line",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "agrep around shows context around a hit",
        "command": "python3 cli.py around 11111111-1111-4111-8111-111111111111 1",
        "evidence": "\u2026Both synthetic checklists are stored together.\n",
        "expected": "turn context including turn 1 text",
        "input": "session 11111111-1111-4111-8111-111111111111 turn 1",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Both synthetic checklists are stored together.",
        "returncode": 0,
        "source": "# context around a hit",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README.md and cli.py entrypoints: no cron, loop, webhook, --once or --now scheduler is documented. agrep index is a manual ingest command, and the freshness daemon refreshes on demand per the README How it works section.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README.md and cli.py entrypoints: no cron, loop, webhook, --once or --now scheduler is documented. agrep index is a manual ingest command, and the freshness daemon refreshes on demand per the README How it works section.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "python3",
        "cli.py",
        "copper lantern"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "11111111-1111-4111-8111-111111111111\tclaude\tupgrade-fixture\t0\tuser\tFind the copper lantern upgrade beacon in the synthetic release checklist.\n11111111-1111-4111-8111-111111111111\tclaude\tupgrade-fixture\t0\tagent\tThe fixture checklist keeps the copper lantern upgrade beacon beside the deployment map.",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Development quickstart keyword search runs from the source checkout",
        "command": "python3 cli.py 'copper lantern'",
        "deferred": false,
        "evidence": "11111111-1111-4111-8111-111111111111\tclaude\tupgrade-fixture\t0\tuser\tFind the copper lantern upgrade beacon in the synthetic release checklist.\n11111111-1111-4111-8111-111111111111\tclaude\tupgrade-fixture\t0\tagent\tThe fixture checklist keeps the copper lantern upgrade beacon beside the deployment map.",
        "expected": "fixture hit printed",
        "input": "copper lantern",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Development section",
        "verdict": "yes"
      },
      {
        "claim": "Filter by agent with --agent",
        "command": "python3 cli.py 'copper lantern' --agent claude",
        "deferred": false,
        "evidence": "11111111-1111-4111-8111-111111111111\tclaude\tupgrade-fixture\t0\tuser\tFind the copper lantern upgrade beacon in the synthetic release checklist.\n11111111-1111-4111-8111-111111111111\tclaude\tupgrade-fixture\t0\tagent\tThe fixture checklist keeps the copper lantern upgrade beacon beside the deployment map.",
        "expected": "hits from the claude agent",
        "input": "copper lantern --agent claude",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md The commands you actually need section",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "System cargo was 1.75 while rust-toolchain.toml pins 1.97.0; installed rustup 1.97.0 into /var<guest-path> The first rustup run printed unrelated cc/cargo build lines but a second run confirmed the install.",
    "setup was run with --yes but without --no-archive, so setup enabled archive retention in <guest-path> This was an unintended default; disposable guest only.",
    "First keyword search right after setup returned hits but exited 2 with 'first-run completion could not verify the published snapshot' while the index built in the background. A rerun after ~20s exited 0 with index_state ready.",
    "The guest had no agent transcripts, so the repo's bench/fixtures/upgrade_store/claude fixture was copied to /tmp/agrep-home/.claude/projects and read through AGREP_HOME.",
    "The README's exit-1 statement for an exhaustive keyword miss was observed manually (zzqxvnotpresentterm exited 1 with '0 matching rows') but was not kept as a claim: the checker only validates nonzero exit codes against an exit-code table, and the repo docs have none. Replaced it with a zero-exit regex claim.",
    "Not run: bench/perf.py --check and bench/semantic_cli_scale.py --check (timing budgets, not needed for functional proof), the Rust/Python test suites, and the semantic/ONNX lane.",
    "The product's freshness daemon (pid reported by status --json) remains running from the product's own on-demand refresh; it was not started by the checker."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Keyword search over indexed agent transcripts from the source checkout: python3 cli.py \"copper lantern\" returns the matching fixture messages, plus -E regex, -l chat listing, around context and --agent filtering.",
  "operation_scope": "Linux (WSL2 kernel 6.6), Python 3.12.3 (README requires 3.10+), Rust 1.97.0 via rustup per rust-toolchain.toml, Node 22 present but unused. Searched a copy of the repo's bench/fixtures/upgrade_store Claude transcripts placed at AGREP_HOME=/tmp/agrep-home, because the guest has no real agent history. No semantic model, no agent hooks, no instruction teaching.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "git init; git remote add origin https://github.com/dannyisbad/agrep; git fetch --depth 1 origin ac4efadbc0a305ac8bbb068422c5437157f35f56; git reset --mixed FETCH_HEAD",
    "curl -sSf https://sh.rustup.rs -o /tmp/rustup-init.sh && sh /tmp/rustup-init.sh -y --profile minimal --default-toolchain 1.97.0 -c clippy -c rustfmt (installs toolchain from rust-toolchain.toml)",
    "python3 cli.py setup --yes --no-teach --no-hook --no-semantic (README Development: python cli.py setup; ingest binary built with cargo build --release, 2m12s)",
    "AGREP_HOME=/tmp/agrep-home python3 cli.py \"copper lantern\" (README: agrep \"search term\" equivalent)",
    "AGREP_HOME=/tmp/agrep-home python3 cli.py status --json (index_state ready, messages 2)",
    "AGREP_HOME=/tmp/agrep-home python3 cli.py -l lantern; python3 cli.py around <id> 1; python3 cli.py zzqxvnotpresentterm (exit 1)"
  ],
  "stuck_step": null,
  "suggested_fix": "none"
}
