{
  "run_id": "dannyisbad--agrep-claude-haiku-5-5-1793167583052273048",
  "date": "2026-10-28T06:12:31.537705+00:00",
  "repo": "dannyisbad/agrep",
  "kind": "repo",
  "source": "https://github.com/dannyisbad/agrep",
  "commit": "ac4efadbc0a305ac8bbb068422c5437157f35f56",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-a0d0e27a4d0fd4c50903587087c25799260ee2578ee1953a6356df3e4fd02c35",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 325.1517954249939,
  "total_s": 368.48525738716125,
  "steps": [
    "cd <guest-path> && ls -la && git status 2>&1 | head -3; echo ---; cat README.md | head -c 7000; echo; echo ---; python3 --version; echo $CDP_URL",
    "cd <guest-path> && ls -la .coldpass; cat rust-toolchain.toml; echo ---; which uv cargo rustc pip3 node npm 2>&1; echo ---; sed -n 1,60p pyproject.toml; echo ---; cat agrep.cmd; ls agrep; echo; ls /inputs 2>&1",
    "cd <guest-path> && cargo --version; rustc --version; rustup --version 2>&1 | head -1; uv --version; node --version; echo ---; grep -n \"no-teach\\|no-hook\\|--yes\\|--consent\\|no-semantic\\|--no-model\\|def cmd_setup\\|'setup'\\|\\\"setup\\\"\" cli.py | head -40",
    "cd <guest-path> && grep -n \"rust-version\\|rust_version\" Cargo.toml crates/*/Cargo.toml; grep -n \"cargo\\|agrep-cli\\|target/release\\|AGREP_BIN\\|download\" cli.py | head -40; echo ---; ls crates/*; ls py | head -50",
    "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 2>&1 | tail -5; echo EXIT=$?; ls ~/.cargo/bin 2>&1",
    "echo HOME=$HOME; ls -la $HOME/.cargo/bin 2>&1 | head; ls -la /tmp/rustup-init.sh; sh -c 'command -v rustup; rustup show 2>&1 | tail -5'",
    "cd /tmp && sh /tmp/rustup-init.sh -y --profile minimal --default-toolchain 1.97.0 -c clippy -c rustfmt > /tmp/rustup-install.log 2>&1; echo EXIT=$?; grep -iv \"cargo:\\|CFLAGS\\|HOST_\" /tmp/rustup-install.log | tail -20; ls $HOME/.cargo/bin 2>&1 | head -3",
    "export PATH=/var<guest-path>; cargo --version; cd <guest-path> && timeout 1500 python3 cli.py setup --yes --no-teach --no-hook --no-semantic > /tmp/setup.log 2>&1; echo EXIT=$?; tail -c 3000 /tmp/setup.log",
    "cd <guest-path> && find . -path ./target -prune -o \\( -name \"*.jsonl\" -o -path \"*fixtures*\" \\) -print 2>/dev/null | grep -v target | head -30; echo ---; grep -rln \"projects\" crates/agrep-core/src | head; grep -rn \"\\\"type\\\"\" crates/agrep-core/src/*claude* 2>/dev/null | head -5",
    "cd <guest-path> && grep -rhn \"AGREP_[A-Z_]*HOME\\|AGREP_[A-Z_]*ROOT\\|CLAUDE_CONFIG\\|\\.claude\\\"\" crates/agrep-core/src py/*.py 2>/dev/null | head -12; echo ---; head -c 1500 \"bench/fixtures/upgrade_store/claude/projects/-work-upgrade-fixture/11111111-1111-4111-8111-111111111111.jsonl\"; echo; wc -l bench/fixtures/upgrade_store/claude/projects/-work-upgrade-fixture/*.jsonl",
    "export PATH=/var<guest-path>; mkdir -p /tmp/agrep-home/.claude/projects && cp -r <guest-path> /tmp/agrep-home/.claude/projects/ && cd <guest-path> && AGREP_HOME=/tmp/agrep-home python3 cli.py \"copper lantern\" > /tmp/search1.log 2>&1; echo EXIT=$?; cat /tmp/search1.log | head -c 3000",
    "export PATH=/var<guest-path>; cd <guest-path> && sleep 20; AGREP_HOME=/tmp/agrep-home python3 cli.py \"copper lantern\" > /tmp/search2.log 2>&1; echo EXIT=$?; cat /tmp/search2.log | head -c 2000; echo ---; AGREP_HOME=/tmp/agrep-home python3 cli.py status --json 2>&1 | head -c 2000; echo; echo EXIT=$?",
    "export PATH=/var<guest-path>; cd <guest-path> && export AGREP_HOME=/tmp/agrep-home; python3 cli.py \"zzqxvnotpresentterm\" > /tmp/miss.log 2>&1; echo MISS_EXIT=$?; head -c 500 /tmp/miss.log; echo ---; python3 cli.py -l lantern > /tmp/l.log 2>&1; echo L_EXIT=$?; head -c 800 /tmp/l.log; echo ---; python3 cli.py \"copper lantern\" --agent codex > /tmp/codex.log 2>&1; echo CODEX_EXIT=$?; head -c 500 /tmp/codex.log; echo ---; python3 cli.py around 11111111-1111-4111-8111-111111111111 0 2>&1 | head -c 800; echo AROUND_EXIT=$?",
    "cd <guest-path> && grep -n '\"--once\"\\|\"--now\"\\|add_parser(\"index\"\\|add_parser(\"refresh\"\\|\"index\", help\\|cron\\|webhook' cli.py py/cli*.py py/indexd.py 2>/dev/null | head -20; sed -n '/add_parser(\"index\"/,+6p' cli.py | head -12",
    "cd <guest-path> && cat > probe.json <<'EOF'\n{\"kind\":\"cli\",\"argv\":[\"python3\",\"cli.py\",\"copper lantern\"],\"cwd\":\"<guest-path>\",\"env\":{\"AGREP_HOME\":\"/tmp/agrep-home\"},\"expected_text\":\"copper lantern upgrade beacon beside the deployment map\"}\nEOF\ncat > claims.json <<'EOF'\n[{\"kind\":\"claim\",\"claim\":\"A current exhaustive keyword miss exits 1\",\"source\":\"A current, exhaustive keyword miss exits `1`; an unverified absence exits `2`.\",\"input\":\"zzqxvnotpresentterm\",\"expected\":\"exit 1 with 0 matching rows\",\"probe_kind\":\"cli\",\"argv\":[\"python3\",\"cli.py\",\"zzqxvnotpresentterm\"],\"cwd\":\"<guest-path>\",\"env\":{\"AGREP_HOME\":\"/tmp/agrep-home\"},\"expected_returncode\":1,\"expected_exit_meaning\":\"exhaustive keyword miss\",\"expected_text\":\"0 matching rows\"},{\"kind\":\"claim\",\"claim\":\"agrep -l lists matching chats, not every line\",\"source\":\"# matching chats, not every line\",\"input\":\"lantern\",\"expected\":\"one chat line for the fixture session\",\"probe_kind\":\"cli\",\"argv\":[\"python3\",\"cli.py\",\"-l\",\"lantern\"],\"cwd\":\"<guest-path>\",\"env\":{\"AGREP_HOME\":\"/tmp/agrep-home\"},\"expected_text\":\"upgrade-fixture\"},{\"kind\":\"claim\",\"claim\":\"agrep around shows context around a hit\",\"source\":\"# context around a hit\",\"input\":\"session 11111111-1111-4111-8111-111111111111 turn 0\",\"expected\":\"turn context including turn 1 text\",\"probe_kind\":\"cli\",\"argv\":[\"python3\",\"cli.py\",\"around\",\"11111111-1111-4111-8111-111111111111\",\"1\"],\"cwd\":\"<guest-path>\",\"env\":{\"AGREP_HOME\":\"/tmp/agrep-home\"},\"expected_text\":\"Both synthetic checklists are stored together.\"}]\nEOF\ncat > examples.json <<'EOF'\n[{\"kind\":\"example\",\"claim\":\"Development quickstart keyword search runs from the source checkout\",\"source\":\"README.md Development section\",\"input\":\"copper lantern\",\"expected\":\"fixture hit printed\",\"argv\":[\"python3\",\"cli.py\",\"copper lantern\"],\"cwd\":\"<guest-path>\",\"env\":{\"AGREP_HOME\":\"/tmp/agrep-home\"},\"expected_text\":\"copper lantern upgrade beacon beside the deployment map\"},{\"kind\":\"example\",\"claim\":\"Filter by agent with --agent\",\"source\":\"README.md The commands you actually need section\",\"input\":\"copper lantern --agent codex\",\"expected\":\"filter reports codex is not indexed (documented fixture limit)\",\"argv\":[\"python3\",\"cli.py\",\"copper lantern\",\"--agent\",\"codex\"],\"cwd\":\"<guest-path>\",\"env\":{\"AGREP_HOME\":\"/tmp/agrep-home\"},\"expected_returncode\":1,\"expected_exit_meaning\":\"exhaustive keyword miss\",\"expected_text\":\"isn't in the index\"}]\nEOF\ncat > cycles.json <<'EOF'\n{\"detected\":false,\"checks\":[],\"reason\":\"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.\"}\nEOF\nfor f in probe claims examples cycles; do python3 -m json.tool $f.json >/dev/null && echo \"$f ok\"; done",
    "cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay > /tmp/validate.log 2>&1; echo EXIT=$?; tail -c 4000 /tmp/validate.log",
    "cd <guest-path> && grep -n \"expected_returncode\\|expected_exit_meaning\\|exit_meaning\\|EXIT_\\|exit table\" check.py | head -40",
    "cd <guest-path> && sed -n 1395,1425p check.py; echo ----; sed -n 1486,1505p check.py",
    "cd <guest-path> && grep -rn -i \"exit code\" --include=*.md . | grep -v CHANGELOG | head -20; echo ---; sed -n 1360,1394p <guest-path> | head -c 2500",
    "cd <guest-path> && cat > claims.json <<'EOF'\n[{\"kind\":\"claim\",\"claim\":\"agrep -E runs a regular expression search\",\"source\":\"# regular expression search\",\"input\":\"copper (lantern|bucket)\",\"expected\":\"fixture hit matched by the regex\",\"probe_kind\":\"cli\",\"argv\":[\"python3\",\"cli.py\",\"-E\",\"copper (lantern|bucket)\"],\"cwd\":\"<guest-path>\",\"env\":{\"AGREP_HOME\":\"/tmp/agrep-home\"},\"expected_text\":\"copper lantern upgrade beacon beside the deployment map\"},{\"kind\":\"claim\",\"claim\":\"agrep -l lists matching chats, not every line\",\"source\":\"# matching chats, not every line\",\"input\":\"lantern\",\"expected\":\"one chat line for the fixture session\",\"probe_kind\":\"cli\",\"argv\":[\"python3\",\"cli.py\",\"-l\",\"lantern\"],\"cwd\":\"<guest-path>\",\"env\":{\"AGREP_HOME\":\"/tmp/agrep-home\"},\"expected_text\":\"upgrade-fixture\"},{\"kind\":\"claim\",\"claim\":\"agrep around shows context around a hit\",\"source\":\"# context around a hit\",\"input\":\"session 11111111-1111-4111-8111-111111111111 turn 1\",\"expected\":\"turn context including turn 1 text\",\"probe_kind\":\"cli\",\"argv\":[\"python3\",\"cli.py\",\"around\",\"11111111-1111-4111-8111-111111111111\",\"1\"],\"cwd\":\"<guest-path>\",\"env\":{\"AGREP_HOME\":\"/tmp/agrep-home\"},\"expected_text\":\"Both synthetic checklists are stored together.\"}]\nEOF\ncat > examples.json <<'EOF'\n[{\"kind\":\"example\",\"claim\":\"Development quickstart keyword search runs from the source checkout\",\"source\":\"README.md Development section\",\"input\":\"copper lantern\",\"expected\":\"fixture hit printed\",\"argv\":[\"python3\",\"cli.py\",\"copper lantern\"],\"cwd\":\"<guest-path>\",\"env\":{\"AGREP_HOME\":\"/tmp/agrep-home\"},\"expected_text\":\"copper lantern upgrade beacon beside the deployment map\"},{\"kind\":\"example\",\"claim\":\"Filter by agent with --agent\",\"source\":\"README.md The commands you actually need section\",\"input\":\"copper lantern --agent claude\",\"expected\":\"hits from the claude agent\",\"argv\":[\"python3\",\"cli.py\",\"copper lantern\",\"--agent\",\"claude\"],\"cwd\":\"<guest-path>\",\"env\":{\"AGREP_HOME\":\"/tmp/agrep-home\"},\"expected_text\":\"copper lantern upgrade beacon beside the deployment map\"}]\nEOF\npython3 -m json.tool claims.json >/dev/null && python3 -m json.tool examples.json >/dev/null && echo ok; cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay > /tmp/validate2.log 2>&1; echo EXIT=$?; tail -c 1800 /tmp/validate2.log",
    "cd <guest-path> && grep -o '\"verdict\": \"[a-z]*\"' /tmp/validate2.log | sort | uniq -c; grep -o '\"valid\": [a-z]*' /tmp/validate2.log | head -2; echo ---; git init -q . && git remote add origin https://github.com/dannyisbad/agrep && git fetch --depth 1 origin ac4efadbc0a305ac8bbb068422c5437157f35f56 2>&1 | tail -3; git reset --mixed FETCH_HEAD 2>&1 | tail -2; git rev-parse HEAD",
    "cd <guest-path> && cat > report.json <<'EOF'\n{\"outcome\":\"working\",\"fault_owner\":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.\",\"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)\"],\"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.\"],\"stuck_step\":null,\"main_blocker\":null,\"plain_failure\":null,\"suggested_fix\":\"none\"}\nEOF\npython3 -m json.tool report.json >/dev/null && echo report-ok; cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay > /tmp/validate3.log 2>&1; echo FINAL_EXIT=$?; grep -o '\"valid\": [a-z]*' /tmp/validate3.log | head -1; grep -o '\"evidence_strength\": \"[a-z_]*\"' /tmp/validate3.log"
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "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.",
  "suggested_fix": null,
  "tokens_in": 627491,
  "tokens_out": 20186,
  "cost_usd": 0.024968220000000003,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "python3",
          "cli.py",
          "copper lantern"
        ],
        "kind": "cli",
        "returncode": 0,
        "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.",
        "stderr": "",
        "needs_credentials": false,
        "needs_browser": false,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 1 download and execute, 1 hardcoded secret, 4 known vulnerability. 5 static matches retained as context.",
    "expected": "Reviewed as expected for a test run: attempted writes that failed, so nothing was written; package managers (cargo) downloaded dependencies over HTTPS; wrote only to its own open file handles.",
    "findings": [
      {
        "kind": "download-and-execute",
        "count": 1,
        "note": "Source contains download and execute; review its purpose.",
        "location_count": 1,
        "path": "npm/bin.js"
      },
      {
        "kind": "hardcoded-secret",
        "count": 1,
        "note": "Gitleaks found a possible hardcoded secret; value withheld.",
        "location_count": 1,
        "path": "crates/agrep-cli/src/index_lock.rs"
      },
      {
        "kind": "known-vulnerability",
        "count": 4,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 4
      }
    ],
    "context": [
      {
        "kind": "hardcoded-secret",
        "count": 5,
        "note": "Gitleaks found a possible hardcoded secret; value withheld.",
        "location_count": 2
      }
    ],
    "limitations": [
      "A short run cannot establish that code is safe.",
      "Connections show IP addresses; proxies can hide the final hostname.",
      "Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing."
    ],
    "static": {
      "dependency_note": "OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check."
    },
    "evidence_url": "/safety/?run=dannyisbad--agrep-claude-haiku-5-5-1793167583052273048",
    "evidence_file": "/data/safety/dannyisbad--agrep-claude-haiku-5-5-1793167583052273048.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.310 (Claude Code)",
  "tool_transport": "mcp-assigned-vm",
  "platform": "linux",
  "reasoning": "low",
  "service_tier": null,
  "resources": {
    "cpus": 2,
    "memory_mib": 4096,
    "disk_mib": 32768
  },
  "native_tool_calls": 22,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "ac4efadbc0a305ac8bbb068422c5437157f35f56",
    "url": "https://github.com/dannyisbad/agrep"
  },
  "purpose": "initial",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": null,
    "status": "resolved",
    "reason": null
  },
  "fix_id": null,
  "verifies_run_id": null,
  "hosting": null,
  "operation_scope": "product operation",
  "tool_calls": 22,
  "guest_setup": null,
  "runtime": null,
  "runtime_version": null,
  "runtime_revision": null,
  "source_revision": null,
  "evidence_version": null,
  "failure_origin": null,
  "evidence_strength": "readme_checked",
  "works": "yes",
  "install_s": null,
  "first_use_s": null,
  "mcp": "none",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "cli"
  ],
  "license": "MIT",
  "repo_url": "https://github.com/dannyisbad/agrep",
  "cost_to_try": "free",
  "hardware": null,
  "what_failed": null,
  "local_or_hosted": "local",
  "cycle_checks": [
    {
      "kind": "cycle",
      "claim": "Scheduled or looping main behavior",
      "source": "repository entry points",
      "input": "source inspection",
      "expected": "identify the product trigger",
      "verdict": "yes",
      "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.",
      "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.",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "agrep -E runs a regular expression search",
      "source": "# regular expression search",
      "input": "copper (lantern|bucket)",
      "expected": "fixture hit matched by the regex",
      "command": "python3 cli.py -E 'copper (lantern|bucket)'",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: copper lantern upgrade beacon beside the deployment map",
      "evidence": "\u2026copper lantern upgrade beacon beside the deployment map.\n",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "agrep -l lists matching chats, not every line",
      "source": "# matching chats, not every line",
      "input": "lantern",
      "expected": "one chat line for the fixture session",
      "command": "python3 cli.py -l lantern",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: upgrade-fixture",
      "evidence": "\u2026upgrade-fixture  [@11111111:0.c04e \u00b7 2 hits \u00b7 87d]\n",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "agrep around shows context around a hit",
      "source": "# context around a hit",
      "input": "session 11111111-1111-4111-8111-111111111111 turn 1",
      "expected": "turn context including turn 1 text",
      "command": "python3 cli.py around 11111111-1111-4111-8111-111111111111 1",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: Both synthetic checklists are stored together.",
      "evidence": "\u2026Both synthetic checklists are stored together.\n",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "Development quickstart keyword search runs from the source checkout",
      "source": "README.md Development section",
      "input": "copper lantern",
      "command": "python3 cli.py 'copper lantern'",
      "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.",
      "deferred": false,
      "expected": "fixture hit printed",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Filter by agent with --agent",
      "source": "README.md The commands you actually need section",
      "input": "copper lantern --agent claude",
      "command": "python3 cli.py 'copper lantern' --agent claude",
      "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.",
      "deferred": false,
      "expected": "hits from the claude agent",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "last_commit_at": "2026-10-28T01:33:54Z",
    "commits_90d": 82,
    "merged_prs_90d": 0,
    "open_issues": 0,
    "open_prs": 0,
    "reply_share": null,
    "reply_threads": 0,
    "median_reply_hours": null,
    "last_release_at": "2026-10-28T04:24:56Z",
    "archived": false,
    "verdict": "maintained",
    "note": "actively maintained: last commit 0 days ago; 82 commits and 0 merged PRs in 90 days; 0 open issues, 0 open PRs; latest release 2026-10-28"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 0 days ago; 82 commits and 0 merged PRs in 90 days; 0 open issues, 0 open PRs; latest release 2026-10-28",
  "maintained": "active",
  "maintained_note": "last commit 0 days ago",
  "last_commit_at": "2026-10-28T02:03:47Z",
  "last_release_at": "2026-10-28T04:24:56Z",
  "open_issues": null,
  "answered_issues": null,
  "platforms_claimed": [
    "linux",
    "windows"
  ],
  "topic": "agent-harness",
  "agent_interfaces": [
    {
      "interface": "cli",
      "evidence": "independent checker",
      "observed": true,
      "operation_checked": true
    }
  ],
  "agent_interfaces_note": "README metadata is a discovery hint, not pinned documentation proof. Observed interfaces were exercised in this run. An empty list means unknown.",
  "mcp_context": null,
  "tested_at": "2026-10-28T06:12:31.537705+00:00",
  "tested_commit": "ac4efadbc0a305ac8bbb068422c5437157f35f56",
  "tested_with": {
    "agent": "claude-code",
    "agent_version": "2.1.310 (Claude Code)",
    "model": "claude-haiku-5-5",
    "model_route": "claude-haiku-5-5",
    "reasoning": "low",
    "os": "linux",
    "backend": "hyperv",
    "transport": "mcp-assigned-vm"
  },
  "setup_identity": {
    "repo": "dannyisbad/agrep",
    "source": "https://github.com/dannyisbad/agrep",
    "commit": "ac4efadbc0a305ac8bbb068422c5437157f35f56",
    "source_revision": null,
    "os": "linux",
    "architecture": null,
    "backend": "hyperv",
    "model": "claude-haiku-5-5",
    "model_version": "claude-haiku-5-5",
    "agent_execution": "native_agent",
    "agent_runtime": "claude-code",
    "agent_runtime_version": "2.1.310 (Claude Code)",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "ac4efadbc0a305ac8bbb068422c5437157f35f56",
      "url": "https://github.com/dannyisbad/agrep"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "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": "product operation",
    "hosting": null,
    "kind": "repo",
    "test_version": "readme-a0d0e27a4d0fd4c50903587087c25799260ee2578ee1953a6356df3e4fd02c35",
    "evidence_version": null
  },
  "other_model": null,
  "other_run_id": null,
  "models_agree": null,
  "furthest_model": null,
  "transcript_url": "/transcripts/dannyisbad--agrep-claude-haiku-5-5-1793167583052273048.txt",
  "report_url": "/reports/dannyisbad--agrep-claude-haiku-5-5-1793167583052273048.json"
}
