{
  "run_id": "shannhk--llm-wikid-claude-haiku-5-5-1792807532382940984",
  "date": "2026-10-24T02:14:28.113377+00:00",
  "repo": "shannhk/llm-wikid",
  "kind": "mcp",
  "source": "https://github.com/shannhk/llm-wikid",
  "commit": "c01485f096d0b62644fdf165d5221c20f2b615f7",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 501.7083259539213,
  "total_s": 535.7304060459137,
  "steps": [
    "cd <guest-path> && pwd && ls -la && git status 2>&1 | head -3; id -u; python3 --version; cat README.md 2>/dev/null | head -200",
    "cd <guest-path> && sed -n 200,400p README.md; echo ---; ls -la scripts templates .coldpass .claude raw wiki; echo ---; cat .env.example; echo ---; cat .gitignore; echo ---; head -c 1500 scripts/* 2>/dev/null | head -150",
    "cd <guest-path> && ls .claude/commands; cat .claude/settings.json; echo ---; head -40 CLAUDE.md; echo ---; which git node npm npx uv claude qmd jq 2>&1; node --version 2>&1; npm --version 2>&1; git --version 2>&1; cat /etc/os-release | head -2",
    "cd <guest-path> && git init -q && git remote add origin https://github.com/shannhk/llm-wikid && timeout 120 git fetch --depth 1 origin c01485f096d0b62644fdf165d5221c20f2b615f7 2>&1 | tail -5; echo \"fetch rc=$?\"; git reset --mixed FETCH_HEAD 2>&1 | tail -3; git log --oneline -1 2>&1; git status --short | head -20",
    "sudo -n true && echo SUDO_OK; apt-cache policy nodejs npm 2>/dev/null | head -8; env | grep -i proxy | sed 's/=.*@/=***@/' ",
    "(sudo apt-get update -qq 2>&1 | tail -3); apt-cache policy nodejs npm 2>&1 | head -8",
    "export NODE_USE_ENV_PROXY=1; curl -s -m 30 https://registry.npmjs.org/@tobilu%2fqmd/latest | python3 -c 'import json,sys; d=json.load(sys.stdin); print(d.get(\"version\"), d.get(\"engines\"), d.get(\"bin\"))' 2>&1 | head -5",
    "export NODE_USE_ENV_PROXY=1; cd /tmp && curl -sS -m 60 -o /tmp/SHASUMS256.txt https://nodejs.org/dist/latest-v22.x/SHASUMS256.txt && grep 'linux-x64.tar.xz' /tmp/SHASUMS256.txt",
    "cd /tmp && curl -sS -m 300 -o node22.tar.xz https://nodejs.org/dist/latest-v22.x/node-v22.23.4-linux-x64.tar.xz && echo \"1805bcd35e6815559bd2eb97db438d3fdb0eb3a5e6a977b7c1badca76337e9ce  node22.tar.xz\" | sha256sum -c && sudo mkdir -p /opt/node22 && sudo tar -xJf node22.tar.xz -C /opt/node22 --strip-components=1 && /opt/node22/bin/node --version && /opt/node22/bin/npm --version",
    "export PATH=/opt/node22/bin:$PATH NODE_USE_ENV_PROXY=1 NPM_CONFIG_PREFIX=$HOME/.local/npm; mkdir -p $HOME/.local; node --version && npm --version && timeout 600 npm install -g @tobilu/qmd 2>&1 | tail -15; echo \"rc=${PIPESTATUS[0]}\"; ls $HOME/.local/npm/bin 2>&1",
    "export PATH=/opt/node22/bin:$HOME/.local/npm/bin:$PATH; cd <guest-path> && timeout 300 qmd collection add wiki --name my-wiki 2>&1 | tail -20; echo \"rc=${PIPESTATUS[0]}\"",
    "export PATH=/opt/node22/bin:$HOME/.local/npm/bin:$PATH; cd <guest-path> && timeout 900 qmd embed 2>&1 | tail -25; echo \"rc=${PIPESTATUS[0]}\"",
    "export PATH=/opt/node22/bin:$HOME/.local/npm/bin:$PATH; cd <guest-path> && find wiki -name '*.md' | head -30; echo ---; cat wiki/index.md; echo ---; timeout 300 qmd search \"wiki\" 2>&1 | head -40; echo \"rc=${PIPESTATUS[0]}\"",
    "export PATH=/opt/node22/bin:$HOME/.local/npm/bin:$PATH; cd /tmp && { printf '%s\\n' '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-06-18\",\"capabilities\":{},\"clientInfo\":{\"name\":\"probe\",\"version\":\"0\"}}}' '{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}' '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\"}'; sleep 3; } | timeout 60 qmd mcp 2>/dev/null | python3 -I -c 'import sys,json\nfor l in sys.stdin:\n    try: d=json.loads(l)\n    except Exception: continue\n    if d.get(\"id\")==2:\n        for t in d[\"result\"][\"tools\"]: print(t[\"name\"], json.dumps(t.get(\"inputSchema\",{}).get(\"properties\",{}))[:300])\n    else: print(str(d)[:200])'",
    "mkdir -p <guest-path> && cat > <guest-path> <<'EOF'\nimport json, subprocess, sys, os\nargv = json.loads(sys.argv[1]); tool = sys.argv[2]; args = json.loads(sys.argv[3])\nmsgs = [\n {\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-06-18\",\"capabilities\":{},\"clientInfo\":{\"name\":\"probe\",\"version\":\"0\"}}},\n {\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"},\n {\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":tool,\"arguments\":args}}]\ninp = \"\\n\".join(json.dumps(m) for m in msgs) + \"\\n\"\nout = subprocess.run(argv, input=inp, capture_output=True, text=True, cwd=\"<guest-path>\", timeout=240)\nfor l in out.stdout.splitlines():\n    try: d = json.loads(l)\n    except Exception: continue\n    if d.get(\"id\") == 2: print(json.dumps(d.get(\"result\") or d.get(\"error\"), indent=1)[:3000])\nEOF\nexport PATH=/opt/node22/bin:$HOME/.local/npm/bin:$PATH; python3 -I <guest-path> '[\"qmd\",\"mcp\"]' get '{\"file\":\"qmd://my-wiki/log.md\"}'; echo \"rc=$?\"",
    "cd <guest-path> && sed -n 40,80p scripts/update-hot-cache.sh; echo ---; grep -il 'schedule\\|cron\\|--once\\|loop' .claude/commands/* scripts/* README.md CLAUDE.md; echo ---; grep -n -i 'schedule\\|cron' README.md CLAUDE.md | head; echo; echo HOME=$HOME; ls -la ~/.cache 2>/dev/null | head -3",
    "export PATH=/opt/node22/bin:$HOME/.local/npm/bin:$PATH; cd <guest-path> && timeout 300 qmd search \"Append-only\" 2>&1 | head -6; echo \"rc=$?\"; echo ---; timeout 600 qmd vsearch \"append-only timeline\" 2>&1 | tail -12; echo \"vrc=${PIPESTATUS[0]}\"; echo ---; timeout 900 qmd query \"append-only timeline\" 2>&1 | tail -12; echo \"qrc=${PIPESTATUS[0]}\"",
    "cd <guest-path> && grep -n 'built-in MCP server\\|BM25 keyword search\\|vector semantic search\\|npm install -g @tobilu/qmd' README.md | cat -A | cut -c1-200",
    "mkdir -p <guest-path> && cat > <guest-path> <<'EOF'\nimport json, sys\nW = \"<guest-path>\"\nENV = {\"PATH\": \"/opt/node22/bin:<guest-path>\", \"HOME\": \"<guest-path>\"}\nCWD = W\nprobe = {\"kind\": \"mcp\", \"argv\": [\"qmd\", \"mcp\"], \"cwd\": CWD, \"env\": ENV,\n         \"tool\": \"get\", \"arguments\": {\"file\": \"qmd://my-wiki/log.md\"},\n         \"expected_text\": \"Append-only timeline of all wiki operations\"}\nclaims = [\n {\"kind\": \"claim\", \"claim\": \"qmd exposes the wiki to an agent through a built-in MCP server\",\n  \"source\": \"qmd has a built-in MCP server so your agent can use it as a native tool:\",\n  \"input\": \"qmd://my-wiki/log.md\", \"expected\": \"the wiki log page text is returned\",\n  \"probe_kind\": \"mcp\", \"argv\": [\"qmd\", \"mcp\"], \"env\": ENV, \"tool\": \"get\",\n  \"arguments\": {\"file\": \"qmd://my-wiki/log.md\"},\n  \"expected_text\": \"Append-only timeline of all wiki operations\", \"cwd\": CWD},\n {\"kind\": \"claim\", \"claim\": \"qmd search runs BM25 keyword search over the wiki\",\n  \"source\": \"qmd search \\\"query\\\"        # BM25 keyword search (fast)\",\n  \"input\": \"Append-only\", \"expected\": \"the Wiki Log page is listed as a match\",\n  \"probe_kind\": \"cli\", \"argv\": [\"qmd\", \"search\", \"Append-only\"], \"env\": ENV,\n  \"expected_text\": \"Wiki Log\", \"cwd\": CWD},\n {\"kind\": \"claim\", \"claim\": \"qmd vsearch runs vector semantic search over the wiki\",\n  \"source\": \"qmd vsearch \\\"query\\\"       # vector semantic search\",\n  \"input\": \"append-only timeline\", \"expected\": \"the Wiki Log page is returned by vector search\",\n  \"probe_kind\": \"cli\", \"argv\": [\"qmd\", \"vsearch\", \"append-only timeline\"], \"env\": ENV,\n  \"expected_text\": \"Append-only timeline of all wiki operations\", \"cwd\": CWD},\n]\nexamples = [\n {\"kind\": \"example\", \"claim\": \"hybrid query with LLM re-ranking returns wiki pages\",\n  \"source\": \"README.md ## Search (qmd)\", \"input\": \"append-only timeline\",\n  \"expected\": \"wiki pages are listed, including the Wiki Dashboard\", \"argv\": [\"qmd\", \"query\", \"append-only timeline\"],\n  \"cwd\": CWD, \"env\": ENV, \"expected_text\": \"Wiki Dashboard\"},\n {\"kind\": \"example\", \"claim\": \"/wiki-ingest, /wiki-query, /wiki-lint and other slash commands run inside Claude Code\",\n  \"source\": \"README.md ## Commands\",\n  \"reason\": \"Missing prerequisite: the commands are Claude Code slash commands that need an interactive Claude Code agent with LLM credentials. Claude Code is not installed in this guest and no API credentials were supplied, so these were not run. Inspected .claude/commands/*.md instead.\"},\n {\"kind\": \"example\", \"claim\": \"optional Obsidian and X API ingest tools\",\n  \"source\": \"README.md ## Optional Tools\",\n  \"reason\": \"Missing prerequisites: yt-dlp, scrapling, summarize and X API OAuth keys are not installed or configured here; the ingest pipeline that uses them runs only inside the agent, so they were not run.\"},\n]\ncycles = {\"detected\": False,\n  \"reason\": \"Entry points inspected: README.md (no cron/loop/--once product command; 'Claude Dispatch' /schedule and cron are remote Claude Code scheduling, not a product command), scripts/update-hot-cache.sh (Stop hook run by Claude Code, which calls 'claude -p' in a background subshell and writes wiki/hot.md asynchronously; Claude Code is not installed and its output is not on stdout), and .claude/commands/*.md (manual slash commands). No runnable product cycle could be triggered and observed here, so no cycle check was recorded.\",\n  \"checks\": []}\ndef dump(name, obj):\n    with open(f\"{W}/.coldpass/{name}\", \"w\", encoding=\"utf-8\") as f:\n        json.dump(obj, f, indent=2, ensure_ascii=False); f.write(\"\\n\")\ndump(\"probe.json\", probe); dump(\"claims.json\", claims); dump(\"examples.json\", examples); dump(\"cycles.json\", cycles)\nprint(\"written\")\nEOF\npython3 -I <guest-path> && ls -la <guest-path> && ls <guest-path> 2>&1",
    "export PATH=/opt/node22/bin:$HOME/.local/npm/bin:/usr/bin:/bin; cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -80; echo \"rc=${PIPESTATUS[0]}\"",
    "pgrep -af 'qmd' | grep -v pgrep || echo \"no qmd processes running\"; cat > <guest-path> <<'EOF'\nimport json\nreport = {\n \"outcome\": \"working\",\n \"fault_owner\": None,\n \"operation\": \"Index the wiki/ folder with qmd and search it (keyword, vector, and hybrid), and read a page back over qmd's MCP server\",\n \"operation_scope\": \"Local qmd search layer only (qmd 2.8.3, Node 22, CPU embeddings with embeddinggemma). The README's agent workflows (/wiki-ingest, /wiki-query, /wiki-lint, /autoresearch, /save, /wiki-explore) were NOT run: they are Claude Code slash commands that need an interactive Claude Code agent and LLM credentials, neither available in this guest.\",\n \"steps\": [\n  \"git init; git remote add origin https://github.com/shannhk/llm-wikid; git fetch --depth 1 origin c01485f096d0b62644fdf165d5221c20f2b615f7; git reset --mixed FETCH_HEAD (tree verified clean at the pin)\",\n  \"sudo apt-get update; apt-cache policy nodejs (Ubuntu offers Node 18 only; qmd needs >=22)\",\n  \"curl https://nodejs.org/dist/latest-v22.x/node-v22.23.4-linux-x64.tar.xz, sha256 verified, extracted to /opt/node22\",\n  \"npm install -g @tobilu/qmd (run with PATH=/opt/node22/bin and NPM_CONFIG_PREFIX=$HOME/.local/npm) -> added 159 packages, qmd 2.8.3\",\n  \"qmd collection add wiki --name my-wiki -> Indexed: 5 new\",\n  \"qmd embed -> Embedded 5 chunks from 5 documents\",\n  \"qmd search \\\"Append-only\\\" / qmd vsearch \\\"append-only timeline\\\" / qmd query \\\"append-only timeline\\\" -> returned Wiki Log / Wiki Dashboard pages\",\n  \"qmd mcp (stdio) -> tools/list shows query, get, multi_get, status; tools/call get on qmd://my-wiki/log.md returned the Wiki Log page\"\n ],\n \"deviations\": [\n  \"Ubuntu apt nodejs is 18.19.1, below qmd's required node >=22; installed Node 22.23.4 from the official nodejs.org tarball (checksum verified) instead, a substitute for the README's bare 'npm install -g'.\",\n  \"npm global prefix set to a user-local directory ($HOME/.local/npm) instead of the system prefix; the README command itself is unchanged.\",\n  \"qmd embed ran on CPU (no GPU), so it was slow but completed.\",\n  \"Claude Code slash commands and the Stop-hook script (scripts/update-hot-cache.sh, which calls 'claude -p') were not run: Claude Code is not installed and no LLM credentials were supplied. Recorded as blocked examples, not as failures of the repo.\",\n  \"Optional tools yt-dlp, scrapling, summarize and X API keys were not installed/configured; not exercised.\",\n  \"No cycle check recorded: no runnable product cycle exists outside Claude Code; the only trigger is the Claude Code Stop hook.\"\n ],\n \"stuck_step\": None,\n \"main_blocker\": None,\n \"plain_failure\": None,\n \"suggested_fix\": \"Document that qmd needs Node 22 or newer (Ubuntu 24.04 apt ships Node 18), and state clearly in the README which parts need a Claude Code agent and API credentials.\"\n}\nwith open(\"<guest-path>\", \"w\", encoding=\"utf-8\") as f:\n    json.dump(report, f, indent=2, ensure_ascii=False); f.write(\"\\n\")\nprint(\"report written\")\nEOF\npython3 -I <guest-path> && export PATH=/usr/bin:/bin && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -I -c 'import json,sys; d=json.load(sys.stdin); print(\"valid\", d[\"valid\"], \"problems\", d[\"problems\"], \"replay\", d[\"replay\"][\"status\"])'"
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "Index the wiki/ folder with qmd and search it (keyword, vector, and hybrid), and read a page back over qmd's MCP server",
  "suggested_fix": null,
  "tokens_in": 545039,
  "tokens_out": 17893,
  "cost_usd": 0.022354060000000002,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "qmd",
          "mcp"
        ],
        "kind": "mcp",
        "serverInfo": {
          "name": "qmd",
          "version": "2.8.3"
        },
        "tools": [
          "query",
          "get",
          "multi_get",
          "status"
        ],
        "tool_schema_bytes": 6510,
        "tool_result": {
          "content": [
            {
              "type": "resource",
              "resource": {
                "uri": "qmd://my-wiki/log.md",
                "mimeType": "text/markdown",
                "text": "1: ---\n2: title: \"Wiki Log\"\n3: tldr: \"Append-only timeline of all wiki operations\"\n4: date_created: {{date}}\n5: date_modified: {{date}}\n6: explored: false\n7: confidence: medium\n8: ---\n9: \n10: # Wiki Log\n11: \n12: | Date | Operation | Pages Touched | Notes |\n13: |------|-----------|---------------|-------|\n14: "
              }
            }
          ]
        },
        "tool_result_checked": true,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "No problems traced to this repository code in these checks.",
    "findings": [],
    "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=shannhk--llm-wikid-claude-haiku-5-5-1792807532382940984",
    "evidence_file": "/data/safety/shannhk--llm-wikid-claude-haiku-5-5-1792807532382940984.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": 21,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "c01485f096d0b62644fdf165d5221c20f2b615f7",
    "url": "https://github.com/shannhk/llm-wikid"
  },
  "purpose": "test_rerun",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": null,
    "status": "resolved",
    "reason": null
  },
  "fix_id": null,
  "verifies_run_id": "shannhk--llm-wikid-claude-haiku-5-5-1792805492960431484",
  "hosting": null,
  "operation_scope": "product operation",
  "tool_calls": 21,
  "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": null,
  "repo_url": "https://github.com/shannhk/llm-wikid",
  "cost_to_try": "free",
  "hardware": null,
  "what_failed": null,
  "local_or_hosted": "both",
  "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": "Entry points inspected: README.md (no cron/loop/--once product command; 'Claude Dispatch' /schedule and cron are remote Claude Code scheduling, not a product command), scripts/update-hot-cache.sh (Stop hook run by Claude Code, which calls 'claude -p' in a background subshell and writes wiki/hot.md asynchronously; Claude Code is not installed and its output is not on stdout), and .claude/commands/*.md (manual slash commands). No runnable product cycle could be triggered and observed here, so no cycle check was recorded.",
      "evidence": "Entry points inspected: README.md (no cron/loop/--once product command; 'Claude Dispatch' /schedule and cron are remote Claude Code scheduling, not a product command), scripts/update-hot-cache.sh (Stop hook run by Claude Code, which calls 'claude -p' in a background subshell and writes wiki/hot.md asynchronously; Claude Code is not installed and its output is not on stdout), and .claude/commands/*.md (manual slash commands). No runnable product cycle could be triggered and observed here, so no cycle check was recorded.",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "qmd exposes the wiki to an agent through a built-in MCP server",
      "source": "qmd has a built-in MCP server so your agent can use it as a native tool:",
      "input": "{\"tool\": \"get\", \"arguments\": {\"file\": \"qmd://my-wiki/log.md\"}}",
      "expected": "the wiki log page text is returned",
      "command": "qmd mcp tools/call {\"tool\": \"get\", \"arguments\": {\"file\": \"qmd://my-wiki/log.md\"}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: Append-only timeline of all wiki operations",
      "evidence": "Append-only timeline of all wiki operations\\\"\\n4: date_created: {{date}}\\n5: date_modified: {{date}}\\n6: explored: false\\n7: confidence: medium\\n8: ---\\n9: \\n10: # Wiki Log\\n11: \\n12: | Date | Operation | Pages Touched | Notes |\\n13: |------|-----------|---------------|-------|\\n14: \"}}]}",
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "qmd search runs BM25 keyword search over the wiki",
      "source": "qmd search \"query\"        # BM25 keyword search (fast)",
      "input": "Append-only",
      "expected": "the Wiki Log page is listed as a match",
      "command": "qmd search Append-only",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: Wiki Log",
      "evidence": "Wiki Log\nScore:  61%\n\n@@ -2,4 @@ (1 before, 9 after)\ntitle: \"Wiki Log\"\ntldr: \"Append-only timeline of all wiki operations\"\ndate_created: {{date}}\ndate_modified: {{date}}\n",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "qmd vsearch runs vector semantic search over the wiki",
      "source": "qmd vsearch \"query\"       # vector semantic search",
      "input": "append-only timeline",
      "expected": "the Wiki Log page is returned by vector search",
      "command": "qmd vsearch 'append-only timeline'",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: Append-only timeline of all wiki operations",
      "evidence": "Append-only timeline of all wiki operations\"\ndate_created: {{date}}\ndate_modified: {{date}}\n\u251c\u2500 append-only timeline\n\u251c\u2500 vec: definition of append-only and its applications\n\u251c\u2500 vec: importance of append-only for data integrity\n\u2514\u2500 hyde: Understanding append-only timeline is essential for modern developmen...\nSearching 4 vector queries...\nQMD Warning: no GPU acceleration, running on CPU (slow). Run 'qmd doctor' for device diagnostics.\n",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "hybrid query with LLM re-ranking returns wiki pages",
      "source": "README.md ## Search (qmd)",
      "input": "append-only timeline",
      "command": "qmd query 'append-only timeline'",
      "evidence": "fore, 66 after)\n---\ntitle: \"Wiki Dashboard\"\ntldr: \"Dataview dashboard for browsing wiki stats and recent activity\"\nExpanding query... (0ms)\n\u251c\u2500 append-only timeline\n\u251c\u2500 lex: definition of append-only\n\u251c\u2500 lex: importance of append-only\n\u251c\u2500 vec: definition of append-only and its applications\n\u251c\u2500 vec: importance of append-only for data integrity\n\u2514\u2500 hyde: Understanding append-only timeline is essential for modern developmen...\nSearching 6 queries...\nEmbedding 4 queries...QMD Warning: no GPU acceleration, running on CPU (slow). Run 'qmd doctor' for device diagnostics.\n (8.1s)\nReranking 5 chunks... (2ms)",
      "deferred": false,
      "expected": "wiki pages are listed, including the Wiki Dashboard",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "/wiki-ingest, /wiki-query, /wiki-lint and other slash commands run inside Claude Code",
      "source": "README.md ## Commands",
      "input": "",
      "command": "",
      "evidence": "Missing prerequisite: the commands are Claude Code slash commands that need an interactive Claude Code agent with LLM credentials. Claude Code is not installed in this guest and no API credentials were supplied, so these were not run. Inspected .claude/commands/*.md instead.",
      "deferred": false,
      "expected": "documented command completes successfully",
      "verdict": "blocked",
      "outcome": "Missing prerequisite: the commands are Claude Code slash commands that need an interactive Claude Code agent with LLM credentials. Claude Code is not installed in this guest and no API credentials were supplied, so these were not run. Inspected .claude/commands/*.md instead."
    },
    {
      "kind": "example",
      "claim": "optional Obsidian and X API ingest tools",
      "source": "README.md ## Optional Tools",
      "input": "",
      "command": "",
      "evidence": "Missing prerequisites: yt-dlp, scrapling, summarize and X API OAuth keys are not installed or configured here; the ingest pipeline that uses them runs only inside the agent, so they were not run.",
      "deferred": false,
      "expected": "documented command completes successfully",
      "verdict": "blocked",
      "outcome": "Missing prerequisites: yt-dlp, scrapling, summarize and X API OAuth keys are not installed or configured here; the ingest pipeline that uses them runs only inside the agent, so they were not run."
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "archived": false,
    "commits_90d": 0,
    "last_commit_at": "2026-04-21T11:39:06Z",
    "last_release_at": null,
    "median_reply_hours": null,
    "merged_prs_90d": 0,
    "note": "slow: last commit 185 days ago; 0 commits and 0 merged PRs in 90 days; 1 open issues, 1 open PRs; 0 of 2 recent threads got a maintainer reply; no releases",
    "open_issues": 1,
    "open_prs": 1,
    "reply_share": 0.0,
    "reply_threads": 2,
    "verdict": "slow"
  },
  "maintenance_verdict": "slow",
  "maintenance_note": "slow: last commit 185 days ago; 0 commits and 0 merged PRs in 90 days; 1 open issues, 1 open PRs; 0 of 2 recent threads got a maintainer reply; no releases",
  "maintained": "active",
  "maintained_note": "last commit 60 days ago; 1 open issues, 0 answered or closed",
  "last_commit_at": "2026-08-24T09:02:40Z",
  "last_release_at": null,
  "open_issues": 1,
  "answered_issues": 0,
  "platforms_claimed": [
    "linux"
  ],
  "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": 4,
    "schema_bytes": 6510,
    "tokens_approx": 1628,
    "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-24T02:14:28.113377+00:00",
  "tested_commit": "c01485f096d0b62644fdf165d5221c20f2b615f7",
  "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": "shannhk/llm-wikid",
    "source": "https://github.com/shannhk/llm-wikid",
    "commit": "c01485f096d0b62644fdf165d5221c20f2b615f7",
    "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": "c01485f096d0b62644fdf165d5221c20f2b615f7",
      "url": "https://github.com/shannhk/llm-wikid"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "Index the wiki/ folder with qmd and search it (keyword, vector, and hybrid), and read a page back over qmd's MCP server",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "mcp",
    "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
    "evidence_version": null
  },
  "transcript_url": null,
  "report_url": "/reports/shannhk--llm-wikid-claude-haiku-5-5-1792807532382940984.json"
}
