{
  "run_id": "iAmCorey--Wake-claude-haiku-5-5-1792812702611530293",
  "date": "2026-10-24T04:13:18.286359+00:00",
  "repo": "iAmCorey/Wake",
  "kind": "mcp",
  "source": "https://github.com/iAmCorey/Wake",
  "commit": "c8ee9b88b8e1c2281da1f3b6268d36bbfb58fb0b",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 2416.718356897938,
  "total_s": 2495.6747963428497,
  "steps": [
    "cd <guest-path> && ls -la && id -u && python3 --version && cat README.md 2>/dev/null | head -200",
    "cd <guest-path> && tail -n +200 README.md; echo ---; ls -la .coldpass; echo ---; git status 2>&1 | head -3; echo ---; which cargo rustc node npm uv 2>&1; cargo --version 2>&1; rustc --version 2>&1; cat /etc/os-release | head -3; ls scripts; cat scripts/test.sh 2>/dev/null | head -60",
    "cd <guest-path> && cat Cargo.toml; grep -rn \"rust-version\\|edition\" crates/*/Cargo.toml | head; sudo -n true && echo SUDO_OK",
    "sudo DEBIAN_FRONTEND=noninteractive apt-get update -qq 2>&1 | tail -3; sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq libasound2-dev libfontconfig1-dev libwayland-dev libxkbcommon-dev libxkbcommon-x11-dev libssl-dev libzstd-dev pkg-config cmake clang curl build-essential > /tmp/apt.log 2>&1; echo \"apt rc=$?\"; tail -5 /tmp/apt.log",
    "export NODE_USE_ENV_PROXY=1; curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable > /tmp/rustup.log 2>&1; echo \"rc=$?\"; tail -3 /tmp/rustup.log; source $HOME/.cargo/env && cargo --version && rustc --version",
    "cd <guest-path> && cat scripts/make-linux.sh",
    "cd <guest-path> && source $HOME/.cargo/env && nohup bash -c 'scripts/make-linux.sh' > /tmp/make-linux.log 2>&1 &\necho started",
    "sleep 600; tail -3 /tmp/make-linux.log; pgrep -f make-linux.sh >/dev/null && echo RUNNING || echo DONE",
    "sleep 900; grep -E \"Compiling (wake|wake-core)|Finished|error\" /tmp/make-linux.log | tail -5; pgrep -f make-linux.sh >/dev/null && echo RUNNING || echo DONE",
    "sleep 60; pgrep -f make-linux.sh >/dev/null && echo RUNNING || echo DONE; tail -4 /tmp/make-linux.log; cd <guest-path> && ls -la dist 2>&1",
    "cd <guest-path> && pgrep -f make-linux.sh >/dev/null && echo STILL || echo DONE; ls -la target/release/ | grep -E \"^-.*(Wake|wake-mcp|wake-cli)$\"; head -40 scripts/demo-home.py; grep -n \"argv\\|argparse\\|add_argument\\|WAKE_HOME\" scripts/demo-home.py | head -30",
    "ps aux | grep -c \"[m]ake-linux.sh\" ; cd <guest-path> && python3 scripts/demo-home.py /tmp/wake-demo-home 2>&1 | tail -5; echo rc=$?; ls /tmp/wake-demo-home; export HOME=/tmp/wake-demo-home; ./target/release/wake-cli --help 2>&1 | head -30",
    "cd <guest-path> && export HOME=/tmp/wake-demo-home && ./target/release/wake-cli index 2>&1 | tail -5; echo \"rc=$?\"; ./target/release/wake-cli search \"useEffect(\" 2>&1 | head -15; echo ---; ./target/release/wake-cli sessions --limit 3 2>&1 | head",
    "cd <guest-path> && export HOME=/tmp/wake-demo-home && ./target/release/wake-mcp call wake_search '{\"query\":\"useEffect(\"}' 2>&1 | head -12; echo \"rc=$?\"; echo ---; printf '%s\\n' '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"t\",\"version\":\"0\"}}}' '{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}' '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\"}' | timeout 10 ./target/release/wake-mcp 2>&1 | head -c 600; echo",
    "ls -la <guest-path> /inputs/ 2>&1; grep -n \"source_file\\|def \\|expected_file\\|quote\" <guest-path> | head -80",
    "cd <guest-path> && grep -rn \"interval\\|Interval\\|sleep(\\|thread::sleep\\|from_secs\\|tick\\|periodic\\|--once\\|--now\\|cron\\|schedul\" crates --include=*.rs | grep -v \"test\" | head -40; echo ---; grep -rn \"fn main\" crates/wake-core/src/bin/*.rs | head",
    "cd <guest-path> && export HOME=/tmp/wake-demo-home && ./target/release/wake-cli refresh 2>&1 | tail -3; echo \"refresh rc=$?\"; ./target/release/wake-cli show 'claude-code:068f4ced-a156-4781-ad94-c83ef5097a5f' 2>&1 | head -8; echo \"show rc=$?\"; ./target/release/wake-cli search \"useEffect(\" --project <host-path> 2>&1 | head -3",
    "cd <guest-path> && nohup bash -c 'export PATH=$HOME/.cargo/bin:$PATH; cargo test -p wake-core' > /tmp/cargo-test.log 2>&1 &\nsleep 420; grep -E \"test result|error\\[|FAILED|panicked\" /tmp/cargo-test.log | tail -8; tail -2 /tmp/cargo-test.log",
    "sed -n 1009,1030p <guest-path>; echo; echo \"HOME=$HOME\"; ls -la $HOME/.cargo/bin/cargo",
    "cd <guest-path> && mkdir -p .coldpass && W=<guest-path> && ID=068f4ced-a156-4781-ad94-c83ef5097a5f && cat > .coldpass/probe.json <<EOF\n{\"kind\":\"mcp\",\"argv\":[\"$W/target/release/wake-mcp\"],\"cwd\":\"$W\",\"tool\":\"wake_search\",\"arguments\":{\"query\":\"useEffect(\"},\"expected_text\":\"$ID\",\"env\":{\"HOME\":\"/tmp/wake-demo-home\"}}\nEOF\ncat > .coldpass/claims.json <<EOF\n[\n{\"kind\":\"claim\",\"claim\":\"The wake-mcp server exposes a search tool that finds sessions by text\",\"source\":\"Search every session and memory file\",\"input\":\"query useEffect(\",\"expected\":\"the matching Claude Code session key is returned\",\"probe_kind\":\"mcp\",\"argv\":[\"$W/target/release/wake-mcp\"],\"tool\":\"wake_search\",\"arguments\":{\"query\":\"useEffect(\"},\"expected_text\":\"$ID\",\"env\":{\"HOME\":\"/tmp/wake-demo-home\"},\"cwd\":\"$W\"},\n{\"kind\":\"claim\",\"claim\":\"wake-cli answers the same search questions from a terminal\",\"source\":\"\\`wake-cli\\` gives the same answers in a terminal\",\"input\":\"search useEffect(\",\"expected\":\"the matching session key is printed\",\"probe_kind\":\"cli\",\"argv\":[\"$W/target/release/wake-cli\",\"search\",\"useEffect(\"],\"expected_text\":\"$ID\",\"env\":{\"HOME\":\"/tmp/wake-demo-home\"},\"cwd\":\"$W\"}\n]\nEOF\ncat > .coldpass/examples.json <<EOF\n[\n{\"kind\":\"example\",\"claim\":\"Data-layer tests run with cargo\",\"source\":\"README.md Development section: data-layer tests only (adapter contracts, FTS, scanner)\",\"input\":\"cargo test -p wake-core\",\"expected\":\"all test suites report ok\",\"argv\":[\"<guest-path>\",\"test\",\"-p\",\"wake-core\"],\"cwd\":\"$W\",\"env\":{},\"expected_text\":\"test result: ok\"},\n{\"kind\":\"example\",\"claim\":\"Refresh the index while Wake is closed\",\"source\":\"README.md shell commands: wake-cli refresh\",\"input\":\"no arguments\",\"expected\":\"index is refreshed with the synthetic demo sessions\",\"argv\":[\"$W/target/release/wake-cli\",\"refresh\"],\"cwd\":\"$W\",\"env\":{\"HOME\":\"/tmp/wake-demo-home\"},\"expected_text\":\"Refreshed the index\"}\n]\nEOF\ncat > .coldpass/cycles.json <<'EOF'\n{\"detected\":false,\"reason\":\"Inspected README and entry points (wake-cli, wake-mcp, wake GUI). No cron, --once or --now scheduler. The only loop is the GUI file watcher (crates/wake-core/src/watcher.rs, recv_timeout) which runs inside the desktop app; the README's manual one-shot is 'wake-cli refresh' (covered as an example). Desktop GUI could not be run headless here, so no cycle was triggered.\",\"checks\":[]}\nEOF\nfor f in probe claims examples cycles; do python3 -I -m json.tool .coldpass/$f.json >/dev/null && echo \"$f ok\"; done; cat .coldpass/probe.json",
    "cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -60; echo \"rc=${PIPESTATUS[0]}\"",
    "cd <guest-path> && ls <guest-path> && cat <guest-path> && python3 -I - <<'PY'\nimport json\np='<guest-path>'\nd=json.load(open(p))\nd[0]['env']={\"HOME\":\"<guest-path>\",\"RUSTUP_HOME\":\"<guest-path>\",\"CARGO_HOME\":\"<guest-path>\",\"PATH\":\"<guest-path>\"}\njson.dump(d,open(p,'w'),indent=1,ensure_ascii=False)\nprint(\"updated\")\nPY\n<env-var>=<guest-path> python3 -I <guest-path> --validate --replay > /tmp/validate1.json 2>&1; echo \"rc=$?\"; python3 -I -c \"\nimport json,sys\nt=open('/tmp/validate1.json').read()\ni=t.find('{')\nd=json.loads(t[i:])\nprint('valid:',d.get('valid')); print('problems:',d.get('problems'))\nprint('replay:',d.get('replay',{}).get('status'))\nfor e in d.get('replay',{}).get('details',{}).get('example_checks',[]): print('example',e.get('verdict'),e.get('outcome'),e.get('evidence','')[:150])\n\"",
    "ps aux | grep -E \"[w]ake-mcp|[w]ake-cli|[t]arget/release/Wake\" | head; echo \"procs-checked\"; cd <guest-path> && cat > .coldpass/report.json <<'EOF'\n{\n  \"outcome\": \"working\",\n  \"fault_owner\": null,\n  \"operation\": \"Build Wake for Linux with the README's make-linux.sh, index a synthetic agent-session home with wake-cli, and search it through the wake-mcp stdio server (wake_search tool) and wake-cli search.\",\n  \"operation_scope\": \"Ubuntu 24.04 x86_64 VM, non-root user with passwordless sudo. Linux is marked experimental in the README. Data is the synthetic demo home from scripts/demo-home.py at /tmp/wake-demo-home (424 sessions). The desktop GUI was not launched because it needs a display. No real agent data was read.\",\n  \"steps\": [\n    \"sudo apt-get install -y libasound2-dev libfontconfig1-dev libwayland-dev libxkbcommon-dev libxkbcommon-x11-dev libssl-dev libzstd-dev pkg-config cmake clang (plus curl, build-essential)\",\n    \"curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable  (Rust 1.99.1)\",\n    \"scripts/make-linux.sh  (release build; produced dist/wake-0.10.1-linux-amd64.tar.gz and dist/wake_0.10.1_amd64.deb)\",\n    \"python3 scripts/demo-home.py /tmp/wake-demo-home\",\n    \"HOME=/tmp/wake-demo-home wake-cli index\",\n    \"HOME=/tmp/wake-demo-home wake-cli search \\\"useEffect(\\\"\",\n    \"HOME=/tmp/wake-demo-home wake-mcp call wake_search '{\\\"query\\\":\\\"useEffect(\\\"}'  (and an MCP initialize/tools/list over stdio)\",\n    \"HOME=/tmp/wake-demo-home wake-cli refresh\",\n    \"cargo test -p wake-core  (documented data-layer tests: all suites ok)\"\n  ],\n  \"deviations\": [\n    \"Installed system packages and rustup with the README's install commands. The Ubuntu package list came from the README's Linux section; rustup was the README's Rust toolchain requirement, installed with the rustup.rs installer.\",\n    \"The source snapshot is not a git repository, so I did not run git init / git fetch of the pinned commit. make-linux.sh and the tests need no git metadata, so the pin could not be checked against the snapshot.\",\n    \"Did not run scripts/test.sh (it is a zsh script). Ran the documented 'cargo test -p wake-core' instead.\",\n    \"Did not run the install.sh step of the tar.gz or the .deb; those write to the user's home and system paths. Used the built binaries from target/release directly.\",\n    \"Probes and claims use absolute binary paths and set HOME=/tmp/wake-demo-home. The checker's replay environment did not find the rustup default toolchain for the cargo example, so that example sets RUSTUP_HOME and CARGO_HOME explicitly. The first validation run failed on that, and the second passed.\",\n    \"Cycle detection: no scheduler, cron, --once or --now trigger was found. The only loop is the GUI file watcher, which runs inside the desktop app and was not started. The manual one-shot 'wake-cli refresh' was run as an example. cycles.json records detected=false with that reason.\",\n    \"The GUI app (Wake) was built but not launched, so no GUI behaviour was checked.\"\n  ],\n  \"stuck_step\": null,\n  \"main_blocker\": null,\n  \"plain_failure\": null,\n  \"suggested_fix\": \"None needed for the tested path. For a full check, run the GUI on a machine with a display and confirm sessions list and resume, since Linux support is experimental.\"\n}\nEOF\npython3 -I -m json.tool .coldpass/report.json >/dev/null && echo report-ok; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -I -c \"import sys,json;t=sys.stdin.read();d=json.loads(t[t.find('{'):]);print('valid:',d['valid'],'problems:',d['problems'],'replay:',d['replay']['status'])\""
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "Build Wake for Linux with the README's make-linux.sh, index a synthetic agent-session home with wake-cli, and search it through the wake-mcp stdio server (wake_search tool) and wake-cli search.",
  "suggested_fix": null,
  "tokens_in": 679049,
  "tokens_out": 16753,
  "cost_usd": 0.026456929999999997,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "<guest-path>"
        ],
        "kind": "mcp",
        "serverInfo": {
          "name": "wake",
          "title": "Wake",
          "version": "0.10.1"
        },
        "tools": [
          "wake_search",
          "wake_list_sessions",
          "wake_get_session",
          "wake_list_projects",
          "wake_list_memories"
        ],
        "tool_schema_bytes": 8382,
        "tool_result": {
          "content": [
            {
              "text": "1 session match `useEffect(` \u2014 showing 1, best matches first.\n\n1. `claude-code:068f4ced-a156-4781-ad94-c83ef5097a5f` \u00b7 Claude Code \u00b7 \"\u4e2d\u6587\u77ed\u8bcd\u6bd4\u5982\u4e24\u4e2a\u5b57\u7684\u600e\u4e48\u529e?\"\n  <host-path> \u00b7 updated 2026-10-24 03:40:15 \u00b7 5 messages \u00b7 claude-fable-5\n  - seq 1 (assistant, 2026-10-24 03:38:35): \u2026exes every 3-char window, so `\u4e8c\u7ef4\u7801` and `**useEffect(**` both match without language-specific tokenizers. Queries under 3 chars fall ba\u2026\n    ref: wake://session/claude-code:068f4ced-a156-4781-ad94-c83ef5097a5f#1\n\nRead a session with wake_get_session (pass the key, or a ref to start at that message).\nIndex covers activity up to 2026-10-24 04:01:35 (local time); Wake keeps it fresh while it is running.",
              "type": "text"
            }
          ],
          "isError": false
        },
        "tool_result_checked": true,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 1 connection review, 29 known vulnerability, 1 outside write.",
    "expected": "Reviewed as expected for a test run: package managers (cargo) downloaded dependencies over HTTPS; package managers (rustup-init) downloaded dependencies over HTTPS; resolver address lookups that send no data; wrote only to its own open file handles.",
    "findings": [
      {
        "kind": "connection-review",
        "count": 1,
        "note": "Repository processes attempted these non-loopback connections; proxies can hide the final hostname.",
        "location_count": 8,
        "process_count": 2
      },
      {
        "kind": "known-vulnerability",
        "count": 29,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 16
      },
      {
        "kind": "outside-write",
        "count": 1,
        "note": "Repository processes attempted these writes outside documented output/cache paths.",
        "location_count": 1,
        "path": "/LICENSE-APACHE",
        "process_count": 1,
        "processes": [
          {
            "executable": "<guest-path>",
            "owner": "repo",
            "path": "/LICENSE-APACHE",
            "pid": "4142",
            "source": "<guest-path>"
          }
        ]
      }
    ],
    "context": [],
    "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=iAmCorey--Wake-claude-haiku-5-5-1792812702611530293",
    "evidence_file": "/data/safety/iAmCorey--Wake-claude-haiku-5-5-1792812702611530293.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.300 (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": 23,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "c8ee9b88b8e1c2281da1f3b6268d36bbfb58fb0b",
    "url": "https://github.com/iAmCorey/Wake"
  },
  "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": 23,
  "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": "local",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "mcp"
  ],
  "license": "MIT",
  "repo_url": "https://github.com/iAmCorey/Wake",
  "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 and entry points (wake-cli, wake-mcp, wake GUI). No cron, --once or --now scheduler. The only loop is the GUI file watcher (crates/wake-core/src/watcher.rs, recv_timeout) which runs inside the desktop app; the README's manual one-shot is 'wake-cli refresh' (covered as an example). Desktop GUI could not be run headless here, so no cycle was triggered.",
      "evidence": "Inspected README and entry points (wake-cli, wake-mcp, wake GUI). No cron, --once or --now scheduler. The only loop is the GUI file watcher (crates/wake-core/src/watcher.rs, recv_timeout) which runs inside the desktop app; the README's manual one-shot is 'wake-cli refresh' (covered as an example). Desktop GUI could not be run headless here, so no cycle was triggered.",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "The wake-mcp server exposes a search tool that finds sessions by text",
      "source": "Search every session and memory file",
      "input": "{\"tool\": \"wake_search\", \"arguments\": {\"query\": \"useEffect(\"}}",
      "expected": "the matching Claude Code session key is returned",
      "command": "<guest-path> tools/call {\"tool\": \"wake_search\", \"arguments\": {\"query\": \"useEffect(\"}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: 068f4ced-a156-4781-ad94-c83ef5097a5f",
      "evidence": "068f4ced-a156-4781-ad94-c83ef5097a5f` \u00b7 Claude Code \u00b7 \\\"\u4e2d\u6587\u77ed\u8bcd\u6bd4\u5982\u4e24\u4e2a\u5b57\u7684\u600e\u4e48\u529e?\\\"\\n  <host-path> \u00b7 updated 2026-10-24 03:40:15 \u00b7 5 messages \u00b7 claude-fable-5\\n  - seq 1 (assistant, 2026-10-24 03:38:35): \u2026exes every 3-char window, so `\u4e8c\u7ef4\u7801` and `**useEffect(**` both match without language-specific tokenizers. Queries under 3 chars fall ba\u2026\\n    ref: wake://session/claude-code:068f4ced-a156-4781-ad94-c83ef5097a5f#1\\n\\nRead a session with wake_get_session (pass the key, or a ref to start at that message).\\nIndex covers activity up to 2026-10-24 04:01:35 (local time); Wake keeps it fresh whil",
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "wake-cli answers the same search questions from a terminal",
      "source": "`wake-cli` gives the same answers in a terminal",
      "input": "search useEffect(",
      "expected": "the matching session key is printed",
      "command": "<guest-path> search 'useEffect('",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: 068f4ced-a156-4781-ad94-c83ef5097a5f",
      "evidence": "068f4ced-a156-4781-ad94-c83ef5097a5f` \u00b7 Claude Code \u00b7 \"\u4e2d\u6587\u77ed\u8bcd\u6bd4\u5982\u4e24\u4e2a\u5b57\u7684\u600e\u4e48\u529e?\"\n  <host-path> \u00b7 updated 2026-10-24 03:40:15 \u00b7 5 messages \u00b7 claude-fable-5\n  - seq 1 (assistant, 2026-10-24 03:38:35): \u2026exes every 3-char window, so `\u4e8c\u7ef4\u7801` and `**useEffect(**` both match without language-specific tokenizers. Queries under 3 chars fall ba\u2026\n    ref: wake://session/claude-code:068f4ced-a156-4781-ad94-c83ef5097a5f#1\n\nRead a session with wake_get_session (pass the key, or a ref to start at that message).\nIndex covers activity up to 2026-10-24 04:01:35 (local time); Wake keeps it fresh while it is ",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "Data-layer tests run with cargo",
      "source": "README.md Development section: data-layer tests only (adapter contracts, FTS, scanner)",
      "input": "cargo test -p wake-core",
      "command": "<guest-path> test -p wake-core",
      "evidence": "oundtrip.rs (target/debug/deps/db_roundtrip-ee5de68cb77ec280)\n     Running tests/devin_default_root.rs (target/debug/deps/devin_default_root-cfa0dafceaf63e7f)\n     Running tests/mcp_stdio.rs (target/debug/deps/mcp_stdio-8b462d5b49f14a73)\n     Running tests/remote_sync.rs (target/debug/deps/remote_sync-29d6529df81d61ae)\n     Running tests/remote_sync_paths.rs (target/debug/deps/remote_sync_paths-d5285f22086ea84e)\n     Running tests/scanner_finale.rs (target/debug/deps/scanner_finale-b82fe3d8fc82747b)\n     Running tests/skills.rs (target/debug/deps/skills-b80c8f4ccf7b8229)\n   Doc-tests wake_core",
      "deferred": false,
      "expected": "all test suites report ok",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Refresh the index while Wake is closed",
      "source": "README.md shell commands: wake-cli refresh",
      "input": "no arguments",
      "command": "<guest-path> refresh",
      "evidence": "Refreshed the index at /tmp/wake-demo-home/.local/share/wake/wake.db: 424 sessions from 16 agents.",
      "deferred": false,
      "expected": "index is refreshed with the synthetic demo sessions",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "last_commit_at": "2026-10-23T15:00:04Z",
    "commits_90d": 278,
    "merged_prs_90d": 18,
    "open_issues": 1,
    "open_prs": 2,
    "reply_share": 0.55,
    "reply_threads": 38,
    "median_reply_hours": 45.7,
    "last_release_at": "2026-10-23T15:09:33Z",
    "archived": false,
    "verdict": "maintained",
    "note": "actively maintained: last commit 0 days ago; 278 commits and 18 merged PRs in 90 days; 1 open issues, 2 open PRs; 21 of 38 recent threads got a maintainer reply, median first reply 45.7h; latest release 2026-10-23"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 0 days ago; 278 commits and 18 merged PRs in 90 days; 1 open issues, 2 open PRs; 21 of 38 recent threads got a maintainer reply, median first reply 45.7h; latest release 2026-10-23",
  "maintained": "active",
  "maintained_note": "last commit 0 days ago; 0 open issues, 18 answered or closed",
  "last_commit_at": "2026-10-23T15:09:25Z",
  "last_release_at": "2026-10-23T15:09:33Z",
  "open_issues": 0,
  "answered_issues": 18,
  "platforms_claimed": [
    "linux",
    "mac",
    "windows"
  ],
  "topic": "mcp-server",
  "agent_interfaces": [
    {
      "interface": "mcp",
      "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": {
    "tool_count": 5,
    "schema_bytes": 8382,
    "tokens_approx": 2096,
    "estimate_method": "ceil(compact UTF-8 tools/list JSON bytes / 4)",
    "scope": "returned tools/list page only; excludes client framing and tool results"
  },
  "tested_at": "2026-10-24T04:13:18.286359+00:00",
  "tested_commit": "c8ee9b88b8e1c2281da1f3b6268d36bbfb58fb0b",
  "tested_with": {
    "agent": "claude-code",
    "agent_version": "2.1.300 (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": "iAmCorey/Wake",
    "source": "https://github.com/iAmCorey/Wake",
    "commit": "c8ee9b88b8e1c2281da1f3b6268d36bbfb58fb0b",
    "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.300 (Claude Code)",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "c8ee9b88b8e1c2281da1f3b6268d36bbfb58fb0b",
      "url": "https://github.com/iAmCorey/Wake"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "Build Wake for Linux with the README's make-linux.sh, index a synthetic agent-session home with wake-cli, and search it through the wake-mcp stdio server (wake_search tool) and wake-cli search.",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "mcp",
    "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
    "evidence_version": null
  },
  "other_model": null,
  "other_run_id": null,
  "models_agree": null,
  "furthest_model": null,
  "transcript_url": null,
  "report_url": "/reports/iAmCorey--Wake-claude-haiku-5-5-1792812702611530293.json"
}
